Thecus n5200 Debian: Difference between revisions
(→OOBM) |
|||
Line 245: | Line 245: | ||
== Eigene Scripts == |
== Eigene Scripts == |
||
=== infotest.sh === |
|||
#!/bin/sh |
|||
fillmsg(){ |
|||
unset FILL |
|||
unset LENGTH |
|||
LENGTH=`echo $1 | wc -m` |
|||
FILL=`echo $2-$LENGTH | bc` |
|||
for i in `seq 0 $FILL`; do echo -n " "; done |
|||
} |
|||
INFO1="Daniel Aubry" |
|||
FILLCHARS1=`fillmsg "$INFO1" 20` |
|||
INFO2="LAN1: 10.1.11.20" |
|||
FILLCHARS2=`fillmsg "$INFO2" 19` |
|||
INFO3="LAN2: 0.0.0.0" |
|||
FILLCHARS3=`fillmsg "$INFO3" 20` |
|||
INFO4="Linux 2.6.19.2" |
|||
FILLCHARS4=`fillmsg "$INFO4" 20` |
|||
printf "\2\1\0U\31$INFO1$FILLCHARS1\0$INFO2$FILLCHARS2\0\0$INFO3$FILLCHARS3\000$INFO4$FILLCHARS4\0\3" > /dev/ttyS1 |
|||
=== setbo.pl === |
=== setbo.pl === |
||
Das Script geht so leider nicht, ich gehe davon aus dass der serielle Port mit den falschen Parametern initialisiert wird. |
Das Script geht so leider nicht, ich gehe davon aus dass der serielle Port mit den falschen Parametern initialisiert wird. |
||
Line 280: | Line 306: | ||
sleep 1 |
sleep 1 |
||
echo "uP_reset 1" > /proc/thecus_io |
echo "uP_reset 1" > /proc/thecus_io |
||
sleep 3 |
|||
uartpkt2 HEARTBT |
|||
</pre> |
</pre> |
||
Revision as of 15:02, 21 January 2007
Hardwareinfos
lspci
00:00.0 Host bridge: Intel Corporation Unknown device 358c (rev 02) 00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02) 00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02) 00:02.0 VGA compatible controller: Intel Corporation Unknown device 358e (rev 02) 00:02.1 Display controller: Intel Corporation Unknown device 358e (rev 02) 00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03) 00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03) 00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03) 00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83) 00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03) 00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03) 00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03) 01:00.0 SCSI storage controller: Marvell Technology Group Ltd. MV88SX6081 8-port SATA II PCI-X Controller (rev 09) 01:01.0 Ethernet controller: Intel Corporation 82541GI/PI Gigabit Ethernet Controller (rev 05) 01:02.0 Ethernet controller: Intel Corporation 82541GI/PI Gigabit Ethernet Controller (rev 05) 01:03.0 USB Controller: NetChip Technology, Inc Unknown device 2282 (rev 11)
cpuinfo
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 9 model name : Intel(R) Celeron(R) M processor 600MHz stepping : 5 cpu MHz : 600.000 cache size : 512 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 tm pbe up bogomips : 1199.08
ttyS0
Verbunden mit dem Seriellen Stecker
ttyS1
Verbunden mit dem Display
OS Installation
Backup
Vor der Installation sollte ein Backup der Daten auf /dev/hda angelegt werden, auf der Partition befinden sich verschiedene praktische Tools für das LCD e.t.c.
cd / && tar -cvz --exclude=proc/* --exclude=sys/* | ssh -l user host "cat > thecus-root.tgz"
und für notfälle kann auch noch ein Image des Flash IDE Laufwerks erstellt werden
dd if=/dev/hda | ssh -l user host "cat > thecus-root.img"
Debian install
mit dem sercon modul von thecus wiki die serielle Console freischalten, auf der Partition /dev/hda1 befindet sich der Grub, man sollte sich nicht vom in dem /boot auf der firmware vorhandenen lilo verwirren lassen.
die menu.lst in /mnt/boot/grub/ wie folgt anpassen:
#boot=/dev/hda default=0 timeout=10 serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 #serial --unit=1 terminal --timeout=3 serial console #password --md5 $1$E.mPD1$GCz4omwJYBUhV8.Z8TyJE1 #password ThecusN5200x86in2006 fallback 1 title Debian Linux root(hd0,2) kernel (hd0,2)/vmlinuz-2.6.18-3-686 root=/dev/sda1 console=tty1 console=ttyS0,115200n8 initrd (hd0,2)/initrd.img-2.6.18-3-686 title Debian Install root(hd0,2) kernel (hd0,2)/linux root=/dev/sda1 console=tty1 console=ttyS0,115200n8 initrd (hd0,2)/initrd.gz title Normal # kernel /boot/bzv0428 ro root=/dev/ram0 ramdisk=32768 console=tty1 console=ttyS0,115200n8 root(hd0,1) # kernel (hd0,0)/bz5200v1 ro root=/dev/ram0 ramdisk=32768 irqpoll acpi=noirq pci=noacpi # getkey setlogo Thecus N5200 setbto 200 # kernel (hd0,1)/bz5200v1 ro root=/dev/ram0 ramdisk=131072 console=tty1 console=ttyS0,115200n8 kernel (hd0,1)/bz5200v1 ro root=/dev/ram0 ramdisk=40960 console=tty1 console=ttyS0,115200n8 initrd (hd0,1)/n5200fs.gz title Factory # kernel /boot/bzv0428_old ro root=/dev/ram0 ramdisk=32768 console=tty1 console=ttyS0,115200n8 root(hd0,5) getkey setlogo Fallback to Factory setbto 200 kernel (hd0,5)/bz5200mv1 ro root=/dev/ram0 ramdisk=131072 initrd (hd0,5)/minifs.gz
In /boot ist kein platz mehr frei für weitere Kernel und die debian initrd, die dateien kann man auf /dev/hda3 ablegen, diese Partition ist im normalfall in /cloopfs gemountet, leider sind die S-ATA Disks nicht über das Bios ansprechbar. für die Debian installation kopiert man am besten die den kernel linux und die initrd.gz aus dem debian-netinstall Archiv. Bei der Debian Installation sollte der Grub _nicht_ auf /dev/hda installiert werden, am besten installiert man ihn auf einer s-ata disk und kopiert den Kernel und die Initrd anschliessend auf /dev/hda3
Hardware monitoring und LCD Display
Die hier genannten Tools kommen aus der Originalfirmware, jeder muss die dort selber rausholen. Auf http://sonne.alt-f4.ch/~daniel/thecus-io.patch befindet sich ein Kernelpatch mit dem sich diverse Hardwareerweiterungen der Thecus Geräte ansteuern lassen.
Der Patch stellt im Proc Verzeichnis zwei Dateien zur verfügung:
/proc/thecus_io /proc/thecus_event
/proc/thecus_event
Über dieses File kann man feststellen wenn jemand den Stromschalter drückt, weitere Funktionen hat das File ohne einen zusätzlichen Kernelpatch nicht.
# cat /proc/thecus_event button/power PWRF 0 0 #
/proc/thecus_io
In dem File stehen einige interessante Informationen:
# cat /proc/thecus_io Copy button: OFF Copy LED: OFF Fail LED: OFF Busy LED: OFF Reset INT: High Reset 51: High GPIO_25: High GPIO_27: High GPIO_33: High GPIO_34: High GPIO_39: High GPIO_40: High GPIO_41: High GPIO_42: High GPIO_43: High GPIO_44: Low Switch board: No FAN 1 RPM: 0 FAN 2 RPM: 2694
Weitere Funktionen:
uP Reset
Der Microcontroller für das LCD Display wird neu gebootet:
echo "uP_reset 0" > /proc/thecus_io sleep 1 echo "uP_reset 1" > /proc/thecus_io
Power off
Dem Gerät den Strom abstellen:
echo "PWR_OFF 5200" > /proc/thecus_io
Busy LED
ein:
echo "Busy 1" > /proc/thecus_io
aus
echo "Busy 0" > /proc/thecus_io
Programme aus der Originalsoftware setzen Busy teilweise auf 3, mir fällt kein Unterschied auf.
Copy LED
ein:
echo "Copy 1" > /proc/thecus_io
aus:
echo "Copy 0" > /proc/thecus_io
Fail LED
ein:
echo "Fail 1" > /proc/thecus_io
aus
echo "Fail 0" > /proc/thecus_io
Weitere
Die folgenden Befehle produzieren hier Fehlermeldungen, sie werden aber in der Originalsoftware benutzt:
echo "Buzzer 1" > /proc/thecus_io echo "S_LED 2" >/proc/thecus_io
uartpkt2
Tool zum anzeigen von statischen? Informationen auf dem LCD, leider kein frei definierbarer text, das Tool kann auch das Display initialisieren.
unterstützte Befehle:
SETLOGO
Speichert das "logo" Thecus N5200 in dem LCD Display und zeigt es an
Der Befehl
\2\1\0\16\21Thecus N5200\0\3
wird an das LCD Display geschickt, man kann den Text austauschen, die länge muss aber stinmmen.
SETKEY
Zweck unbekannt, schreibt
\2\1\0\t\0221234567\0\3
auf das LCD, für was der Key benutzt wird, ist mir nicht bekannt.
GETKEY
Zweck unbekannt, schreibt
\2\1\0\1\20\3
auf das LCD
SETBTO
Zeigt für einige sekunden
Thecus N5200 Booting...
auf dem display an, danach wechselt das Display wieder auf Self Testing... Der Befehl der diese Anzeige auslöst:
\2\1\0\2\23\17\3
HEARTBT
Der an das LCD geschickte Befehl:
\2\1\0\1\24\3
Nach dem man diesen Befehl abgeschickt hat, sendet das Display regelmässig Daten an den Rechner, das LCD ist erst nach diesem Befehl ansprechbar.
STARTWD
Der an das LCD geschickte Befehl:
\2\1\0\1\25\3
Es ist nicht bekannt ob diese Watchdogfunktion den Rechner oder das LCD neu starten soll, bis jetzt wurde durch den Watchdog kein Host reset ausgelöst.
GETCFG
?
SETCFG
?
OOBM
Der an das LCD Geschickte Befehl:
\2\1\0 \30mdadm\0\1\0\0\3Disk 3 Rebuilding\0\375\267\1\3
Die meldung wird einige sekunden angezeigt, das \$ZAHL vor dem meldungstext definiert die Art der Meldung:
- 0 = cmd
- 1 = Debug
- 2 = Inform
- 3 = Notice
- 4 = Warning
- 5 = Error
- 6 = mikrocontroller crash ;-)
Die Zahlen 375\267\1 können ohne auswirkungen beliebig geändert werden
die Meldung darf nicht länger als 17 Zeichen sein, auf das LCD passen 20 Zeichen?!
GETSYSINFO
Zeigt statisch im programm definierte Systeminfos an?!
Eigene Scripts
infotest.sh
- !/bin/sh
fillmsg(){
unset FILL unset LENGTH LENGTH=`echo $1 | wc -m` FILL=`echo $2-$LENGTH | bc` for i in `seq 0 $FILL`; do echo -n " "; done
}
INFO1="Daniel Aubry"
FILLCHARS1=`fillmsg "$INFO1" 20`
INFO2="LAN1: 10.1.11.20" FILLCHARS2=`fillmsg "$INFO2" 19`
INFO3="LAN2: 0.0.0.0" FILLCHARS3=`fillmsg "$INFO3" 20`
INFO4="Linux 2.6.19.2" FILLCHARS4=`fillmsg "$INFO4" 20`
printf "\2\1\0U\31$INFO1$FILLCHARS1\0$INFO2$FILLCHARS2\0\0$INFO3$FILLCHARS3\000$INFO4$FILLCHARS4\0\3" > /dev/ttyS1
setbo.pl
Das Script geht so leider nicht, ich gehe davon aus dass der serielle Port mit den falschen Parametern initialisiert wird.
#!/usr/bin/perl -w use Device::SerialPort; my $file = "/dev/ttyS1"; my $ob = Device::SerialPort->new ($file) || die "Can't open $file: $!"; $ob->baudrate(9600) || die "fail setting baudrate"; $ob->parity("none") || die "fail setting parity"; $ob->databits(8) || die "fail setting databits"; $ob->stopbits(1) || die "fail setting stopbits"; $ob->handshake("none") || die "fail setting handshake"; $ob->write_settings || die "fail write setting"; $ob->write("\2\1\0\2\23\17\3");
foo.pl
Benutzung: ./foo.pl > /dev/ttyS0 zeigt "Disk 2 Rebuilding" auf dem Display an.
#!/usr/bin/perl print("\2\1\0 \30mdadm\0\1\0\0\3Disk 2 Rebuilding\0\366\267\1\3");
reset51
AVR Microcontroller neu booten
#!/bin/sh echo "uP reset" echo "uP_reset 0" > /proc/thecus_io sleep 1 echo "uP_reset 1" > /proc/thecus_io sleep 3 uartpkt2 HEARTBT
Befehle
Booting... auf der 2. Zeile
\2\1\0\2\23\17\3
Heartbeat ein
\2\1\0\1\24\3
Watchdog ein
\2\1\0\1\25\3
Thecus N5200 auf der 1. Zeile, Der gesetzte Text wird warscheinlich im Flash gespeichert.
\2\1\0\16\21Thecus N5200\0\3
Zeile 1: Notice Zeile2: Disk 3 rebuilding Nach ein Paar Sekunden wieder das "Logo"
\2\1\0 \30mdadm\0\1\0\0\3Disk 3 Rebuilding\0\372\267\1\3
Zeile 2. ein zufällig ausgewählter Text:
\2\1\0U\31LAN1 : 172.16.66.205\0LAN2 : 172.16.2.254\0\0RAID Status :Healthy\000802.3ad:Load Balance\0\3
analyse OOBM
\2\1\0
- Prefix für alle Befehle?
\30mdadm
- muss nicht mdadm sein, muss aber gleich lang sein.
\0\1\0\0
- ?
\3Disk 3 Rebuilding
- 0 = cmd
- 1 = Debug
- 2 = Inform
- 3 = Notice
- 4 = Warning
- 5 = Error
- 6 = crash ;-)
\0\372\267\1\3