Problems printing to EPSON CX3500

Peter Jeremy PeterJeremy at optushome.com.au
Sat Dec 31 14:26:37 PST 2005


I recently bought an Epson CX3500 on the grounds that it was supported
by PIPS (specifically ports/print/pips-scx3500_3600s).  Whilst the
printer probes, I don't seem able to print to it and the GUI claims
the printer is inaccessible.  I'm running -current from early December
with pips-scx3500_3600s-2.6.2.  My reading of the printer blurb is that
it supports both USB1 and USB2.

Relevant bits of dmesg are:
uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 17.2 on pci0
uhci0: [GIANT-LOCKED]
usb0: <VIA 83C572 USB controller> on uhci0
usb0: USB revision 1.0
usbd_get_string: getting lang failed, using 0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
...
usb3: <VIA 83C572 USB controller> on uhci3
usb3: USB revision 1.0
usbd_get_string: getting lang failed, using 0
uhub3: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub3: 2 ports with 2 removable, self powered
ehci0: <VIA VT6202 USB 2.0 controller> mem 0xdffffb00-0xdffffbff irq 11 at device 20.2 on pci0
ehci0: [GIANT-LOCKED]
usb4: EHCI version 0.95
usb4: companion controllers, 2 ports each: usb2 usb3
usb4: <VIA VT6202 USB 2.0 controller> on ehci0
usb4: USB revision 2.0
uhub4: VIA EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub4: 4 ports with 4 removable, self powered

I can start /usr/local/libexec/pips/printer/ekpd successfully but when
I start ekpstm, it reports that the printer is not responding.  Looking
at the debug output below, things start off OK but then the printer
appears to send a message that the UHCI driver can't handle.

I've enabled USB debugging as follows:
hw.usb.ehci.debug: 1
hw.usb.uhci.debug: 1
hw.usb.ulpt.debug: 3

With the printer plugged into a USB1 port, I get:
ulpt0: EPSON USB MFP, rev 1.10/1.00, addr 2, iclass 255/255
ulpt0: using bi-directional mode
ulptopen: flags=0x40
ulpt_open: open input pipe
ulptopen: done, error=0
ulptread
ulptread: transfer 1024 bytes
ulptread
ulptread: transfer 1024 bytes
ulptwrite
ulpt_status: status=0x18 err=0
ulptwrite: transfer 27 bytes
ulptread
ulptread: transfer 8 bytes
ulptwrite
ulpt_status: status=0x18 err=0
ulptwrite: transfer 8 bytes
ulptread
ulptread: transfer 9 bytes
ulptwrite
ulpt_status: status=0x18 err=0
ulptwrite: transfer 17 bytes
ulptread
ulptread: transfer 16 bytes
ulptwrite
ulpt_status: status=0x18 err=0
ulptwrite: transfer 13 bytes
ulptread
ulptread: transfer 12 bytes
ulptwrite
ulpt_status: status=0x18 err=0
ulptwrite: transfer 11 bytes
ulptwrite
ulpt_status: status=0x18 err=0
ulptwrite: transfer 11 bytes
ulptread
ulptread: transfer 10 bytes
ulptread
ulptread: transfer 6 bytes
ulptread
ulptread: transfer 6 bytes
uhci_idone: error, addr=2, endpt=0x83, status 0x500000<BABBLE,STALLED>
uhci_timeout: uxfer=0xc20f9a00
uhci_timeout_task: xfer=0xc20f9a00
uhci_check_intr: aborted xfer=0xc20f9a00
ulptread: error=13
ulptread
ulptread: transfer 6 bytes
uhci_device_bulk_abort:
uhci_check_intr: aborted xfer=0xc1d9ba00
ulptread: error=18

error=13 is USBD_IOERROR and error=18 is USBD_INTERRUPTED

The last interrupted read continues indefinitely until I kill ekpd.  Even
more annoyingly, when I unplug the printer, I get:
ulpt0: at uhub0 port 1 (addr 2) disconnected
ulpt_detach: sc=0xc2292480
uhci_timeout: uxfer=0xc1d9ba00
uhci_timeout_task: xfer=0xc1d9ba00
uhci_check_intr: aborted xfer=0xc1d9ba00
uhci_timeout: uxfer=0xc1d9ba00
uhci_timeout_task: xfer=0xc1d9ba00
uhci_check_intr: aborted xfer=0xc1d9ba00
ulpt0: detached

So far so good, but if I then plug the printer back in, I get:
uhci_timeout: uxfer=0xc1d9ba00
uhci_timeout_task: xfer=0xc1d9ba00
uhci_check_intr: aborted xfer=0xc1d9ba00
uhci_timeout: uxfer=0xc1d9ba00
uhci_timeout_task: xfer=0xc1d9ba00
uhci_check_intr: aborted xfer=0xc1d9ba00
uhci_timeout: uxfer=0xc1d9ba00
uhci_timeout_task: xfer=0xc1d9ba00
uhci_check_intr: aborted xfer=0xc1d9ba00
uhci_timeout: uxfer=0xc1d9ba00
uhci_timeout_task: xfer=0xc1d9ba00
uhci_check_intr: aborted xfer=0xc1d9ba00
usb_new_device: set address 2 failed - trying a port reset
uhci_timeout: uxfer=0xc1d9ba00
uhci_timeout_task: xfer=0xc1d9ba00
uhci_check_intr: aborted xfer=0xc1d9ba00
uhci_timeout: uxfer=0xc1d9ba00
uhci_timeout_task: xfer=0xc1d9ba00
uhci_check_intr: aborted xfer=0xc1d9ba00
uhci_timeout: uxfer=0xc1d9ba00
uhci_timeout_task: xfer=0xc1d9ba00
uhci_check_intr: aborted xfer=0xc1d9ba00
usb_new_device: set address 2 failed
...
uhub_explore: usb_new_device failed, error=SET_ADDR_FAILED
uhub0: device problem (SET_ADDR_FAILED), disabling port 1

And I then can't use that uhub until I reboot.

With the printer plugged into a USB2 port, I get:
ehci_pcd: change=0x10
ehci after reset, status=0x00001801
ehci_disown: index=4 lowspeed=0
ehci_pcd: change=0x10
ulpt0: EPSON USB MFP, rev 1.10/1.00, addr 2, iclass 255/255
ulpt0: using bi-directional mode

And then exactly the same sequence as above.

I've looked through the USB commits since I last updated my sources and
don't see anything relevant.  Does anyone have any suggestions?

-- 
Peter Jeremy


More information about the freebsd-usb mailing list