I bought two of the D-Link DI-604 Ver.E3 REFURBISHED router about 5-6 years ago (for ~ $15USD each), 1 of which I'm still using, and the other kept as a spare (both still fully functional)
I noticed there's no mention at all of the DI-604 Rev. E* on http://wiki.openwrt.org/oldwiki/unsupported
and thought of doing a little research (and later opening its guts to see what was refurbished)
Closest and most helpful matches were:
1. in the "noMMU-based hardware" table, brief details on "DLINK DI-604 rev E" at:
http://hri.sourceforge.net/hw/index.html
Mentions:
OEM ID:GLWRT-CG0-B10
Marvell 88E6208 (ARM9 CPU at 133 MHz)
1M Flash (MX 29LV800BTC-90)
8M SDRAM
JTAG header
Serial header (UART?)
ThreadX
Firmware in ARJ format
(ThreadX-based firmware?)
and link to (#2) "Jerome's details"
2. Jerome's details, page titled "Dlink DI-604 rev E internals": http://www.ljmsite.com/tech/DLink_DI-604/
Same info as #1, except it adds a little more specific info, like the "Altera EPM3032A" PLD chip?
Jerome's page also contains a clear picture of the PCB: http://www.ljmsite.com/tech/DLink_DI-604/DI-604.jpg
3. DI-604 Rev E1, E3 (non-refurbished) comparison:
http://www.dslreports.com/forum/remark,15693750
Looks like main difference is 88E6208 is up to 133Mhz and 88E6218 is up to 150Mhz.
---
I opened my REFURBISHED DI-604 Ver.E3 to compare, and found almost same PCB layout, except for a few (notable) differences:
Board Version: WL WRT CG4 B10 - Ver:V1.0 - with "B11" hand-written over it with black marker, since it was "refurbished" (instead of GLWRT-CG0-B10)
Marvel 88E6218-LGO Chip (instead of the Marvell 88E6208)
http://www.datasheetarchive.com/pdf-dat … 328306.pdf
Brief description from the datasheet:
ARM9E CPU at up to 150 MHz (ARM9E CPU with DSP processor instruction extensions)
RAM: ISSI IS42S32200B-6T
http://pdf1.alldatasheet.com/datasheet- … 0B-6T.html
Brief description from the datasheet:
512K Bits x 32 Bits x 4 Banks (64MB)
Clock frequency: 166, 143 MHz
Unfortunately, however, same "MX 29LV800BTC-90" 1MB Flash (AMD/Macronix?)
http://www.macronix.com/web/P_flash.nsf … AB-2.2.pdf
http://www.amd.com/us-en/assets/content … /21490.pdf
Original Router firmware version: 3.38
Latest Router firmware version: 3.53
Size: 917,504 bytes
----
Found what looks like a replica of this board/router in in page 17 of the following pdf:
(Exploiting embedded systems)
http://www.blackhat.com/presentations/b … 6-Jack.pdf
Only differences I think is the RAM chip (the one pictured has the original IC-Mart 8MB SDRAM) and the soldered JTAG interface/connector - connected to an ARM Multi-ICE / In-Circuit emulator (of course I don't own one myself).
Page 5 shows the older version of this board (GLWRT-CG0-B10, w/ Marvell 88E6208), but very similar to the one I have - which is on page 17 - and pinpoints the Serial/UART port location
Page 10 - The Marvell 88E6218:
Processor is ARM9E based, running at 150Mhz, 7 switch ports, 1MB embedded memory, 16 GPIO ports, 1 UART. Supports both the ARM and THUMB instruction set.
Page 22 - Firmware Reversing:
The DI-604 firmware is compressed and check-summed to verify original firmware. Checksum routine is simple to find by reversing "upload firmware" code snippet. A small tool was written to patch firmware after modification - any hacked firmware may be uploaded.
Personal Note: I believe the UPnP stack overflow vulnerability (mentioned on page 26) was fixed in latest firmware (3.53) from D-Link, I always have UPnP disabled anyway since reading a few years back about the widespread flaws in its implementations which could allow it to be used as a step-stone to bypass firewall filters
----
A somewhat related article on "DLINK DI-604 rev A", though DIFFERENT rev/ver & HW (ARM7TDMI based ADM5106 SoC):
http://hri.sourceforge.net/di_604/
Has a small section at the bottom about reverse engineering the firmware:
Flash details (bootloader, initialisation and so on)
http://hri.sourceforge.net/di_604/flash_mem.html
A bit old (Mar 2004), Flash image with firmaware version 2.10 flash.bin , but gives a general idea
from "Procedure to restore original firmware" page: http://hri.sourceforge.net/di_604/reflash.html
You don't have to worry about making a paper weight out of your DI-604 by flashing it with test firmware. It has a tiny flash program saved in the boot sector of the flash that cannot be overwritten. You can restore your flash by doing the following:
1. Get firmware from DLINK website (of course, duh!)
2. Power off the router
3. Give your computer a static IP address of 192.168.0.100.
4. Push and hold the reset button down with a paper clip or something similar.
5. While holding the reset button down plug the router back in and keep holding the reset button down for 10 seconds.
6. Open a browser and go to http://192.168.0.1You should see a simple web page with and edit box, a browse button and a send button. Use this to flash your router with the DLink firmware and all should be well again.
This is the same behavior as my DI-604 Rev.E3, as I've done this before a few times (D-Link calls it "Crashing Router" for de-bricking it), and quite comforting to know I could always fall back to that. TFTP is also possible and I've done before (after "crashing" the router) iirc..
----
Conclusion:
1. Even with 64MB SDRAM , the 1MB Flash makes it impossible to add (even minimal) support for this ARM9E based router? Do I get a cookie at least?
If not /impossible/ to build and load a "micro" or stripped-down openwrt for it:
2a. Would it be sensible?
2b. Can I tap into the UART port on this board with a "modified" mobile phone serial cable? or would I still need to built a MAX232 adapter?
----
N.B.:
Though by all means I'm no expert, I've worked a little bit with embedded systems before (and participated in development of what was previously known as LRP - Linux Router Project), have an intermediate background knowledge in linux kernel dev / programming, and fairly long experience in network arch & net administration.
I've been reading a lot about OpenWRT and some of the forum's dev threads (and played around with derivatives such as ddwrt few years back) and have been quite impressed by it, and so I thought maybe this would be a good start for me to experiment, at least until I get other hardware to play with..