PCI-1610 is an Advantech 4-port RS-232 Universal PCI Communication Card with comes very handy if you need to connect more devices using serial port.
It doesn’t work out of the box but Advantech provides updated source code drivers for 2.4, 2.6 and 3.x kernel releases.
To build and install kernel module download device drivers:
# wget "http://downloadt.advantech.com/download/downloadsr.aspx?File_Id=1-L2T1KN" -O advantech_source.tgz
--2012-11-26 18:31:40-- http://downloadt.advantech.com/download/downloadsr.aspx?File_Id=1-L2T1KN
Resolving downloadt.advantech.com... 208.111.128.6, 208.111.128.7
Connecting to downloadt.advantech.com|208.111.128.6|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 159637 (156K) [application/octet-stream]
Saving to: "advantech_source.tgz"
100%[======================================>] 159,637 68.0K/s in 2.3s
2012-11-26 18:31:44 (68.0 KB/s) - "advantech_source.tgz" saved [159637/159637]
Extract archive:
# tar xfz advantech_source.tgz
Check kernel release:
# uname -r
2.6.32-5-amd64
Build and install module for desired kernel release:
# ls
adv950_source_v3.35 advantech_source.tgz
# cd adv950_source_v3.35
# ls
2.4 2.6 3.x advmknod getconfig README
# cd 2.6
# make
# make node
# make install
Now dmesg output will contain information about available devices (from ttyAP0 to ttyAP3):
===============================================================
Advantech PCI-954/952/16C950 Device Drivers. V3.35 [03/26/2012]
Supports: RS232/422/485 auto detection and setting
Devices: UNO: UNO2050 [COM3/COM4]
UNO2059 [COM1~COM4]
UNOB-2201CB [COM1~COM8]
UNOB-2176 [COM1~COM4]
UNO-1150 [COM2/COM3]
UNO-2679 [COM3~COM6]
UNO-4672 [COM3~COM10]
ICOM: PCI-1601, PCI-1602
PCI-1603, PCI-1604
PCI-1610, PCI-1612
PCI-1620, PCI-1622
MIC: MIC-3611, MIC-3612
MIC-3620, MIC-3621
PCM: PCM-3614P/I, PCM-3641P/I
PCM-3618P/I, PCM-3681P/I
General: A001, A002, A004
A101, A102, A104
F001, F002, F004
F101, F102, F104
A202, A304, A408
Advantech Industrial Automation Group.
===============================================================
advserial 0000:03:00.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21
PCI-1610, function 0, port 0, RS232
ttyAP0 at I/O 0xc000 (irq = 21) is a 16C950/954
PCI-1610, function 0, port 1, RS232
ttyAP1 at I/O 0xc008 (irq = 21) is a 16C950/954
PCI-1610, function 0, port 2, RS232
ttyAP2 at I/O 0xc010 (irq = 21) is a 16C950/954
PCI-1610, function 0, port 3, RS232
ttyAP3 at I/O 0xc018 (irq = 21) is a 16C950/954
Just for reference – lspci output:
$ sudo lspci -vv -s 03:00
03:00.0 Serial controller: Advantech Co. Ltd PCI-16xx series PCI multiport serial board (function 0) (prog-if 06 [16950])
Subsystem: Device 1610:0004
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 21
Region 0: I/O ports at c000 [size=32]
Region 1: Memory at fe1b2000 (32-bit, non-prefetchable) [size=4K]
Region 2: I/O ports at bc00 [size=32]
Region 3: Memory at fe1b3000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 1
Flags: PMEClk- DSI- D1- D2+ AuxCurrent=0mA PME(D0+,D1-,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: advserial
Kernel modules: adv950
03:00.1 Serial controller: Advantech Co. Ltd PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) (prog-if 06 [16950])
Subsystem: Device 1610:0000
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 21
Region 0: I/O ports at c800 [size=128]
Region 1: Memory at fe1b0000 (32-bit, non-prefetchable) [size=4K]
Region 2: I/O ports at c400 [size=32]
Region 3: Memory at fe1b1000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 1
Flags: PMEClk- DSI- D1- D2+ AuxCurrent=0mA PME(D0+,D1-,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-