Description of problem: Scanner not seen by sane unless scanner power is unplugged and then re-powered. (Worked flawlessly in F13 and F14). Scanner shows up immediately after cold boot login via lsbusb: [Bob@localhost ~]$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 002: ID 03f0:1705 Hewlett-Packard ScanJet 5590 Bus 005 Device 002: ID 046d:c03d Logitech, Inc. M-BT96a Pilot Optical Mouse Bus 005 Device 003: ID 046d:c315 Logitech, Inc. Classic New Touch Keyboard but scanimage doesn't see: [Bob@localhost ~]$ scanimage -L No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages). Version-Release number of selected component (if applicable): Lastest updates on all as of 07/14/2011 How reproducible: Steps to Reproduce: 1.Boot and login. Try to access scanner. 2. 3. Actual results: Fails to be accessible to sane. DOES show up in lsusb listing! Expected results: Scanner accessible. Additional info: =================================================================== Right after the scanimage -L shown above, following sequence was run showing scanner "Couldn't set configuration: Device or resource busy": [Bob@localhost ~]$ sane-find-scanner -v This is sane-find-scanner from sane-backends 1.0.22 # sane-find-scanner will now attempt to detect your scanner. If the # result is different from what you expected, first make sure your # scanner is powered up and properly connected to your computer. searching for SCSI scanners: checking /dev/scanner... failed to open (Invalid argument) checking /dev/sg0... failed to open (Invalid argument) checking /dev/sg1... failed to open (Access to resource has been denied) checking /dev/sg2... failed to open (Access to resource has been denied) checking /dev/sg3... failed to open (Invalid argument) checking /dev/sg4... failed to open (Invalid argument) checking /dev/sg5... failed to open (Invalid argument) checking /dev/sg6... failed to open (Invalid argument) checking /dev/sg7... failed to open (Invalid argument) checking /dev/sg8... failed to open (Invalid argument) checking /dev/sg9... failed to open (Invalid argument) checking /dev/sga... failed to open (Invalid argument) checking /dev/sgb... failed to open (Invalid argument) checking /dev/sgc... failed to open (Invalid argument) checking /dev/sgd... failed to open (Invalid argument) checking /dev/sge... failed to open (Invalid argument) checking /dev/sgf... failed to open (Invalid argument) checking /dev/sgg... failed to open (Invalid argument) checking /dev/sgh... failed to open (Invalid argument) checking /dev/sgi... failed to open (Invalid argument) checking /dev/sgj... failed to open (Invalid argument) checking /dev/sgk... failed to open (Invalid argument) checking /dev/sgl... failed to open (Invalid argument) checking /dev/sgm... failed to open (Invalid argument) checking /dev/sgn... failed to open (Invalid argument) checking /dev/sgo... failed to open (Invalid argument) checking /dev/sgp... failed to open (Invalid argument) checking /dev/sgq... failed to open (Invalid argument) checking /dev/sgr... failed to open (Invalid argument) checking /dev/sgs... failed to open (Invalid argument) checking /dev/sgt... failed to open (Invalid argument) checking /dev/sgu... failed to open (Invalid argument) checking /dev/sgv... failed to open (Invalid argument) checking /dev/sgw... failed to open (Invalid argument) checking /dev/sgx... failed to open (Invalid argument) checking /dev/sgy... failed to open (Invalid argument) checking /dev/sgz... failed to open (Invalid argument) # No SCSI scanners found. If you expected something different, make sure that # you have loaded a kernel SCSI driver for your SCSI adapter. searching for USB scanners: checking /dev/usb/scanner... failed to open (Invalid argument) checking /dev/usb/scanner0... failed to open (Invalid argument) checking /dev/usb/scanner1... failed to open (Invalid argument) checking /dev/usb/scanner2... failed to open (Invalid argument) checking /dev/usb/scanner3... failed to open (Invalid argument) checking /dev/usb/scanner4... failed to open (Invalid argument) checking /dev/usb/scanner5... failed to open (Invalid argument) checking /dev/usb/scanner5... failed to open (Invalid argument) checking /dev/usb/scanner7... failed to open (Invalid argument) checking /dev/usb/scanner8... failed to open (Invalid argument) checking /dev/usb/scanner9... failed to open (Invalid argument) checking /dev/usb/scanner10... failed to open (Invalid argument) checking /dev/usb/scanner11... failed to open (Invalid argument) checking /dev/usb/scanner12... failed to open (Invalid argument) checking /dev/usb/scanner13... failed to open (Invalid argument) checking /dev/usb/scanner14... failed to open (Invalid argument) checking /dev/usb/scanner15... failed to open (Invalid argument) checking /dev/usbscanner... failed to open (Invalid argument) checking /dev/usbscanner0... failed to open (Invalid argument) checking /dev/usbscanner1... failed to open (Invalid argument) checking /dev/usbscanner2... failed to open (Invalid argument) checking /dev/usbscanner3... failed to open (Invalid argument) checking /dev/usbscanner4... failed to open (Invalid argument) checking /dev/usbscanner5... failed to open (Invalid argument) checking /dev/usbscanner6... failed to open (Invalid argument) checking /dev/usbscanner7... failed to open (Invalid argument) checking /dev/usbscanner8... failed to open (Invalid argument) checking /dev/usbscanner9... failed to open (Invalid argument) checking /dev/usbscanner10... failed to open (Invalid argument) checking /dev/usbscanner11... failed to open (Invalid argument) checking /dev/usbscanner12... failed to open (Invalid argument) checking /dev/usbscanner13... failed to open (Invalid argument) checking /dev/usbscanner14... failed to open (Invalid argument) checking /dev/usbscanner15... failed to open (Invalid argument) Couldn't set configuration: Device or resource busy found USB scanner (vendor=0x03f0 [Hewlett-Packard], product=0x1705 [hp scanjet scanner], chip=GL842?) at libusb:002:002 # Your USB scanner was (probably) detected. It may or may not be supported by # SANE. Try scanimage -L and read the backend's manpage. # Not checking for parallel port scanners. # Most Scanners connected to the parallel port or other proprietary ports # can't be detected by this program. # You may want to run this program as root to find all devices. Once you # found the scanner devices, be sure to adjust access permissions as # necessary. done [Bob@localhost ~]$ ======================================================================== Then set debug flag to 50: [Bob@localhost ~]$ export SANE_DEBUG_HP5590=50 [Bob@localhost ~]$ ======================================================================== Then ran scanimage again: [Bob@localhost ~]$ scanimage -L [sanei_debug] Setting debug level of hp5590 to 50. [hp5590] SANE backed for HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 1.0.5 [hp5590] (c) Ilia Sotnikov <hostcc> [hp5590] attach_usb_device: Opening USB device [hp5590] sane_hp5590_get_devices, local only: 0 [hp5590] Found 0 devices No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages). [hp5590] sane_hp5590_exit [Bob@localhost ~]$ ====================================================================== Next unplugged scanner power, and then replugged. Then ran scanimage again: [Bob@localhost ~]$ [Bob@localhost ~]$ scanimage -L [sanei_debug] Setting debug level of hp5590 to 50. [hp5590] SANE backed for HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 1.0.5 [hp5590] (c) Ilia Sotnikov <hostcc> [hp5590] attach_usb_device: Opening USB device [hp5590] attach_usb_device: USB device opened [hp5590] hp5590_init_scanner [hp5590] hp5590_cmd: USB-in-USB: command : 0012 [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification requested [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification 0012, last command: 0012, core status: 0000 [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verified successfully [hp5590] HP5590 flags (0x02) [hp5590] HP5590 flags: ADF yes, TMA no, LCD no [hp5590] HP5590 firmware version: 0.067 [hp5590] HP5590 max resolution X: 2400 DPI [hp5590] HP5590 max resolution Y: 2400 DPI [hp5590] HP5590 max pixels X: 20400 [hp5590] HP5590 max pixels Y: 28128 [hp5590] HP5590 max size X: 8.500 inches [hp5590] HP5590 max size Y: 11.720 inches [hp5590] HP5590 normal motor param: 100, max motor param: 1000 [hp5590] hp5590_get_status [hp5590] hp5590_init_scanner: scanner status OK [hp5590] attach_usb_device: found HP5590 scanner at 'libusb:002:003' [hp5590] attach_usb_device: Reading max scan count [hp5590] hp5590_read_max_scan_count [hp5590] Reading max scan count [hp5590] hp5590_read_eeprom [hp5590] Reading EEPROM: addr 0010, size 3 [hp5590] hp5590_cmd: USB-in-USB: command : 00f2 [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if data was accepted [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: getting response [hp5590] hp5590_control_msg: USB-in-USB: got correct response [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification requested [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification 00f2, last command: 00f2, core status: 0000 [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verified successfully [hp5590] hp5590_cmd: USB-in-USB: command : 0bf0 [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification requested [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification 00f0, last command: 00f0, core status: 0000 [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verified successfully [hp5590] Max scan count 1118977 [hp5590] attach_usb_device: Max Scanning count 1118977 [hp5590] attach_usb_device: Reading scan count [hp5590] hp5590_read_scan_count [hp5590] Reading scan count [hp5590] hp5590_read_eeprom [hp5590] Reading EEPROM: addr 0000, size 4 [hp5590] hp5590_cmd: USB-in-USB: command : 00f2 [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if data was accepted [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: getting response [hp5590] hp5590_control_msg: USB-in-USB: got correct response [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification requested [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification 00f2, last command: 00f2, core status: 0000 [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verified successfully [hp5590] hp5590_cmd: USB-in-USB: command : 0bf0 [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification requested [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification 00f0, last command: 00f0, core status: 0000 [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verified successfully [hp5590] Scan count 1040 [hp5590] attach_usb_device: Scanning count 1040 [hp5590] hp5590_read_part_number [hp5590] hp5590_read_eeprom [hp5590] Reading EEPROM: addr 001a, size 10 [hp5590] hp5590_cmd: USB-in-USB: command : 00f2 [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if data was accepted [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: getting response [hp5590] hp5590_control_msg: USB-in-USB: got correct response [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification requested [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification 00f2, last command: 00f2, core status: 0000 [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verified successfully [hp5590] hp5590_cmd: USB-in-USB: command : 0bf0 [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification requested [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification 00f0, last command: 00f0, core status: 0000 [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verified successfully [hp5590] Part number: 'N66BSR0CQ' [hp5590] hp5590_stop_scan [hp5590] hp5590_cmd: USB-in-USB: command : 011b [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if data was accepted [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: getting response [hp5590] hp5590_control_msg: USB-in-USB: got correct response [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification requested [hp5590] hp5590_control_msg: USB-in-USB: core data: no [hp5590] hp5590_control_msg: USB-in-USB: sending control msg [hp5590] hp5590_control_msg: USB-in-USB: checking acknowledge for control message [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_control_msg: USB-in-USB: checking if confirmation was acknowledged [hp5590] hp5590_get_ack [hp5590] hp5590_get_ack: USB-in-USB: accepted [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verification 001b, last command: 001b, core status: 0000 [hp5590] hp5590_verify_last_cmd: USB-in-USB: command verified successfully [hp5590] sane_hp5590_get_devices, local only: 0 [hp5590] Found 1 devices device `hp5590:libusb:002:003' is a HP 5590 Workgroup scanner [hp5590] sane_hp5590_exit [Bob@localhost ~]$ As shown, repowering the scanner "kicked something" into working. Seems like some sort of initialization problem.
Update--This does not appear to be a SANE problem. Debugging the sane internals, the attempt to open the properly identified device fails with a BUSY condition. I wrote the following code to report the status in boot-up state, and as shown, it reports a kernel driver active on the device, which precludes a SANE opening: #include <stdio.h> #include <libusb.h> int main(void) { libusb_device_handle **dev; uint16_t vendor_id; uint16_t product_id; int r; vendor_id = 0x03f0; product_id = 0x1705; r = libusb_init(NULL); if (r < 0) return r; *dev = libusb_open_device_with_vid_pid(NULL, vendor_id, product_id ); if (*dev == NULL) return 16; printf("Opened HP5590 device handle\n"); /*return 0;*/ r = libusb_kernel_driver_active(*dev,0); printf("Returning kernel probe with code %d\n",r); /* r = libusb_reset_device(*dev); libusb_close(*dev); (This is a commented out fragment which successfully resets the connection effectively serving as an unplug/re-plug of the device) */ libusb_exit(NULL); printf("Returning with code %d\n",r); return r; } [Bob@localhost resetusb]$ ./listusb-kernel Opened HP5590 device handle Returning kernel probe with code 1 Returning with code 1 [Bob@localhost resetusb]$ There appears to be an initialization problem at boot time leaving a kernel driver attached to the device, blocking access by SANE. Any help in resolving this problem would be appreciated. No such problems occurred in F13 or F14 previously. Sane fails in sanei_usb.c with errno == EBUSY /* Claim the interface */ result = usb_claim_interface (devices[devcount].libusb_handle, devices[devcount].interface_nr); if (result < 0) { SANE_Status status = SANE_STATUS_INVAL; DBG (1, "sanei_usb_open: libusb complained: %s\n", usb_strerror ()); if (errno == EPERM) { DBG (1, "Make sure you run as root or set appropriate " "permissions\n"); status = SANE_STATUS_ACCESS_DENIED; } else if (errno == EBUSY) { DBG (1, "Maybe the kernel scanner driver claims the " "scanner's interface?\n"); status = SANE_STATUS_DEVICE_BUSY; } usb_close (devices[devcount].libusb_handle); return status; }
Refer to new bug report https://bugzilla.redhat.com/show_bug.cgi?id=723696 specifically addressing the usb port problem.
Sorry for chiming in late (was on vacation when you filed this). I'd argue that this is a regression on the kernel side, re your comments in bug #723696. I'll close this bug as a duplicate of it. *** This bug has been marked as a duplicate of bug 723696 ***