Mit setserial werden unter Linux die seriellen Schnittstellen (RS-232) konfiguriert.

Für die onboard ttyS0 und ttyS1 muss man normalerweise nichts spezielles konfigurieren, die üblichen Werte sollten da in jeder Linux-Distribution voreingestellt sein (ttyS0 == COM1 == 3F8/4, ttyS1 == COM2 == 2F8/3).

Die Probleme gehen aber meist dann los, wenn man eine PCI-Erweiterungskarte in Betrieb nehmen will, daher ein paar Tipps:

Kernel / lspci

dmesg (2.6.18-3 von Debian etch):

serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:0a: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 19
ACPI: PCI Interrupt 0000:03:08.0[A] -> Link [LNKA] -> GSI 19 (level, low) -> IRQ
 201
0000:03:08.0: ttyS1 at I/O 0xec00 (irq = 201) is a 16550A
0000:03:08.0: ttyS2 at I/O 0xec08 (irq = 201) is a 16550A

Man sieht in diesem Beispiel schon eine kleine Besonderheit: nur die ttyS0 ist an der üblichen Stelle (onboard ist also keine ttyS1 vorhanden bzw. sie ist abgeschaltet).

ttyS1 und S2 sind hier beide auf einer PCI-Steckkarte (Digitus 2 Port Serial mit SUN1889 Chip). Die I/O-Adresse und der IRQ werden vom System zugewiesen, die können bei Euch also auch anders sein.

lspci -v:

03:08.0 Serial controller: Timedia Technology Co Ltd PCI2S550 (Dual 16550 UART) (rev 01) (prog-if 02 [16550])
        Subsystem: Timedia Technology Co Ltd Unknown device 4037
        Flags: stepping, medium devsel, IRQ 201
        I/O ports at ec00 [size=32]

/etc/serial.conf

Hier werden bei Debian (etch) die seriellen Schnittstellen konfiguriert:

/dev/ttyS0 uart 16550A port 0x3F8 irq 4
/dev/ttyS1 uart 16550A port 0xec00 irq 201
/dev/ttyS2 uart 16550A port 0xec08 irq 201

/!\ Wichtig ist hier das A - wenn man 16550 (ohne A) angibt, dann tut es nicht richtig (minicom tut ein bischen, sendfax nicht)!

Port-Parameter

Zum Einstellen der Port-Parameter, etwa der Baudrate, gibt es andere Programme. Eine Weg besteht in der Nutzung von stty.

setserial (zuletzt geändert am 2010-08-30 19:09:39 durch p5DD5A07D)