I've got this 2 port PCI serial card installed in an older Linux machine (it's offline, so updates are few and far between). The documentation for the card says that the installed kernel version on the machine is supported, and I can see that the card is working when I connect one port to the other.
The problem comes when I try to read a data stream coming from a serial network interface server (a Perle IOLAN to be specific). All I get is 0x80
and 0x00
coming out instead of ASCII text. I've verified that the major settings are the same (baud rate, 8 bits/char, 1 stop bit, no parity, no flow control) between the two ends, and have tried various baud rates as well. The same thing happens when I connect a Windows machine to it in order to test (the Windows machine reads from the IOLAN just fine as well).
The previous serial card (I think it's this one, but if not, it's something close) works fine, but it also has a different UART in it (a 16550 vs. a 16950 in this new card).
Here is the output I'm getting for one of the ports from stty
:
speed 115200 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = ; erase = <undef>; kill = s; eof = <undef>; eol = a;
eol2 = <undef>; swtch = r; start = ^Q; stop = ^S; susp = <undef>;
rprnt = <undef>; werase = <undef>; lnext = ; flush = l; min = 0; time = 1;
-parenb -parodd cs8 -hupcl -cstopb cread clocal crtscts
-ignbrk -brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt
-echoctl -echoke
and from setserial
:
/dev/ttyS2, Line 2, UART: 16950/954, Port: 0x1078, IRQ: 74
Baud_base: 115200, close_delay: 50, divisor: 0
closing_wait: 3000
Flags: spd_normal skip_test auto_irq
I can tell that my major settings are correct, and comparing against another Linux machine that's working, I don't see anything too out of place. So why can't this card talk to other machines like it should?
EDIT: As per @sawdust, my kernel version is 2.6.18, according to uname
:
Linux serverName 2.6.18-92.el5 #1 SMP Tue Jun 10 18:49:47 EDT 2008 i686 i686 i386 GNU/Linux
The card also looks to be recognized on boot, although perhaps not entirely properly:
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
0000:00:03.3: ttyS1 at I/O 0x4470 (irq = 177) is a 16550A
ttyS2: detected caps 00000700 should be 00000100
0000:07:00.0: ttyS2 at I/O 0x1078 (irq = 74) is a 16C950/954
ttyS3: detected caps 00000700 should be 00000100
0000:07:00.0: ttyS3 at I/O 0x1070 (irq = 74) is a 16C950/954
ttyS2: detected caps 00000700 should be 00000100
(ttyS0 and ttyS1 have headers on the motherboard, but no physical DB-9 port.)
/proc/tty/dirvers/
contains a single file, named serial
.