game pad won't connect

To Whom it may concern:

My company manufactures and designed a patented ruggedzied USB game style controller for various industrial, military and aerospace purposes. This is a product that has been in production for ten years and has a glorious track record with thousands of units built and sold worldwide. It supports all versions of windows, and also linux, RHEL, Android and etc. without issue.

One of our customers is trying to integrate it into your unity platform but with difficulty.
Below, I’ve provided the crash report which was forwarded to me

“This is the HID descriptor as reported by Unity for the Ultra Controller”
{
“interface”: “HID”,
“type”: “”,
“product”: “xxxxxxxxx”, // redacted
“serial”: “”,
“version”: “1”,
“manufacturer”: “Ultra-MSI Electronics Inc.”,
“capabilities”: “{"vendorId":27908,"productId":26728,"usage":4,"usagePage":1,"inputReportSize":7,"outputReportSize":0,"featureReportSize":0}”
}

“This is the error that is reported when Unity tries to use the Ultra Controller”

Could not create a device for ‘Ultra-MSI Electronics Inc. 1505-G6887 (HID)’ (exception: System.Exception: State format ‘SBIT’ is not supported as floating-point format
at UnityEngine.InputSystem.LowLevel.InputStateBlock.FloatToPrimitiveValue (System.Single value) [0x002dc] inC:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\State\InputStateBlock.cs:569
at UnityEngine.InputSystem.Controls.AxisControl.FinishSetup () [0x00031] in C:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\Controls\AxisControl.cs:219
at UnityEngine.InputSystem.InputControl.CallFinishSetupRecursive () [0x0002c] in C:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\Controls\InputControl.cs:881
at UnityEngine.InputSystem.InputControl.CallFinishSetupRecursive () [0x0000c] in C:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\Controls\InputControl.cs:880
at UnityEngine.InputSystem.InputControl.CallFinishSetupRecursive () [0x0000c] in C:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\Controls\InputControl.cs:880
at UnityEngine.InputSystem.Layouts.InputDeviceBuilder.Setup (UnityEngine.InputSystem.Utilities.InternedString layout, UnityEngine.InputSystem.Utilities.InternedString variants, UnityEngine.InputSystem.Layouts.InputDeviceDescription deviceDescription) [0x00032] in C:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\Devices\InputDeviceBuilder.cs:55
at UnityEngine.InputSystem.InputDevice.Build[TDevice] (System.String layoutName, System.String layoutVariants, UnityEngine.InputSystem.Layouts.InputDeviceDescription deviceDescription) [0x0004a] in C:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\Devices\InputDevice.cs:678
at UnityEngine.InputSystem.InputManager.AddDevice (UnityEngine.InputSystem.Utilities.InternedString layout, System.Int32 deviceId, System.String deviceName, UnityEngine.InputSystem.Layouts.InputDeviceDescription deviceDescription, UnityEngine.InputSystem.InputDevice+DeviceFlags deviceFlags, UnityEngine.InputSystem.Utilities.InternedString variants) [0x00001] in C:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\InputManager.cs:1033
at UnityEngine.InputSystem.InputManager.AddDevice (UnityEngine.InputSystem.Layouts.InputDeviceDescription description, System.Boolean throwIfNoLayoutFound, System.String deviceName, System.Int32 deviceId, UnityEngine.InputSystem.InputDevice+DeviceFlags deviceFlags) [0x00072] in C:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\InputManager.cs:1164
at UnityEngine.InputSystem.InputManager.OnNativeDeviceDiscovered (System.Int32 deviceId, System.String deviceDescriptor) [0x000c4] in C:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\InputManager.cs:2069 )

PLEASE NOTE: The above software version is Unity 2019.3.0f6.

If you have any suggestion to offer it would be most honestly appreciated.

Thanks, to the team, in advance,

Regards,

Robert Blain
Chief Engineer
MSI/DNE Products, EMS

Ultra Maritime
50 Barnes Park North, Suite 101
Wallingford, CT 06492, USA
T: +1 (203) 949 - 3500 Ext. 3532
F: +1 (203) 949 - 3598
ultra-ems.com
ultra.group

I think this is the essence of the issue here. A developer familiar with this code might be able to shed some light on reason for the error. I’ve posted this as of more than two days ago to no avail. I believe it’s an issue with the HID report, something that is unfamiliar or not supported.

It might be worth mentioning that this control stick outputs deflection travel as signed char which is 8 bit 2’s compliment data. Most controllers output this as signed short in a.k.a 16 bits wide. Could this be an issue?

Could not create a device for ‘Ultra-MSI Electronics Inc. 1505-G6887 (HID)’ (exception: System.Exception: State format ‘SBIT’ is not supported as floating-point format at UnityEngine.InputSystem.LowLevel.InputStateBlock.FloatToPrimitiveValue (System.Single value) [0x002dc] inC:\Users\User\Documents\ASPIS-Controller-GUI-mockup\GUIMockUp\Library\PackageCache\com.unity.inputsystem@1.0.0-preview.7\InputSystem\State\InputStateBlock.cs:569 at UnityEngine.InputSystem.Controls.AxisControl.FinishSetup () [0x00031]