ipilcher / n5550

Thecus N5550 hardware support
GNU General Public License v2.0
8 stars 8 forks source link

Thecus N5550 Hardware Support Copyright 2013-2020 Ian Pilcher arequipeno@gmail.com

For RHEL/CentOS/Scientific Linux 7, see the QuickStart in the wiki:

https://github.com/ipilcher/n5550/wiki/QuickStart-for-CentOS-7

For RHEL/CentOS/Scientific Linux 6, use kernel-lt from ELRepo. The n5550 RPM will probably need to be modified slightly to work on EL6.

Kernel Modules

n5550_ahci_leds - "Hooks" into libahci module to provide LED triggers for disk activity. Must be loaded before any other modules (such as ahci) that use libahci.

Can only be unloaded after being disabled with:

    echo 0 > /sys/class/n5550_ahci_leds/enabled

Disabling will only work if no other libahci users are loaded.

n5550_board - Sets up chipset, LEDs, GPIOs, etc. Disk activity LEDs have default triggers, so they should "just work" once both modules are loaded.

Monitoring Daemon

freecusd - Monitors the health of the NAS and displays state on front-panel LCD and LEDs. Configured via /etc/freecusd.conf.

Operating System Integration

/usr/src/n5550/modules - Kernel module source code and makefile

/usr/lib/dracut/modules.d/99n5550 - dracut module to automatically build kernel modules (if needed) when building initial RAM-disk. (Doing this with a dracut module, rather than DKMS, avoids building every initial RAM-disk twice, which takes a long time on an Atom.)

/usr/lib/dracut/dracut.conf.d/n5550.conf - dracut configuration file to ensure required kernel modules are included in initial RAM-disk

/usr/lib/modprobe.d/n5550.conf - Ensures that n5550_ahci_leds is loaded as soon as libahci (before any other module that uses libahci). Also configures system fan PWM.

/usr/lib/modules-load.d/n5550.conf - Ensures it87 kernel module is loaded

/usr/lib/udev/rules.d/99-n5550.rules - Triggers load of n5550_board module once gpio_ich module has finished loading

LCD

test2.c - Can be used to reset and send messages to the ATmega168 micro- controller which manages the front-panel LCD.

Buttons

I have not been able to read button presses/status from the ATmega168. However, it is possible to read them via jumper block next to the LCD connection. These jumpers are used by the Thecus firmware to identify the NAS model on which it is running, and they are readable via GPIO pins on one of the PCA9532 LED dimmers (currently GPIOs 16-19).

To do this, remove the 3 jumpers from the block and shift the button module ribbon cable from its normal connector onto the jumper block. (After doing this, the Thecus firmware will not be able to identify your NAS module, so the jumpers should be replaced before booting the Thecus firmware.)