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 TK9902 | PCI | Worked | Moschip MCS9805CV |
StarTech PCI1P | PCI | Worked | Moschip MCS9805CV-BA |
StarTech PEX1P | PCIe | Worked | Oxford Semi OXPCIe952-FBAG |
Iocrest SI-PEX10010 | PCIe | Failed | WCH 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