Thecus n5200 Debian

From chaoswiki
Revision as of 14:42, 21 January 2007 by Obri (talk | contribs) (→‎SETBTO)
Jump to navigation Jump to search

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:


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

Heartbeat?

STARTWD

Watchdog starten, der watchdog resetet den Host nicht, welchen Sinn hat er?

GETCFG

?

SETCFG

?

OOBM

Zeigt an dass Disk 3 neu gebaut wird

GETSYSINFO

Zeigt statisch im programm definierte Systeminfos an?!

Eigene Scripts

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

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