Ich habe hier einen Arduino UNO R3 mit einem USB Host Shield 2.0.
Für das Shield gibt es eine ausgezeichnete Lib.
Damit laufen fast alle meine USB Controller (Joysticks und Gamepads).
Es funktionieren auch einige verschiedene Gamepads von 8BitDO.
Sowohl direkt über USB Kabel als auch wireless über den USB-BT Stick.
Von 8BitDo gibt es einige wireless Geräte und nur ein einziger mit USB
Kabel.
Der 8BitDO SN30 pro USB.
Genau dieser will partout nicht funktionieren mit meinem Arduino.
Dabei läuft das Pad tadellos an meiner Windows 10 Kiste und auch am
RetroPie.
Das Pad hat also keinen Fehler.
=======
Für das USB Host Shield 2 gibt es einen Sketch: USBHID_desc
Der Sketch zeigt Informationen sobald man ein HID Device anschließt.
Unter anderem auch Typ (zb. Gamepad) und welche Input zur Verfügung
stehen.
Es funktioniert mit allen HID Geräten die ich besitze.
Auch mit dem 8BitDO SN30 pro USB.
Wenn man dann Tasten betätigt oder die Sticks bewegt werden sofort
entsprechende Daten gesendet und in diesem Sketch angezeigt.
Nicht so bei dem 8BitDO SN30 pro USB.
Da wird nur das anstecken protokolliert, danach kommt da nichts mehr.
========
Muss man diesem HID device erst etwas senden damit es normal
funktioniert?
Hat jemand schon ähnliche Erfahrungen gemacht?
Oder sogar evt. eine Lösung für mich?
Wie immer in solchen Fällen:
Wie sehen die Deskriptoren aus. Da du ja funktionierende und nicht
funktionierende hast. Wo sind die Unterschiede bei den Deskriptoren.
Insbesondere ist der HidReportDeskriptor von Interesse, da dieser das
Übertragungsformat definiert.
Ich hab ehrlich gesagt nicht so richtig Lust aus dem Listing die Werte
zusammenzusuchen. Besorg dir bitte UsbdevView und zeige was das Tool an
Deskriptoren auswirft.
Beim nicht funktionierenden Gerät ist im Device Deskriptor Class,
Subclass, Protokoll auf 0xFF gestellt.
Das ist unüblich bis falsch da so ein Device Vendor defined ist.
Welcher Treiber wird denn für das Pad unter win geladen?
Thomas Z. schrieb:> Besorg dir bitte UsbdevView und zeige was das Tool an> Deskriptoren auswirft.
Ah, ja gut mach ich.
Thomas Z. schrieb:> Welcher Treiber wird denn für das Pad unter win geladen?
Treiber?
Muss ich schauen.
Es musste nichts extra installiert werden.
Beide Pads werden als XBOX Controller erkannt.
Thomas W. schrieb:> Treiber?> Muss ich schauen.> Es musste nichts extra installiert werden.
Da sich das Gerät nicht als HID-Class identifiziert, brauchst du einen
speziellen Treiber. Kann natürlich sein, dass das trotzdem ein HID-Gerät
ist und Windows (bzw. dessen HID-Treiber) das weiß, oder eben auch
nicht.
Du solltest im Geräte-Manager die relevanten Informationen finden
können.
Das USBdeview zeigt zwei neue Zeilen sobald man den Controller ansteckt:
Controller Xbox 360 Controller for Windows Vendor Specific Yes Yes
No No Controller 01.09.2020 13:24:10 28.08.2020 16:38:27 045e
028e 1.14 ff 5d 01 TOMMY-I7 9&6d06f10&0 xusb22
@xusb22.inf,%XUSB22.ServiceName%;Xbox 360 Wireless Receiver Driver
Service 22 xusb22.sys Microsoft 6 mA 2.00 Xbox 360 Controller
for Windows 10.0.18362.1 CC_Install xusb22.inf
USB\VID_045E&PID_028E\Controller Removable, UniqueID, SurpriseRemovalOK
XBOX_360_DEVICE_00:00 USB Input Device HID (Human Interface Device)
Yes Yes No No 01.09.2020 13:24:10 01.09.2020 13:24:10 045e
028e 0.00 03 00 00 TOMMY-I7 a&fb45c7a&0 HidUsb
@input.inf,%HID.SvcDesc%;Microsoft HID Class Driver hidusb.sys
(Standard system devices) USB Input Device 10.0.18362.175
HID_Inst.NT input.inf USB\VID_045E&PID_028E&IG_00\9&6d06f10&0&00
SurpriseRemovalOK
Thomas W. schrieb:> Das USBdeview zeigt zwei neue Zeilen sobald man den Controller ansteckt:
Ganz sicher nicht nur .... Das Fenster hat auch einen Scrollbalken. Wenn
man runterscrollst kommen die Deskriptoren.
Es gibt schon noch mehr Zeilen.
Aber die sind auch schon vorher da.
Keyboard, Maus, Netzwerk, USB Festplatte ...
==================================================
Device Name : 0000.001a.0000.001.002.001.000.000.000
Description : USB Input Device
Device Type : HID (Human Interface Device)
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter :
Serial Number :
Registry Time 1 : 01.09.2020 15:38:41
Registry Time 2 : 01.09.2020 15:38:41
VendorID : 046d
ProductID : c335
Firmware Revision : 6.02
USB Class : 03
USB SubClass : 01
USB Protocol : 01
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix : 9&324fd1ad&0
Service Name : HidUsb
Service Description: @input.inf,%HID.SvcDesc%;Microsoft HID Class Driver
Driver Filename : hidusb.sys
Device Class :
Device Mfg : (Standard system devices)
Friendly Name :
Power :
USB Version :
Driver Description: USB Input Device
Driver Version : 10.0.18362.175
Driver InfSection : HID_Inst.NT
Driver InfPath : input.inf
Instance ID : USB\VID_046D&PID_C335&MI_00\8&39b32e8&0&0000
Capabilities : SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : 0000.001a.0000.001.002.001.000.000.000
Description : USB Input Device
Device Type : HID (Human Interface Device)
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter :
Serial Number :
Registry Time 1 : 01.09.2020 15:38:41
Registry Time 2 : 01.09.2020 15:38:41
VendorID : 046d
ProductID : c335
Firmware Revision : 6.02
USB Class : 03
USB SubClass : 00
USB Protocol : 00
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix : 9&1f1fb56f&0
Service Name : HidUsb
Service Description: @input.inf,%HID.SvcDesc%;Microsoft HID Class Driver
Driver Filename : hidusb.sys
Device Class :
Device Mfg : (Standard system devices)
Friendly Name :
Power :
USB Version :
Driver Description: USB Input Device
Driver Version : 10.0.18362.175
Driver InfSection : HID_Inst.NT
Driver InfPath : input.inf
Instance ID : USB\VID_046D&PID_C335&MI_01\8&39b32e8&0&0001
Capabilities : SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : 0000.001a.0000.001.002.004.000.000.000
Description : USB Input Device
Device Type : HID (Human Interface Device)
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter :
Serial Number :
Registry Time 1 : 01.09.2020 15:38:41
Registry Time 2 : 01.09.2020 15:38:41
VendorID : 046d
ProductID : c07d
Firmware Revision : 88.02
USB Class : 03
USB SubClass : 01
USB Protocol : 02
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix : 8&166c890c&0
Service Name : HidUsb
Service Description: @input.inf,%HID.SvcDesc%;Microsoft HID Class Driver
Driver Filename : hidusb.sys
Device Class :
Device Mfg : (Standard system devices)
Friendly Name :
Power :
USB Version :
Driver Description: USB Input Device
Driver Version : 10.0.18362.175
Driver InfSection : HID_Inst.NT
Driver InfPath : input.inf
Instance ID : USB\VID_046D&PID_C07D&MI_00\7&98d012d&1&0000
Capabilities : SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : 0000.001a.0000.001.002.004.000.000.000
Description : USB Input Device
Device Type : HID (Human Interface Device)
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter :
Serial Number :
Registry Time 1 : 01.09.2020 15:38:41
Registry Time 2 : 01.09.2020 15:38:41
VendorID : 046d
ProductID : c07d
Firmware Revision : 88.02
USB Class : 03
USB SubClass : 00
USB Protocol : 00
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix : 8&299ca54a&0
Service Name : HidUsb
Service Description: @input.inf,%HID.SvcDesc%;Microsoft HID Class Driver
Driver Filename : hidusb.sys
Device Class :
Device Mfg : (Standard system devices)
Friendly Name :
Power :
USB Version :
Driver Description: USB Input Device
Driver Version : 10.0.18362.175
Driver InfSection : HID_Inst.NT
Driver InfPath : input.inf
Instance ID : USB\VID_046D&PID_C07D&MI_01\7&98d012d&1&0001
Capabilities : SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : Controller
Description : Xbox 360 Controller for Windows
Device Type : Vendor Specific
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter :
Serial Number : Controller
Registry Time 1 : 01.09.2020 15:34:46
Registry Time 2 : 28.08.2020 16:38:27
VendorID : 045e
ProductID : 028e
Firmware Revision : 1.14
USB Class : ff
USB SubClass : 5d
USB Protocol : 01
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix : 9&6d06f10&0
Service Name : xusb22
Service Description: @xusb22.inf,%XUSB22.ServiceName%;Xbox 360 Wireless
Receiver Driver Service 22
Driver Filename : xusb22.sys
Device Class :
Device Mfg : Microsoft
Friendly Name :
Power : 6 mA
USB Version : 2.00
Driver Description: Xbox 360 Controller for Windows
Driver Version : 10.0.18362.1
Driver InfSection : CC_Install
Driver InfPath : xusb22.inf
Instance ID : USB\VID_045E&PID_028E\Controller
Capabilities : Removable, UniqueID, SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : Gaming Keyboard G910
Description : Logitech Download Assistant
Device Type : Unknown
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter :
Serial Number : 0179385A3135
Registry Time 1 : 01.09.2020 15:38:41
Registry Time 2 : 17.08.2020 17:45:21
VendorID : 046d
ProductID : c335
Firmware Revision : 6.02
USB Class : 00
USB SubClass : 00
USB Protocol : 00
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix : 8&39b32e8&0
Service Name : usbccgp
Service Description: @oem33.inf,%GenericParent.SvcDesc%;Microsoft USB
Generic Parent Driver
Driver Filename : usbccgp.sys
Device Class :
Device Mfg : Logitech (x64)
Friendly Name : Gaming Keyboard G910
Power : 500 mA
USB Version : 2.00
Driver Description: Logitech Download Assistant
Driver Version : 1.10.77.0
Driver InfSection : LogiLDA
Driver InfPath : oem33.inf
Instance ID : USB\VID_046D&PID_C335\0179385A3135
Capabilities : Removable, UniqueID, SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : Gaming Mouse G502
Description : Logitech Download Assistant
Device Type : Unknown
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter :
Serial Number : 157C33533733
Registry Time 1 : 01.09.2020 15:38:41
Registry Time 2 : 22.01.2020 21:50:19
VendorID : 046d
ProductID : c07d
Firmware Revision : 88.02
USB Class : 00
USB SubClass : 00
USB Protocol : 00
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix : 7&98d012d&1
Service Name : usbccgp
Service Description: @oem33.inf,%GenericParent.SvcDesc%;Microsoft USB
Generic Parent Driver
Driver Filename : usbccgp.sys
Device Class :
Device Mfg : Logitech (x64)
Friendly Name : Gaming Mouse G502
Power : 300 mA
USB Version : 2.00
Driver Description: Logitech Download Assistant
Driver Version : 1.10.77.0
Driver InfSection : LogiLDA
Driver InfPath : oem33.inf
Instance ID : USB\VID_046D&PID_C07D\157C33533733
Capabilities : Removable, UniqueID, SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : Mass Storage Device
Description : Multiple Card Reader USB Device
Device Type : Mass Storage
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter : I:
Serial Number : 058F63666433
Registry Time 1 : 28.08.2020 09:56:05
Registry Time 2 : 08.07.2019 00:58:31
VendorID : 058f
ProductID : 6366
Firmware Revision : 1.00
USB Class : 08
USB SubClass : 06
USB Protocol : 50
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix :
Service Name : USBSTOR
Service Description: @usbstor.inf,%USBSTOR.SvcDesc%;USB Mass Storage
Driver
Driver Filename : USBSTOR.SYS
Device Class :
Device Mfg : Compatible USB storage device
Friendly Name :
Power : 100 mA
USB Version : 2.00
Driver Description: USB Mass Storage Device
Driver Version : 10.0.18362.1
Driver InfSection : USBSTOR_BULK.NT
Driver InfPath : usbstor.inf
Instance ID : USB\VID_058F&PID_6366\058F63666433
Capabilities : UniqueID, SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : MEDION HDDrive2GO
Description : TOSHIBA DT01ABA300 USB Device
Device Type : Mass Storage
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter : D:
Serial Number : 11400000000000011BB2
Registry Time 1 : 28.08.2020 09:56:03
Registry Time 2 : 08.07.2019 00:56:14
VendorID : 174c
ProductID : 55aa
Firmware Revision : 1.00
USB Class : 08
USB SubClass : 06
USB Protocol : 50
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix :
Service Name : USBSTOR
Service Description: @usbstor.inf,%USBSTOR.SvcDesc%;USB Mass Storage
Driver
Driver Filename : USBSTOR.SYS
Device Class :
Device Mfg : Compatible USB storage device
Friendly Name :
Power : 0 mA
USB Version : 3.00
Driver Description: USB Mass Storage Device
Driver Version : 10.0.18362.1
Driver InfSection : USBSTOR_BULK.NT
Driver InfPath : usbstor.inf
Instance ID : USB\VID_174C&PID_55AA\11400000000000011BB2
Capabilities : Removable, UniqueID, SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : RTL8191S WLAN Adapter
Description : Realtek RTL8191SU Wireless LAN 802.11n USB 2.0
Network Adapter
Device Type : Vendor Specific
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter :
Serial Number : 00e04c000001
Registry Time 1 : 28.08.2020 09:56:06
Registry Time 2 : 08.07.2019 00:58:38
VendorID : 13d3
ProductID : 3306
Firmware Revision : 2.00
USB Class : ff
USB SubClass : ff
USB Protocol : ff
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix : 7&34906522&0
Service Name : RTL8192su
Service Description:
@net8192su64.inf,%RTL8192su.DeviceDesc.DispName%;Realtek RTL8192SU
Wireless LAN 802.11n USB 2.0 Network Adapter
Driver Filename : RTL8192su.sys
Device Class :
Device Mfg : Realtek Semiconductor Corp.
Friendly Name : Realtek RTL8191SU Wireless LAN 802.11n USB 2.0
Network Adapter
Power : 500 mA
USB Version : 0.2e
Driver Description: Realtek RTL8191SU Wireless LAN 802.11n USB 2.0
Network Adapter
Driver Version : 1086.51.328.2013
Driver InfSection : RTL8192su.ndi.NT
Driver InfPath : net8192su64.inf
Instance ID : USB\VID_13D3&PID_3306\00e04c000001
Capabilities : Removable, UniqueID, SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
==================================================
Device Name : XBOX_360_DEVICE_01:01
Description : USB Input Device
Device Type : HID (Human Interface Device)
Connected : Yes
Safe To Unplug : Yes
Disabled : No
USB Hub : No
Drive Letter :
Serial Number :
Registry Time 1 : 01.09.2020 15:34:46
Registry Time 2 : 01.09.2020 15:34:46
VendorID : 045e
ProductID : 028e
Firmware Revision : 0.00
USB Class : 03
USB SubClass : 00
USB Protocol : 00
Hub / Port :
Computer Name : TOMMY-I7
Vendor Name :
Product Name :
ParentId Prefix : a&2b0ce92&0
Service Name : HidUsb
Service Description: @input.inf,%HID.SvcDesc%;Microsoft HID Class Driver
Driver Filename : hidusb.sys
Device Class :
Device Mfg : (Standard system devices)
Friendly Name :
Power :
USB Version :
Driver Description: USB Input Device
Driver Version : 10.0.18362.175
Driver InfSection : HID_Inst.NT
Driver InfPath : input.inf
Instance ID : USB\VID_045E&PID_028E&IG_01\9&6d06f10&0&01
Capabilities : SurpriseRemovalOK
Install Time :
First Install Time:
Connect Time :
Disconnect Time :
==================================================
Das sehe ich selbst. Das Ding hat ja 4 Interfaces. Trotzdem ist ein
classdescriptor drin der auf HID deutet.
Es ist also nicht ganz ausgeschlossen, dass der TO das Ding mit einer
angepassten hostlib ans laufen bekommen kann.
Es geht exakt um dieses GamePad von 8BitDO, das einzige Gerät das Kabel
hat.
https://www.8bitdo.com/sn30-pro-usb-gamepad/
Ich finde es ja lustig, dass alle anderen (kabellosen) tadellos laufen.
Sowohl mit Ladekabel als auch mit dem Wireless BT Stick.
Ich hab's ja schon mehrfach geschrieben. Poste die Deskriptoren.
UsbDevView zeigt die auch an. Ich verstehe nicht was jetzt so schwer ist
den entsprechenden Port anzuklicken und im rechten Fenster solange
runterzuscrollen bis die Deskriptoren kommen.
Wenn ich bei Google einfach mal nach "045e:028e" suche, dann finde ich
mehrere Posts, die Probleme mit dem Teil unter Linux beschreiben.
Selbst, wenn es teilweise HID-kompatibel ist, wirst du es nicht
vollständig nutzen können. Linux hat dafür den "xpad"-Treiber bzw.
"xboxdrv". Siehe auch
https://stackoverflow.com/questions/52088857/i-need-some-help-to-understand-usb-game-controllers-hid-devices.
Besorge dir einen anderen Controller.
S. R. schrieb:> Besorge dir einen anderen Controller.
Es geht dabei nicht um mich selbst.
Ich habe inzwischen zig USB Controller und Joysticks da.
Wir wollen moderne USB Controller an alte Retro Computer hängen.
Weil es diese alten Controller, speziell analoge Joysticks, kaum noch
gibt.
Das funktioniert jetzt auch soweit sehr gut.
Natürlich wäre es schön, wenn JEDES USB Gerät funktionieren würde.
Aber wenn es nicht geht, auch kein wirkliches Problem.
Thomas W. schrieb:> Natürlich wäre es schön, wenn JEDES USB Gerät funktionieren würde.
Das geht schon aus Prinzip nicht. :-)
Du kannst natürlich für jedes Gerät einen eigenen Treiber schreiben, und
vielleicht ist das für so einen Xbox360-Controller noch sinnvoll, aber
irgendwo wirst du eine Grenze ziehen müssen.
Thomas W. schrieb:> XINPUT> Das ist genau der Begriff der mich etwas weiter bringt.
Nein, das ist die Linux-API, die du benutzt, wenn du den Controller an
einen Linux-PC anschließt. Du willst den Controller nicht an einen
Linux-PC anschließen, sondern an einen Arduino.
Thomas W. schrieb:> Es gibt einige Artikel die sich damit beschäftigen:> https://www.instructables.com/id/Controlling-Arduino-with-Gamepad/
Und der Artikel benutzt einen Linux-PC mit einem Linux-Programm, welches
den Controller mit dem Linux-Treiber ausliest, um dann serielle Daten an
einen Arduino zu schicken. Der Controller wird dabei nicht am Arduino
angeschlossen.
Aber ich merke schon, ich rede mit einer Wand.
Viel Spaß noch.
Danke, es ist gelöst.
Man sendet dem Controller eine Sequenz, danach funktioniert er genau wie
alle anderen auch. Es gibt auch Daten Pakete die das Rumble schalten,
aber das benötige ich nicht.
S. R. schrieb:> Das geht schon aus Prinzip nicht. :-)
Häh, warum sollte das nicht gehen?
Jeder Controller der unter Windows läuft, kann auch am Arduino laufen.
Es gehen jedenfall alle die ich besitze. :-)
Thomas W. schrieb:>> Das geht schon aus Prinzip nicht. :-)> Häh, warum sollte das nicht gehen?
Du sprachst von USB-Geräten, nicht von Gamepads und Joysticks. :-)
> Jeder Controller der unter Windows läuft, kann auch am Arduino laufen.
Wenn du dich nur auf HID-Controller beschränkst, dann ja.
Ansonsten ist das nur theoretisch ja, praktisch nein.