Page 2 of 2 FirstFirst 12
Results 11 to 14 of 14

Thread: Suse 13.2 - scanner no longer working on 64-bit version

  1. #11

    Default Re: Suse 13.2 - scanner no longer working on 64-bit version

    I just checked: the motherboard is an ASUS H97M-E which has both
    * 6 USB3.0/2.0 ports (4 blue ports at back-panel, and 2 at mid-board)
    * 8 USB 2.0/1.1 ports (6 ports at midboard, 2 ports at back-panel) (presumably other colours; not mentioned in the manual).

    However, the only ports that are accessible from the outside of the casing are 6 blue ports at the back (and thus USB 3.0/2.0 I presume) and 2 USB-SS labeled ports on the front. Since the PC assembler, for warranty purposes, sealed the casing of my computer (opening it will void the warranty), there is no easy way for me to force hardware-wise a USB 2.0 port.

    Is there a way to accomplish such thing through kernel parameters or so?

    Happy to upload full strace output, but I don't have permission to upload attachments.

    I tried another port, and here's the lsusb output for that port

    Code:
    Bus 003 Device 006: ID 04f9:01ce Brother Industries, Ltd DCP-135C
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.00
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0         8
      idVendor           0x04f9 Brother Industries, Ltd
      idProduct          0x01ce DCP-135C
      bcdDevice            1.00
      iManufacturer           0 
      iProduct                0 
      iSerial                 3 BROJ8F733644
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           85
        bNumInterfaces          3
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xc0
          Self Powered
        MaxPower                2mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass         7 Printer
          bInterfaceSubClass      1 Printer
          bInterfaceProtocol      2 Bidirectional
          iInterface              0 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0010  1x 16 bytes
            bInterval               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol    255 Vendor Specific Protocol
          iInterface              0 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x03  EP 3 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0010  1x 16 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval             100
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass         8 Mass Storage
          bInterfaceSubClass      6 SCSI
          bInterfaceProtocol     80 Bulk-Only
          iInterface              0

  2. #12
    Join Date
    Jun 2008
    Location
    Auckland, NZ
    Posts
    18,620
    Blog Entries
    1

    Default Re: Suse 13.2 - scanner no longer working on 64-bit version

    There might be a BIOS (or UEFI) setting for enabling/disabling XHCI mode. Worth a shot.

  3. #13

    Default Re: Suse 13.2 - scanner no longer working on 64-bit version

    Sorry for the delay in posting an answer. Thanks to all of you for pointing me in the direction of a USB2 vs. USB3 problem, this turned out to be the problem, but the solution wasn't as straight forward.

    On reading about USB protocols and controllers it turns out that xHCI refers to a USB3 controller and eHCI to a USB2 controller. There seem to be many problems with older devices, and most BIOSes apparently have a setting to disable xHCI, as did mine, so this was the first thing I tried:

    The BIOS has in the advanced settings a place to specify one of 4 values for XHCI:
    Code:
            XHCI = disables -> all USB ports are USB 2.0 ports
            XHCI = enabled -> all USB ports are USB 3.0 ports
            XHCI = auto -> 2.0 until the OS detects 3.0, detection upon reboot
            XHCI = Smart Auto -> 2.0 until the OS detects 3.0, no subsequent detections upon reboot
    I set it to "disabled" and yes, the scanner was working perfectly.

    I didn't actually think disabling USB3.0 would be a wise long-term decision for my new PC, so I looked around for possible software solutions. It is then that I stumbled on this interesting post (scroll down to where it says "setpci"):
    http://superuser.com/questions/81202...ork-as-usb-2-0

    However, looking into the specifications of the motherboard, my PC has the 9-series chipset of Intel, for which the documentation can be found here
    http://www.intel.com/content/www/us/...datasheet.html

    WARNING: all the below is chipset specific for the Intel 9 series

    The relevant chapter is chapter 16 where there is an overview table at the start, and more in particular 16.1.36 and 16.1.38

    There is a more convenient way to specify the device in setpci, that is by using lspci:

    Code:
    root# lspci
    ...
    00:14.0 USB controller: Intel Corporation 9 Series Chipset Family USB xHCI Controller
    ...
    thus from now on I can use:

    Code:
    root# setpci -H1 -s 00:14.0 d8.L=0      # set ALL USB ports to 2.0, USB3_PSSEN attribute
                                ^^ ^
                                 | |
                                 | - see man page of setpci .L forces 4 bytes to be written
                                 - see 9-series pdf in chapter 16 address offset D8 for attribute USB3_PSSEN, values
    As it turns out this doesn't help me, but the other setting is about controlling which USB port gets routed over which controller: the xHCI or the eHCI controller. As specified in 16.1.36

    We read the value:
    Code:
    root# setpci -H1 -s 00:14.0 d0.L
    00003fff
    3fff is the hex value for 14 bits (0..13) set to 1 meaning all 14 usb ports the controller can handle are routed over the xHCI controller. Setting a bit to 0 means the port will be handled by the eHCI (USB 2.0) controller.

    Code:
            13 12 11 10  9  8  7  6  5  4  3  2  1  0
             1  1  1  1  1  1  1  1  1  1  1  1  1  1 = 3FFF
    I couldn't find an easy way to figure out which USB port of these 14 my scanner was on, so I did a binary search. Remeber to plug out / plug in your USB device, because that is the moment where the routing to the controller gets determined. Also note: on doing a binary search I set half of the ports to 0 in the first step, this required mouse and keyboard to reinitialize and took a few seconds; but everything recovered fine.

    In my case the USB port turned out to be port 8, bit 7, and it is this port I set to 0:

    Code:
            13 12 11 10  9  8  7  6  5  4  3  2  1  0
             1  1  1  1  1  1  0  1  1  1  1  1  1  1 = 3F7F
    And yes EVERYTHING WORKING correctly!!!

    Now make this permanent in the boot:

    Code:
    root# systemctl status rc-local.service
    implies the script /etc/init.d/boot.local is executed at startup, I added the line:

    Code:
    setpci -H1 -s 00:14.0 d0.L=3F7F
    It worked for me. And since the Intel 9-series is not uncommon, I hope this explanation helps others.

  4. #14
    Join Date
    Jun 2008
    Location
    Auckland, NZ
    Posts
    18,620
    Blog Entries
    1

    Default Re: Suse 13.2 - scanner no longer working on 64-bit version

    Quote Originally Posted by debruyck View Post
    Sorry for the delay in posting an answer. Thanks to all of you for pointing me in the direction of a USB2 vs. USB3 problem, this turned out to be the problem, but the solution wasn't as straight forward.
    Yes, it impacts on a lot of users without realising that it is the cause.

    I didn't actually think disabling USB3.0 would be a wise long-term decision for my new PC, so I looked around for possible software solutions. It is then that I stumbled on this interesting post (scroll down to where it says "setpci"):
    http://superuser.com/questions/81202...ork-as-usb-2-0
    Well done with pursuing this. I've only ever seen recommendations to disable in the BIOS when there are problems. This appears to be a more sophisticated approach. Thanks for sharing the additional information.

Page 2 of 2 FirstFirst 12

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •