meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
nsa310:debian [2015/04/05 21:11] niziakhw:nsa310:debian [2020/11/30 09:42] (current) niziak
Line 1: Line 1:
 +====== Debian ======
 +
 ====== References ====== ====== References ======
  
-OpenWRT packages: [[http://bartekk.pdg.pl/openwrt/|http://bartekk.pdg.pl/openwrt/]]+OpenWRT packages: [[http://bartekk.pdg.pl/openwrt/]]
  
-[[http://forum.nas-central.org/viewtopic.php?f=249&t=5145|http://forum.nas-central.org/viewtopic.php?f=249&t=5145]]+[[http://forum.nas-central.org/viewtopic.php?f=249&t=5145]]
  
-[[http://eko.one.pl/?p=openwrt-nsa310|http://eko.one.pl/?p=openwrt-nsa310]]+[[http://eko.one.pl/?p=openwrt-nsa310]]
  
-[[https://sites.google.com/site/realblades/misc/debian-on-zyxel-nsa310|https://sites.google.com/site/realblades/misc/debian-on-zyxel-nsa310]]+[[https://sites.google.com/site/realblades/misc/debian-on-zyxel-nsa310]]
  
-[[http://linuxwiki.de/ZYXEL NSA-310#Debian_Installation|http://linuxwiki.de/ZYXEL NSA-310#Debian_Installation]]+[[http://linuxwiki.de/ZYXEL%20NSA-310#Debian_Installation]]
  
-[[http://openrouter.info/forum/viewtopic.php?f=19&t=1581&start=80|http://openrouter.info/forum/viewtopic.php?f=19&t=1581&start=80]]+[[http://openrouter.info/forum/viewtopic.php?f=19&t=1581&start=80]]
  
-====== Serial converter ====== 
  
-3,3V level converter 115200 8N1+====== Preparation ===== 
 +First install Debian 6 (squeeze). 
 +Put on FAT formatted pendrive: 
 +[[http://www.scintilla.utwente.nl/~petero/nsa310/initrd.gz|initrd.gz]] 
 +[[http://www.scintilla.utwente.nl/~petero/nsa310/uImage-3.2|uImage-3.2]] 
 +[[http://www.scintilla.utwente.nl/~petero/nsa310/uImage-3.5.1|uImage-3.5.1]]
  
-^1  ^2  ^3  ^4^5  | +then boot from pendrive (one time, without saving it permanently to u-boot environment) 
-|Vcc|RX|TX|nc|GND|+Machine type is [[http://www.arm.linux.org.uk/developer/machines/list.php?id=4022|4022]]
  
 <code> <code>
 +    setenv arcNumber 4022
 +    setenv mainlineLinux yes
 +    usb start
 +    fatload usb 0 0x800000 /uImage-3.2
 +    fatload usb 0 0xb00000 /initrd.gz
 +    setenv bootargs 'console=ttyS0,115200 root=/dev/ram initrd=0xb00000,0x900000 ramdisk=32768'
 +    bootm 0x800000
 +</code>
  
-                               _ _ +and install Debian 6 system  as usual. 
-        |  \/  | __ _ _ _____|   | +Installer will complain about no matching modules and no matching kernel. 
-          |\/  |/ _` | '__   / / _ \ |   | +During installationcreate small /boot ext3 partition for kernels.
-            | (_|     \ V /  __/ |   | +
-        |_|   |_|\__,_|_|    \_\___|_|_| +
-       ____              _ +
-|     | __  )  ___   __ _ |   |_ +
-|     |___|  _ \ / _ \ / _ \| __ | +
-|   |_|   |___|   |_) | (_) | (_) |   |_ +
- \__ _/    |/ \___/ \__ _/ \__| +
- ** MARVELL BOARD: RD-88F6281A LE+
  
-U-Boot 1.1.4 (Jun  8 2011 18:48:37) Marvell version: 3.4.19+To boot from HDD, copy uImage-3.2 from pendrive to HDD /boot partition and set u-boot:
  
-U-Boot code00600000 -0067FFF0  BSS-006CFEE0+From u-boot console, test partitions readability: 
 +<code> 
 +ide reset 
 +ide part 
 +ext2ls ide 0:
 +ext2ls ide 0:3 
 +</code>
  
-Soc88F6281 A1 (DDR2) +In my example I got following partitions numbers
-CPU running @ 1200Mhz L2 running @ 400Mhz +<code> 
-SysClock = 400Mhz , TClock = 200Mhz+Partition Map for IDE device 0  --   Partition Type: DOS
  
-DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6 +Partition     Start Sector     Num Sectors     Type 
-DRAM CS[0] base 0x00000000   size 256MB +                  309248        19222528      83 
-DRAM Total size 256MB  16bit width +                19533822       957237250       5 Extd 
-Addresses 10M - 0M are saved for the U-Boot usage. +                    2048          307200      83 
-Mem malloc Initialization (10M - 7M): Done +</code>
-NAND:128 MB +
-Flash:  0 kB+
  
-CPU : Marvell Feroceon (Rev 1) +Where 3rd partition is small /boot partition, so we need to load kernel from 'ide 0:3'
-Kernel address is 0x4640000.+
  
-Streaming disabled 
-Write allocate disabled 
  
-Module is RGMII +<code> 
-Module 1 is TDM+    setenv arcNumber 4022 
 +    setenv mainlineLinux yes 
 +    setenv bootargs 'console=ttyS0,115200 root=/dev/sda1'  
 +    setenv bootcmd 'ide reset; ext2load ide 0:3 0x800000 /uImage-3.2; bootm 0x800000' 
 +    saveenv 
 +    reset 
 +</code>
  
-USB 0host mode +or 3.5.1 kernel:
-PEX 0: PCI Express Root Complex Interface +
-PEX interface detected Link X1 +
-Net:   egiga0, egiga1 [PRIME] +
-Hit any key to stop autoboot:  0+
  
-** +<code> 
-</code> **====== Preparation ===== First install Debian 6 (squeeze). Put on FAT formatted pendrive: [[http://www.scintilla.utwente.nl/~petero/nsa310/initrd.gz|initrd.gz]] [[http://www.scintilla.utwente.nl/~petero/nsa310/uImage-3.2|uImage-3.2]] [[http://www.scintilla.utwente.nl/~petero/nsa310/uImage-3.5.1|uImage-3.5.1]] then boot from pendrive (one time, without saving it permanently to u-boot environment) Machine type is [[http://www.arm.linux.org.uk/developer/machines/list.php?id=4022|4022]] '' setenv arcNumber 4022 setenv mainlineLinux yes usb start fatload usb 0 0x800000 /uImage-3.2 fatload usb 0 0xb00000 /initrd.gz setenv bootargs 'console=ttyS0,115200 root=/dev/ram initrd=0xb00000,0x900000 ramdisk=32768' bootm 0x800000 ''   and install Debian 6 system as usual. Installer will complain about no matching modules and no matching kernel. During installation, create small /boot ext3 partition for kernels. To boot from HDD, copy uImage-3.2 from pendrive to HDD /boot partition and set u-boot: From u-boot console, test partitions readability: '' ide reset ide part ext2ls ide 0:1 ext2ls ide 0:3 ''   In my example I got following partitions numbers: '' Partition Map for IDE device 0 – Partition Type: DOS Partition Start Sector Num Sectors Type 1 309248 19222528 83 2 19533822 957237250 5 Extd 3 2048 307200 83 ''   Where 3rd partition is small /boot partition, so we need to load kernel from 'ide 0:3' '' setenv arcNumber 4022 setenv mainlineLinux yes setenv bootargs 'console=ttyS0,115200 root=/dev/sda1' setenv bootcmd 'ide reset; ext2load ide 0:3 0x800000 /uImage-3.2; bootm 0x800000' saveenv reset ''   or 3.5.1 kernel: '' setenv bootcmd 'ide reset; ext2load ide 0:3 0x800000 /uImage-3.5.1; bootm 0x800000' ''   ====== Update to Debian Wheezy ====== Put following sources into /etc/apt/sources.list '' ###### Debian Main Repos deb [[http://ftp.pl.debian.org/debian/|http://ftp.pl.debian.org/debian/]] wheezy main contrib non-free deb-src [[http://ftp.pl.debian.org/debian/|http://ftp.pl.debian.org/debian/]] wheezy main contrib non-free ###### Debian Update Repos deb [[http://security.debian.org/|http://security.debian.org/]] wheezy/updates main contrib non-free deb [[http://ftp.pl.debian.org/debian/|http://ftp.pl.debian.org/debian/]] wheezy-proposed-updates main contrib non-free deb-src [[http://security.debian.org/|http://security.debian.org/]] wheezy/updates main contrib non-free deb-src [[http://ftp.pl.debian.org/debian/|http://ftp.pl.debian.org/debian/]] wheezy-proposed-updates main contrib non-free ''  '' apt-get update apt-get dist-upgrade apt-get install linux-base firmware-realtek apt-get clean ''   ====== Fine tunning ====== Install missing packages: '' apt-get install uboot-envtools smartmontools strace watchdog hdparm ''   ===== Generate blank modules.dep ===== '' mkdir /lib/modules/3.5.1 depmod -a ''   ===== LEDs ===== To turn ON System LED (disable blinking) please add line to /etc/rc.local: ''echo 1 /sys/class/leds/nsa310:green:System/brightness ''   ===== uboot-envtools ===== Create /etc/fw_env.config with content: '' /dev/mtd1 0x0000 0x20000 0x20000 4 ''   ===== MAC address ===== After bootup, ethernet controller has MAC address '00:00:00:00:00:30'. There are several method to restore correct MAC address which can be obtained from u-boot env: 1) add to /etc/rc.local '' ifdown eth0 /sbin/ifconfig eth0 hw ether `fw_printenv -n ethaddr` ifup eth0 ''   or '' /sbin/ip link set eth0 address `/usr/bin/fw_printenv ethaddr | /bin/grep -E -o '[[:xdigit:start|xdigit]]{2}(:[[:xdigit:start|xdigit]]{2}){5}'` ''  2) add line to /etc/network/interfaces '' hwaddress ether cc:5d:4e:c9:fc:06 ''   3) Edit and set MAC here: /etc/udev/rules.d/70-persistent-net.rules Wake-on-lan will work only with fake MAC '00:00:00:00:00:30' ===== Fix for alloc kernel panic ===== Add these lines in /etc/sysctl.conf: '' # Set VM min memory vm.min_free_kbytes=8192 ''   ===== Buttons ===== Ref: [[http://masu.6f.sk/index.php?title=Nsa310_buttons|http://masu.6f.sk/index.php?title=Nsa310_buttons]] Button works, but requires long pressing > 1sec. ===== Fan ===== Detect PWM devices and calibrate fan RPMs using 'pwmconfig'. After many questions an tests the config file /etc/fancontrol will be generated. '' # Configuration file generated by pwmconfig, changes will be lost INTERVAL=10 DEVPATH=hwmon0=devices/platform/mv64xxx_i2c.0/i2c-0/0-002e DEVNAME=hwmon0=lm85 FCTEMPS=hwmon0/device/pwm1=hwmon0/device/temp3_input FCFANS= hwmon0/device/pwm1=hwmon0/device/fan1_input MINTEMP=hwmon0/device/pwm1=35 MAXTEMP=hwmon0/device/pwm1=60 MINSTART=hwmon0/device/pwm1=16 MINSTOP=hwmon0/device/pwm1=16 MINPWM=hwmon0/device/pwm1=0 ''   ====== Encrypted partition ====== '' apt-get install cryptsetup-bin ''   Enable HW acceleration. Which is a bit slower than software :P '' modprobe mv_cesa cat /proc/crypto | grep mv_cesa -B 2 -A 7 ''   Is providing only: - hmac(sha1) - sha1 - cbc(aes) - ecb(aes) There are also additional kernel modules optimised for ARM: - sha1_arm - aes_arm '' cryptsetup benchmark ''   ^ Algorithm ^ Key ^ Encryption ^ Decryption ^ accel ^ aes-cbc | 128b | 12.8 MiB/s | 13.4 MiB/s | ^ | 13.4 MiB/s | 14.1 MiB/s | arm | |** 19.7 MiB/s** |** 20.2 MiB/s**| mv_cesa| serpent-cbc | 128b | 11.1 MiB/s | 11.6 MiB/s | ^ twofish-cbc | 128b | 13.0 MiB/s | 13.4 MiB/s | ^ aes-cbc | 256b | 10.1 MiB/s | 10.5 MiB/s | ^ | 11.0 MiB/s | 11.4 MiB/s | arm | |** 18.9 MiB/s** |** 19.2 MiB/s**| mv_cesa| serpent-cbc | 256b | 11.1 MiB/s | 11.6 MiB/s | ^ twofish-cbc | 256b | 13.0 MiB/s | 13.4 MiB/s | ^ aes-xts | 256b | 13.1 MiB/s | 13.3 MiB/s | ^ | 14.6 MiB/s | 14.7 MiB/s | arm | serpent-xts | 256b | 11.5 MiB/s | 11.6 MiB/s | ^ twofish-xts | 256b | 13.4 MiB/s | 13.2 MiB/s | ^ aes-xts | 512b | 10.2 MiB/s | 10.4 MiB/s | ^ | 11.4 MiB/s | 11.8 MiB/s | arm | serpent-xts | 512b | 11.5 MiB/s | 11.6 MiB/s | ^ twofish-xts | 512b | 13.4 MiB/s | 13.2 MiB/s | ===== Ciphers benchmark ===== Each cipher was tested with following steps: * //luksFormat /dev/sda5// * //luksOpen /dev/sda5 sda5// * benchmarks described in table below on /dev/mapper/sda5 * create ext4fs on /dev/mapper/sda5 * the same benchmarks but on mounted ext4 (writing/reading from file). ^ test ^ command line ^ description ^ hdparm | //hdparm -t /dev/…// | Buffered read test | WR | //dd bs=16M count=128// | Normal buffered transfer, but with sync before exit | WR S | //dd bs=16M count=128// ^ WR DS | //dd bs=16M count=128// ^ RD | //dd bs=16M count=128// REMARKS: - For XTS, only half of key is used, so for 128b cipher I need to specify -s 256. - Ext4 by default was created with lazy_init, to speed up creation process, but it can make impact on tests. - Before each test, flush by //sync && echo 3 > …/drop_caches// was issued. ^ 128b key ^^^^^^^^^^^^^^ ^ Block device ^^^^^^ EXT4 ^^^^^ ^ acc ^ hdparm ^ WR ^ WR S ^ WR DS ^ RD ^ WR ^ WR S ^ WR DS ^ RD ^ ^cbc-plain | HW | 8.82 | 7.0 | 6.1 | 7.3 | 9.2 | 8.0 | 5.5 | 5.8 | 9.3 | ^ SW | 11.80 | 8.2 | 7.4 | 8.7 | 12.40 | 9.5 | 6.2 | 6.4 | 12.40 | ^ ARM | 12.76 | 8.9 | 7.2 | 9.2 | 13.60 | 10.2 | 6.4 | 6.4 | 13.60 |*|cbc-plain64 | HW | 8.79 | 6.9 | 6.1 | 7.5 | 9.2 | 7.9 | 5.3 | 5.6 | 9.0 | ^ SW | 11.83 | 8.2 | 7.4 | 9.2 | 12.40 | 9.5 | 6.2 | 6.6 | 12.40 | ^ ARM | 12.73 | 8.9 | 7.2 | 9.3 | 13.60 | 10.2 | 6.2 | 6.1 | 13.60 |*|cbc-essiv :sha256| HW | 7.7 | 6.2 | 5.5 | 6.9 | 8.1 | 7.2 | 5.2 | 5.2 | 8.1 | ^ SW | 9.7 | 7.8 | 6.9 | 8.7 | 11.40 | 9.1 | 6.2 | 6.5 | 11.40 | ^ ARM | 12.36 | 8.7 | 7.0 | 9.1 | 13.20 | 9.9 | 6.3 | 6.2 | 13.20 |*|xts-plain | SW | 11.29 | 8.2 | 7.4 | 8.7 | 11.80 | 9.5 | 6.1 | 6.5 | 11.90 | ^ ARM | 12.79 | 9.3 | 7.5 | 10.1 | 13.60 | 10.6 | 6.3 | 5.9 | 13.70 |*|xts-plain64 | SW | 11.27 | 8.2 | 7.4 | 8.7 | 11.80 | 9.5 | 6.2 | 6.5 | 11.70 | ^ ARM | 12.84 | 9.3 | 7.5 | 10.2 | 13.70 | 10.6 | 6.4 | 6.1 | 13.70 |*|xts-essiv :sha256| SW | 10.30 | 7.9 | 7.2 | 8.7 | 11.10 | 9.1 | 6.1 | 6.5 | 11.10 | ^ ARM | 12.40 | 9.1 | 7.5 | 9.3 | 13.20 | 10.4 | 6.3 | 6.1 | 13.30 |*| 256b key ^^^^^^^^^^^^^^ ^ Block device ^^^^^^ EXT4 ^^^^^ ^ acc ^ hdparm ^ WR ^ WR S ^ WR DS ^ RD ^ WR ^ WR S ^ WR DS ^ RD ^ ^cbc-plain | HW | 8.43 | 6.7 | 6.1 | 7.5 | 8.9 | 7.7 | 5.5 | 5.7 | 8.9 | ^ SW | 9.17 | 6.7 | 6.1 | 7.4 | 9.6 | 7.7 | 5.5 | 5.8 | 9.6 | ^ ARM | 10.32 | 7.6 | 6.3 | 7.9 | 10.80 | 8.5 | 5.5 | 6.0 | 10.80 |*|cbc-plain64 | HW | 8.44 | 6.7 | 6.1 | 7.5 | 8.9 | 7.7 | 5.5 | 5.7 | 8.8 | ^ SW | 9.15 | 6.8 | 6.1 | 7.5 | 9.5 | 7.6 | 5.5 | 5.8 | 9.7 | ^ ARM | 10.24 | 7.6 | 6.2 | 7.8 | 10.70 | 8.4 | 5.1 | 5.5 | 10.00 |*|cbc-essiv :sha256| HW | 7.47 | 6.0 | 5.5 | 6.5 | 7.8 | 6.9 | 5.0 | 5.2 | 7.8 | ^ SW | 8.59 | 6.7 | 6.1 | 7.5 | 9.0 | 7.5 | 5.3 | 5.5 | 8.9 | ^ ARM | 9.83 | 7.5 | 6.2 | 7.9 | 10.50 | 8.3 | 5.5 | 5.7 | 10.60 |*|xts-plain | SW | 8.70 | 6.8 | 6.1 | 7.5 | 9.1 | 7.6 | 5.5 | 5.6 | 9.2 | ^ ARM | 10.09 | 7.9 | 6.6 | 8.5 | 10.7 | 8.8 | 5.2 | 5.6 | 10.80 |*|xts-plain64 | SW | 8.70 | 6.8 | 6.1 | 7.5 | 9.2 | 7.6 | 5.5 | 5.6 | 9.2 | ^ ARM | 10.14 | 7.9 | 6.6 | 8.4 | 10.80 | 8.8 | 5.4 | 5.7 | 10.80 |*|xts-essiv :sha256| SW | 8.37 | 6.7 | 6.1 | 7.0 | 8.8 | 7.3 | 5.1 | 5.4 | 8.4 | ^ ARM | 9.94 | 7.7 | 6.3 | 7.9 | 10.40 | 8.5 | 4.9 | 5.2 | 9.7 | ^ without encryption ^^^^^^^^^^^^^^ ^ Block device ^^^^^^ EXT4 ^^^^^ ^ acc ^ hdparm ^ WR ^ WR S ^ WR DS ^ RD ^ WR ^ WR S ^ WR DS ^ RD ^ ^ /dev/sda5 | 137 | 91 | 33.7 | 51.7 | 149 | 69 | 13 | 15 | 149 | ===== file copy benchmark ===== Copy using //dd if=src_file of=dst_file conv=fsync// "It will synchronize output data and metadata just before finishing" ^ 128b key ^^^^^ ^ acc ^ WR S ^ RD ^ ^aes-cbc-plain64 | HW | 5.8 | 8.1 | ^ SW | 6.4 | 10.60 | ^ ARM | 6.8 | 12.00 |*|twofish-cbc-plain64 | SW | 6.5 | 10.60 | ^aes-cbc-essiv:sha256 | HW | 5.4 | 7.1 | ^ SW | 6.3 | 10.30 | ^ ARM | 6.6 | 11.10 | ^twofish-cbc-essiv:sha256 | SW | 6.5 | 10.70 | ^aes-xts-plain64 | SW | 6.4 | 10.20 | ^ ARM | 7.0 | 12.10 |*|twofish-xts-plain64 | SW | 6.6 | 11.00 | ^twofish-xts-essiv:sha256 | SW | 6.4 | 10.50 | ^ 256b key ^^^^^ ^ acc ^ WR S ^ RD ^ ^aes-cbc-plain64 | HW | 5.8 | 8.3 | ^ SW | 5.5 | 8.4 | ^ ARM | 5.9 | 9.5 |*|twofish-cbc-plain64 | SW | 6.6 | 11.00 |*|aes-cbc-essiv:sha256 | HW | 5.5 | 7.3 | ^ SW | 5.4 | 8.0 | ^ ARM | 5.9 | 9.6 |*|twofish-cbc-essiv:sha256 | SW | 6.5 | 10.70 |*|aes-xts-plain64 | SW | 5.5 | 8.2 | ^ ARM | 6.1 | 9.4 |*|twofish-xts-plain64 | SW | 6.6 | 10.90 |*|twofish-xts-essiv:sha256 | SW | 6.3 | 10.10 |*| ===== loaded CPU benchmark ===== Comparison SW & HW with loaded system ''stress -v -c 1 ''   ^ ^ Block device ^^^^^^ EXT4 ^^^^^ ^ acc ^ hdparm ^ WR ^ WR S ^ WR DS ^ RD ^ WR ^ WR S ^ WR DS ^ RD ^ ^cbc-plain-128 | HW | 4.71 | 3.9 | 3.6 | 3.8 | 4.9 | 4.1 | 3.2 | 3.4 | 4.9 | ^ SW | 6.13 | 4.4 | 3.9 | 5.3 | 6.5 | 5.0 | 4.0 | 4.0 | 6.4 | ^ ARM | 6.64 | 4.8 | 4.2 | 5.4 | 7.0 | 5.3 | 4.0 | 4.2 | 7.0 |*|cbc-plain-256 | HW | 4.68 | 3.8 | 3.4 | 3.9 | 4.9 | 4.0 | 3.2 | 3.2 | 4.9 | ^ SW | 4.73 | 3.6 | 3.4 | 4.0 | 5.0 | 4.0 | 3.2 | 3.3 | 5.0 | ^ ARM | 5.31 | 4.1 | 3.6 | 4.4 | 5.6 | 4.4 | 3.4 | 3.6 | 5.6 | ===== Twofish cipher ===== (SW only) ^ ^ Block device ^^^^^^ EXT4 ^^^^ ^ key ^ hdparm ^ WR ^ WR S ^ WR DS ^ RD ^ WR ^ WR S ^ WR DS ^ RD ^cbc-plain | 128 | 11.80 | 8.4 | 7.4 | 9.5 | 12.4 | 9.6 | 6.0 | 6.1 |11.5 |cbc-essiv:sha256 | 128 | 11.35 | 8.2 | 7.4 | 8.7 | 11.9 | 9.5 | 6.2 | 6.5 |11.9 |xts-plain | 128 | 11.61 | 8.4 | 7.4 | 9.4 | 12.2 | 9.5 | 6.2 | 6.6 |12.3 |xts-essiv:sha256 | 128 | 11.06 | 8.0 | 7.4 | 8.7 | 11.6 | 9.1 | 6.2 | 6.5 |11.7 |cbc-plain | 256 | 11.82 | 8.4 | 7.4 | 9.5 | 12.4 | 9.7 | 6.5 | 6.6 |12.4 |cbc-essiv:sha256 | 256 | 11.34 | 8.2 | 7.4 | 8.7 | 11.9 | 9.5 | 6.2 | 6.6 |12.0 |xts-plain | 256 | 11.64 | 8.4 | 7.4 | 9.4 | 12.2 | 9.6 | 6.2 | 6.6 |12.3 |xts-essiv:sha256 | 256 | 11.04 | 8.0 | 7.4 | 8.7 | 11.6 | 9.3 | 6.2 | 6.5 |11.7 | **+    setenv bootcmd 'ide reset; ext2load ide 0:3 0x800000 /uImage-3.5.1; bootm 0x800000' 
 +</code>
  
-** ~~COMPLEX_TABLES~~ **+====== Update to Debian Wheezy ====== 
 +Put following sources into /etc/apt/sources.list 
 +<code> 
 +###### Debian Main Repos 
 +deb http://ftp.pl.debian.org/debian/ wheezy main contrib non-free 
 +deb-src http://ftp.pl.debian.org/debian/ wheezy main contrib non-free
  
-**====== Features ====== * LM-Sensors are working. You can check values using command 'sensors' * HDD temperature: smartctl -A /dev/sda | awk '/^194/ {print $10}' * Should be possible to wake NSA310 (powered off by 'halt' command) sending Wake-On-Lan packet to NSA310 'wakeonlan 00:00:00:00:00:30' * ====== Own kernel ====== here's no need to keep pestering the poor guy over simple config changes. It's easy to build your own kernel; the instructions are right there in the first post. On a debian host you need to add the emdebian repo and install gcc-4.7-arm-linux-gnueabi (or whatever version) and u-boot-tools to build the kernel. I just built one with device mapper and crypto target support, and threw in netfilter NAT stuff for giggles. Here it is: [[http://allurgroceries.com/nsa310/uImage-3.5.7|http://allurgroceries.com/nsa310/uImage-3.5.7]] And the .config: [[http://allurgroceries.com/nsa310/config-3.5.7_nsa310_allurgroceries|http://allurgroceries.com/nsa310/config-3.5.7_nsa310_allurgroceries]] ==== Kernel 3.18 ==== Download lastest Jessie rootfs from: [[http://forum.doozan.com/read.php?2,12096|Linux Kernel 3.18 (FDT) and 3.16 (non-FDT) Kirkwood package and rootfs]] Or locally:   {{:nsa310:debian-3.18.5-kirkwood-tld-1-rootfs-bodhi.tar.bz2|debian-3.18.5-kirkwood-tld-1-rootfs-bodhi.tar.bz2}}  Unpack rootfs to media, can be USB pendrive for now. '' cd /mnt/sdd1 tar -xjf Debian-3.18.5-kirkwood-tld-1-rootfs-bodhi.tar.bz2 ''   Inside rootfs, there is /boot directory which contains bootable kernel, initrd and deveice trees. Go to newly unpacked roots directory and create images recognizable by u-boot. If command //mkimage// is missing, please install //u-boot-tools//. ===+###### Debian Update Repos 
 +deb http://security.debian.org/ wheezy/updates main contrib non-free 
 +deb http://ftp.pl.debian.org/debian/ wheezy-proposed-updates main contrib non-free 
 +deb-src http://security.debian.org/ wheezy/updates main contrib non-free 
 +deb-src http://ftp.pl.debian.org/debian/ wheezy-proposed-updates main contrib non-free 
 + 
 +</code> 
 + 
 +<code> 
 +apt-get update 
 +apt-get dist-upgrade 
 + 
 +apt-get install linux-base firmware-realtek 
 +apt-get clean 
 +</code> 
 + 
 + 
 + 
 +====== Fine tunning ====== 
 +Install missing packages: 
 +<code> 
 +apt-get install uboot-envtools smartmontools strace watchdog hdparm 
 +</code> 
 + 
 +===== Generate blank modules.dep ===== 
 +<code> 
 +mkdir /lib/modules/3.5.1 
 +depmod -a 
 +</code> 
 + 
 +===== LEDs ===== 
 +To turn ON System LED (disable blinking) please add line to /etc/rc.local: 
 +<code>echo 1 > /sys/class/leds/nsa310:green:System/brightness</code> 
 + 
 +===== uboot-envtools ===== 
 +Create /etc/fw_env.config with content: 
 +<code> 
 +/dev/mtd1               0x0000          0x20000         0x20000                 4 
 +</code> 
 + 
 +===== MAC address ===== 
 +After bootup, ethernet controller has MAC address '00:00:00:00:00:30'
 +There are several method to restore correct MAC address which can be obtained from u-boot env: 
 +1) add to /etc/rc.local 
 +<code> 
 +ifdown eth0 
 +/sbin/ifconfig eth0 hw ether `fw_printenv -n ethaddr` 
 +ifup eth0 
 +</code> 
 +or 
 +<code> 
 +/sbin/ip link set eth0 address `/usr/bin/fw_printenv ethaddr | /bin/grep -E -o '[[:xdigit:]]{2}(:[[:xdigit:]]{2}){5}'
 +</code> 
 + 
 +2) add line to /etc/network/interfaces 
 +<code> 
 +hwaddress ether cc:5d:4e:c9:fc:06 
 +</code> 
 + 
 +3) Edit and set MAC here: 
 +/etc/udev/rules.d/70-persistent-net.rules 
 + 
 +Wake-on-lan will work only with fake MAC '00:00:00:00:00:30' 
 + 
 + 
 +===== Fix for alloc kernel panic ===== 
 +Add these lines in /etc/sysctl.conf: 
 +<code> 
 +# Set VM min memory 
 +vm.min_free_kbytes=8192 
 +</code> 
 + 
 +===== Buttons ===== 
 + 
 +Ref: [[http://masu.6f.sk/index.php?title=Nsa310_buttons]] 
 +Button works, but requires long pressing > 1sec. 
 + 
 + 
 +===== Fan ===== 
 + 
 +Detect PWM devices and calibrate fan RPMs using 'pwmconfig'
 +After many questions an tests the config file /etc/fancontrol will be generated. 
 +<code> 
 +# Configuration file generated by pwmconfig, changes will be lost 
 +INTERVAL=10 
 +DEVPATH=hwmon0=devices/platform/mv64xxx_i2c.0/i2c-0/0-002e 
 +DEVNAME=hwmon0=lm85 
 +FCTEMPS=hwmon0/device/pwm1=hwmon0/device/temp3_input 
 +FCFANS= hwmon0/device/pwm1=hwmon0/device/fan1_input 
 +MINTEMP=hwmon0/device/pwm1=35 
 +MAXTEMP=hwmon0/device/pwm1=60 
 +MINSTART=hwmon0/device/pwm1=16 
 +MINSTOP=hwmon0/device/pwm1=16 
 +MINPWM=hwmon0/device/pwm1=0 
 + 
 +</code> 
 + 
 + 
 + 
 +====== Features ====== 
 +  * LM-Sensors are working. You can check values using command 'sensors' 
 +  * HDD temperature: smartctl -A /dev/sda | awk '/^194/ {print $10}' 
 +  * Should be possible to wake NSA310 (powered off by 'halt' command) sending Wake-On-Lan packet to NSA310 'wakeonlan 00:00:00:00:00:30' 
 +   
 + 
 +====== Own kernel ====== 
 +There's no need to keep pestering the poor guy over simple config changes. It's easy to build your own kernel; the instructions are right there in the first post. On a debian host you need to add the emdebian repo and install gcc-4.7-arm-linux-gnueabi (or whatever version) and u-boot-tools to build the kernel. 
 + 
 +I just built one with device mapper and crypto target support, and threw in netfilter NAT stuff for giggles. 
 + 
 +Here it is: http://allurgroceries.com/nsa310/uImage-3.5.7 
 +And the .config: http://allurgroceries.com/nsa310/config-3.5.7_nsa310_allurgroceries 
 + 
 + 
 +===== Kernel 3.18 ====
 + 
 +Download lastest Jessie rootfs from: [[http://forum.doozan.com/read.php?2,12096|Linux Kernel 3.18 (FDT) and 3.16 (non-FDT) Kirkwood package and rootfs]] 
 + 
 +Or locally: {{hw:nsa310:linux-3.18.5-kirkwood-tld-1-bodhi.tar.bz2|linux-3.18.5-kirkwood-tld-1-bodhi.tar.bz2}}  {{hw:nsa310:debian-3.18.5-kirkwood-tld-1-rootfs-bodhi.tar.bz2|debian-3.18.5-kirkwood-tld-1-rootfs-bodhi.tar.bz2}} 
 + 
 +Unpack rootfs to media, can be USB pendrive for now. 
 + 
 +<code> 
 +cd /mnt/sdd1 
 +tar -xjf Debian-3.18.5-kirkwood-tld-1-rootfs-bodhi.tar.bz2 
 +</code> 
 + 
 +Inside rootfs, there is /boot directory which contains bootable kernel, initrd and deveice trees. Go to newly unpacked roots directory and create images recognizable by u-boot. If command //mkimage// is missing, please install //u-boot-tools//. 
 +===== Boot without Flattened Device Tree ===== 
 + 
 +This method is supported by old (stock) U-BOOT. In this case FDT structure is appended at end of kernel. 
 + 
 +<code> 
 +cd /boot 
 +cp -a zImage-3.18.5-kirkwood-tld-1 zImage.fdt 
 +cat dts/kirkwood-nsa310.dtb>> zImage.fdt 
 + 
 +mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-3.18.5-kirkwood-tld-1 -d ./zImage.fdt ./uImage-3.18.5 
 +mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs-3.18.5-kirkwood-tld-1 -d ./initrd.img-3.18.5-kirkwood-tld-1 ./uInitrd-3.18.5 
 +</code> 
 + 
 +Test if kernel starts correctly from pendrive: 
 + 
 +<code> 
 +    usb start 
 +    fatload usb 0 0x800000 /boot/uImage-3.18.5 
 +    fatload usb 0 0x1100000 /boot/uInitrd-3.18.5 
 +    bootm 0x800000 0x1100000 
 +</code> 
 + 
 +Boot from HDD (separate small /boot partition, so no /boot prefix in filenames): 
 + 
 +<code> 
 +    ide reset 
 +    ext2load ide 0:3 0x800000 /uImage-3.18.5 
 +    ext2load ide 0:3 0x1100000 /uInitrd-3.18.5 
 +    bootm 0x800000 0x1100000 
 +</code>
  
-{{:nsa310:linux-3.18.5-kirkwood-tld-1-bodhi.tar.bz2|linux-3.18.5-kirkwood-tld-1-bodhi.tar.bz2}} Boot without Flattened Device Tree === This method is supported by old (stock) U-BOOT. In this case FDT structure is appended at end of kernel. '' cd /boot cp -a zImage-3.18.5-kirkwood-tld-1 zImage.fdt cat dts/kirkwood-nsa310.dtb>> zImage.fdt mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-3.18.5-kirkwood-tld-1 -d ./zImage.fdt ./uImage-3.18.5 mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs-3.18.5-kirkwood-tld-1 -d ./initrd.img-3.18.5-kirkwood-tld-1 ./uInitrd-3.18.5 ''   Test if kernel starts correctly from pendrive: '' usb start fatload usb 0 0x800000 /boot/uImage-3.18.5 fatload usb 0 0x1100000 /boot/uInitrd-3.18.5 bootm 0x800000 0x1100000 ''   Boot from HDD (separate small /boot partition, so no /boot prefix in filenames): '' ide reset ext2load ide 0:3 0x800000 /uImage-3.18.5 ext2load ide 0:3 0x1100000 /uInitrd-3.18.5 bootm 0x800000 0x1100000 ''   === Boot with Flattened Device Tree === ** NOT SUPPORTED BY OLD (default U-BOOT**+===== Boot with Flattened Device Tree =====
  
 +**NOT SUPPORTED BY OLD (default U-BOOT)**
 <code> <code>
 cd boot cd boot
Line 100: Line 273:
 </code> </code>
  
-=== Adapt own devie tree file === +===== Adapt own devie tree file =====
 There are multiple HW versions of NSA310 on market, but only 2 device tree are defined in kernel: There are multiple HW versions of NSA310 on market, but only 2 device tree are defined in kernel:
- 
   - kirkwood-nsa310.dtb - all LEDs are bicolor (red and green), sensors device 'adt7476' on I2C bus   - kirkwood-nsa310.dtb - all LEDs are bicolor (red and green), sensors device 'adt7476' on I2C bus
   - kirkwood-nsa310a.dtb - like above but without red USB led, and sensor device 'lm85'   - kirkwood-nsa310a.dtb - like above but without red USB led, and sensor device 'lm85'
  
-My NSA310 version is like nsa310 but with lm85 :), so I've created {{:nsa310:kirkwood-nsa310b.dts|kirkwood-nsa310b.dts}}  based on kirkwood-nsa310.dts with LM85 section from kirkwood-nsa310a.dts.+My NSA310 version is like nsa310 but with lm85 :), so I've created {{hw:nsa310:kirkwood-nsa310b.dts|kirkwood-nsa310b.dts}} based on kirkwood-nsa310.dts with LM85 section from kirkwood-nsa310a.dts.
  
 <code> <code>
Line 119: Line 290:
 == apt source == == apt source ==
  
-Adapt to your country location in ///etc/apt/sources.list//, and add missing// contrib//  and //non-free//  packages +Adapt to your country location in ///etc/apt/sources.list//, and add missing// contrib// and //non-free// packages
 <code> <code>
 apt-get update apt-get update
Line 127: Line 297:
 </code> </code>
  
-RAM disk will be regenerated, so you need to recreate //uInitrd-xxx//  again.+RAM disk will be regenerated, so you need to recreate //uInitrd-xxx// again.
  
 == Enable LEDs == == Enable LEDs ==
- +Adapt ///etc/rc.local// to own needs:
-Adapt ///etc/rc.local//  to own needs:+
  
 <code> <code>
 if [ -d /sys/class/leds/nsa310:green:sys ]; then if [ -d /sys/class/leds/nsa310:green:sys ]; then
    echo default-on> /sys/class/leds/nsa310:green:sys/trigger    echo default-on> /sys/class/leds/nsa310:green:sys/trigger
-   echo none     > /sys/class/leds/nsa310:red:sys/trigger+   echo none      > /sys/class/leds/nsa310:red:sys/trigger
 fi fi
  
Line 153: Line 322:
  
 == turn off HDD when idle == == turn off HDD when idle ==
- 
   * by default busybox-syslogd is installed, with logging to RAM   * by default busybox-syslogd is installed, with logging to RAM
   * mount working dir for samba and dhcp client as tmpfs   * mount working dir for samba and dhcp client as tmpfs
   * switch Samba to use syslog   * switch Samba to use syslog
   * tune system /etc/sysctl.conf   * tune system /etc/sysctl.conf
 +  * ''smartd'' from ''smartmontools'' writes it log and state to ''/var/lib/smartmontools''
 +      * put it on tmpfs (and lose history)
 +      * or increase disc check interval in ''/etc/default/smartmontools''
  
 == repair /etc/adjtime == == repair /etc/adjtime ==
- 
 add new line at end of /etc/adjtime add new line at end of /etc/adjtime
  
Line 172: Line 342:
  
 ====== TODO ====== ====== TODO ======
- +linux-headers-3.2.0-4-kirkwood - Header files for Linux 3.2.0-4-kirkwood 
-linux-headers-3.2.0-4-kirkwood - Header files for Linux 3.2.0-4-kirkwood linux-image-3.2.0-4-kirkwood - Linux 3.2 for Marvell Kirkwood linux-headers-2.6-kirkwood - Header files for Linux kirkwood configuration (dummy package) linux-headers-kirkwood - Header files for Linux kirkwood configuration (meta-package) linux-image-2.6-kirkwood - Linux for Marvell Kirkwood (dummy package) linux-image-kirkwood - Linux for Marvell Kirkwood (meta-package) +linux-image-3.2.0-4-kirkwood - Linux 3.2 for Marvell Kirkwood 
- +linux-headers-2.6-kirkwood - Header files for Linux kirkwood configuration (dummy package) 
-\\ +linux-headers-kirkwood - Header files for Linux kirkwood configuration (meta-package) 
 +linux-image-2.6-kirkwood - Linux for Marvell Kirkwood (dummy package) 
 +linux-image-kirkwood - Linux for Marvell Kirkwood (meta-package)