Lately, I have started sorting out what I could do with an airport express device I don’t use anymore. My goal is ultimately to replace the Apple’s firmware with a firmware of my own.
As an initial goal, I’d like to be able to extract the original firmware and flash again the device with it to ensure I can go back and forth between firmwares.
If you are interested in helping, please read the Next steps section.
Access to the JTAG (and UART) pins was operated this way:
Here is the custom external header pinout:
TDI--\ /--UART0 RX TMS--\ | | /--GND unused--\ | | | | | | | | | +-|---|---|---|---|---+ | | | | | | | | *-+ *-+ *-+ *-+ *-+ | | | | | | | | | | | | | | +-+ +-+ +-+ +-+ +-+ | | | | +-+ +-+ +-+ +-+ | | | | | | | | | | | | *-+ *-+ *-+ *-+ | | | | | | | +-----|---|---|---|---+ | | | | TCLK--/ | | \--VCC TDO--/ \--UART0 TX
I am using a FT2232H Mini Module as a JTAG adapter:
Here is the complete setup:
First things first, power up the airport express device.
Start OpenOCD:
openocd -f interface/ftdi/minimodule.cfg -f custom.cfg -f target/atheros_ar9344.cfg
Connect to the OpenOCD server through telnet
:
telnet localhost 4444
Within telnet
:
reset
halt
reset init
dump_image memdumps/0x80000000-0x90000000.bin 0x80000000 268435456
As far as I know there is currently no OpenOCD board script for the airport express 2.
The target/atheros_ar9344.cfg
script passed to OpenOCD only gives access to the board’s CPU features, this does not seem enough to operate a dump of the firmware.
As I am quite new to JTAG/OpenOCD, I need to seek guidance.
If you’re interested in helping designing an OpenOCD board script for the airport express or know of any resources that might help with this task, do not hesitate to open an issue on this project, you might for instance ask me to:
-
operate a test on the current setup, please describe the test’s steps and the intended results in the issue
-
add a pointer to any relevant details about the airport express 2
-
add a pointer to any relevant details about how to write an airport express 2 OpenOCD board script
-
point out any error in this README
I will bring together all relevant information related to the airport express 2 and its associated OpenOCD board script in this README file.