RS-232 ist ein Standard für eine bei Computern früher weit verbreitete serielle Schnittstelle, die in den frühen 1960ern von einem US-amerikanischen Standardisierungskomitee eingeführt wurde. In heutiger Zeit findet Sie sich noch in Serverhardware, professionellem Netzwerk-Equipment, Industrie-Systemen und Embedded-Devices.
Ihr Vorteil im Vergleich zu anderen administrativen Diensten (z.B. höhere Netzwerk-Protokolle, Shell-Zugang, Desktop-Systeme oder Web-Interfaces) ist, dass die Implementierung einen sehr viel weniger komplexen Software-Stack voraussetzt und auf dieser Basis systemnahe Dienste angeboten werden können.
In der Folge kann ein Administrator beispielsweise in sehr frühen Bootphasen auf das System zugreifen, lange bevor die höheren Software-Schichten initialisiert werden. Auf diesem Wege können oft auch dann noch Systeme administriert werden, die auf anderem Wege nicht mehr oder noch nicht zugreifbar sind (z.B. bei Boot-Problemen).
Anwendung
Für eine serielle Verbindung müssen beide Seiten (ein PC/Notebook als Client einerseits und die vu+-Box als Server andererseits) identische Parameter verwenden. Diese Verbindungsparameter werden von der vu+-Box gesetzt:
- Baudrate: 115200
- Anzahl Bits: 8
Heutzutage (anno 2015) gibt es kaum noch Computer mit echten seriellen Schnittstellen. Stattdessen können USB-Adapter verwendet werden, welche schon für unter 20€ verkauft werden.
Zugriff von einem Linux-Client
Unter Linux können mehrere Programme für die Verbindung verwendet werden:
- screen
- minicom
- ...
Im Folgenden ein kurzes Beispiel, was die vu+-Box beim Starten auf die serielle Konsole ausgibt. Diese Informationen wurden abgeschnitten und es werden auch im laufenden Betrieb noch weiterhin Informationen ausgegeben, welche zur Systemanalyse herangezogen werden können.
Beispiel:
# minicom -D /dev/ttyUSB0 -b 115200 -8 Welcome to minicom 2.7 OPTIONS: I18n Port /dev/ttyUSB0, 18:50:43 Press CTRL-A Z for help on special keys BCM74250012 M0 M1 01CZL2=1 LLMB=0000C000 BP=02000000 L2Cfg=1E7AD627 L2Buf=77707711 BrCfg=F01C200E BrMod=02800801 BrZp0=44000000 BrZp1=00002000 #@ CFE ver 2.333.20130710, Endian Mode: Little Build Date: Mon Jul 15 19:29:18 2013 Vuplus Team Copyright (C) Broadcom Corporation. CPU speed: 1305MHz DDR Frequency: 800 MHz DDR Mode: DDR3 Total memory(MEMC 0): 1024MB MEMC 0 DDR Width: 32 Total memory(MEMC 1): 1024MB MEMC 1 DDR Width: 32 Boot Device: NAND Total flash: 512MB RTS VERSION: 20120919184252_7425_single_encode ETH0_PHY: RGMII ETH0_MDIO_MODE: 1 ETH0_SPEED: 1000 ETH0_PHYADDR: probe SCB CLOCK = 277MHz Initializing USB. USB: Locating Class 09 Vendor 0000 Product 0000: USB Root Hub USB: Locating Class 09 Vendor 0000 Product 0000: USB Root Hub USB: Locating Class 09 Vendor 0000 Product 0000: USB Root Hub USB: Locating Class 09 Vendor 0000 Product 0000: USB Root Hub CFE initialized. USB: New device connected to bus 3 hub 1 port 1 USB: Resetting device on bus 3 hub 1 port 1 USB: Locating Class FF Vendor 148F Product 5372: Driver not found. waiting for usb...done checking usb No Priority Usb checking front key Checking usbdisk0:/vuplus/duo2/ignore.update......NO Checking usbdisk0:/vuplus/duo2/force.update......NO Checking usbdisk0:/vuplus/duo2/cfe_cfe_auto.bin......NO Checking usbdisk0:/vuplus/duo2/root_cfe_auto.bin......NO Checking usbdisk0:/vuplus/duo2/splash_cfe_auto.bin......NO Checking usbdisk0:/vuplus/duo2/kernel_cfe_auto.bin......NO Starting splash screen. Found splash image - Width = 720 Height = 480 Non Interlaced Replace list 043f8100 0c800000Interlaced Replace list 043f86a0 0c8005a0 Loader:elf Filesys:raw Dev:flash0.kernel File: Options:ubiroot rootflags=sync bmem=192M@64M bmem=458M@512M memc1=590M Loading: 0x80001000/7994368 0x807a0c00/210848 Entry address is 0x805e2650 Starting program at 0x805e2650 Linux version 3.13.5 (plnick@build-plnick) (gcc version 4.6.4 20120303 (prerelease) (GCC) ) #1 SMP Wed Nov 26 18:52:4 Fetching vars from bootloader... found 17 vars. Options: moca=0 sata=1 pcie=0 usb=1 Using 1024 MB + 1024 MB RAM (from CFE) bootconsole [early0] enabled CPU0 revision is: 00025a11 (Brcm4380 Broadcom BMIPS5000) FPU revision is: 00130001 Determined physical RAM map: memory: 10000000 @ 00000000 (usable) memory: 30000000 @ 20000000 (usable) memory: 31400000 @ 90000000 (usable) bmem: adding 192 MB RESERVED region at 64 MB (0x0c000000@0x04000000) bmem: adding 220 MB RESERVED region at 512 MB (0x0dc00000@0x20000000) Zone ranges: Normal [mem 0x00000000-0x4fffffff] HighMem [mem 0x50000000-0xc13fffff] Movable zone start for each node Early memory node ranges node 0: [mem 0x00000000-0x0fffffff] node 0: [mem 0x20000000-0x4fffffff] node 0: [mem 0x90000000-0xc13fffff] Primary instruction cache 32kB, physically tagged, 4-way, linesize 64 bytes. Primary data cache 32kB, 4-way, linesize 32 bytes. MIPS secondary cache 256kB, 8-way, linesize 128 bytes. PERCPU: Embedded 7 pages/cpu @82012000 s7168 r8192 d13312 u32768 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 461824 Kernel command line: libata.force=1:1.5Gbps bmem=192M@64M bmem=220M@512M memc1=788M ubi.mtd=0 root=ubi0:rootfs rootfc PID hash table entries: 4096 (order: 2, 16384 bytes) Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) Memory: 1408272K/1855488K available (6068K kernel code, 319K rwdata, 1208K rodata, 260K init, 144K bss, 447216K rese) Hierarchical RCU implementation. NR_IRQS:160 Measuring MIPS counter frequency... Detected MIPS clock frequency: 1305 MHz (163.126 MHz counter) Calibrating delay loop... 864.25 BogoMIPS (lpj=432128) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 SMP: Booting CPU1... CPU1 revision is: 00025a11 (Brcm4380 Broadcom BMIPS5000) FPU revision is: 00130001 Primary instruction cache 32kB, physically tagged, 4-way, linesize 64 bytes. Primary data cache 32kB, 4-way, linesize 32 bytes. MIPS secondary cache 256kB, 8-way, linesize 128 bytes. SMP: CPU1 is running Brought up 2 CPUs devtmpfs: initialized bmem: adding extra 236 MB RESERVED region at 3092 MB (0x0ec00000@0xc1400000) NET: Registered protocol family 16 USB0: power enable is active high; overcurrent is active low USB1: power enable is active high; overcurrent is active low bio: create slab <bio-0> at 0 SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb Linux video capture interface: v2.00 Advanced Linux Sound Architecture Driver Initialized. cfg80211: Calling CRDA to update world regulatory domain Switched to clocksource wktmr FS-Cache: Loaded NET: Registered protocol family 2 TCP established hash table entries: 8192 (order: 3, 32768 bytes) TCP bind hash table entries: 8192 (order: 4, 65536 bytes) TCP: Hash tables configured (established 8192 bind 8192) TCP: reno registered UDP hash table entries: 512 (order: 2, 16384 bytes) UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. bounce pool size: 64 pages NFS: Registering the id_resolver key type Key type id_resolver registered Key type id_legacy registered nfs4filelayout_init: NFSv4 File Layout Driver Registering... Installing knfsd (copyright (C) 1996 okir@monad.swb.de). msgmni has been set to 1174 io scheduler noop registered io scheduler cfq registered (default) Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled console [ttyS0] enabledMMIO 0x10406b00 (irq = 62, base_baud = 5062500) is a 16550A console [ttyS0] enabled bootconsole [early0] disabled bootconsole [early0] disabled serial8250.0: ttyS1 at MMIO 0x10406b40 (irq = 63, base_baud = 5062500) is a 16550A serial8250.0: ttyS2 at MMIO 0x10406b80 (irq = 64, base_baud = 5062500) is a 16550A loop: module loaded [...]