Running Debian on Thecus n4100

From WPKG | Open Source Software Deployment and Distribution
Jump to: navigation, search

Installation[edit]

Installing is very similar to installing Debian on Thecus n2100 - see http://david.thg.se/n2100/. If you have a problem accessing that page, I made a local copy.

You will need a serial port, and a tftp server.

Note that there is no Debian installer for Thecus n4100, so n2100 installation instructions from cyrius.com will not work.


alternative installation[edit]

If you don't want to start an installer as described on http://david.thg.se/n2100/, you can do the following:

  • using another machine, copy a customized minimal Debian on a SATA HDD/RAID array, or a CF card
  • you can get a customized minimal Debian for little endian ARM on http://wpkg.org/index.php/Running_Debian_on_Freecom_FSG-3#Downloads - remember to use proper kernel modules from Thecus n4100 (download link below)
  • set up RedBoot to load the kernel; the kernel should start the system from that SATA HDD/RAID array/CF card (root=/dev/sda1 etc.)

Basic info[edit]

network cards[edit]

Thecus n4100 is a bit different from n2100. Most of all, it has a different network card (2x Intel e1000).

Apparently, Thecus wanted to save a couple of cents, and didn't include flash with those cards (which should store MAC addresses). Because of this, MAC address has to be hardcoded into the kernel module. To see what was changed, diff files in drivers/net/e1000 between the original 2.6.17.8 kernel, and a source download below. See http://sourceforge.net/mailarchive/message.php?msg_id=45EFECA5.7060804%40wpkg.org for more info.


RTC clock[edit]

RTC clock module doesn't work very well:

RTC in n4100 is a bit different than in n2100, but as I couldn't make the Thecus GPL RTC sources
compile with 2.6.17.8, I used the RTC sources from n2100.
They are a bit different since the n4100 is missing the fintek hw
monitoring chip, and pca9532 and rs372 is changed a bit.

When you do some intensive job (like "nice -n -19 make"), RTC begins to break after
a minute or so - this is appended to dmesg every few seconds:

thecus_rtc: cant write PCA9532 Reg#09
thecus_rtc: cant read PCA9532 Reg#09
thecus_rtc: cant write PCA9532 Reg#09
thecus_rtc: cant read PCA9532 Reg#09

It doesn't stop even if you stop that intensive job.
When you run "hwclock", it doesn't respond, and kernel logs this:

rtc_rs372_read i2c transfer read fail !!

It is very likely that the machine in that state would freeze soon - it
happened to me several times.

So it is best to do on system bootup:

  • load the module
  • set the system time from the hardware clock (hwclock command)
  • unload the module

Similarly, on system shutdown:

  • load the module
  • set the hardware clock to the current system time (hwclock command)
  • unload the module


RedBoot and tftp[edit]

I've been only booting Thecus n4100 via tftp (set in RedBoot). I didn't try to flash the kernel.
If you did this, let me know. Kernel flashing instructions should be similar to the ones here (search for "...and flash a kernel").

Downloads[edit]

vmlinux

vmlinux (1204409 bytes) - vmlinux - Linux kernel
md5sum: 8a130ce7ba7e740fc0b8805edb6991a1


Kernel modules

2.6.17.8-n4100-modules.tar.bz2 (547617 bytes) - 2.6.17.8 kernel modules for Thecus n4100
md5sum: 628cbe38cefd2df16e4499d9dae4534c


Kernel sources

linux-2.6.17.8-n4100.tar.bz2 (58573070 bytes) - 2.6.17.8 kernel sources for Thecus n4100 (sources + compiled modules, kernel)
md5sum: 5413207ddd91d3dc2478ee3e21531360


Troubleshooting[edit]

After David Karlstrom:

If Thecus did the same changes to the bootloader on the n4100 as on the
n2100 and the box has an updated firmware they will need the correct
machine-id in the kernel, or it won't boot. Apart from that the pages
should still apply.


Thecus did what most companies do, they just used the machine-id from the
reference platform (Intel IQ31244 Serial ATA Evaluation, id: 327) for the
cpu, and modified the code for it in their kernel sources. When asked to
fix it they actually did, so in newer firmware releases the bootloader
actually sends the right machine-id (1101) to the kernel.
So if you try to boot a kernel that doesn't know about the new id it just
wont boot.

Thecus 4100 has an entry [1] in the machine-id list so I guess they fixed
it in some firmware upgrade too..


[1] http://www.arm.linux.org.uk/developer/machines/?action=list&id=1102

Upstream status[edit]

The board which Thecus runs is Intel IQ31244. You can find patches for the latest kernel on http://sf.net/projects/xscaleiop. They are slowly being integrated into the upstream kernel.
For some reason, I have very poor HDD performance with these patches (despite enabling DMA engines etc.), so I sticked with 2.6.17.8. If you tried these patches and it's any better for you, let me know.


Interesting addon - CF card on a mini-PCI[edit]

Thecus n4100 has a mini-PCI slot. It could be used for storage - then, you wouldn't have to depend on HDD drives to boot the device.

One such storage device is made by Commell: http://www.commell.com.tw/product/Peripheral/MiniPCI/MP-6421.HTM

You can insert a CF card in it, and hopefully, the kernel will see it as a disk/block device.

Unfortunately, all Commell distributors seem to sell products to business customers, so I couldn't buy it at a reasonable price (that is, they all say "minimum order is $100", or have ridiculous shipping costs).

Note: this card doesn't need any external power if you connect a CF card; mini-PCI USB adapters do need additional power sources to power USB devices, so they are not a good alternative...

Contact[edit]

If you have any questions, please subscribe to the mailing list on http://lists.wpkg.org/mailman/listinfo/debian-non-standard