DSM-G600

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.


Local Resources

Icon  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
[TXT] 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
[DIR] 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
[TXT] firmware-notes.txt 23-Nov-2006 23:35 367
[DIR] jtag/ 24-Nov-2006 23:35 - JTAG Information
[ ] sed-4.1.5.tar.bz2 23-Nov-2006 23:35 60K Sed executable
[DIR] 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.

Led control strings

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

Chassis Status Strings

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

Document made with Nvu Last Updated Feb 10, 2007