Debian - How to install PCI-1610 4-port RS-232 PCI communication card

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-
Milosz Galazka's Picture

About Milosz Galazka

Milosz is a system administrator working for a successful Polish company and a long time supporter of Free Software Foundation and Debian operating system.

Gdansk, Poland https://sleeplessbeastie.eu