Hulu & the PS3 : Fixed with a small VM
Update 8-11-09
Depending on the shows you want to watch, you may not need hulu, and instead can watch what you want at sling.com. Tip o the Hat to a commenter at Joystiq.
Show availability is mixed tho, for example, “The Daily Show” & “Smallville” play, but “Burn Notice” and “Warehouse 13″ don’t play. For those shows sling.com just acts as a front end to hulu.com.
Summary
I have put together a small Linux virtual machine that should, for most people, re-enable Hulu content on the PS3. It provides a web proxy configuration that only effects Hulu related network traffic, thus not slowing down gaming or making the PS3 otherwise dependent on the VM’s proxy.
The one machine that is always on at my house is an old (2002) Windows XP box that currently serves double duty as a file/print server and is host to a Windows based security camera package. Thus, I needed to make the Virtual Machine image as small and lightweight as possible.
The Fix : Download and Run It
1. Download VMWare Player.
2. Download 7zip, to uncompress the VM.
3. Download the VM via http, 50 MB download.
4. Uncompress the VM, and run it with the Vmware Player. Login and password are “notroot” / “huluproxy” if you want to login and look around.
5. Configure the PS3 to use the IP of the Virtual Machine as its Primary DNS.
– This means that on the PS3′s network configuration wizard, chose “custom”, and when you get to DNS, choose “manual”.
- Set the primary DNS of the PS3 to 192.168.1.5, aka the IP of the VM.
- Set the secondary DNS to be the ip of your router, should be 192.168.1.1
6. Visit hulu.com on the PS3 and see if it works.
Alternatively, if you are a techie, you can set this up yourself on your own linux machine, see the Configuration section below. I recommend the Linux Mint the distribution.
If you are stuck running Windows, and if downloading and running a VM from some random blog bothers you (which it should), by all means download a more stock VM image and configure Squid and Dnsmaq yourself. In “porting” this solution to my Windows box, I started with an Ubuntu 9.04 image from this gent and configured from there. These VMs are pretty heavyweight tho, which I why I rolled my own once I knew it would work.
The Fix : Conceptually
The fix detailed by the yPass.net guys works but does have one problem: all of your PS3′s network traffic will get routed through the Proxy server. Thus making it very annoying if the Proxy server ever goes down.
Ideally, only network traffic going to Hulu should be routed through the Proxy server, which can be done by setting up your own DNS server.
Thus the fix conceptually looks like this:

Hulu PS3 workaround using Squid and DNSMasq
Step 1. Configure the PS3 to a DNS server (Dnsmasq) that you control, and that has been configured to lie to the PS3 when it asks for the IP address www.hulu.com to it and tell it to use the IP address of the local Squid proxy server instead.
What is nice about this, is that the PS3 can be configured with two DNS servers, a primary and secondary. Configure the PS3 to use the new DNS server as the primary DNS server, and the normal DNS server as the secondary. Thus, the PS3 will still operate normally even if Dnsmasq or Squid is down.
Step 2. The proxy server forwards requests onto the real Hulu servers, but changes the “User Agent” of the browser so it looks like the request is coming from a Windows machine. It does this by being configured as a “transparent reverse proxy”, which unfortunately the Windows port of Squid does not support. Thus you are pretty much stuck running Linux.
Step 3. Enjoy your lazy weekend mornings splayed out on the couch catching up on your favorite shows, but be aware of the limitations of Hulu on the PS3.
One caveat with this setup, as compared to the original proxy setup, is that you can’t login to hulu.com and see your Queue or Subscriptions as in this configuration the Proxy can’t handle the https traffic. To “work around” this, I just bookmark the pages of the shows I want to watch.
The Fix : How it is Implemented
While I worked and debugged the Squid and Dnsmasq configuration on my Linux dev box, I don’t leave it on all the time.
As mentioned above, transparent reverse proxy is not supported on the Windows version of Squid, so I created a very small Virtual Machine of Debian 5 Linux, with Squid and Dnsmasq setup to run on my old, always-on Windows box.
The Virtual Machine boots to a static IP address of 192.168.1.5, uses 128 MB of ram and 500 MB of disk space.
The VM should also “just work” for most people. By definition, if you have a PS3 and you are wanting to watch Hulu on it, you A) have a broadband internet connection, and B) most likely have a home gateway / wifi access point (Linksys, DLink, etc).
Most home gateway routers, don’t dish out IP addresses that low by DHCP so it shouldn’t conflict with anything else on your network. Also, most home routers use 192.168.1.1 as their address in the home (LAN side). If your home router uses a different address, you will have to edit some config files to get it to work.
The Fix : How to configure it yourself, aka not running the VM
Squid: Starting with the default conf file from Squid 2.7 (what comes with Debian/Ubuntu), modify the /etc/squid/squid.conf file as follows.
Uncomment this line in the file
http_access allow localnet
Comment out this line of the file
http_port 3128
Add these lines
http_port 80 accel defaultsite=www.hulu.com http11 vhost allow-directheader_access User-Agent deny all
header_replace User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)
Dnsmasq: Starting with the default /etc/dnsmasq.conf
Add the following lines:
address=/hulu.com/192.168.1.5
address=/www.hulu.com/192.168.1.5
address=/static.hulu.com/192.168.1.5
address=/ads.hulu.com/192.168.1.5
address=/assets.hulu.com/192.168.1.5
address=/t2.hulu.com/192.168.1.5
address=/urlcheck.hulu.com/192.168.1.5
address=/secure.hulu.com/192.168.1.5address=/a.hulu.com/192.168.1.5
address=/b.hulu.com/192.168.1.5
address=/c.hulu.com/192.168.1.5
address=/d.hulu.com/192.168.1.5
address=/e.hulu.com/192.168.1.5
address=/f.hulu.com/192.168.1.5
address=/g.hulu.com/192.168.1.5
address=/h.hulu.com/192.168.1.5
address=/i.hulu.com/192.168.1.5
address=/j.hulu.com/192.168.1.5
address=/k.hulu.com/192.168.1.5
address=/l.hulu.com/192.168.1.5
address=/m.hulu.com/192.168.1.5
address=/n.hulu.com/192.168.1.5
address=/o.hulu.com/192.168.1.5
address=/p.hulu.com/192.168.1.5
address=/q.hulu.com/192.168.1.5
address=/r.hulu.com/192.168.1.5
address=/s.hulu.com/192.168.1.5
address=/t.hulu.com/192.168.1.5
address=/u.hulu.com/192.168.1.5
address=/v.hulu.com/192.168.1.5
address=/w.hulu.com/192.168.1.5
address=/x.hulu.com/192.168.1.5
address=/y.hulu.com/192.168.1.5
address=/z.hulu.com/192.168.1.5
Hulu uses alot of sub domains.
The Fix : Troubleshooting
If you need to have the VM use a different static IP address, you will need to update the address in the /etc/dnsmasq.conf file and the /etc/network/interfaces files. Nano is the availalbe text editor, "sudo nano -w /etc/dnsmasq.conf" & "sudo nano -w /etc/network/interfaces". Either reboot when you are done or restart the services.
To verify if dnsmasq is working : On a Linux machine, do “dig @192.168.1.5 hulu.com“, it should report back the 192.168.1.5 address instead of hulu.com’s real address. I don’t know how to “dig” on a Windows machine.
To verify if squid is running : In a browser on another machine goto “http://192.168.1.5“, you should get a nice “The requested URL could not be retrieved.” message.
Nice. The old machine at our house that is always on is linux. I will try your instructions as soon as I am done watching Warehouse 13 etc. this weekend
Thanks!
Gary
I loaded the VM, I can’t seem to verify connection to 192.168.1.5. Even after setting up the PS3′s DNS it still doesn’t work. All I did was run the VM so it was in the foreground. Do I need to open ports on the firewall? Might the Squid and Dnsmaq service not be started on default? What could be the problem?
@Scotto
Squid and Dnsmasq start by default. Can you ‘ping 192.168.1.5′ from the machine running the VM? Is the local network in your house 192.168.1.xxx?
Hey so my static ip range is not listed. Whats the login info for the VM?
When I tryed to save /network/interfaces I get the error [ Error writing /etc/network/interfaces: Permission denied ]. The “notroot” account you put in the readme file doesn’t have the write permissions to be able to change the files. My home network doesn’t use 192.168.1.x.
Try “sudo nano -w /etc/network/interfaces”. sudo will ask for “notroot”‘s password, and then will elevate your privileges to root temporarily to modify the file.
user / pass : “notroot” / “huluproxy”
My private ip range is 10.0.0.x . In addition to /etc/network/interfaces and /etc/dnsmasq.conf, I also had to edit /etc/squid/squid.conf to change the local networks that were allowed to access squid, and also had to edit /etc/resolv.conf to specify my DNS server.
After that, it worked great – thanks kikkoman.
@haydoselefantes
So I am logged in as notroot and I have just changed the sudo.conf and /network/interfaces files to conform to my network, but I can not for the life of me figure out how to restart the networking or reboot the machine. notroot does not have the privledges
I have tried: /etc/init.d/networking restart and /sbin/reboot and both say I lack permissions. I have also tried su and using the “huluproxy” password to no avail.
Any suggestions?
I had to change the 3 files (interfaces , squid.conf, and dnsmaq.conf) to match my subnet of 192.168.2.x .
I am able to ping the VM and the VM can ping everything else, but the VM can not resolve hulu or any other domain name through the PS3 or on the VM itself.
I changed the dns-nameserver line in the network/interfaces file to my router and also my modem, but both failed. Can anyone offer suggestions?
Thanks,
@Linux_Noob
I don’t have it in front of me, and I don’t remember how to restart the networking off the top of my head.
As far as restarting, “sudo shutdown -h now” should do the trick.
@Linux Noob
Sounds like the DNS configuration on the VM is not happy. Does your local home router act as DNS or does it instead pass along the DNS information from your ISP. If its the latter, you may need to specify the DNS on the VM’s config to be your ISP instead of the home router.
@Linux Noob
I had the same problem. Like you, I kept trying to change the DNS setup in the interface file. I finally figured out I had to change /etc/resolv.conf to specify my DNS server, then everything worked fine.
sudo squid restart
2009/10/09 20:40:49| ACL name ‘localnet’ not defined!
FATAL: Bungled squid.conf line 596: http_access allow localnet
Squid Cache (Version 2.6.STABLE18): Terminated abnormally.
@UbuntuBungler
Looking that the other site you refer too, I guess I should add:
“acl localnet src 192.168.0.0/16″
as it says
Note: For 99.9999% of you, the correct line will be “acl localnet src 192.168.0.0/16?
What is this exactly? Is it some type of mask to refer to anything on my LAN?
@UbuntuBungler
Yeah, that allows the computers on your local network to access the proxy server.
Finished setting up the Linux vm over the weekend and it worked great. I just had to adjust my IP addressing scheme to make it work. Has anyone found a way to log into the hulu site? I don’t need to view my queue, but some shows such as Sons of Anarchy require you to log in to view. When attempting to log it just hangs.
I have dd-wrt on my router, this would be awesome to set up on there
@Scanlixx
Yeah, the transparent reverse proxy setup can’t handle the encrypted traffic that is used when you log in. If you want to be able to login and see your queue, you will have to use the original configuration documented at YPass.net, the downside being that all your net traffic will have to go thru the proxy server.
@Rob
That would be awesome, but I think somewhat unfeasible from the memory requirements perspective.
It might be possible to do the http header rewriting as part of the ipChains stuff, but I suspect its not possible as ipchains/ipfilters is about approving or dropping packets, not rewriting them.
Can I get a fiancee fix? I promised her the PS3 I’ll be getting in a couple of days would let her watch her TV shows on Hulu. Problem is – my only spare computer is a first-gen Mac iBook, G3/500. We’re also in an apartment complex with shared internet. I take it the computer only needs to route, so the speed doesn’t matter? The Machine can run Tiger with no problem – long ago, it was my production machine for webdev, running Apache/MySQL/PHP – but that’s the limit of my understanding of what OS X is running on – but I can learn.
I know everyone hates Macs – but any help or advice on whether that combo might work would be great. Thanks for the info.
Also, do the rest of the flash video sites work on the PS3? She watches tons of stuff on megavideo and whatnot.
Another reason for getting the PS3 is that my production laptop ends up being her laptop TV half the time
Everything SEEMS to be setup properly on my XP machine, but I get to Hulu and get the “not supported” message. I’ve gone to the static IP address on a different machine and gotten the nice message that verifies Squid is working. I can ping the address from the command prompt. The VM even shows up on my Network Magic map with the proper IP address. I’m stumped.
@Crash
I think your best bet is to get your significant other, a netbook. I got mine an HP 311 which with the new Flash beta that takes advantage of the 3D graphics chip.
I don’t think the PS3 would really suffice for you S.O. given that you can’t pause, have close captions, or login to see one’s Hulu subscriptions.
@Will
I don’t know. I’d say make sure the DNS setting on the PS3 is correct.
You test this with your “different machine” by manually setting the DNS on it to point to the VM image.
Best of luck.
Can’t I run squid locally on a dd-wrt router? I was going to upgrade my linksys to dd-wrt and was wondering if I can install and configure squid on the router itself.
I’m planning on using the DNSmasq that is running on my DD-WRT router along with a SheevaPlug running Squid that I’m waiting to arrive but I had a couple of questions first.
1. The only traffic that will be routed through my proxy will be Hulu, correct?
2. Will the header information will only be changed for web browsers that are denied?
3. Why do all of the sub-domains need to be explicitly listed? Wouldn’t the first line “address=/hulu.com/192.168.1.5″ cover all of them?
I would just check this stuff out myself, but I’ve no hardware to play with for 2 weeks!
I was able to install the VM and configure. I am able to visit hulu.com. But when I try to play a clip, I see a new error in my PS3 screen “You are trying to install Adobe Flash Player on an unsupported operating system.”
Does any one know how to overcome this obstacle?
@Sunil
Squid is rather large, I don’t think it will “fit” on the linksys. Best you can do is have the linksys route traffic to a local squid instance.
http://www.dd-wrt.com/wiki/index.php/Squid_Transparent_Proxy
I run the Tomato firmware myself (superior internet control settings for teenagers, aka internet off at 11 ).
@TheBigYahi
1. Yes that is the idea.
2. Header information will only be changed when trying to access hulu.
3. Sub-domains need to be explicitly listed, as dnsMasq does not support wildcards. Aka “address=/*.hulu.com/192.168.1.5″
@Raja
Looks like Hulu has updated the Flash player. Will need to wait for a firmware update now…
I was thinking about this recently. Is there not a way to run the hulu desktop application off of a small usb device in a vm maybe on the ps3? So you could just plug in the usb go to games and run it?
@kikkoman
My PS3 says the same it took my about 30 mins to get the squid setup and finally got hulu reconized but all I get it “You are trying to install Adobe Flash Player on an unsupported operating system.”
Am I doing something wrong or did hulu change something???
Hey I know that Hulu changed Flash versions and now the PS3 is officially dead to it, but I did finally find out something about trying to use the DNSMASQ built into a DD-WRT router. If you use the router to change all requests to Hulu domains, then the requests that the Squid server make BACK to Hulu are looped into the Squid server again. Squid notices this and kills the connection.
or you could just use a laptop with an hdmi port!