Unable to get U-HID spinner working with RetroPie image
-
I have a U-HID board driving arcade controls for RetroPie. The buttons work fine BUT the spinner does not seem to be working. I think it is an OS level issue as I cannot get any output from /dev/input/mice from the spinner (but I can get it from other devices). Everything works fine on Windows. I've contacted the U-HID vendor but they did not have much to offer on Linux support. If I can get something more specific to go back with, I will...
I've searched the threads here and elsewhere but not found anything that seemed quite relevant...hoping somebody may have some ideas on how to troubleshoot this further...
Pi Model or other hardware: Pi3
Power Supply used: Pwr+ 3.5a
RetroPie Version Used: 4.4 (commit cda9ffcb1b3d34f08280026051f0bc0d738b6b39)
Built From: Downloaded SD Image
USB Devices connected: U-HID, Logitech combined Kbd/Mouse Receiver
Controller used: U-HID generated gamepad
Error messages received: None
Log found in /dev/shm/runcommand.log (if relevant): N/A
Guide used: https://retropie.org.uk/docs/Spinners,-Trackballs,-Lightguns,-and-other-Mouse-Devices/
File: N/A
Emulator: lr-mame2003
Attachment of config files: Do not believe any are relevant but can provide if needed
How to replicate the problem:- Boot to SSH prompt
- lsusb -t` to confirm device was detected
- cat /dev/input/mice (also tested with individual devices)
- Move logitech mouse and I get output
- Move spinner and nothing happens
- Remove Logitech receiver and re-test (using SSH) and get same behavior
- Boot off random SD card with a Raspbian - logitech mouse works, spinner has no effect on mouse cursor
- Plug U-HID into Windows machine, spinner moves mouse cursor on X axis
pi@retropie:~/RetroPie-Setup $ lsusb Bus 001 Device 005: ID 046d:c52e Logitech, Inc. MK260 Wireless Combo Receiver Bus 001 Device 004: ID d209:1501 Ultimarc Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@retropie:~/RetroPie-Setup $ lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 4, If 3, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 4, If 2, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 3: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 3: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 12M
pi@retropie:~/RetroPie-Setup $ lsusb -v Bus 001 Device 005: ID 046d:c52e Logitech, Inc. MK260 Wireless Combo Receiver Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x046d Logitech, Inc. idProduct 0xc52e MK260 Wireless Combo Receiver bcdDevice 23.00 iManufacturer 1 iProduct 2 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 59 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 4 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 98mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 59 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 8 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 2 Mouse iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 177 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0014 1x 20 bytes bInterval 2 Bus 001 Device 004: ID d209:1501 Ultimarc Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0xd209 Ultimarc idProduct 0x1501 bcdDevice 0.39 iManufacturer 1 iProduct 1 iSerial 5 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 109 bNumInterfaces 4 bConfigurationValue 1 iConfiguration 1 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 No Subclass bInterfaceProtocol 0 None iInterface 1 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 33 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 10 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 No Subclass bInterfaceProtocol 0 None iInterface 3 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 86 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0015 1x 21 bytes bInterval 10 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 4 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 63 Report Descriptors: ** UNAVAILABLE ** 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 10 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 2 Mouse iInterface 2 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 112 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 10 Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Couldn't open device, some information will be missing 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 Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Couldn't open device, some information will be missing 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 SMC9514 Hub 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 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Couldn't open device, some information will be missing 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.14 iManufacturer 3 iProduct 2 iSerial 1 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
-
I have an Ultimarc spinner, and had to do things to be able to use it with EmulationStation.
- for mame, enable the mouse in the config file
- the spinner defaults to controlling the Y-axis, I had to change it to the X-axis.
I'm not sure this is your issue, as I did have output from cat /dev/input/mice . But you could check.
-
@treaves - Thanks for the info - I’ll check but suspect this is not the issue. Which controller are you using with your spinner? The newer ones come with the u-hid nano but ultimarc had other controllers in the past...
My other next step is to dig through some boxes and find an older spinner controller and see if it works (although I want the u-hid to work as it is a nice small device for everything)...
-
I'm using an iPac Ultimate IO.
Good luck.
-
@treaves Thanks for the info.
I've mapped a couple buttons to mouse-left-click and mouse-right-click for testing and they work correctly but the cursor won't move when I boot to a flash card with X on it (figure I'd try to ensure it's not RetroPie configuration issues).
I guess it's down into the deep dark world of the Linux drivers...
-
So I recorded the event stream from the U-HID using evemu and compared it to the event stream from a working Logitech mouse...the two report a different event. The Logitech reports EV_REL / REL_X (relative motion on X) whereas the U-HID reports EV_REL / REL_RX (relative motion on rotational X axis). When I edit the REL_RX to REL_X and replay the stream it works...
I've emailed U-HID on the matter and will see what they say. If anybody has any idea if there is a way to get Linux to pickup the RX axis, please let me know...
evemu exerpt: Working Logitech
E: 0.000001 0002 0000 0010 # EV_REL / REL_X 10 E: 0.000001 0002 0001 0004 # EV_REL / REL_Y 4 E: 0.000001 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +0ms E: 0.016037 0002 0000 0023 # EV_REL / REL_X 23 E: 0.016037 0002 0001 0003 # EV_REL / REL_Y 3 E: 0.016037 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +16ms E: 0.032008 0002 0000 0012 # EV_REL / REL_X 12 E: 0.032008 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +16ms E: 0.047952 0002 0000 0022 # EV_REL / REL_X 22 E: 0.047952 0002 0001 -002 # EV_REL / REL_Y -2
evemu exerpt: Not-Working U-HID
E: 0.000001 0002 0003 0001 # EV_REL / REL_RX 1 E: 0.000001 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +0ms E: 0.015999 0002 0003 0001 # EV_REL / REL_RX 1 E: 0.015999 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +15ms E: 0.031984 0002 0003 0003 # EV_REL / REL_RX 3 E: 0.031984 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +16ms E: 0.047986 0002 0003 0010 # EV_REL / REL_RX 10 E: 0.047986 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +16ms
-
@msamblanet wondering if you heard back from the u-hid vendor? Or found a workaround? As I too am faced with the same issue with my driving cab spinner and u-hid device.
Cheers!
-
I was able to reach out to U-HID support and confirm that that spinners are not being recognized as mouse devices in Linux, there for this feature on the U-HID device is not available to use in retropie :(
All functionality works as expected on Windows platform.
-
Hello, @msamblanet and @arcades - FYI- I've been battling for a couple of days on this issue until I found that I have the issue described here if the spinner is connected to J5 pins (the trackball has its own USB connection).
However, if I move this to J4 pins (J4 and J5 are the only two pin groups supporting quadrature), it just works - no questions asked...
Hope this information might be useful to you and someone else with the same setup!
-
@treaves Hello where do you go t swich the spinner defaults controling Y-axis to X-axis. Thanks
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.