USB 2.0 device (scanner) does not work with xhci_hcd on USB 3.0 system
I'm trying to scan with samsung scx-4200 which is a printer with scanner. When I connect my brother's laptop which has the same version of ubuntu(14.04), it works. I don't know how and why. He did not install any software for scanning. I also tried another computer with elementary os, and it too works. Now here's when it gets really weird! I tried running many distributions form live USB on both mine and brother's laptop. Scanner always works with brother's and never with mine laptop. I need scanner a lot and it might happen that, because of this, I might switch to windows, which I don't like because it's not open-source, so please help! Here are the screenshots of the error I'm getting and the settings of simple scan.
Edit1: The USB works fine with any other device. So far, I have connected mouse, USB flash memory, camera, and they all work fine. I have tried to connect scanner to all 3 USB ports(2 3.0 and 1 2.0) and the same thing happens.
Edit2: Scanning works with the program vuescan, but it requires to buy it in order to remove watermark which it creates, and it's closed source.
Edit3: Of all tested laptops, only mine has USBs 3.0(x2). However, scan doesn't work on USB 2.0 too(on my laptop).
Edit4: Here's output of sudo sane-find-scanner
:
# 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.
# No SCSI scanners found. If you expected something different, make sure that # you have loaded a kernel SCSI driver for your SCSI adapter.
# No USB scanners found. If you expected something different, make sure that # you have loaded a kernel driver for your USB host controller and have setup # the USB system correctly. See man sane-usb for details.
# Not checking for parallel port scanners.
# Most Scanners connected to the parallel port or other proprietary ports # can't be detected by this program.
Edit5: I tried all combinations of settings in BIOS related to USB configuration, without result. I reverted back to the original settings.
Edit6: I tried scanlite, here's the error it gives me:
Edit7: The second time I ran Scanlite, it says it dod not detect scanners on my computer. I sometimes get simillar message on simple scan.
Edit8: The scanner works with simple scan after doing the following:
- Open System settings
- Clicking Printers
- Right click on my printer(scx-4200) -> Properties
- Ink/toner levels
- Clicking Refresh
- Opening simple scan
- Clicking scan
- Waiting about 10-20 seconds till the error message shows up(like on screenshot provided)
- Clicking scan again
And that's for 1 scan only.
Edit9: Me and my brother both have 64 bit. My brother's laptop is hp, and mine is asus. Mine has more options in BIOS. I have 2 USB 3.0 and one 2.0, while my brother has 3 x 2.0. That are some diferences... Here's output of uname -a for mine laptop:
Linux dusan-K55A 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
And here's my brother's:
Linux milki-HP-2000-Notebook-PC 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Edit10: My laptop was fresh install, brother's was upgraded. The same thing happened when the both laptops were running fresh install 13.10
Edit11: Here's my output of lsmod
:
Module Size Used by
ctr 13049 2
ccm 17773 2
pci_stub 12622 1
vboxpci 23194 0
vboxnetadp 25670 0
vboxnetflt 27613 0
vboxdrv 339502 3 vboxnetadp,vboxnetflt,vboxpci
rfcomm 69160 12
bnep 19624 2
binfmt_misc 17468 1
nls_iso8859_1 12713 1
snd_hda_codec_hdmi 46207 1
snd_hda_codec_realtek 61438 1
joydev 17381 0
uvcvideo 80885 0
videobuf2_vmalloc 13216 1 uvcvideo
videobuf2_memops 13362 1 videobuf2_vmalloc
videobuf2_core 40664 1 uvcvideo
videodev 134688 2 uvcvideo,videobuf2_core
snd_hda_intel 52355 3
snd_hda_codec 192906 3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel
snd_hwdep 13602 1 snd_hda_codec
ath3k 13318 0
snd_pcm 102099 3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
btusb 32412 0
bluetooth 395423 23 bnep,ath3k,btusb,rfcomm
snd_page_alloc 18710 2 snd_pcm,snd_hda_intel
snd_seq_midi 13324 0
snd_seq_midi_event 14899 1 snd_seq_midi
asus_nb_wmi 16990 0
asus_wmi 24191 1 asus_nb_wmi
sparse_keymap 13948 1 asus_wmi
snd_rawmidi 30144 1 snd_seq_midi
snd_seq 61560 2 snd_seq_midi_event,snd_seq_midi
snd_seq_device 14497 3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer 29482 2 snd_pcm,snd_seq
intel_rapl 18773 0
x86_pkg_temp_thermal 14205 0
intel_powerclamp 14705 0
coretemp 13435 0
kvm_intel 143060 0
snd 69238 17 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec,snd_hda_intel,snd_seq_device,snd_seq_midi
dm_multipath 22873 0
kvm 451511 1 kvm_intel
arc4 12608 2
csi_dh 14882 1 dm_multipath
crct10dif_pclmul 14289 0
crc32_pclmul 13113 0
ghash_clmulni_intel 13259 0
aesni_intel 55624 4
ath9k 164164 0
ath9k_common 13551 1 ath9k
aes_x86_64 17131 1 aesni_intel
ath9k_hw 453856 2 ath9k_common,ath9k
lrw 13286 1 aesni_intel
gf128mul 14951 1 lrw
glue_helper 13990 1 aesni_intel
ablk_helper 13597 1 aesni_intel
cryptd 20359 3 ghash_clmulni_intel,aesni_intel,ablk_helper
ath 28698 3 ath9k_common,ath9k,ath9k_hw
mac80211 626489 1 ath9k
rtsx_pci_ms 18151 0
psmouse 102222 0
serio_raw 13462 0
cfg80211 484040 3 ath,ath9k,mac80211
memstick 16966 1 rtsx_pci_ms
lpc_ich 21080 0
soundcore 12680 1 snd
i915 783485 4
wmi 19177 1 asus_wmi
mac_hid 13205 0
drm_kms_helper 52758 1 i915
drm 302817 5 i915,drm_kms_helper
mei_me 18627 0
mei 82274 1 mei_me
video 19476 2 i915,asus_wmi
i2c_algo_bit 13413 1 i915
parport_pc 32701 0
ppdev 17671 0
lp 17759 0
parport 42348 3 lp,ppdev,parport_pc
hid_generic 12548 0
usbhid 52616 0
hid 106148 2 hid_generic,usbhid
rtsx_pci_sdmmc 23274 0
ahci 25819 3
libahci 32168 1 ahci
r8169 67581 0
rtsx_pci 45956 2 rtsx_pci_ms,rtsx_pci_sdmmc
mii 13934 1 r8169
dm_mirror 22135 0
dm_region_hash 20862 1 dm_mirror
dm_log 18411 2 dm_region_hash,dm_mirror
And here's my brother's:
Module Size Used by
ctr 13049 1
ccm 17773 1
joydev 17381 0
snd_hda_codec_hdmi 46207 1
snd_hda_codec_realtek 61438 1
hp_wmi 14062 0
sparse_keymap 13948 1 hp_wmi
uvcvideo 80885 0
videobuf2_vmalloc 13216 1 uvcvideo
videobuf2_memops 13362 1 videobuf2_vmalloc
videobuf2_core 40664 1 uvcvideo
videodev 134688 2 uvcvideo,videobuf2_core
bnep 19624 2
rfcomm 69160 12
intel_rapl 18773 0
x86_pkg_temp_thermal 14205 0
intel_powerclamp 14705 0
coretemp 13435 0
kvm 451511 0
crct10dif_pclmul 14289 0
crc32_pclmul 13113 0
ghash_clmulni_intel 13259 0
cryptd 20359 1 ghash_clmulni_intel
snd_hda_intel 52355 5
snd_hda_codec 192906 3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel
snd_hwdep 13602 1 snd_hda_codec
arc4 12608 2
snd_pcm 102099 4 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
psmouse 102222 0
serio_raw 13462 0
snd_page_alloc 18710 2 snd_pcm,snd_hda_intel
ath9k 164164 0
ath9k_common 13551 1 ath9k
ath3k 13318 0
ath9k_hw 453856 2 ath9k_common,ath9k
rtsx_pci_ms 18151 0
btusb 32412 0
bluetooth 395423 23 bnep,ath3k,btusb,rfcomm
ath 28698 3 ath9k_common,ath9k,ath9k_hw
memstick 16966 1 rtsx_pci_ms
lpc_ich 21080 0
snd_seq_midi 13324 0
mac80211 626489 1 ath9k
binfmt_misc 17468 1
snd_seq_midi_event 14899 1 snd_seq_midi
snd_rawmidi 30144 1 snd_seq_midi
cfg80211 484040 3 ath,ath9k,mac80211
wmi 19177 1 hp_wmi
snd_seq 61560 2 snd_seq_midi_event,snd_seq_midi
nls_iso8859_1 12713 1
snd_seq_device 14497 3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer 29482 2 snd_pcm,snd_seq
mac_hid 13205 0
snd 69238 20 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec,snd_hda_intel,snd_seq_device,snd_seq_midi
i915 783485 5
soundcore 12680 1 snd
video 19476 1 i915
mei_me 18627 0
mei 82274 1 mei_me
drm_kms_helper 52758 1 i915
drm 302817 6 i915,drm_kms_helper
i2c_algo_bit 13413 1 i915
parport_pc 32701 0
ppdev 17671 0
lp 17759 0
parport 42348 3 lp,ppdev,parport_pc
hid_generic 12548 0
usbhid 52616 0
hid 106148 2 hid_generic,usbhid
rtsx_pci_sdmmc 23274 0
ahci 25819 3
r8169 67581 0
libahci 32168 1 ahci
mii 13934 1 r8169
rtsx_pci 45956 2 rtsx_pci_ms,rtsx_pci_sdmmc
Edit12: The owner of /dev/bus/usb/* is root. Here's an output of lusb:
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 04f2:b354 Chicony Electronics Co., Ltd
Bus 001 Device 005: ID 13d3:3362 IMC Networks
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 04e8:341b Samsung Electronics Co., Ltd SCX-4200 series
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
It finds Printer(scx4200), so I guess it's a scanner too, since it's printer and scaner(multifunction printer).
Here's some latest part of /var/log/syslog"
May 6 19:47:07 dusan-K55A NetworkManager[1050]: <info> Activation (wlan0) successful, device activated.
May 6 19:47:07 dusan-K55A whoopsie[1317]: message repeated 6 times: [ offline]
May 6 19:47:08 dusan-K55A whoopsie[1317]: online
May 6 19:47:08 dusan-K55A signond[6522]: ../../../../src/signond/signondaemon.cpp 388 init Failed to SUID root. Secure storage will not be available.
May 6 19:47:13 dusan-K55A ntpdate[6489]: adjust time server 91.189.94.4 offset 0.251812 sec
May 6 19:47:23 dusan-K55A kernel: [ 249.508157] usb 3-3: new high-speed USB device number 3 using xhci_hcd
May 6 19:47:23 dusan-K55A kernel: [ 249.525822] usb 3-3: New USB device found, idVendor=04e8, idProduct=341b
May 6 19:47:23 dusan-K55A kernel: [ 249.525830] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
May 6 19:47:23 dusan-K55A kernel: [ 249.525834] usb 3-3: Product: SCX-4200 Series
May 6 19:47:23 dusan-K55A kernel: [ 249.525837] usb 3-3: Manufacturer: Samsung
May 6 19:47:23 dusan-K55A kernel: [ 249.525840] usb 3-3: SerialNumber: 8T21BAILC00139N.
May 6 19:47:23 dusan-K55A kernel: [ 250.127578] WARNING! power/level is deprecated; use power/control instead
May 6 19:47:23 dusan-K55A colord: Device added: sysfs-Samsung-SCX-4200_Series
May 6 19:47:23 dusan-K55A kernel: [ 250.206346] usblp 3-3:1.1: usblp0: USB Bidirectional printer dev 3 if 1 alt 0 proto 2 vid 0x04E8 pid 0x341B
May 6 19:47:23 dusan-K55A kernel: [ 250.206372] usbcore: registered new interface driver usblp
May 6 19:47:24 dusan-K55A NetworkManager[1050]: <info> (wlan0): IP6 addrconf timed out or failed.
May 6 19:47:24 dusan-K55A NetworkManager[1050]: <info> Activation (wlan0) Stage 4 of 5 (IPv6 Configure Timeout) scheduled...
May 6 19:47:24 dusan-K55A NetworkManager[1050]: <info> Activation (wlan0) Stage 4 of 5 (IPv6 Configure Timeout) started...
May 6 19:47:24 dusan-K55A NetworkManager[1050]: <info> Activation (wlan0) Stage 4 of 5 (IPv6 Configure Timeout) complete.
May 6 19:47:25 dusan-K55A wpa_supplicant[1293]: wlan0: CTRL-EVENT-SCAN-STARTED
May 6 19:47:28 dusan-K55A NetworkManager[1050]: <warn> nl_recvmsgs() error: (-33) Dump inconsistency detected, interrupted
May 6 19:47:41 dusan-K55A signond[6522]: QObject::disconnect: Unexpected null parameter
May 6 19:49:27 dusan-K55A dbus[916]: [system] Activating service name='org.freedesktop.hostname1' (using servicehelper)
May 6 19:49:27 dusan-K55A dbus[916]: [system] Successfully activated service 'org.freedesktop.hostname1'
May 6 19:51:57 dusan-K55A kernel: [ 523.891783] usb 3-3: usbfs: interface 1 claimed by usblp while 'scan-thread' sets config #1
May 6 19:50:34 dusan-K55A wpa_supplicant[1293]: message repeated 3 times: [ wlan0: CTRL-EVENT-SCAN-STARTED ]
May 6 19:52:02 dusan-K55A wpa_supplicant[1293]: wlan0: WPA: Group rekeying completed with 7c:05:07:de:42:7a [GTK=TKIP]
May 6 19:52:17 dusan-K55A wpa_supplicant[1293]: wlan0: CTRL-EVENT-SCAN-STARTED
May 6 19:53:24 dusan-K55A kernel: [ 610.927164] usb 3-3: usbfs: interface 1 claimed by usblp while 'scan-thread' sets config #1
And here's some latest output from /var/log/kern.log, here it shows some kind of driver interference:
May 6 19:47:04 dusan-K55A kernel: [ 230.535670] ath9k 0000:02:00.0 wlan0: disabling HT as WMM/QoS is not supported by the AP
May 6 19:47:04 dusan-K55A kernel: [ 230.535672] ath9k 0000:02:00.0 wlan0: disabling VHT as WMM/QoS is not supported by the AP
May 6 19:47:04 dusan-K55A kernel: [ 230.537083] wlan0: associate with 7c:05:07:de:42:7a (try 1/3)
May 6 19:47:04 dusan-K55A kernel: [ 230.541459] wlan0: RX AssocResp from 7c:05:07:de:42:7a (capab=0x411 status=0 aid=1)
May 6 19:47:04 dusan-K55A kernel: [ 230.541663] wlan0: associated
May 6 19:47:23 dusan-K55A kernel: [ 249.508157] usb 3-3: new high-speed USB device number 3 using xhci_hcd
May 6 19:47:23 dusan-K55A kernel: [ 249.525822] usb 3-3: New USB device found, idVendor=04e8, idProduct=341b
May 6 19:47:23 dusan-K55A kernel: [ 249.525830] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
May 6 19:47:23 dusan-K55A kernel: [ 249.525834] usb 3-3: Product: SCX-4200 Series
May 6 19:47:23 dusan-K55A kernel: [ 249.525837] usb 3-3: Manufacturer: Samsung
May 6 19:47:23 dusan-K55A kernel: [ 249.525840] usb 3-3: SerialNumber: 8T21BAILC00139N.
May 6 19:47:23 dusan-K55A kernel: [ 250.127578] WARNING! power/level is deprecated; use power/control instead
May 6 19:47:23 dusan-K55A kernel: [ 250.206346] usblp 3-3:1.1: usblp0: USB Bidirectional printer dev 3 if 1 alt 0 proto 2 vid 0x04E8 pid 0x341B
May 6 19:47:23 dusan-K55A kernel: [ 250.206372] usbcore: registered new interface driver usblp
May 6 19:51:57 dusan-K55A kernel: [ 523.891783] usb 3-3: usbfs: interface 1 claimed by usblp while 'scan-thread' sets config #1
May 6 19:53:24 dusan-K55A kernel: [ 610.927164] usb 3-3: usbfs: interface 1 claimed by usblp while 'scan-thread' sets config #1
In ~/.xsession-errors there's no errors, I think:
Script for ibus started at run_im.
Script for auto started at run_im.
Script for default started at run_im.
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd main process ended, respawning
init: at-spi2-registryd respawning too fast, stopped
Edit13: By analising errors in /var/log/kern.log, i have found out that this error line is outputed into kern.log when I get error no scanner found:
May 6 20:45:34 dusan-K55A kernel: [ 500.209280] usb 3-3: usbfs: interface 1 claimed by usblp while 'scan-thread' sets config #1
And I get this error when "Failed to scan" error heppens(like in screenshot):
May 6 20:52:03 dusan-K55A kernel: [ 889.843120] usb 3-3: usbfs: interface 1 claimed by usblp while 'scan-thread' sets config #1
Edit14: I realized that with Samsung Universal linux driver, which I have installed via this link, printing doesn't work. I uninstalled it and installed drivers via add printer function in system settings -> printers. However, now scanning doesn't work even with steps in edit8, which previously worked, but now, printing works. AHowever, scanning with vuescan still works.
Edit15: Here's output of grep 341b /etc/sane.d/xerox_mfp.conf:
usb 0x04e8 0x341b
And output of modprobe -r usblp; sane-find-scanner:
# 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.
# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a kernel SCSI driver for your SCSI adapter.
# No USB scanners found. If you expected something different, make sure that
# you have loaded a kernel driver for your USB host controller and have setup
# the USB system correctly. See man sane-usb for details.
# Not checking for parallel port scanners.
# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.
Here's output of ldd $(which sane-find-scanner):
linux-vdso.so.1 => (0x00007fffad7e6000)
libusb-1.0.so.0 => /lib/x86_64-linux-gnu/libusb-1.0.so.0 (0x00007f872a0b6000)
libieee1284.so.3 => /usr/lib/x86_64-linux-gnu/libieee1284.so.3 (0x00007f8729eaa000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8729ae3000)
libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f87298d2000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f87296b4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f872a2f4000)
libcgmanager.so.0 => /lib/x86_64-linux-gnu/libcgmanager.so.0 (0x00007f8729499000)
libnih.so.1 => /lib/x86_64-linux-gnu/libnih.so.1 (0x00007f8729281000)
libnih-dbus.so.1 => /lib/x86_64-linux-gnu/libnih-dbus.so.1 (0x00007f8729077000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f8728e31000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f8728c29000)
Edit16: Here's dll.conf.
Edit17: Here's log.txt, the output of sudo strace sane-find-scanner.
Edit18: Here's output of scanimage -L, it's same for mine and my brother's laptop:
device `xerox_mfp:libusb:003:003' is a SAMSUNG ORION multi-function peripheral
Solution 1:
Your USB 2.0 device (in this case, scanner) has some compatibility problem interacting with your USB 3.0 system (either USB3 ports, or USB2 ports of a USB3 hub). The problem could be caused by the scanner hardware/firmware, PC EFI/BIOS firmware, PC USB chipset, or the Linux kernel xhci_hcd driver.
Possible solutions:
Use a short USB 2 extension cable (or just a USB2 cable) to connect the device. This forces the USB 3 port to use USB 2 signalling. A USB 3 device or cable has 9 pins, whereas a USB 2 device or cable only has 4 pins. A USB 3 port will default to USB 2 signaling communication when only 4 pins are connected. A USB 2 extension cable only caries 4 wires that connect the 4 pins of USB 2 only communications.
Use a cheap USB 1.1 (or 2.0) hub and connect it to the USB3 port. Connect your device to the USB 1.1/2.0 hub. This will force the connection to be USB1.1/2.0. Since the hub has a different USB controller, it will workaround some protocol bugs. A USB 1.1 hub is a good choice for a "low speed" device like a mouse, keyboard etc. A USB 2.0 hub may well be necessary for a "full speed" device like a scanner that won't downgrade to USB 1.1.
Upgrade your PC/laptop BIOS. Manufacturers can workaround many USB issues with fixes in the BIOS/EFI.
Connect the USB 2.0 device (scanner) via a USB 2.0 port if the laptop has one. This may make no difference if your USB2 ports are also controlled by the xhci_hcd driver (ie. you still see
new high-speed USB device number x using xhci_hcd
in dmesg), in which case try using an external USB2 hub.If this is a desktop or server rather than a laptop, try a different PCI USB controller card. Different USB3 cards have different XHCI host controller chips, so compatibility with different USB hubs/devices varies.
Upgrade the firmware of your USB 2.0 device. This is probably not possible for a consumer-level scanner, but is possible for some USB 2.0 devices (eg. Pro cameras)
Replace your USB 2.0 device (scanner) with a USB 3.0 compatible device
Upgrade to the latest mainline kernel
-
In the UEFI/BIOS change the setting under USB configuration, "XHCI Pre-Boot mode" from enabled to disabled. In some BIOS configurations this setting is known as "XHCI Mode".
USB 3.0 ports are controlled by the xhci_hcd driver in Linux. When "XHCI pre-boot mode" is enabled the BIOS will route the USB 3.0 ports to the USB3 xHCI controller. When it is disabled, the USB 3.0 ports are routed to the EHCI (USB 2.0) ports. The wording "pre-boot mode" implies that this option only affects the environment before a full operating system is booted (the associated BIOS help text explicitly mentions that this option is used for USB3 support in MSDOS); however, it seems this can also affect the post-boot environment, and can have the effect of connecting the USB 3.0 ports to the USB 2.0 controller even after Linux is loaded. The disadvantage of this is that all the USB 3 ports will now run at USB 2 speed.
-
Disable USB powersaving for all devices with the autosuspend kernel module option:
modprobe usbcore autosuspend=-1
Or if usbcore is not a module with this kernel boot parameter:
usbcore.autosuspend=-1
(in Ubuntu usbcore is builtin so use the kernel boot parameter)
-
Disable powersaving (USB autosuspend) for the scanner (from Documentation/usb/power-management.txt.
When you plug the scanner in check
dmesg|tail
and you will see something likeusb 3-3: Product: SCX-4200 Series
The number
3-3
represents the USB path of the device in the format bus-port.port.port. You will find the corresponding sysfs directory at /sys/bus/usb/devices/3-3. Write on to power/control here to disable autosuspend:echo on > /sys/bus/usb/devices/3-3/power/control
Solution 2:
I had a similar problem with my scanner (all in one Brother MFC-j410) on Ubuntu 14.04 32 bit. The scanner only worked after starting XSANE for the second time and then only did one operation preview or scan. I tried changing the usb ports to usb 2.0 to no avail. My motherboard is an Asus B85M-k with an intel i3 LGA1150 chip.
I tried virtualbox with a previous version of Ubuntu where the scanner always worked on an other pc. Still, no luck, which made me highly suspicious about the usb 3 capabilities. The printer gave me some warnings also, but did print.
after reading this
USB 3.0 ports are controlled by the xhci_hcd driver in Linux. When "XHCI pre-boot mode" is enabled the BIOS will route the USB 3.0 ports to the USB3 xHCI controller. When it is disabled, the USB 3.0 ports are routed to the EHCI (USB 2.0) ports. The wording "pre-boot mode" implies that this option only affects the environment before a full operating system is booted (the associated BIOS help text explicitly mentions that this option is used for USB3 support in MSDOS); however, it seems this can also affect the post-boot environment, and can have the effect of connecting the USB 3.0 ports to the USB 2.0 controller even after Linux is loaded (so ports run at USB2 speed).
I went into my BIOS and under advanced settings found and changed the USB 3.0 from XHCI enabled to disabled and there was another setting for the usb 2 (I think it was EHCI) from enabled to disabled or the other way around, sorry I don't remember. Anyhow, after booting back into Ubuntu 14.04 32 bit, everything worked fine.
Solution 3:
Update: From the info found on internet results:
- Drivers v 2.0.0 are universally known as bugged (so that you apply a patch).
- The developer of the patch do not continue to update it and said
"Versions 2.xx of its Linux drivers have a defect: the user has to run with root permissions to be able to scan. That is very dangerous" and suggest to install version 3.xx." - In the Samsung site it exists a version 3 for Windows and OSX not for linux
- Following the link you give and searching around I find a link: (maybe it functions) http://www.openprinting.org/download/printdriver/debian/dists/lsb3.2/main/binary-i386/openprinting-ppds-postscript-samsung_20140331-1lsb3.2_all.deb
- In the same path there is another file named samsung
Even if you have downloaded and installed the version 2.xx and the relative patch, you cannot expect it functions with a kernel different from the one was tested.
Possible solutions:
- Try to install driver version 3.xx or the ones in the directory linked above.
- Find with which kernel was compatible the couple driver+patch. Decide if install on your machine or to install it inside a Virtual box.
- Try to download the drivers and program for windows (better an old one) and try to install/run them under wine.
-
Here there is another tutorial on how to install those driver (foreign language) different output for scanimage -L
device smfp:SAMSUNG SCX-4200 Series on USB:0 is a SAMSUNG SCX-4200 Series on USB:0 Flatbed Scanner - Ignore the safety rules that push the developer of the patch to create the patch and execute the scanner program not like a user but like root. With the driver not patched. Risky and dangerous. I didn't really suggest you...
Good luck
Meanwhile you don't find a fix in Ubuntu, I could suggest to you this workaround. You said
I might switch to windows, which I don't like because it's not open-source...
(I agree) So on your computer under windows seems that the scanner functions. Try to install Windows and drivers in a Virtualbox image. If the scanner functions you have not to switch system...
If it doesn't functions try to run the same virtual machine on the computer of your brother. If from that computer functions you will be sure there's a setting somewhere in your computer that you can try to fix. Good luck.