Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Logitech g29 shifter adapter from amazon not supported

Discussion in 'Input System' started by tirhc, Feb 21, 2022.

  1. tirhc

    tirhc

    Joined:
    May 12, 2016
    Posts:
    5
    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: 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.

    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!
     
  2. dmytro_at_unity

    dmytro_at_unity

    Unity Technologies

    Joined:
    Feb 12, 2021
    Posts:
    212
    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.
     
  3. tirhc

    tirhc

    Joined:
    May 12, 2016
    Posts:
    5
    Hi dmytro,
    Thanks for your reply.
    gamepad tester show the following and responds to inputs of the shifter.
    upload_2022-2-22_8-17-49.png

    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:

    upload_2022-2-22_8-33-34.png
     
    Last edited: Feb 22, 2022
  4. dmytro_at_unity

    dmytro_at_unity

    Unity Technologies

    Joined:
    Feb 12, 2021
    Posts:
    212
    Seems the bug is in our native code not parsing the hid report correctly. Hard to say what exactly without having the device :)

    Maybe try finding out how does HID device descriptor looks like, maybe this tool https://www.uwe-sieber.de/usbtreeview_e.html will do, just copy paste it output for the device somewhere accessible.
     
  5. tirhc

    tirhc

    Joined:
    May 12, 2016
    Posts:
    5
    I have the output of usbtreeview here:
     

    Attached Files:

  6. dmytro_at_unity

    dmytro_at_unity

    Unity Technologies

    Joined:
    Feb 12, 2021
    Posts:
    212
    That seems one for your keyboard.
     
  7. tirhc

    tirhc

    Joined:
    May 12, 2016
    Posts:
    5
    Oh my bad, here is the right one
     

    Attached Files:

  8. tirhc

    tirhc

    Joined:
    May 12, 2016
    Posts:
    5
    @dmytro_at_unity Any more thoughts on this? Otherwise I am going to use a teensy to engineer something myself.
     
  9. dmytro_at_unity

    dmytro_at_unity

    Unity Technologies

    Joined:
    Feb 12, 2021
    Posts:
    212
    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.
     
  10. hfghfghgfh347

    hfghfghgfh347

    Joined:
    Jun 25, 2023
    Posts:
    2
    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)
     
  11. hfghfghgfh347

    hfghfghgfh347

    Joined:
    Jun 25, 2023
    Posts:
    2
    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)