Rumble and wireless assistance

USB Joystick driver for RISC OS 5
richw
Posts: 186
Joined: Sat Sep 14, 2013

Re: Rumble and wireless assistance

Post by richw »

Excellent, thanks Jon. I was starting to wonder if a BASIC program would be helpful - just asking you to try things, then press a key etc. But maybe this is is workable-ish as-is.

Can you try the attached version? I've put in a retry mechanism to try and cope with the 'stall' situation. It looks like USBDriver and EtherUSB do similar. So far, I've been mainly doing USB reads, which are dead easy, and it seems that certain writes are not so straightforward. It should capture in Reporter if it's failing, and what's going on with retries/stalls. This is applied to all comms (apart from the basic 'read inputs', which has been there since day 1) so maybe things like the device product/manufacturer strings will return correctly now?

The player LED/ring should also now be automatic. After you attach a controller, it should be 'player 1', another will be 'player 2' etc. Does that work? It will spit out stuff in Reporter as it goes.

Does the rumble command work properly? Is the first motor the big one, and the second the small one? (it is on my PSX pad) Does it still work if you disconnect and later re-connect a controller?

If anyone here has a PS3 pad, it would be nice to know if that works.
Attachments
usbjtest5.zip
(40.23 KiB) Downloaded 7 times
richw
Posts: 186
Joined: Sat Sep 14, 2013

Re: Rumble and wireless assistance

Post by richw »

Ah, I've spotted an off-by-one error in the PS3 pad detection, which might explain why they don't work. A possible fix is in this build.
Attachments
usbjtest6.zip
(40.33 KiB) Downloaded 7 times
grannyg
Posts: 23
Joined: Fri Dec 13, 2013

Re: Rumble and wireless assistance

Post by grannyg »

I tried plugging in a PS3 controller but no joy!

It shows up with usbdevices OK.

3 1 3 0/ 0 Sony PLAYSTATION(R)3 Controller

USB release : 0200
Device class : 00
Device subclass : 00
Device protocol : 00
Max packet size : 40
Vendor ID : 054C
Product ID : 0268
Device ID : 0100
# of configs : 1
Manufacturer : 'Sony'
Product : 'PLAYSTATION(R)3 Controller'
Serial number : ''
Speed : Full
grannyg
Posts: 23
Joined: Fri Dec 13, 2013

Re: Rumble and wireless assistance

Post by grannyg »

Also tried the rumble test with a PS4 controller.

*usbjoystick_rumble 0 65535 0 800
Joystick does not support rumble

*usbjoystick_list
Joystick slot 0 (Sony Interactive Entertainment - Wireless Controller)
Local USB device name : USB7
Interface : 3
Endpoint : 4
Device manufacturer : Sony Interactive Entertainment
Device product name : Wireless Controller
Device serial number :
Driver : Standard HID controller (no boot)
Capabilities : None
Number of axes : 8
Number of buttons : 14
HAT switch : Yes
DPAD : No
grannyg
Posts: 23
Joined: Fri Dec 13, 2013

Re: Rumble and wireless assistance

Post by grannyg »

Same for a PS5 controller.

*usbjoystick_rumble 0 65535 0 800
Joystick does not support rumble

*usbjoystick_list
Joystick slot 0 (Sony Interactive Entertainment - DualSense Wireless Controller)
Local USB device name : USB8
Interface : 3
Endpoint : 4
Device manufacturer : Sony Interactive Entertainment
Device product name : DualSense Wireless Controller
Device serial number :
Driver : Standard HID controller (no boot)
Capabilities : None
Number of axes : 6
Number of buttons : 0
HAT switch : No
DPAD : No
richw
Posts: 186
Joined: Sat Sep 14, 2013

Re: Rumble and wireless assistance

Post by richw »

Not really thought much about the PS5 controller yet, but I was hoping the PS3 one might work. Is that with the latest download on here? (test6)

Can you run Reporter (http://www.avisoft.force9.co.uk/Reporter.htm) and capture the output when you connect the pad? (if it's already connected, just disconnect it first, load Reporter, then re-connect)
grannyg
Posts: 23
Joined: Fri Dec 13, 2013

Re: Rumble and wireless assistance

Post by grannyg »

This is the log when a PS3 controller is plugged in using test6,

Code: Select all

USBJoystick: joy_check_device: (usb service call) +++++++++++++++++++++++++++++++++++
USBJoystick: joy_check_device: Checking device name 'USB9' (sclen 93, descoff 32, class 00, subclass 00, protocol 00)
USBJoystick: joy_check_device: Getting USB descriptors
USBJoystick: usb_get_descriptor_list: device 'USB9'
USBJoystick: joy_check_device: Parsing USB descriptors
USBJoystick: joy_check_device: Device descriptor: Length 18, Type 1, Configurations 1, csDeviceClass 0x0
USBJoystick: joy_check_device: Device descriptor: iManufacturer 1, iProduct 2, iSerialNumber 0
USBJoystick: joy_check_device: Device descriptor: Vendor 0x054c, Product 0x0268, Device 0x0100
USBJoystick: joy_check_device: Configuration descriptor: Length 9, Type 2, TotalLength 41, NumInterfaces 1 
USBJoystick: joy_check_device: Interface descriptor: Length 9, DescriptorType 4, InterfaceNumber 0, InterfaceClass 3 (3 is HID), iInterface 0, csInterfaceClass 0x30000
USBJoystick: joy_check_device: Other descriptor: type is 33 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x30000
USBJoystick: joy_check_device: InterfaceClass 0x3, InterfaceSubClass 0x0, InterfaceProtocol 0, Vendor 0x054c, Product 0x0268
USBJoystick: joy_check_device: Supported device: PlayStation 3 controller
USBJoystick: joy_check_device: Assume we are looking at a HID device descriptor
USBJoystick: joy_check_device: Getting HID report descriptor from device...
USBJoystick: get_report_descriptor: HID device descriptor: Length 9, DescriptorType 33, HID 273, country 0, NumDescriptors 1, ReportDescType 34, ReportDescLength 148
USBJoystick: get_report_descriptor: Calculated ReportDescriptorType 32, ReportDescriptorId 2
USBJoystick: get_report_descriptor: Getting HID report descriptor
USBJoystick: usb_get_descriptor: dev 'USB9' wValue 0x2200, wIndex 0, wLength 148
USBJoystick: parse_usb_hid_device_descriptor: Will use joystick number 0 (next available) for this HID parse
USBJoystick: parse_usb_hid_device_descriptor: Shared report descriptor 'rd' (size 148) with libusbhid
USBJoystick: parse_usb_hid_device_descriptor: HID report descriptors use a reportid, so switching from 0 to 1
USBJoystick: parse_usb_hid_device_descriptor: Got hid report size 48 for reportid 1, has_report_id is 1
USBJoystick: parse_usb_hid_device_descriptor: Parse completed - freeing libusbhid report descriptor memory
USBJoystick: parse_usb_hid_device_descriptor: Got nothing - free raw data buffer memory and exit
USBJoystick: joy_check_device: Parsed HID report descriptor, got_valid_joystick is 0
USBJoystick: joy_check_device: endpoint descriptor: EndpointAddress 2, (on InterfaceNumber 0)
USBJoystick: joy_check_device: endpoint descriptor: OUT endpoint, but no joystick on this interface - ignore
USBJoystick: joy_check_device: endpoint descriptor: EndpointAddress 129, (on InterfaceNumber 0)
USBJoystick: joy_check_device: endpoint descriptor: We think this isn't a joystick - ignore this endpoint
grannyg
Posts: 23
Joined: Fri Dec 13, 2013

Re: Rumble and wireless assistance

Post by grannyg »

Same for PS4 Controller,

Code: Select all

USBJoystick: joy_remove_device: Removing device USB14
USBJoystick: joy_check_device: (usb service call) +++++++++++++++++++++++++++++++++++
USBJoystick: joy_check_device: Checking device name 'USB15' (sclen 277, descoff 32, class 00, subclass 00, protocol 00)
USBJoystick: joy_check_device: Getting USB descriptors
USBJoystick: usb_get_descriptor_list: device 'USB15'
USBJoystick: joy_check_device: Parsing USB descriptors
USBJoystick: joy_check_device: Device descriptor: Length 18, Type 1, Configurations 1, csDeviceClass 0x0
USBJoystick: joy_check_device: Device descriptor: iManufacturer 1, iProduct 2, iSerialNumber 0
USBJoystick: joy_check_device: Device descriptor: Vendor 0x054c, Product 0x09cc, Device 0x0100
USBJoystick: joy_check_device: Configuration descriptor: Length 9, Type 2, TotalLength 225, NumInterfaces 4 
USBJoystick: joy_check_device: Interface descriptor: Length 9, DescriptorType 4, InterfaceNumber 0, InterfaceClass 1 (3 is HID), iInterface 0, csInterfaceClass 0x10100
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10100
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x1, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10100
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x1, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10100
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x1, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10100
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x1, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10100
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x1, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10100
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x1, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10100
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x1, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Interface descriptor: Length 9, DescriptorType 4, InterfaceNumber 1, InterfaceClass 1 (3 is HID), iInterface 0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: Interface descriptor: Length 9, DescriptorType 4, InterfaceNumber 1, InterfaceClass 1 (3 is HID), iInterface 0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x2, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x2, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: endpoint descriptor: EndpointAddress 1, (on InterfaceNumber 1)
USBJoystick: joy_check_device: endpoint descriptor: OUT endpoint, but no joystick on this interface - ignore
USBJoystick: joy_check_device: Other descriptor: type is 37 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x2, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Interface descriptor: Length 9, DescriptorType 4, InterfaceNumber 2, InterfaceClass 1 (3 is HID), iInterface 0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: Interface descriptor: Length 9, DescriptorType 4, InterfaceNumber 2, InterfaceClass 1 (3 is HID), iInterface 0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x2, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Other descriptor: type is 36 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x2, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: endpoint descriptor: EndpointAddress 130, (on InterfaceNumber 2)
USBJoystick: joy_check_device: endpoint descriptor: We think this isn't a joystick - ignore this endpoint
USBJoystick: joy_check_device: Other descriptor: type is 37 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x10200
USBJoystick: joy_check_device: InterfaceClass 0x1, InterfaceSubClass 0x2, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Not a supported device - aborting
USBJoystick: joy_check_device: Interface descriptor: Length 9, DescriptorType 4, InterfaceNumber 3, InterfaceClass 3 (3 is HID), iInterface 0, csInterfaceClass 0x30000
USBJoystick: joy_check_device: Other descriptor: type is 33 - not Device/Config/Interface/Endpoint
USBJoystick: joy_check_device: csDeviceClass 0x0, csInterfaceClass 0x30000
USBJoystick: joy_check_device: InterfaceClass 0x3, InterfaceSubClass 0x0, InterfaceProtocol 0, Vendor 0x054c, Product 0x09cc
USBJoystick: joy_check_device: Supported device: Standard HID controller (no boot)
USBJoystick: joy_check_device: Assume we are looking at a HID device descriptor
USBJoystick: joy_check_device: Getting HID report descriptor from device...
USBJoystick: get_report_descriptor: HID device descriptor: Length 9, DescriptorType 33, HID 273, country 0, NumDescriptors 1, ReportDescType 34, ReportDescLength 507
USBJoystick: get_report_descriptor: Calculated ReportDescriptorType 32, ReportDescriptorId 2
USBJoystick: get_report_descriptor: Getting HID report descriptor
USBJoystick: usb_get_descriptor: dev 'USB15' wValue 0x2200, wIndex 0, wLength 507
USBJoystick: parse_usb_hid_device_descriptor: Will use joystick number 0 (next available) for this HID parse
USBJoystick: parse_usb_hid_device_descriptor: Shared report descriptor 'rd' (size 251) with libusbhid
USBJoystick: parse_usb_hid_device_descriptor: HID report descriptors use a reportid, so switching from 0 to 1
USBJoystick: parse_usb_hid_device_descriptor: Got hid report size 63 for reportid 1, has_report_id is 1
USBJoystick: parse_usb_hid_device_descriptor: Parse completed - freeing libusbhid report descriptor memory
USBJoystick: parse_usb_hid_device_descriptor: Analysing parse output to build axes info
USBJoystick: parse_usb_hid_device_descriptor: Axis 0, item_usage is 48, type is 5, name is X
USBJoystick: parse_usb_hid_device_descriptor: Axis 1, item_usage is 49, type is 6, name is Y
USBJoystick: parse_usb_hid_device_descriptor: Axis 2, item_usage is 50, type is 7, name is Z
USBJoystick: parse_usb_hid_device_descriptor: Axis 3, item_usage is 53, type is 10, name is RZ
USBJoystick: parse_usb_hid_device_descriptor: Axis 4, item_usage is 51, type is 8, name is RX
USBJoystick: parse_usb_hid_device_descriptor: Axis 5, item_usage is 52, type is 9, name is RY
USBJoystick: parse_usb_hid_device_descriptor: Stick has HAT switch and we have two axes spare to use
USBJoystick: parse_usb_hid_device_descriptor: Joystick/gamepad parsed and configured successfully (joy_slot is 0)
USBJoystick: joy_check_device: Parsed HID report descriptor, got_valid_joystick is 1
USBJoystick: joy_check_device: endpoint descriptor: EndpointAddress 132, (on InterfaceNumber 3)
USBJoystick: joy_check_device: endpoint descriptor: We think this is a joystick (got HID report descriptor and it looks good), so set up
USBJoystick: set_up_joystick: Fill up joystick info for device 'USB15', interface 3, endpoint 132
USBJoystick: usb_get_language: USB15: language 0x0409
USBJoystick: set_up_joystick: String index 1, Manufacturer: 'Sony Interactive Entertainment'
USBJoystick: set_up_joystick: String index 2, Product: 'Wireless Controller'
USBJoystick: set_up_joystick: No serial number string
USBJoystick: set_up_joystick: Constructed DeviceFS path for slot 0, path is: devices#interface=3;endpoint=4;nopad;noblock:USB15
USBJoystick: set_up_joystick: Open a connection to the joystick (id is 0)
USBJoystick: config_fingerprint: slot 0 -> '054c:09cc'
USBJoystick: config_apply: applying saved mapping for '054c:09cc'
USBJoystick: joy_check_device: endpoint descriptor: EndpointAddress 3, (on InterfaceNumber 3)
USBJoystick: joy_check_device: endpoint descriptor: OUT endpoint 3 belongs to slot 0
JonAbbott
Posts: 3314
Joined: Thu Apr 11, 2013
Location: Essex
Contact:

Re: Rumble and wireless assistance

Post by JonAbbott »

richw wrote: Wed Oct 14, 2026 Can you try the attached version?
I've not done all the tests you were after, but here's the Reporter output using test6 of a very quick test. The light locked on 1 correctly when switched on, rumble was a bit hit and miss, some worked as expected, some didn't happen and some just locked the motor on. You can see the stalls in the output which will no doubt be the cause of all those.

Think we need to figure out if the stalls are something ROOL need to fix - a debug version of the USB driver perhaps?

You might also want to put a timestamp on your debug output so you have an idea of the delays involved in the stalls.

Code: Select all

USBJoystick: pktlog: slot 0: non-input packet, 2 bytes: 08 80 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 0f 00 f0 f0 cc fd 8e ac 00 44 8c aa c0 00 05 13 e7 20 1d 30 03 40 01 50 01 ff ff ff 
USBJoystick: pktlog: slot 0: input (header or tail changed) packet, 29 bytes: 00 01 00 13 66 13 00 00 00 00 02 f4 50 10 6e f2 54 fd 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 20 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: led: slot 0: setting player 1 LED, send 1 of 3
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: led: slot 0: setting player 1 LED, send 2 of 3
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 13 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: led: slot 0: setting player 1 LED, send 3 of 3
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 13 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 f8 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 13 a2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 f8 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 f8 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 f8 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
18:37:35.39 [TaskWindow/TaskWindow] usbjoystick_rumble 0 65535 800
USBJoystick: USBJoystick_Rumble: slot 0: low 65535, high 800, 1000 ms
USBJoystick: usb_write: USB5: attempt 1 of 3 failed: USB transfer failed: Stalled
USBJoystick: usb_write: USB5: attempt 2 of 3 succeeded
18:37:40.06 [TaskWindow/TaskWindow] usbjoystick_rumble 0 65535 800
USBJoystick: USBJoystick_Rumble: slot 0: low 65535, high 800, 1000 ms
USBJoystick: usb_write: USB5: attempt 1 of 3 failed: USB transfer failed: Stalled
USBJoystick: usb_write: USB5: attempt 2 of 3 succeeded
18:37:45.46 [TaskWindow/TaskWindow] usbjoystick_rumble 0 65535 800
USBJoystick: USBJoystick_Rumble: slot 0: low 65535, high 800, 1000 ms
18:37:48.08 [TaskWindow/TaskWindow] usbjoystick_rumble 0 65535 800
USBJoystick: USBJoystick_Rumble: slot 0: low 65535, high 800, 1000 ms
18:37:51.60 [TaskWindow/TaskWindow] usbjoystick_rumble 0 65535 800
USBJoystick: USBJoystick_Rumble: slot 0: low 65535, high 800, 1000 ms
18:37:56.35 [TaskWindow/TaskWindow] usbjoystick_rumble 0 65535 800
USBJoystick: USBJoystick_Rumble: slot 0: low 65535, high 800, 1000 ms
USBJoystick: usb_write: USB5: attempt 1 of 3 failed: USB transfer failed: Stalled
USBJoystick: usb_write: USB5: attempt 2 of 3 succeeded
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
USBJoystick: pktlog: slot 0: non-input packet, 29 bytes: 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
Post Reply