Parallel port on PCI card does not work

Hi,

As you know some(?) new computers have no built-in parallel port. The one I built didn’t have one anyway so I bought a PCI-express card with a port, a cheap one with a printer port, nothing more.

OpenSUSE 11.1 sees the card somehow and “lspci” says it’s a

Parallel controller: Oxford Semiconductor Ltd Device c110

“hwinfo --printer” does not see it at all, whatever that may mean?

I have connected my old inkjet to it and configured the queue same way it used to be on the old computer but nothing ever comes out on the printer. Maybe the fact that I’m running openSUSE 64-bit has something to do with it, wrong drivers or some such?

Any hints?

man with hat wrote:
> I have connected my old inkjet to it and configured the queue same way
> it used to be on the old computer but nothing ever comes out on the
> printer. Maybe the fact that I’m running openSUSE 64-bit has something
> to do with it, wrong drivers or some such?

There is no assurance that there is a driver at all. You should open a terminal
and post the output of


/sbin/lspci -nnv

You should not post everything - just the paragraph that corresponds to your
parallel port adapter.

Ok, the intresting section of “/sbin/lspci -nnv” follows

02:00.0 Parallel controller [0701]: Oxford Semiconductor Ltd Device [1415:c110] (prog-if 02 [ECP])
        Subsystem: Oxford Semiconductor Ltd Device [1415:c110]                                    
        Flags: bus master, fast devsel, latency 0, IRQ 7                                          
        I/O ports at ef00 [size=8]                                                                
        I/O ports at ee00 [size=4]                                                                
        Capabilities: [40] Power Management version 3                                             
        Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Count=1/1 Enable-           
        Capabilities: [70] Express Legacy Endpoint, MSI 00                                        
        Capabilities: [100] Device Serial Number 10-01-00-11-11-e0-30-00                          
        Capabilities: [110] Power Budgeting <?>                                                   

If there is no driver (how do you see that, BTW?) is anyone working on one?[/size][/size]

I do not have any assistance on your Parellel/PCI card. I was in the same situation trying to get a HP 4P Laser printer working with a new computer without a Parallel port and I just bought a inexpensive ($12) Sabrent USB to Parallel Printer cable. It was detected immediately by openSUSE 11 64bit. and required little setup. I wrote about it at:
Observations from outfitting a new setup.

Just a thought for you to consider if the PCI card causes too much issues.

man with hat wrote:
> Ok, the intresting section of “/sbin/lspci -nnv” follows
>
> Code:
> --------------------
> 02:00.0 Parallel controller [0701]: Oxford Semiconductor Ltd Device [1415:c110] (prog-if 02 [ECP])
> Subsystem: Oxford Semiconductor Ltd Device [1415:c110]
> --------------------
>
> If there is no driver (how do you see that, BTW?) is anyone working on
> one?

The one sure place is to look in the kernel source. A device is recognized by
its vendor:device codes - 1415:c110 in your case.

The driver parport_pc.ko is the only possibility for a driver. It is used by a
couple of Oxford Semi products with device ID’s of c000 and c004, but no c110.
There is a possibility that the driver will work if we modify the internal
table. That can be done with the following script that must be run as root:


KERNV=$(uname -r)
cd /lib/modules/$KERNV/kernel/drivers/parport
cp -p parport_pc.ko{,.orig}
perl -pe 's/\0\0\x00\xc0/\0\0\x10\xc1/g' parport_pc.ko.orig > parport_pc.ko

The above script sacrifices the c000 device in favor of a c110 flavor. If this
works, I will prepare a kernel patch that adds this new ID to future kernels.

I doubt that there is any active development on drivers for parallel port devices.

Larry

Thanks for the support. Unfortunately it doesn’t seem to fix the problem. I ran your script, rebooted and tried to print a testpage. Nothing comes out on printer but these lines are written to /var/log/messages

Mar 22 21:31:08 linux-docw kernel: parport_pc: module license 'unspecified' taints kernel.
Mar 22 21:31:08 linux-docw kernel: parport_pc: Unknown symbol platform_driver_unregister
Mar 22 21:31:08 linux-docw kernel: parport_pc: Unknown symbol platform_driver_register
Mar 22 21:31:08 linux-docw kernel: parport_pc: Unknown symbol platform_device_unregister
Mar 22 21:31:08 linux-docw kernel: parport_pc: Unknown symbol platform_bus_type
Mar 22 21:31:08 linux-docw kernel: parport_pc: Unknown symbol platform_device_register_simple
Mar 22 21:31:08 linux-docw modprobe: FATAL: Error inserting parport_pc (/lib/modules/2.6.27.19-3.2-default/kernel/drivers/parp
ort/parport_pc.ko): Unknown symbol in module, or unknown parameter (see dmesg)
Mar 22 21:31:08 linux-docw kernel: lp: driver loaded but no devices found

If you come up with some other fix I’ll happily test it.

MattBClassic: It may come to that (buying an USB to parallel adapter) but since I already bought the card…

/R

Obviously that driver is crud, which is not too surprising for something as
little used as a parallel port.

Sorry.

I wonder if anyone can recommend a pci based parallel port device that is supported. Alternatively, MattBClassic’s idea…

found solution (at least for opensuse 11.2)

Card DIGITUS DS-33040, uses NetMos chipset 9865 (2ser, 1par)
(I think you don’t need the driver (shipped with the card) for the parallel port, the serial ports are reported to work with the driver (see above)).

Find adress and IRQ as decribed above (lspci -nnv) and modify the file /etc/modprobe.d/00-system.conf
by just uncommenting the (probably default) line

#options parport_pc io=0x378 irq=none

and replace the io and irq values with those found from lspci.
(As recommended from the headlines of /etc/modprobe.d/000-system.conf I first tried to change 99-local.conf, but that didn’t work for me (maybe it’s called to late or so).)

After the next boot you should have /dev/lp0 and proceedings for printer installation should work as normal.

Any explanations or suggestions welcome.:\

It looks as if it prints.

Does it use IRQ or polling.
my initial setup looked like this and Yast recognized the Laserjet 4L

dmesg |grep parport

Suse 11.2
5.270030] parport_pc 0000:05:02.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
5.270089] parport0: PC-style at 0xec00 (0xe880), irq 18, using FIFO [PCSPP,TRISTATE,COMPAT,ECP]
5.279743] parport0: Legacy device
62.013408] lp0: using parport0 (interrupt-driven).

So it is interruptdriven on 11.2 and in polling mode in 11.1

NetMos 9805

linux-axfy:/etc/modprobe.d # dmesg | grep parport

5.142919] parport0: PC-style at 0xec00 [PCSPP,TRISTATE,EPP]

5.151881] parport0: Legacy device

117.774466] lp0: using parport0 (polling).

My netmos card used irq in the first setup and i only got garbage printed. setting irq=none changed it to polling mode and I got perfect testpages but printing is slow.

Any idea on how to change ECP into EPP in the IRQ mode? Maybe that could save the day.