Hulu Desktop Integration

From MythTV Official Wiki
Revision as of 17:55, 21 March 2010 by Colinnwn (talk | contribs) (clearing it up for beginners)

Jump to: navigation, search


This guide will walk you through the installation and integration of Hulu Desktop for Linux. Hulu only officially supports Ubuntu 8.04+ and Fedora 9+, but most other distros should work. This guide was written for Ubuntu 9.04 (Jaunty Jackalope). It assumes that you're running as the user that as your Mythfrontend, and that you have already configured LIRC to work. Full LIRC setup is outside the scope of this article.

Please note that the guide doesn't fully integrate Hulu into your Mythfrontend--it configures it to launch Hulu Desktop from Myth and sets up LIRC.


Installation of the Hulu Desktop app itself is fairly trivial, assuming you have the necessary prerequisites. You will need Flash installed.


sudo apt-get install flashplugin-nonfree

Now, download the .deb for your architecture and distro from Hulu Labs. To install using the command prompt:

sudo dpkg --install filename


emerge -uav \>=www-plugins/adobe-flash-9.0.124 \>=x11-libs/gtk+-2.12 \>=dev-libs/glib-2.16 x11-libs/cairo app-arch/rpm2targz

Grab the .rpm from Hulu Labs and turn it into a .tar.gz with rpm2targz. Unpack it with tar and gzip and copy the huludesktop.arch/etc/huludesktop directory to /etc (where arch is the architecture you downloaded, x86_64 or i386). For example:

rpm2targz huludesktop.x86_64.rpm
tar -xzvf huludesktop.x86_64.tgz
cp -rv huludesktop.x86_64/etc/huludesktop /etc

The only important thing to copy from huludesktop.arch/usr/ is huludesktop.arch/usr/bin/huludesktop - copy it to somewhere in your $PATH (/usr/local/bin or /usr/bin). Copy the rest as you desire:

cp -urv huludesktop.x86_64/usr/share/* /usr/local/share


sudo pacman -Sy flashplugin lirc-utils
cd /tmp

Download huludesktop_i386.deb from Hulu Labs and ...


The script will take care of placing Hulu Desktop in the menu. You'll find it under Media Libray > Online Streams. Remote customize should be all you need to do.


The next step allows you to launch Hulu from your Mythfrontend. We're going to edit the XML files for your theme for this. Copying XML files from /usr/share/mythtv into ~/.mythtv allows you to customize menus and prevents them from being overwritten during an upgrade.

Get a command line, and enter the following:

cp /usr/share/mythtv/themes/defaultmenu/mainmenu.xml ~/.mythtv
# (or library.xml or wherever else you want to put the hulu command)

This assumes you haven't already edited your Mythfrontend's appearance. If you have, edit your existing copy of mainmenu.xml. In my case, I wanted Hulu available on the main menu. You can add it to wherever you like, you just need to copy the right XML file and edit it.

Now, open up mainmenu.xml (or whatever file you copied over) in your favorite editor. Add the following lines where you want your Hulu button to live.

       <text>Hulu Desktop</text>
       <action>EXEC /usr/bin/huludesktop</action>

The next time you run your Mythfrontend, the button will appear on your main menu.

If you experience your X mouse cursor showing over hulu desktop try installing unclutter:

sudo apt-get install unclutter


First, open ~/.huludesktop in your favorite editor and find the lirc_remote_identifier line. Replace mceusb with your remote. If you don't know it, exit the editor and run irw. Hit a few buttons on your remote, and you'll get output similar to the following:

squeaker@myth:~$ irw
0000000000001795 00 Down Hauppauge_350
0000000000001797 00 Right Hauppauge_350

Whatever is in place of Hauppauge_350 in your output is your remote. Edit ~/.huludesktop accordingly.

Hulu Desktop requires the -r (--release) option for proper operation.

If you are using Fedora, you can edit the line:


to read


in /etc/sysconfig/lirc

If you are using Ubuntu, edit /etc/lirc/hardware.conf and change




Now, restart LIRC. If all goes well, LIRC is now running with the -r switch. You can verify this:

squeaker@myth:~$ ps aux | grep lircd
root     26192  0.0  0.0   3116   584 ?        Ss   14:22   0:00 /usr/sbin/lircd --device=/dev/lirc0 -r
root     27575  0.0  0.0   3336   804 pts/0    S+   14:49   0:00 grep lircd


As usual, YMMV. The arrow keys worked for me immediately, since they happened to have the same names as my lircd.conf file. In order to make the menu appear, I had to make an edit to ~/.huludesktop:

button_name_menu = Home


button_name_menu = Menu/i

for everything to work correctly. If you don't know what name LIRC has for your menu key, fire up irw and press your menu key. You should see output similar to the following:

squeaker@myth:~$ irw
000000000000178d 00 Menu/i Hauppauge_350
000000000000178d 00 Menu/i_UP Hauppauge_350

Edit ~/.huludesktop accordingly. Repeat as necessary to adapt other keys.


If huludesktop will run fine when launched alone, but will not play videos when launched from MythTV, or it says "This request is taking longer than expected...", it may be due to Flash hardware acceleration being enabled. Open huludesktop, right click inside a video and select "Settings" and disable hardware acceleration.

Fullscreen Performance Issues

On some systems, Flash video playback may be choppy or display tearing when running at a high resolution in fullscreen mode. To deal with this, you may want run huludesktop from a script which sets the screen to a lower resolution while huludesktop is running, and increases it after closing huludesktop. Hulu's highest quality streams are 480p, so setting your resolution to that mode is probably your best bet, though you may want to test various resolutions. To find out what resolutions your display supports, run the command xrandr. You can create the following script at /usr/local/bin/hulu For example, if your display normally runs at 1920x1080, but also supports 720x480, (these examples aren't common HDTV resolutions, they are more common monitor resolutions) the script can contain the following:

xrandr --output default --mode 720x480 && huludesktop
xrandr --output default --mode 1920x1080

You need to set permissions for this script

sudo chmod a+x hulu

Then use /usr/local/bin/hulu in your mainmenu.xml file instead of /usr/bin/huludesktop.