• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

serielle Schnittstellenkarte

Hi,

ich habe auf meinem Mainboard nur eine serielle Schnittstelle verfügbar und habe mir eine PCI Schnittstellenkarte geholt die 2 serielle Ports zu Verfügung stellt.
In meinen Linux PC eingebaut (Suse 9.3) und gebootet. Leider wird die Karte nicht konfiguriert (erkannt).
Unter
var/log/boot.msg
bzw.
dmesg

finde ich nur die onBoard Schnittstelle.
wenn ich
cat /proc/interrupts
aufrufe sehe ich keinen Unterschied ob die Karte drin oder draussen ist.

Wenn ich im Yast unter Hardware die Hardware Info aufrufe taucht die Karte aber unter PCI auf (Brain Boxes Multiport Serial Controller.
Unter Recources sind 3 io's angegeben, der irq soll 10 sein und enabled, unter mem habe ich 3 Einträge.


Ich habe meinen Suse10.0 Server ebenfalls mit einer seriellen Karte nachgerüstet, damals war das Plug and Play, Karte rein, gebootet, Karte erkannt, ttyS4 & ttyS5 waren verfügbar.

Karte defekt oder muss man bei 9.3 was beachten ?
 
Nein, in /proc/interrupts findest du nur Einträge von Treibern, die gerade aktiv sind. Serial macht bis zum Öffnen von ttySx eigentlich nichts. Schau mal in
Code:
grep serial /proc/ioports
Bei mir gibt das bei einer Dual-LPT-Einbaukarte
Code:
10:56 ichi:~ > grep parport /proc/ioports 
0378-037a : parport0
0778-077a : parport0
  c400-c402 : parport2
  cc00-cc02 : parport1
10:58 ichi:~ > cat /proc/interrupts 
           CPU0       
  0:        113   IO-APIC-edge      timer
  1:      32803   IO-APIC-edge      i8042
  7:          0   IO-APIC-edge      parport0
  8:          0   IO-APIC-edge      rtc0
  9:          0   IO-APIC-fasteoi   acpi
 12:      52974   IO-APIC-edge      i8042
 14:      89093   IO-APIC-edge      libata
 15:       3039   IO-APIC-edge      libata
 16:     515083   IO-APIC-fasteoi   nvidia
 17:      41399   IO-APIC-fasteoi   CS46XX, eth0
 18:         81   IO-APIC-fasteoi   eth1
 19:      74301   IO-APIC-fasteoi   ohci_hcd:usb1
 20:          0   IO-APIC-fasteoi   ohci_hcd:usb2
 21:          2   IO-APIC-fasteoi   ehci_hcd:usb3
NMI:          0 
LOC:     390574 
ERR:          0
MIS:          0
=> weil ich kein Druckerkerneltriber dran hab, auch keine Interruptbelegung.
 
OP
F

fritzbee21

Hacker
ich bekomme für
Code:
grep serial /proc/ioports

die Ausgabe
Code:
03f8-03ff : serial

heisst also die Karte läuft nicht.
im YAST unter Hardware Info ist die Karte aber drin
muss ich im Kernel eventuell nochw as aktivieren ?
 
OP
F

fritzbee21

Hacker
serial controller unknown device ...

Code:
pluto:/home/user # lspci
0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge (rev 80)
0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI Bridge
0000:00:0d.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 04)
0000:00:0d.1 Input device controller: Creative Labs SB Live! MIDI/Game Port (rev 01)
0000:00:0e.0 Multiport serial controller: Brain Boxes: Unknown device 0061 (rev 01)
0000:00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
0000:00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
0000:00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
0000:00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82)
0000:00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge
0000:00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74)
0000:00:13.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
0000:01:00.0 VGA compatible controller: nVidia Corporation NV34 [GeForce FX 5200] (rev a1)
 
OP
F

fritzbee21

Hacker
lspci -n


Code:
0000:00:00.0 Class 0600: 1106:3189 (rev 80)
0000:00:01.0 Class 0604: 1106:b198
0000:00:0b.0 Class 0280: 13d0:2103 (rev 02)
0000:00:0d.0 Class 0401: 1102:0002 (rev 04)
0000:00:0d.1 Class 0980: 1102:7002 (rev 01)
0000:00:0e.0 Class 0702: 135a:0061 (rev 01)
0000:00:10.0 Class 0c03: 1106:3038 (rev 80)
0000:00:10.1 Class 0c03: 1106:3038 (rev 80)
0000:00:10.2 Class 0c03: 1106:3038 (rev 80)
0000:00:10.3 Class 0c03: 1106:3104 (rev 82)
0000:00:11.0 Class 0601: 1106:3177
0000:00:11.1 Class 0101: 1106:0571 (rev 06)
0000:00:12.0 Class 0200: 1106:3065 (rev 74)
0000:00:13.0 Class 0480: 1131:7146 (rev 01)
0000:01:00.0 Class 0300: 10de:0322 (rev a1)
[/quote]

so ich habe mir jetzt auch noch nen 2. Controller geholt, der macht genau das gleiche Problem.
Bei meinem Suse 10.0 System war das damals Plug and Play, hier bei 9.3 scheint es nicht so einfach zu klappen. Dasd beide Controller kaputt sind schliesse ich jetzt mal aus
 
Code:
0000:00:0e.0 Class 0702: 135a:0061 (rev 01)
Dafür seh ich keinen Treiber, leider. Für meine LPT-Karte gibt's halt einen, wohl Glück gehabt damals.
 
OP
F

fritzbee21

Hacker
Code:
0000:00:0e.0 Class 0702: 135a:0061 (rev 01)

wie siehst Du denn an der Zeile ob es einen Treiber gibt ?

Für meinen 2. Controller von delock gibt es angeblich eine Linux Unterstützung (steht auf der Webseite + im Treiberpacket gibt es ein Textdokument wie man die Karte zum laufen bekommen soll).

Blöde Frage, warum ging das bei 10.0 damals Plug and Play ?
Müsste das nicht immer Plug and Play gehen oder habe ich dummerweise 2. komische Controller erwischt ?
 
fritzbee21 schrieb:
Code:
0000:00:0e.0 Class 0702: 135a:0061 (rev 01)
wie siehst Du denn an der Zeile ob es einen Treiber gibt ?
Also - ich meine einen Treiber im Standard-Linuxkernel.
Code:
grep '0x....135a 0x....0061' /lib/modules/2.6.22.3-ccj53-regular/modules.pcimap
Blöde Frage, warum ging das bei 10.0 damals Plug and Play ?
Na wer weiß. Vielleicht gab's da mal was. Wenn der Hersteller externe Treiber hat, wunderbar(er).
 
OP
F

fritzbee21

Hacker
interessant :!:

ich habe eben mal bei meinem suse 10.0 server geschaut, dort bekomme ich

Code:
00:0b.0 Serial controller: Timedia Technology Co Ltd PCI2S550 (Dual 16550 UART) (rev 01)

und

Code:
00:0b.0 Class 0700: 1409:7168 (rev 01)

der grep Befehl

Code:
grep '0x....1409 0x....7168' modules.pcimap


gibt mir hier nichts aus, also kein Eintrag vorhanden


hier mal ein Auszug aus der dmesg

PCI: Found IRQ 12 for device 0000:00:0b.0
PCI: Sharing IRQ 12 with 0000:00:07.4
ttyS4 at I/O 0xdc00 (irq = 12) is a 16550A
ttyS5 at I/O 0xdc08 (irq = 12) is a 16550A

und woher hat der nun den Treiber ?

Hier ist mal die Installationsanleitung für meine 2. Karte, die laut Webseite auch unter Linux laufen soll.
Einen Treiber muss man nicht installieren, sondern nur die seriellen ports manuell zuweisen. Naja o das klappt ?
Wir werden sehen

This installation guide describes the procedures to install NetMos Technology Nm9735CV, Nm9745CV,
Nm9835CV, Nm9845CV PCI serial ports in Linux platform.

Linux Platform

l Operating System : RedHat, SuSe
l Terminal Emulation AP : minicom
l Internet Dialer : Kppp


Find the available serial ports

Since Linux only support 4 serial ports (ttyS0, ttyS1, ttyS2, ttyS3) under the default condition. Most likely, ttyS0 & ttyS1 are supported by mother board's built-in serial controllers and ttyS2 & ttyS3 are free for additional I/O card.

Serial ports could be checked by the following commands.

setserial /dev/ttyS0 -a (COM-1)
setserial /dev/ttyS1 -a (COM-2)
setserial /dev/ttyS2 -a (COM-3)
setserial /dev/ttyS3 -a (COM-4)

If COM-1 is used by mouse, the response is similar to

/dev/ttyS0 : Device or resource busy

If the COM-1 does not attach any device, the response is similar to

/dev/ttyS0, Line 0, UART: 16550A, Port: 0x3f8, irq: 4
Baud_base: 115200, clos_delay: 50, divisor: 0
closing_wait: 3000, closing_wait2: infinite
Flags: spd_normal skip_test

In case ttyS2 (COM-3) is free, the response for command setserial /dev/ttyS2 -a is shown below.

/dev/ttyS2, Line 2, UART: unknown, Port: 0x3e8, irq: 4
Baud_base: 115200, clos_delay: 50, divisor: 0
closing_wait: 3000, closing_wait2: infinite
Flags: spd_normal skip_test

Find the PCI card resource ( I/O port address & IRQ) for the serial ports

Enter the command more /proc/pci

The response is similar to the following

Bus 0, Device 11, function 0:
Serial controller : Unknown vendor Unknown device (rev 01).
Vendor id=9710, Device id=9735
Device id=9745
Device id=9820
Device id=9825
Device id=9835
Device id=9845

Medium devsel. Fast back-to-back capable. IRQ 11

Board with Nm9735CV part
I/O at 0xc000 [0xc001] serial port 1
0xc008 [0xc009] serial port 2

Board with Nm9745CV part
I/O at 0xc000 [0xc001] serial port 1
0xc008 [0xc009] serial port 2
0xc010 [0xc011] device 1
0xc018 [0xc019] device 2
0xc020 [0xc021] device 3
0xc028 [0xc029] device 4

Board with Nm9820CV part
I/O at 0xc000 [0xc001] serial port 1
I/O at 0xc400 [0xc401] not used
I/O at 0xc800 [0xc801] not used
I/O at 0xd000 [0xd001] not used
I/O at 0xd400 [0xd401] not used
I/O at 0xd800 [0xd801] not used

Board with Nm9825CV part
I/O at 0xc000 [0xc001] serial port 1

Board with Nm9835CV part
I/O at 0xc000 [0xc001] serial port 1
I/O at 0xc400 [0xc401] serial port 2
I/O at 0xc800 [0xc801] not used
I/O at 0xd000 [0xd001] not used
I/O at 0xd400 [0xd401] not used
I/O at 0xd800 [0xd801] not used

Board with Nm9845CV part
I/O at 0xc000 [0xc001] serial port 1
I/O at 0xc400 [0xc401] serial port 2
I/O at 0xc800 [0xc801] device 1
I/O at 0xd000 [0xd001] device 2
I/O at 0xd400 [0xd401] device 3
I/O at 0xd800 [0xd801] device 4

Board with Nm9755CV part
I/O at 0xc000 [0xc001] not used
I/O at 0xc400 [0xc401] not used
I/O at 0xc800 [0xc801] device 1
I/O at 0xd000 [0xd001] device 2
I/O at 0xd400 [0xd401] device 3
I/O at 0xd800 [0xd801] device 4


From the /proc/pci file, it is possible to find the PCI card's I/O port address and IRQ.
Especially, the NetMos parts always shows

Vendor id=9710, Device id=9735
Device id=9745
Device id=9820
Device id=9825
Device id=9835
Device id=9845

Configure the parameters for ttyS2 or ttyS3

Enter (if ttyS2 or ttyS3 are free)

setserial /dev/ttyS2 port 0xc000 UART 16550A
irq 11 Baud_base 115200

setserial /dev/ttyS3 port 0xc008 UART 16550A
irq 11 Baud_base 115200

Check the setting for ttyS2 or ttyS3

Type setserial /dev/ttyS2 -a

/dev/ttyS2, Line 2, UART: 16550A, Port: 0xc000, irq: 11
Baud_base: 115200, clos_delay: 50, divisor: 0
closing_wait: 3000, closing_wait2: infinite
Flags: spd_normal skip_test


The ttyS2 or ttyS3 are ready for application
:D
 

TomcatMJ

Guru
fritzbee21 schrieb:
Blöde Frage, warum ging das bei 10.0 damals Plug and Play ?
Müsste das nicht immer Plug and Play gehen oder habe ich dummerweise 2. komische Controller erwischt ?
Vieleicht geht es erst ab OpenSUSE 10.0 und nicht schon ab SUSE 9.3? Es könnte sein, daß ab OpenSUSE 10.0 vielleicht ein weiterer Treiber im Kernel enthalten war der einfach in SUSE 9.3 noch nicht vorhanden war...vielleicht soltest du ein sowieso nicht mehr von Security-uUdates versorgtes SUSE 9.3er System mal auf openSUSE 10.2 updaten?

Bis denne,
Tom
 
Das mit 9.3 hab ich überlesen... dachte auf 10.0 gings auf 10.2 nicht :-D
Na dann is doch klar - Upgrade.
fritzbee21 schrieb:
PCI: Found IRQ 12 for device 0000:00:0b.0
PCI: Sharing IRQ 12 with 0000:00:07.4
ttyS4 at I/O 0xdc00 (irq = 12) is a 16550A
ttyS5 at I/O 0xdc08 (irq = 12) is a 16550A
und woher hat der nun den Treiber ?
serial.ko hat es sich vom BIOS geholt (also ohne PCI-ID-Mapping), schätze ich. Setserial brauchst du nicht, das macht dann die jeweilige Anwendung.
 
OP
F

fritzbee21

Hacker
also grundsätzlich wechsle ich in Kürze von 9.3 auf 10.2.

bei meinem 10.0 System finde ich keinen Eintrag mit dem grep Befehl, trotzdem wird die Karte erkannt (hatte ich ja schonmal erwähnt)

serial.ko hat es sich vom BIOS geholt (also ohne PCI-ID-Mapping), schätze ich.

wo siehst Du das denn?

andere Frage:
Wenn es keinen Eintrag in der modules.pcimap finde, kann ich trotzdem nach der Anleitung mit setserial einem Device eine Schnittstelle zuweisen ?
Wenn kein Treiber vorhanden ist, dann müsste das doch gründsätzlich doch garnicht klappen ???
 
fritzbee21 schrieb:
serial.ko hat es sich vom BIOS geholt (also ohne PCI-ID-Mapping), schätze ich.
wo siehst Du das denn?
Das ist meine Einschätzung. Denn es gibt nicht nur PCI-IDs, sondern auch USB-IDs (modules.usbmap), Firewire-IDs, etc. Die findest du in /lib/modules/blabla/modules.*map. Dann gibt es auch noch ACPI-IDs, die findet man als Textdatei außer im Quelltext gar nicht, treffen aber trotzdem als Treiber zu.
Wenn es keinen Eintrag in der modules.pcimap finde, kann ich trotzdem nach der Anleitung mit setserial einem Device eine Schnittstelle zuweisen?
Nein, du hast ja ohne Treiber kein Device wie hier:
Code:
ttyS4 at I/O 0xdc00 (irq = 12) is a 16550A
ttyS5 at I/O 0xdc08 (irq = 12) is a 16550A
 
OP
F

fritzbee21

Hacker
Hi,

theoretisch würde ich Dir zwar recht geben, das wenn kein Treiber vorhanden ist, auch mit setserial keine Zuweisung möglich ist, aber praktisch scheint es doch zu gehen, schau mal:

-> habe eben meine 6 Port Seriellkarte eingebaut.
Beim booten zwar erkannt aber der Suseplugger sagt mir kein Treiber da.
lspci bzw. lspci -n gibt mit einige Infos aus.
In modules.pcimap kann ich mit dem grep Befehl keinen Eintrag für meine Karte finden.

Laut obiger Beschreibung habe ich dem Device ttyS2 die erste Schnittstelle der Karte zugewiesen
Board with Nm9845CV part
I/O at 0xc000 [0xc001] serial port 1
I/O at 0xc400 [0xc401] serial port 2
I/O at 0xc800 [0xc801] device 1
I/O at 0xd000 [0xd001] device 2
I/O at 0xd400 [0xd401] device 3
I/O at 0xd800 [0xd801] device 4

also

Code:
setserial /dev/ttyS2 port 0xc000 UART 16550A irq 10 Baud_base 115200

das hat auch geklappt, mit
setserial /dev/ttyS2 -a
bekomme ich jetzt die Meldung das ein UART 16550 auf dieser Schnittstelle vorhanden ist.

Jetzt den Rechner neu gestartet und siehe da, die anderen 5 Schnittstellen werden auch erkannt.

Hier ein Auszug aus der demg
Code:
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI interrupt 0000:00:0e.0[A] -> GSI 10 (level, low) -> IRQ 10
ttyS14 at I/O 0xd000 (irq = 10) is a 16550A
ttyS15 at I/O 0xb800 (irq = 10) is a 16550A
ttyS44 at I/O 0xb400 (irq = 10) is a 16550A
ttyS45 at I/O 0xb000 (irq = 10) is a 16550A
ttyS46 at I/O 0xa800 (irq = 10) is a 16550A

komischerweise ist jetzt der ttyS2 nicht mehr vorhanden, auch mit serserial bekomme ich wieder unknown.
Die anderen 5 Schnittstellen wurden jetzt automnatisch erkannt ausserdem sind die IO Ports anders als in der Beschreibung angegeben.

Jertzt die Frage aller Fragen, wenn kein Treiber da ist, warum klappts dann doch?
Der Hersteller gibt ja auch genau diesen Weg an.
 
Oben