
Running Linux on D-Link DI-524 Access Point
Here is some info on how to run your own Linux firmware on D-Link DI-524. It applies only to V1.1 device (version printed on PCB) which has Marvell chipset.Note that it is not yet a complete solution, rather a concept. There is also a possibility that you will completly brick your AP!First of all, D-Link did not yet post any part of the firmware into open-source. Too bad. But that's not a big deal, since AP vendors usually base their hardware designs on sample applications provided by chipset manufacturer. It means, that if there is any other AP with a Marvell chipset, there is a big chance that it's pretty that same as our D-Link. Finally it means that if the other AP's firmware is open-source, we could be able to burn an alien firmware image and successfully boot it.
That's the theory. Now, the practical part.
By simply opening case of the DI-524 (or a little bit of Googling)
we can find out, that:
- the main chipset is Marvell 88W8510-BAN (with ARM9 CPU inside)
- there are 2MB of flash memory (Intel)
- there are 8MB of RAM
- the wireless chip is Marvell 88W8000
- the network switch chip is Marvell 88E6060
It turns out, that (almost) exactly the same set of hardware is inside ASUS WL-530G Access Point. What’s even more interesting, ASUS has released its firmware under GPL (
http://support.asus.com/download/download.aspx?SLanguage=en-us&model=WL-530g). There’s even an external open-source project for this AP – see
http://www.bitsum.com/openwiking/owbase/ow.asp?WL%2D530G.
You have two options:
- get a binary firmware image for WL-530G (either from ASUS or from the open-source project above), or
- build your own firmware from ASUS sources (ARM toolchain also provided by ASUS).
Once we have the image, we need to burn it onto DI-524. And there is actually a problem with that, since D-Link’s original firmware refuses to burn an alien binary file. It could be impossible to simulate a D-Link firmware by adding a proper signature/checksum, since the open-source firmware binary is much bigger than the original. The only option left is to burn your own (or ASUS-provided) boot loader via JTAG interface and set up rest of the firmware using serial console. Both interfaces (JTAG and serial port) are provided by Marvell chip and seem to be routed to test points on the PCB, without connector headers populated (I had already soldered a 20-pin header on the picture below):
Interfacing DI-524 serial portThere is a plenty information on the net on how to connect 3.3V serial port to the PC. You can find nice collection of solitions on
http://wiki.openwrt.org. Probably the easiest way is to do it with Nokia DKU-3P cable if you don't want to make your own circuit. I personaly use a home-made FTDI solution.
Once you connect the serial port you will see that where's not much you can do with it yet. It seems like the serial port support is disabled in the boot loader (it outputs only a test garbage during boot-up). So, the next step is...
Interfacing the JTAGAs you can see in the picture above, there is a place for 20-pin JTAG connector on the PCB. This is a standard ARM JTAG, so just solder a 20-pin header.
I didn't try any of the next steps and I don't know if they really work. Let me know if you have any success.I've found one open-source JTAG tool for ARM9 platform:
http://jtag-arm9.sourceforge.net. It also describes how to build a compatible JTAG adapter. What you should do is to connect your JTAG adapter to the 20-pin connector on the PCB. The pinout is as follows:
Code:
+---------------------------------------------------------------+
| 19 17 15 13 11 9 7 5 3 1 |
| DBGACK DBGRQ nSRST TDO RTCK TCK TMS TDI nTRST VTref |
| |
| GND GND GND GND GND GND GND GND GND Vsupply|
| 20 18 16 14 12 10 8 6 4 2 |
+---------------------------------------------------------------+
Then, download and compile jtag-arm9 tool. Now, burn the WL-530G ARMBOOT boot loader image or prepare your own from sources (make sure you have the serial port support build in). Reboot your device and watch the serial port output. If all goes well, you should be able to command the boot loader to download a firmware image that you specify (most probably via NFS). Reboot to the new firmware image and enjoy your new Linux box
Update: I've found another ARM9 JTAG software, which seems to be more advanced and complete, so you may want to try that instead. It is available here:
http://www.yagarto.de/#download.