Linux Kernel on the DNS-323

Differences D-Link vs. Mainline

The D-Link provided Linux kernels shipped so far up to firmware 1.03 are derived from Marvell's BSP for their Reference Designs. In the meantime, there is an effort to push support for the Orion SoC family into mainline. The following table tries to sum up the differences:

D-Link Mainline
Versions 2.6.6, 2.6.12 2.6.25+
Mach-Type 526 1542
Ethernet Device egiga0 eth0
Fan Control ioctl(egiga0,…) /dev/i2c or HWMON
Temp. Sensor ioctl(egiga0,…) /dev/i2c or HWMON
Poweroff ioctl(egiga0,…) reboot(LINUX_REBOOT_CMD_POWER_OFF)
LEDs ioctl(egiga0,…) /sys/class/leds/…
Key Buttons ioctl(egiga0,…) /dev/input/…

Mainline Sources

As the orion.git is in the progress of being prepared for merging into Linus' mainline repository, if you want to play with the current source base you'll have to checkout the git:// repository. Note: the 'for-rmk' branch of this git repository was merged into the Linux 2.6.26 kernel on Fri May 9 23:24:09 2008 +0100.

And you might want to apply the following DNS-323 add-on patches not yet merged yet, if you want full support for additional devices found on the DNS-323.


NetBSD on the DNS-323


The usual disclaimer applies. If you brick your device it is your fault 100% of the time. This page describes what has always worked for my DNS 323 hardware.

NetBSD was ported by Kiyohara in 2007 but is not yet part of the official tree so you have to get current and patch it. The patches are in

The entire NetBSD distribution can be built using a Linux box so there is no need to switch from your favourite OS. The script that comes with the NetBSD sources builds everything or just the cross-compiler or just the kernel depending on the arguments passed to it.

I will focus on building the kernel and the cross compiler for now. Once the kernel is built you could save time by downloading userland from the because all little-endian arm boards share the same binaries. The final result is going to be a standard NetBSD installation (like the one on a PC) except that this one runs on ARM. That is how my setup is but you can do whatever you want obviously.

The dmesg


Personal Tools