Raspberry Pi 3 - HID USB Device / Touchscreen - Input not working

raspberrypi3

#1

Hey everyone,

I’m running into issues with a HDMI/USB driven Touchscreen on a Raspberry PI3 when running it via Resin. The Display is working flawlessly however I can’t get the Touch Interface (connected via USB) to work.

The display is the following Waveshare 7" HDMI LCD C

I order to ensure the display itself is working I ran it with a bare Raspbian image and could use/interact the screen and its touch capabilities without any issues.

I started debugging the USB connection/device registration using lsusb and dmesg to notice the following:

[  109.605217] usb 1-1.5: new full-speed USB device number 9 using dwc_otg
[  109.708563] usb 1-1.5: New USB device found, idVendor=0eef, idProduct=0005
[  109.708585] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  109.708598] usb 1-1.5: Product: WaveShare Touchscreen
[  109.708610] usb 1-1.5: Manufacturer: WaveShare
[  109.708621] usb 1-1.5: SerialNumber: 2016-11-06
[  109.714473] input: WaveShare WaveShare Touchscreen as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/0003:0EEF:0005.0002/input/input1
[  109.715385] hid-multitouch 0003:0EEF:0005.0002: input,hidraw0: USB HID v1.11 Device [WaveShare WaveShare Touchscreen] on usb-3f980000.usb-1.5/input0
[  111.855218] usb 1-1.5: reset full-speed USB device number 9 using dwc_otg
[  111.935207] usb 1-1.5: device descriptor read/64, error -32
[  112.125228] usb 1-1.5: device descriptor read/64, error -32
[  112.315212] usb 1-1.5: reset full-speed USB device number 9 using dwc_otg
[  112.395208] usb 1-1.5: device descriptor read/64, error -32
[  112.585211] usb 1-1.5: device descriptor read/64, error -32
[  112.775215] usb 1-1.5: reset full-speed USB device number 9 using dwc_otg
[  113.195254] usb 1-1.5: device not accepting address 9, error -32
[  113.275216] usb 1-1.5: reset full-speed USB device number 9 using dwc_otg
[  113.695234] usb 1-1.5: device not accepting address 9, error -32
[  113.695775] usb 1-1.5: USB disconnect, device number 9
[  113.835215] usb 1-1.5: new full-speed USB device number 10 using dwc_otg
[  113.915208] usb 1-1.5: device descriptor read/64, error -32
[  114.105235] usb 1-1.5: device descriptor read/64, error -32
[  114.295214] usb 1-1.5: new full-speed USB device number 11 using dwc_otg
[  114.375210] usb 1-1.5: device descriptor read/64, error -32
[  114.565211] usb 1-1.5: device descriptor read/64, error -32
[  114.755217] usb 1-1.5: new full-speed USB device number 12 using dwc_otg
[  115.175237] usb 1-1.5: device not accepting address 12, error -32
[  115.255214] usb 1-1.5: new full-speed USB device number 13 using dwc_otg
[  115.675246] usb 1-1.5: device not accepting address 13, error -32
[  115.675372] usb 1-1-port5: unable to enumerate USB device

multiple attempts of disconnecting and connecting the screen again lead to the same output or might even skip HID device recognition

[   47.714555] usb 1-1.5: reset full-speed USB device number 4 using dwc_otg
[   47.794500] usb 1-1.5: device descriptor read/64, error -32
[   47.984532] usb 1-1.5: device descriptor read/64, error -32
[   48.174550] usb 1-1.5: reset full-speed USB device number 4 using dwc_otg
[   57.174529] usb 1-1.5: reset full-speed USB device number 4 using dwc_otg
[   57.254497] usb 1-1.5: device descriptor read/64, error -32
[   57.444516] usb 1-1.5: device descriptor read/64, error -32
[   57.634515] usb 1-1.5: reset full-speed USB device number 4 using dwc_otg
[   57.714531] usb 1-1.5: device descriptor read/64, error -32
[   57.904504] usb 1-1.5: device descriptor read/64, error -32
[   58.094516] usb 1-1.5: reset full-speed USB device number 4 using dwc_otg
[   58.514550] usb 1-1.5: device not accepting address 4, error -32
[   58.594518] usb 1-1.5: reset full-speed USB device number 4 using dwc_otg
[   59.014512] usb 1-1.5: device not accepting address 4, error -32
[   59.015039] usb 1-1.5: USB disconnect, device number 4
[   59.184504] usb 1-1.5: new full-speed USB device number 5 using dwc_otg
[   59.264501] usb 1-1.5: device descriptor read/64, error -32
[   59.454498] usb 1-1.5: device descriptor read/64, error -32
[   59.644517] usb 1-1.5: new full-speed USB device number 6 using dwc_otg
[   59.724498] usb 1-1.5: device descriptor read/64, error -32
[   59.914513] usb 1-1.5: device descriptor read/64, error -32
[   60.104528] usb 1-1.5: new full-speed USB device number 7 using dwc_otg
[   60.524496] usb 1-1.5: device not accepting address 7, error -32
[   60.604525] usb 1-1.5: new full-speed USB device number 8 using dwc_otg
[   61.024503] usb 1-1.5: device not accepting address 8, error -32
[   61.024625] usb 1-1-port5: unable to enumerate USB device

Given that the screen is excluded from the lsusb -v output

Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol         1 
  bMaxPacketSize0        64
  idVendor           0x0424 Standard Microsystems Corp.
  idProduct          0xec00 SMSC9512/9514 Fast Ethernet Adapter
  bcdDevice            2.00
  iManufacturer           0 
  iProduct                0 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol    255 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               4
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol         1 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         2 TT per port
  bMaxPacketSize0        64
  idVendor           0x0424 Standard Microsystems Corp.
  idProduct          0x9514 
  bcdDevice            2.00
  iManufacturer           0 
  iProduct                0 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      1 Single TT
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0001  1x 1 bytes
        bInterval              12
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      2 TT per port
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0001  1x 1 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             5
  wHubCharacteristic 0x000d
    Per-port power switching
    Compound device
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       50 * 2 milli seconds
  bHubContrCurrent      1 milli Ampere
  DeviceRemovable    0x02
  PortPwrCtrlMask    0xff
Hub Port Status:
  Port 1: 0000.0503 highspeed power enable connect
  Port 2: 0000.0100 power
  Port 3: 0000.0100 power
  Port 4: 0000.0100 power
  Port 5: 0000.0101 power connect
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         0 Full speed (or root) hub
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            4.04
  iManufacturer           3 Linux 4.4.50 dwc_otg_hcd
  iProduct                2 DWC OTG Controller
  iSerial                 1 3f980000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0008
    Ganged power switching
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood        1 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
Hub Port Status:
  Port 1: 0000.0503 highspeed power enable connect
Device Status:     0x0001
  Self Powered

Given that I had a though that the PI might not deliver enough power to the screen. However, I verified and max_usb_current is set to a value of 1.

Add this point I’m rather clueless how to proceed. I was about to blame it on a faulty display unit but was then reluctant after verifying that it works on a bare Raspbian install. Does anyone have any valuable pointers/insights or encountered similar situations? Any help would be highly appreciated!

Thank!


#3

Hi there,

well what worries me is the specific messages I see:

usb 1-1.5: device descriptor read/64, error -32

and

usb 1-1.5: device not accepting address 13, error -32

Those errors usually indicate hardware failure. Usually USB has an over-current protection, which gets triggered when power consumption from the port is too high.

Are there other USB devices or dongles that you can try to unplug?
Can you use a standard plug to power the raspberry?

Best,
ilias


#5

Hey @izavits.

Thanks for the response. There was nothing else plugged in and I was running the PI with the original PI power plug. Anyhow, I got my hands on an externally powered USB Hub to verify that the power consumption of the Pi is not the issue and was still getting unreliable results.

Out of pure luck I swapped the USB cable and couldn’t believe it: the included USB cable is simply broken. With a higher quality, functioning USB cable the display and touch input works reliable and seamless and register entirely fine and seamless (easy to verify with dmesg).

So yeah, in case anyone comes across a similar issue: check the used accessories as the ones included with these rather cheap displays might not be of the highest quality.

Anyhow, thanks again for your quick help and we’ll see where Resin can take us for this project. Given that I know u guys are always curious about projects: we are working on a sort of fleet of “Streaming Boxes” for a community radio.

Best,
Florian