Support of IB-NAS6210/6220 in Linux Kernel

As of version 3.5, support for the IB-NAS 6210/6220 is part of the mainline kernel. As all newly added ARM-based boards, it uses flattened device tree. These provide a description of the available hardware resources and their dependencies in a platform-neutral and portable way. Usually, the boot loader should provide such a description to the kernel in the form of a compiled device tree blob (dtb).

Since this requires a new and patched U-Boot, another possibility is described here: The kernel supports a compatibility mode, which allows to append the dtb to the kernel zImage. Such a kernel can be booted like a non-DT enabled kernel by an old boot loader and uses DT only internally.


The following table summarizes the usage of the GPIO pins as far as know to me:

GPIO#In/OutFunctionLED name/Key name
22ORed OS LED (master enabled through green power LED)nas6210:red:os
23IPower button (high only after button has been pressed for approx. 3 seconds. Will stay high until next power cycle).Not supported
24OPower off device
25OGreen OS LED (Off state: dim green, On state: bright green)nas6210:green:os
27OUSB copy LED (red) nas6210:red:usb_copy
28IReset Button (rear)KEY_RESTART
29IUSB copy buttonKEY_COPY

The kernel allows you to use those via the kernel’s LED or input event interfaces. GPIO #24 is used to turn off the device. If you have used my previous non-DT enabled patch, please be aware that I renamed the „power“ LED to „os“ to reflect the label on the case.

Kernel Configuration

Obviously, you should enable:

System Type --> Marvell Kirkwood Implementations

  • RaidSonic IB-NAS6210, IB-NAS6220 (Flattened Device Tree) (CONFIG_MACH_IB62X0_DT)

Additionally, you will need some open firmware stuff:

Boot Options -->

  • Flattened Device Tree support (is already selected when you select a DT enabled board)
  • Use appended device tree blob to zImage (EXPERIMENTAL) (CONFIG_ARM_APPENDED_DTB)
  • Supplement the appended DTB with traditional ATAG information (CONFIG_ARM_ATAG_DTB_COMPAT)


Device Drivers --> Device Tree and Open Firmware support

  • Support for device tree in /proc (CONFIG_PROC_DEVICETREE)

To enable the serial console: (This is in addition to the 8250/16550 and serial console support you should generally have enabled for kirkwood.)

Device Drivers --> Character Devices --> Serial Drivers

  • Serial port on Open Firmware platform bus (CONFIG_SERIAL_OF_PLATFORM)

To be able to set the MTD partitions of the NAND flash via the flattened device tree:

Device Drivers --> Memory Technology Device (MTD) support

  • OpenFirmware partitioning information support (CONFIG_MTD_OF_PARTS)

In addition to the NAND flash support you should generally have enabled (Device Drivers --> Memory Technology Device (MTD) support --> NAND Device Support --> NAND Flash support for Marvell Orion SoC (CONFIG_MTD_NAND_ORION))

Then, compile your kernel and modules as usual to get a zImage (If you use make uImage, don’t use it yet!). Additionally, do a:

make dtbs

to obtain „arch/arm/boot/kirkwood-ib62x0.dtb“. Because we enabled CONFIG_ARM_APPENDED_DTB, we need to append the dtb to the zImage.

cat arch/arm/boot/kirkwood-ib62x0.dtb >> arch/arm/boot/zImage

Now you can proceed to install the kernel as usual (probably making an uImage from the zImage in the process).

The uImage looks like any pre-FDT kernel. Thus, the description in my page RaidSonic ICY BOX IB-NAS6210, my “new” SheevaPlug allows to boot it. If the partitions are laid out as described there:

setenv mainlineLinux yes

setenv arcNumber 3104

setenv bootargs_console console=ttyS0,115200

setenv bootargs_root 'root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rootdelay=10'

setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x00800000 /uImage; ext2load usb 0:1 0x01100000 /uInitrd'

setenv bootcmd 'setenv bootargs $(bootargs_console) $(bootargs_root); run bootcmd_usb; bootm 0x00800000 0x01100000'


Note that the arcNumber is not relevant anymore, the actual board is identified by the appended DTB.

Booting the Kernel using an FDT capable U-Boot

I keep this for later…

8 Gedanken zu „Support of IB-NAS6210/6220 in Linux Kernel

  1. Thank you for your work on getting Debian on the IB-NAS. I followed your manual to boot a mainline kernel and the system is up and running. Could you please provide a kernel with DTB included for booting on the 6110 with the stock uboot.

    Thanks again.


    1. Hi Alexander,

      sorry, I am not 100% sure what you are asking for. With „mainline kernel“ I suppose you mean a stock Debian kernel and now you would like to install a newer kernel with direct support for the NAS6210?

      I don’t build Debian kernel packages, but I install the kernel directly. So, I could provide a tar of /lib/modules, uImage and uInitrd. Would this help?

  2. Hi Simon,

    you are right. On the IB-NAS I’m using a kernel witch is build for the sheeva plug . Due to a problem with jumbo frames in the ethernet driver (mv643xx_eth), I would like to update the kernel and driver.

    So I would apriciate if you can provide a tar of /lib/modules, uImage and uInitrd. Hopefully the uImage is a combination of uImage and the DTB-file. If I understood your manual correctly, I can use this kernel without changing uboot and its envirenment variables.

    Thank you in advance.


  3. Hi Simon,

    Thank you for the archive. Just to be shure, the uImage in the archive is merged from the zImage and the dtb file? The size of the file is much smaller than my actual uImage.



  4. Hi Simon,

    thank you for providing the kernel and modules. I had to change the archNumber to get the kernel starting by uboot.

    After setting the archNumber to 3104 the kernel starts but I have a problem with the ethernet interface. The module mv643xx_eth is getting started but a few minutes after using the interface something happens. The system freeze (no network, no ping).
    I don’t know what is going wrong. There is nothing in the log files so I have no idea.

    Can you help me please. What are your experinces with this kernel?



    1. Hi Alexander,

      strange. What happens if you don’t use arcNumber 3104?
      I haven’t experienced any issues with the kernel up to now. You said above that you intend to use jumbo frames. May this be causing instability?


Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *