Downgrading Apple Airport Express 802.11g (A1084) firmware

October 13, 2013 Off By leigh

I’ve had an Apple Airport Express 1st Generation, 802.11g model A1084 since new, c. 2004. This has long been superseded by newer versions, and for sometime it was just doing duty for me as a USB print server, not as a router. However, it seems that there is a bug introduced around v6.2 of the firmware that would cause it to go offline when configured to “join wireless network”. Restarting the AE would allow it to run, but it would soon drop off the net. It became particularly troubling as it would become unresponsive almost as soon as it was configured, barely even allowing a single print job to be sent. It’s not clear what the cause is or where exactly the bug may lie.

The bug always appears for me, but there were not a lot of reports about this issue, with one exception that finally solved it for me. I really noticed the problem with v6.3, but downgrading to v6.2 also continued to demonstrate the problem. However v6.1.1 seems to work.

The problem is exacerbated by Apple abandoning support for the 1st gen AE 802.11g in their Airport Utility after V5.6.1. For example Airport Utility V6.3.1 recognizes the device, but refuses to allow any configuration of it. What’s really annoying is that you can run Airport Utility 5.6.1 on MacOS 10.8.5 but you need to break the app out of it’s installer package as the installer refuses to install the app on later MacOS versions. Unfortunately, it seems with MacOS 10.9.X (Mavericks) the old 5.6.1 app will no longer run. This is presumably because of code signing, since I tried thinning the PPC version with lipo to no avail. I’m yet to figure out a solution to this, and frankly this only highlights the appalling support of Apple in abandoning it’s hardware.

This is a damning indictment of closed source software, particularly with Apple’s use of a desktop app to do the device configuration without providing a web interface. I even contemplated what would be involved in getting a minimal Linux port onto the AE, since it runs VxWorks now. This can be demonstrated with the following command in the Terminal after installing nmap (I recommend Fink). XXX.XXX.XXX.XXX is the IP address of the AE.

% sudo nmap -v -O XXX.XXX.XXX.XXX
...
MAC Address: 00:14:51:78:55:5D (Apple Computer)
Device type: general purpose
Running: Wind River VxWorks
OS CPE: cpe:/o:windriver:vxworks
OS details: VxWorks

The only real way to recover the AE after it hangs is by doing a hard reset of the firmware back to factory settings. This is done by holding down the tiny reset button and powering on, continuing to hold the button for 20 seconds or more until the LED starts flashing rapidly. It is possible to downgrade the firmware, if you have the earlier versions of the firmware. These are found in earlier versions of the Airport Utility version XML file. I downloaded the v6.1.1 version using curl:

% curl -o airport_express6.1.1.baseBinary http://apsu.apple.com/data/102/061-3060.20070321.cVxe4/6.1.1.basebinary

But you could also just save the file using a web browser. If you do so, give it an extension of .baseBinary, e.g. airport_express6.1.1.baseBinary. The URL relates to the ProductID 102, which is the AE 1st gen. The MD5 checksum for the v6.1.1 file is 40970abbf6f7c1091161873e5d97142d.

With Airport Utility v5.6.1 broken out from it’s installer and renamed Airport Utility_5.6.1.app so as not to clash with the new Airport Utility, each time you start that app, click Cancel to ignore upgrading to the latest AirPort Utility. You can then downgrade the firmware by selecting Base Station->Upload Firmware… and choosing Other… for Upload Version and then navigate to where you saved the airport_express6.1.1.baseBinary or whatever you called it.

You should find after upgrading and rebooting, the AE is reasonably robust again and can still do a serviceable job as a print server. There may be some missing functionality in v6.1.1 in it’s RAOP support (i.e. AirTunes), and v6.1.1 only supports WPA personal, not WPA2 personal, so you need to ensure your main router has both protocol support enabled (that caught me). However, this keeps an old piece of hardware running, which saves money and keeps e-waste and unnecessary consumption down.