iPod Touch location service: Skyhook

So the iPod Touch doesn’t have GPS built in, but it does provide location services if you have the right magic.  nolocationIf you were lucky and once you had hooked up to your local WiFi access point, your iTouch was just magically able to figure out where you were (at least a rough approximation – ie: within a block or two).  If you were lacking magic, then you’ll be familiar with the “Your location could not be determined.” dialog.

The magic is due to Skyhook:  They’ve taken the same information you’d gather wardriving – and turned it into a generally useful bit of data.  Those of you that have regular  GPS devices, will know how poorly they function indoors.  However, indoors is exactly where WiFi works fairly well.

They have a reasonable How It Works page, where you can also submit your own access point if you don’t happen to be in the database.  There are three bits of data you need to submit: your address, an email address for confirmation and your wireless MAC address.

If you happen to run DD-WRT on your router, it is very easy to find from the routers status page.

macYou’ll notice there are 3 MAC addresses: LAN, WAN and Wireless.  The LAN address is the wired address for your internal network, the WAN is what is broadcast over your broadband connection and the Wireless is for WiFi.  Skyhook relies on the latter, which is the MAC address that your iTouch is associated with.

I submitted my information on Saturday Sept 26th, and it went live on Monday October 5th.  They say it may take up to 2 weeks.  If you don’t get the right MAC address, it won’t work, so make sure you’ve got a handle on that.

You can check the coverage for your area, but with an iPod Touch you are limited to being able to make use of it only in areas where you have a WiFi connection as well.  Why?  Well, simply put the database is out there on the web – if you can’t find the database, you can’t look up your location.  Of course with the iPhone, you can use your cell data connection to query the database and get the increased accuracy and/or have it work indoors.

While I figured this out the hard way, while writing this post I came across the following blog posting that covers this as well as other useful tips.  There is also a slashdot article on Skyhook.

iPod Touch firmware upgrade with VMWare

With the recent OS 3.1.1 release it was really only a matter of time before I got around to upgrading again.  My previous firmware upgrade was not very smooth.  As I’ve mentioned previously, I run iTunes on a VMWare image of Windows XP – hosted on my Ubuntu desktop.

During the firmware upgrade process the iPod changes the type of USB device it is – this causes problems for Linux/VMWare.  I had previously thought there was no way to get around these issues, making VMWare based firmware upgrades impossible.  I’m happy to report that I was wrong.

Motivated by the OS 3.1.1 upgrade being free of charge (to suckers users who had purchased 3.0, and only $5 otherwise), I figured I’d take another run at making this work under Ubuntu / VMWare.  I found a post that discussed upgrading the iPhone under VMWare, and it turns out that this was pretty much the magic sauce to make things work.  The steps are shamelessly reproduced here, I cannot take the credit:

Create a file /etc/modprobe.d/blacklist-usb containing:

blacklist snd_usb_audio
blacklist usbhid

Reload udev to refresh the configuration we just changed:

sudo /etc/init.d/udev reload

Forcefully remove the kernel modules:

sudo /sbin/modprobe -r snd_usb_audio
sudo /sbin/modprobe -r usbhid

Perform the upgrade under VMWare.

Reverse these steps after the upgrade to restore your Ubuntu machine to normal:
sudo rm /etc/modprobe.d/blacklist-usb
sudo /etc/init.d/udev reload

Read on for gory details on what I actually did..

Continue reading “iPod Touch firmware upgrade with VMWare”