Once upon a time, every computer came with a parallel port. No longer, and in a Windows dominated world, USB to parallel port adapters are often suggested. Even if a card based parallel port can be found, it's going to be even rarer to find one that guarantees Linux support. The parallel port still has utility, especially with maker projects where simple electrical interfacing with the world is needed.

For a new project, I needed a parallel port supported by Linux, and usable by LinuxCNC. A PCI based card is likely to work, but they will become rarer, as many newer computers only have PCIe ports. Here I document my trial of parallel port cards. I hope the information is useful and if you know of additional cards, please comment.

Four parallel ports cards were purchased and tested on a Fedora 20 system with the kernel 3.15.7-200.fc20.x86_64. Two of cards are PCI and two are PCIe. each card has a picture of the card and of the primary chip. The relevant sections of dmesg -r and lspci -vvvx are also included for those interested. Finally, a mention of a parallel port breakout card is included.

Summary




Intek21 TK9902PCIWorkedMoschip MCS9805CV
StarTech PCI1PPCIWorkedMoschip MCS9805CV-BA
StarTech PEX1PPCIeWorkedOxford Semi OXPCIe952-FBAG
Iocrest SI-PEX10010PCIeFailedWCH CH382L
Board also sold as
Syba WCH382L Chipset SI-PEX10010?


Intek21 TK9902 Worked

Appears nearly identical to the StarTech PCI1P.

Output of dmesg


[ 6.267491] PCI parallel port detected: 9710:9805, I/O at 0xcff8(0xcff0), IRQ 19
[ 6.267586] parport0: PC-style at 0xcff8 (0xcff0), irq 19 [PCSPP,TRISTATE]

Output of lspci


06:00.0 Communication controller: MosChip Semiconductor Technology Ltd. PCI 1 port parallel adapter (rev 01)
Subsystem: LSI Logic / Symbios Logic Device 0010
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 19
Region 0: I/O ports at cff8 [size=8]
Region 1: I/O ports at cff0 [size=8]
Region 2: I/O ports at cfe8 [size=8]
Region 3: I/O ports at cfe0 [size=8]
Region 4: I/O ports at cfd8 [size=8]
Region 5: I/O ports at cfc0 [size=16]
Kernel driver in use: parport_pc
Kernel modules: parport_pc
00: 10 97 05 98 01 00 80 02 01 00 80 07 01 20 00 00
10: f9 cf 00 00 f1 cf 00 00 e9 cf 00 00 e1 cf 00 00
20: d9 cf 00 00 c1 cf 00 00 00 00 00 00 00 10 10 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00

Images



StarTech PCI1P_LP Worked

Appears nearly identical to the Intek21 TK9902.

Output of dmesg


[ 6.179325] PCI parallel port detected: 9710:9805, I/O at 0xcff8(0xcff0), IRQ 19
[ 6.179427] parport0: PC-style at 0xcff8 (0xcff0), irq 19 [PCSPP,TRISTATE]

Output of lspci


06:00.0 Communication controller: MosChip Semiconductor Technology Ltd. PCI 1 port parallel adapter (rev 01)
Subsystem: LSI Logic / Symbios Logic Device 0010
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 19
Region 0: I/O ports at cff8 [size=8]
Region 1: I/O ports at cff0 [size=8]
Region 2: I/O ports at cfe8 [size=8]
Region 3: I/O ports at cfe0 [size=8]
Region 4: I/O ports at cfd8 [size=8]
Region 5: I/O ports at cfc0 [size=16]
Kernel driver in use: parport_pc
Kernel modules: parport_pc
00: 10 97 05 98 01 00 80 02 01 00 80 07 01 20 00 00
10: f9 cf 00 00 f1 cf 00 00 e9 cf 00 00 e1 cf 00 00
20: d9 cf 00 00 c1 cf 00 00 00 00 00 00 00 10 10 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00

Images




StarTech PEX1P Worked

Output of dmesg


[ 6.513089] PCI parallel port detected: 1415:c110, I/O at 0xcf00(0xce00), IRQ 19
[ 6.513214] parport0: PC-style at 0xcf00 (0xce00), irq 19 [PCSPP,TRISTATE,EPP]

Output of lspci


07:00.0 Parallel controller: Oxford Semiconductor Ltd Device c110 (prog-if 02 [ECP])
Subsystem: Oxford Semiconductor Ltd Device c110
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 4 bytes
Interrupt: pin A routed to IRQ 19
Region 0: I/O ports at cf00 [size=8]
Region 1: I/O ports at ce00 [size=4]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [70] Express (v1) Legacy Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <128ns, L1 <2us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 unlimited
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
Capabilities: [100 v1] Device Serial Number 00-30-e0-11-11-00-01-10
Capabilities: [110 v1] Power Budgeting <?>
Kernel driver in use: parport_pc
Kernel modules: parport_pc
00: 15 14 10 c1 05 00 10 00 00 02 01 07 01 00 00 00
10: 01 cf 00 00 01 ce 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 15 14 10 c1
30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 01 00 00



Iocrest SI-PEX10010 Failed

This board was sold as "Syba WCH382L Chipset SI-PEX10010" but Iocrest was the name on the box. Regardless, the same chipset is present and the same model number is used.

While this board failed to be recognized as a parallel port, there may be hope. However, an better solution is likely to avoid the card.

Output of dmesg


[ 0.183504] pci 0000:07:00.0: [1c00:3050] type 00 class 0x070005
[ 0.183526] pci 0000:07:00.0: reg 0x10: [io 0xcc00-0xccff]
[ 0.183542] pci 0000:07:00.0: reg 0x14: [mem 0xfbef8000-0xfbefffff pref]
[ 0.183559] pci 0000:07:00.0: reg 0x18: [io 0xcf00-0xcf03]
[ 0.183620] pci 0000:07:00.0: reg 0x30: [mem 0x00000000-0x00007fff pref]
[ 0.183702] pci 0000:07:00.0: PME# supported from D0 D3hot D3cold

Output of lspci


07:00.0 Serial controller: Device 1c00:3050 (rev 10) (prog-if 05 [16850])
Subsystem: Device 1c00:3050
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 19
Region 0: I/O ports at cc00 [size=256]
Region 1: Memory at fbef8000 (32-bit, prefetchable) [size=32K]
Region 2: I/O ports at cf00 [size=4]
[virtual] Expansion ROM at fbe00000 [disabled] [size=32K]
Capabilities: [60] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [68] MSI: Enable- Count=1/32 Maskable+ 64bit+
Address: 0000000000000000 Data: 0000
Masking: 00000000 Pending: 00000000
Capabilities: [80] Express (v2) Legacy Endpoint, MSI 00
DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <2us, L1 <32us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 unlimited
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR-, OBFF Not Supported
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
00: 00 1c 50 30 03 00 10 00 10 05 00 07 01 00 00 00
10: 01 cc 00 00 08 80 ef fb 01 cf 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 1c 50 30
30: 00 00 00 00 60 00 00 00 00 00 00 00 0b 01 00 00


18

View comments

Loading