[sane-devel] HP ScanJet 4100C - assertion failed

Henning Meier-Geinitz henning@meier-geinitz.de
Fri, 10 Oct 2003 11:47:11 +0200


Hi,

On Thu, Oct 09, 2003 at 09:14:52AM +0200, Yves Martin wrote:
>  I'm trying to use my usb scanner 4100C to my Linux - vanilla 2.4.21
>  with some patches (software suspend, ACPI, ntfs, supermount)
>  I have checked that the USB scanner module is available.

I have had some reports that ACPI makes trouble with USB sometimes.
Just to find out that it's not the cause here try without ACPI (and
also APIC, if you use that option).

>  When I connect my scanner, it appears in /proc/bus/usb/devices and the
>  'scanner' driver in /proc/bus/usb/drivers. I'm using devfs and devusbfs.
> 
>  I have libusb 1.6a (from Mandrake 9.1), I have compiled sane-backends
>  from sources 1.0.12 in /usr/local and my /usr/local/etc/sane/hp.conf
>  contains  "usb 0x03f0 0x0101"
>  [ I have removed packages with old sane backends from Mdk 9.1 to avoid
>    conflicts ]

I also recommend to try using libusb instead of the kernel scanner
driver. You may need to do that as root if permissions are not set up
correctly (see man sane-usb).

>  Then the device does not appear any longer:
>  /dev/usb/scanner0 does not exist ?? connect/disconnect changes nothing ??
>  I have to reboot my Linux to get back the device !!

Check syslog if you have gotten an oops message. Unloading and
reloading the USB scanner module and/or the other USB drivers may also
help.

>  What's wrong ? Do I have to patch something in my kernel ?

I have seen similar reports (about other scanners and USB devices) and
it's usually a general USB problem and not a SANE problem. I.e. cable
problem, bug in the USB drivers in the kernel.

| usb.c: registered new driver usbscanner
| scanner.c: USB scanner device (0x03f0/0x0101) now attached to scanner0
| scanner.c: 0.4.12:USB Scanner Driver

Looks fine so far.

| Many:   usb_control/bulk_msg: timeout

Bad, very bad. When do they happen? Only when you start scanning or
even before that?

| ESSCOM: III=> not our interrupt
| Buffer over turn   (many)

Oh, interrupt problems may also cause such trouble. Maybe interrupt
sharing doesn't work correct? Really check if you have enabled APIC
and disable it, if you don't need it. What's the output of cat
/proc/interrupts ?

| usb-uhci.c: interrupt, status 3, frame# 61

Looks like a bad interrupt. It expects status 1 not 3.

| scanner.c: read_scanner(0): funky result:-84. Consult Documentation/usb/scanner.txt.

That error is "EILSEQ". That means the UHCI controller got data from the
scanner that wasn't correct (CRC error). May also indicate a cable
problem.

Bye,
  Henning