
This Page is intended as a living document.
There is a wiki page for the DSM-G600 and a forum for hacking information.
A similar device is Kurobox, there is a wiki with a lot of information that may be applicable to the DSM-G600.
Name Last modified Size Description
AN3217-uboot-usb.pdf 24-Nov-2006 15:53 90K Application note for u-boot
DSM-G600_A1_Manual_v1-00.pdf 23-Nov-2006 23:34 21M Manual for Version A
DSM-G600_B1_Manual_v1-00.pdf 23-Nov-2006 23:34 35M Manual for Version B
dsmg600_revB_release_note..> 23-Nov-2006 23:35 820 Release Notes for firmware version 1.02
dsmg600_B_GPL.tgz 23-Nov-2006 23:35 67K GPL Source distribution tarfile
firmware/ 24-Nov-2006 17:28 - Directory containing official firmware images
firmware-0.2.tgz 13-Dec-2006 23:45 883K Firmware dump/creation utilities source tarfile
firmware-notes.txt 23-Nov-2006 23:35 367
jtag/ 24-Nov-2006 23:35 - JTAG Information
sed-4.1.5.tar.bz2 23-Nov-2006 23:35 60K Sed executable
src/ 23-Nov-2006 23:35 - GPL sources for DSM G600
utelnetd+dash+mknod.tar.bz2 23-Nov-2006 23:35 92K Telnet daemon, Dash shell, Mknod executables
This page is intended to document my efforts in devloping new firmware and functionality for the DSM-G600. My goals are remain in flux. I currently thinking about some sort of Wireless Access Point servering local content as well as internet, possibly with support for mesh networking.
My initial work at understanding the DSM-G600 and standard firmware is here.
The file Build_DSM-latest.tgz contains a set of make files and patches to build a slightly modified version of the factory firmware. This firmware will check for a filesystem with the label DSMG600_KEY it will mount that filesystem on /newroot. It will then check for an executable file named .DSM-G600-USB-KEY-init in the root directory of /newroot. If that file exists, it will "exec" that file replacing the original startup script otherwise it will continue booting the original firmware.
To use the Build_DSM makefiles, you need two files, the
Bulid_DSM
tarfile and the dsm firmware source distribution from D-Link such as
dsmg600_B_GPL.tgz.
First extract the files from the Build_DSM tarfile, assuming the file
is named Build_DSM-latest.tgz this would be done with the command:
tar xzvf Build_DSM-latest.tgz
Then change to the directory created, if the firmware source
distribution
file is ${dir}/dsmg600_B_GPL.tgz use the command:
tar xzvf ${dir}/dsmg600_B_GPL.tgz
Now running the make will build a firmware image that can be downloaded
into the DSM G600.
N.B. The build process can be speeded up, by saving the toolchain download directory uclibc-toolchain-src-20040609/gcc-3.3.x/sources/dl/, then on subsequent builds extracting copying that directory into the new buld tree, this will save the time required to download the files in that directory.
By running chkbutton under strace and looking at the strings in chkbutton I was able to determine that the LEDs are controlled by sending three leter strings over /dev/ttyS1. A user, StevieP, from the DSM-G600 forum discovered that chkbutton was reading the buttons using ioctls on /dev/ttyS1 and that the serial port device driver was reading the serial port and setting flags that are returned by the ioctl.
Connected to the serial port is an MCU that controls the power and leds, and reads the chassis buttons.
| String | Function |
| SYN | Power led flash, HDD, HDD-Full, USB, WLAN leds off |
| ZWC | Turn Power Off |
| ZWO | Power led solid |
| ZBO | Power led flash |
| WLO | WLAN led green |
| WLC | WLAN led off |
| WBO | WLAN led flash green then off |
| HDE | HDD led yellow solid |
| HDC | HDD-Full led off |
| HBO | HDD-Full led flash yellow |
| HDN | HDD led off |
| MMK | USB led green |
| MMF | USB led yellow |
| MMC | USB led off |
| MMI | USB led blink green |
| MUI | USB led blink yellow |
| MMN | USB led off |
| AKO | Unknown |
| TSO | Power, HDD, USB, WLAN leds green, HDD-Full yellow |
| TSR | Power, HDD-Full, WLAN leds off, HDD, USB leds yellow |
| TSC | Power, HDD, HDD-Full, USB, WLAN leds off |
| String | Bit | Function |
| RKO | 0x0001 | |
| UKO | 0x0002 | |
| CKO | 0x0004 | |
| EKO | 0x0008 | |
| PKO | 0x0100 | |
| 1KO | 0x0200 | |
| TS1 | 0x0010 | |
| TS2 | 0x0020 | |
| RKR | 0x0040 | |
| UKR | 0x0080 | |
| IOK | 0x1000 | |
| LOK | 0x2000 | |
| NOK | 0x4000 | |
| AKI | 0x8000 |