on 01.10.06, 06:57am in gadgets • share on facebook • comments (37)
While I love my Playstation Portable as a both a game machine and portable media device, one of the biggest limiations is the fact you’re limited to the storage on the memory stick. Even with a 1GB stick, after you drop on a movie or two, you’re really limited in what you can store on it compared to an iPod.
About a year ago, I picked up an Asus WL-HDD drive enclosure (available from Newegg for $88). What’s cool about it is that it’s not only an external 2.5" drive case, but also packs in a 100mb ethernet connection, 802.11g ethernet access point, and an additional USB port for external drives. This is in an extremely small (180mm*90mm*25mm) form factor that weighs only 200g – perfect for travelling or a small home NAS device. I ended up dropping in an old 20GB laptop drive just to play around with it.
For a while, I was really trying to figure out a way that I could use this to be an external storage device for the PSP, but it only allowed access to the files stored on the drives via Windows Networking (or Samba), which made it a non-starter. Additionally, there was no way to really ‘stream’ content to the PSP – if you hit a media file with the browser, it copied it down to the memory stick.
Everything changed though when Sony has relased firmware 2.6 which supports the streaming of music over an RSS feed (Note: Unfortunately, the PSP enclosure support currently only supports MP3/AAC music files via an RSS feed. Hopefully, they’ll update this to include video soon).
At this point, I should mention one more thing – Asus has made the firmware for this guy freely available for download (and modification, which voids warrenties, etc). In a similar fashion to other NAS devices that have had interesting modifications made to them (such as the NSLU2), people have begun to take the firmware and extend it (more info here and here).
After spending the weekend hacking around with Oleg’s fantastic firmware, I now have it up and running with not only the functionality that came with the WL-HDD, but I was able to put a small webserver on it that is completely accessible from my home network when plugged into my lan. And, since the WL-HDD can also act as an 802.11g access point, the PSP can access the web server directly when travelling. Having a small, wireless embedded browser with access to 20gb of storage (I put an old laptop drive in) not only enables all sorts of neat scenarios, but specifically now allows me to access the web pages and RSS feeds with enclosures I dropped on there so that the PSP RSS "Channels" can stream content from the drive.
Now, here’s my disclaimer and warning: You need to know some unix in order to make this work, and anything you do is at your own risk. If you toast your device or if it doesn’t work, it’s not my fault, you can’t sue me. Also, I’m not tech support. I will try to help out if you get stuck, but consider yourself on your own (the forums here are great for help).
Here’s basically what I did to get Oleg’s firmware on the device, Samba/Windows networking working, and get thttpd running by default on the drive. While daunting, it’s a one time setup:
Step 1: Flash Oleg’s firmware version 22.214.171.124b to the WL-HDD. Details can be found at http://wl500g.info/showthread.php?t=4145. Once the flash has completed, configure the WL-HDD via it’s web interface, configure it, etc. Turn on Samba support via the web interface.
Step 2: Configure/Enable Samba. Telnet into the WL-HDD and modify (or create) /etc/smb.conf:
workgroup = WORKGROUP
guest account = nobody
security = share
browseable = yes
guest ok = yes
guest only = yes
log level = 1
max log size = 100
encrypt passwords = no
preserve case = yes
short preserve case = yes
path = /tmp/harddisk
writable = yes
browseable = yes
force user = admin
Basically, this will create a network share called "share" that’s viewable by the workgroup named "WORKGROUP".
Step 3: Enable Samba to start on device boot. Via telnet, you’ll want to flash smb.conf to the device, and start samba using the ‘post-boot’ file. To do this, type the following commands:
echo /etc/smb.conf >> /usr/local/.files
echo "/usr/sbin/smbd -D" >> /usr/local/sbin/post-boot
echo "/usr/sbin/nmbd -D" >> /usr/local/sbin/post-boot
chmod +x /usr/local/sbin/post-boot
Step 4: Create a swap file for additional applications. Once the WL-HDD has rebooted, telnet into it again. We’re going to create a 64MB file that we’ll use as a mounted swap file that additional applications (such as our webserver) will be installed. More info can be found at http://wl700g.info/showthread.php?t=1917
dd if=/dev/zero of=/tmp/harddisk/opt.ext3 bs=1048576 count=64
mke2fs -j /tmp/harddisk/opt.ext3 (note: answer "yes" when asked)
mount -text3 -oloop,noatime /tmp/harddisk/opt.ext3 /opt
mkdir -p /opt/tmp/ipkg
echo "#!/bin/sh" >> /usr/local/sbin/post-mount
echo "mount -text3 -oloop,noatime /tmp/harddisk/opt.ext3 /opt" >> /usr/local/sbin/post-mount
chmod +x /usr/local/sbin/post-mount
Once the WL-HDD reboots, you’ll see a 64MB file on your harddrive. Internally, the drive mounts this and sees it as a 64MB drive that it can use.
Step 5: Install ipkg. Ipkg is a simple package installer, more details can be found here. Telnet into the WL-HDD:
ipkg.sh install ipkg
echo "src unslung http://wl500g.dyndns.org/unslung" >> /opt/etc/ipkg.conf
This will update ipkg with the latest available packages, and install the binary to our mounted swap drive.
Step 6: Install the thttpd webserver. In your telnet window, type:
ipkg install thttpd
Step 7: Configure thttpd. In your telnet window, you’ll want to edit /opt/etc/thttpd.conf:
Save it. This will configure thttpd to run on port 8080, and use /tmp/harddisk/www as the ‘root’ of the website.
Step 8: Enable thttpd to start on reboot. In your telnet window, type:
echo "/opt/etc/init.d/S80thttpd" >> /usr/local/sbin/post-mount
Whew! If everything worked correctly, when the WL-HDD reboots you should be able to create a simple "index.html" file on your harddisk in the "www" folder, and be able to access it via a browser by going to http://wl-hdd:8080/index.html (I had to use the device’s IP address for some reason).
Step 9: Create a webpage and an RSS feed that the PSP can consume. After I verified that everything was working correctly from my PC, I copied an MP3, a RSS file that was properly set up to point to the MP3, and a sample webpage that linked to the feed.
Finally…. From the PSP’s webbrowser, access the webpage you put on the drive (http://wl-hdd:8080/index.html). Click on the link to the RSS feed, and the browser will ask you if you want to subscribe to it. Once you do, you’ll be able to access it from the PSP main menu, and stream whatever MP3’s are specified in the feed (more here).
Wow. I know that was a really long, complicated post – sorry about that. Hopefully, someone else may find these instructions useful, it was a pretty interesting weekend hack project. Tommorow, i’ll post a sample RSS feed and html page that I used to stream from the WL-HDD directly to the PSP.