Logitech g29 shifter adapter from amazon not supported

Hi Unity forums,

I am trying to read the input of a logitech g29 shifter in unity. This used to work when used with the unity g29 wheel. But I am using a different wheel now so I needed a different way to hook up the shifter via usb directly to pc.

I purchased this device from amazon: https://www.amazon.nl/-/en/dp/B096S8D2RV/
Unity shows this device as not supported:7914448--1009549--upload_2022-2-21_16-33-10.png

It gives me this as device description:
{
“interface”: “HID”,
“type”: “”,
“product”: “diy Shifter”,
“serial”: “HIDDC”,
“version”: “256”,
“manufacturer”: “Unknown”,
“capabilities”: “{"vendorId":8593,"productId":35097,"usage":5,"usagePage":1,"inputReportSize":3,"outputReportSize":0,"featureReportSize":0,"elements":[ ],"collections":[ ]}”
}

In the windows dialog it is recognized and seems to pick up all the input correctly.

7914448--1009552--upload_2022-2-21_16-34-8.png

Can I get this to work somehow? Or do I have to forge my own connector using an arduino/teensy/microcontroller device? (like this video does

)
I know I can get this to work because the project already succesfully uses a teensy to read some custom pedals. But it would be nice if unity could read the amazon adapter correctly like windows does.

Thanks in advance for any input on the issue!

And if you use https://gamepad-tester.com/ how does it see it on windows? as HID device or as XInput?
Device description says that it’s GenericDesktop::Gamepad, so I kinda expect it to work, but HID descriptor appears to be empty … maybe try clicking add unsupported devices in input debugger and see what happens.

Hi dmytro,
Thanks for your reply.
gamepad tester show the following and responds to inputs of the shifter.

The unsupported device option in input debugger doesn’t do anything since I have not specified any devices in the input settings. And I cannot select the device there. Unity also does not find this device when listening for inputs in an action map/action.

When enabling ‘enable event diagnostics’ I get the following error only when the diy shifter is plugged in:

Seems the bug is in our native code not parsing the hid report correctly. Hard to say what exactly without having the device :slight_smile:

Maybe try finding out how does HID device descriptor looks like, maybe this tool USB Device Tree Viewer will do, just copy paste it output for the device somewhere accessible.

I have the output of usbtreeview here:

7916773–1010014–usb_tree_view.txt (15.1 KB)

That seems one for your keyboard.

Oh my bad, here is the right one

7917082–1010074–usb_tree_view-1.txt (17.9 KB)

@dmytro_at_unity Any more thoughts on this? Otherwise I am going to use a teensy to engineer something myself.

Sorry, don’t have much capacity right now. It seems somehow reports are empty, probably some issues either in how we parse hid report from windows in native code, or device is not usb hid compliant.

Feel free to report a bug though (help → report bug), so we will keep track about it, and hopefully get around fixing it when we get to racing wheel support proper.

Help, I bought an adapter for my g29 shifter because I use it with another wheel and the shifter doesn’t detect me, with usb treet viewer I got this text:
[2-11]: Prolific PL2303GT USB Serial COM Port (COM3)

This is how it detects me but the description is:

Connection Status : 0x01 (Device is connected)
Port Chain : 2-11
========================== Summary =========================
Vendor ID : 0x067B (Prolific Technology, Inc.)
Product ID : 0x23A3
USB Version : 2.0 → but Device is Full-Speed only
Port maximum Speed : High-Speed
Device maximum Speed : Full-Speed
Device Connection Speed : Full-Speed
Self powered : no
Demanded Current : 100 mA
Device Manager Problem : 47 (CM_PROB_HELD_FOR_EJECT)
Used Endpoints : 1
======================== USB Device ========================
+++++++++++++++++ Device Information ++++++++++++++++++
Friendly Name : Prolific PL2303GT USB Serial COM Port (COM3)
Device Description : Prolific PL2303GT USB Serial COM Port
Device Path 1 : \?\USB#VID_067B&PID_23A3#BMCXx11A920#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Device Path 2 : \?\USB#VID_067B&PID_23A3#BMCXx11A920#{86e0d1e0-8089-11d0-9ce4-08003e301f73} (GUID_DEVINTERFACE_COMPORT)
Device Path 3 : \?\USB#VID_067B&PID_23A3#BMCXx11A920#{4d36e978-e325-11ce-bfc1-08002be10318} (GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR)
Kernel Name : \Device\USBPDO-6
Device ID : USB\VID_067B&PID_23A3\BMCXX11A920
Hardware IDs : USB\VID_067B&PID_23A3&REV_0305 USB\VID_067B&PID_23A3
Driver KeyName : {4d36e978-e325-11ce-bfc1-08002be10318}\0001 (GUID_DEVCLASS_PORTS)
Driver : \SystemRoot\system32\DRIVERS\plser64.sys (Version: 5.1.4.0 Date: 2022-06-15)
Driver Inf : C:\Windows\inf\oem67.inf
Legacy BusType : PNPBus
Class : Ports
Class GUID : {4d36e978-e325-11ce-bfc1-08002be10318} (GUID_DEVCLASS_PORTS)
Service : plser
Enumerator : USB
Location Info : Port_#0011.Hub_#0001
Location IDs : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(11), ACPI(SB)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS11)
Container ID : {64df0eba-98b2-55b6-b8ff-77fd14db9811}
Manufacturer Info : Prolific
Capabilities : 0x94 (Removable, UniqueID, SurpriseRemovalOK)
Status : 0x01806400 (DN_HAS_PROBLEM, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code : 47 (CM_PROB_HELD_FOR_EJECT)
Upper Filters : serenum
IdleInWorkingState : 1
WakeFromSleepState : 1
Power State : D3 (supported: D0, D1, D2, D3, wake from D0, wake from D1, wake from D2)
COM-Port : COM3 (\Device\ProlificSerial0)
+++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\067B23A30305
osvc : REG_BINARY 00 00
---------------- Connection Information ---------------
Connection Index : 0x0B (Port 11)
Connection Status : 0x01 (DeviceConnected)
Current Config Value : 0x01 (Configuration 1)
Device Address : 0x08 (8)
Is Hub : 0x00 (no)
Device Bus Speed : 0x01 (Full-Speed)
Number Of Open Pipes : 0x03 (3 pipes to data endpoints)
Pipe[0] : EndpointID=1 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0xA bInterval=1 → 214 Bits/ms = 26750 Bytes/s
Pipe[1] : EndpointID=2 Direction=OUT ScheduleOffset=0 Type=Bulk wMaxPacketSize=0x40 bInterval=0
Pipe[2] : EndpointID=3 Direction=IN ScheduleOffset=0 Type=Bulk wMaxPacketSize=0x40 bInterval=0
Data (HexDump) : 0B 00 00 00 12 01 00 02 00 00 00 40 7B 06 A3 23 …@{…#
05 03 01 02 03 01 01 01 00 08 00 03 00 00 00 01 …
00 00 00 07 05 81 03 0A 00 01 00 00 00 00 07 05 …
02 02 40 00 00 00 00 00 00 07 05 83 02 40 00 00 …@…@…
00 00 00 00 …
--------------- Connection Information V2 -------------
Connection Index : 0x0B (11)
Length : 0x10 (16 bytes)
SupportedUsbProtocols : 0x03
Usb110 : 1 (yes, port supports USB 1.1)
Usb200 : 1 (yes, port supports USB 2.0)
Usb300 : 0 (no, port not supports USB 3.0)
ReservedMBZ : 0x00
Flags : 0x00
DevIsOpAtSsOrHigher : 0 (Device is not operating at SuperSpeed or higher)
DevIsSsCapOrHigher : 0 (Device is not SuperSpeed capable or higher)
DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
DevIsSsPlusCapOrHigher : 0 (Device is not SuperSpeedPlus capable or higher)
ReservedMBZ : 0x00
Data (HexDump) : 0B 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00 …
---------------------- Device Descriptor ----------------------
bLength : 0x12 (18 bytes)
bDescriptorType : 0x01 (Device Descriptor)
bcdUSB : 0x200 (USB Version 2.0) → but device is Full-Speed only
bDeviceClass : 0x00 (defined by the interface descriptors)
bDeviceSubClass : 0x00
bDeviceProtocol : 0x00
bMaxPacketSize0 : 0x40 (64 bytes)
idVendor : 0x067B (Prolific Technology, Inc.)
idProduct : 0x23A3
bcdDevice : 0x0305
iManufacturer : 0x01 (String Descriptor 1)
iProduct : 0x02 (String Descriptor 2)
iSerialNumber : 0x03 (String Descriptor 3)
bNumConfigurations : 0x01 (1 Configuration)
Data (HexDump) : 12 01 00 02 00 00 00 40 7B 06 A3 23 05 03 01 02 …@{…#…
03 01 …
------------------ Configuration Descriptor -------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x0027 (39 bytes)
bNumInterfaces : 0x01 (1 Interface)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0xA0
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x01 (yes)
D4…0: Reserved, set 0 : 0x00
MaxPower : 0x32 (100 mA)
Data (HexDump) : 09 02 27 00 01 01 00 A0 32 09 04 00 00 03 FF 00 …'…2…
00 00 07 05 81 03 0A 00 01 07 05 02 02 40 00 00 …@…
07 05 83 02 40 00 00 …@…
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x00
bNumEndpoints : 0x03 (3 Endpoints)
bInterfaceClass : 0xFF (Vendor Specific)
bInterfaceSubClass : 0x00
bInterfaceProtocol : 0x00
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 00 03 FF 00 00 00 …
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x000A (10 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 81 03 0A 00 01 …
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x02 (Direction=OUT EndpointID=2)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 02 02 40 00 00 …@…
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x83 (Direction=IN EndpointID=3)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 83 02 40 00 00 …@…
----------------- Device Qualifier Descriptor -----------------
Error : ERROR_GEN_FAILURE (because the device is prepared for safe removal)
-------------------- String Descriptors -------------------
String descriptors are not available (because the device is prepared for safe removal)