Pi5 CloudHub + Sinden Lightguns issue

Hi there,

I'm running the CloudHub version 4.8.5 on a Raspberry Pi 5 with a powered hub, two sinden lightguns and a bluetooth dongle.

For the client I'm running Batocera Linux v42 with kernel 6.15.11 with VirtualHere client version 5.9.4.
Kernel command line:
BOOT_IMAGE=/boot/linux label=BATOCERA console=tty3 quiet loglevel=0 vt.global_cursor_default=0 initrd=/boot/initrd.gz

Both guns have been updated to the latest firmware version 2.1.

Now the bluetooth dongle is working fine, however the guns are not.
Each gun basically exposes a controller device and a video device that basically acts like a webcam.
The controller works, but video seems messed up, because the crosshairs are all over the place.

Client kernel log:
[   27.371006] vhci_hcd vhci_hcd.0: USB/IP Virtual Host Controller
[   27.371010] vhci_hcd vhci_hcd.0: new USB bus registered, assigned bus number 9
[   27.371018] vhci_hcd: created sysfs vhci_hcd.0
[   27.371052] usb usb9: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.15
[   27.371055] usb usb9: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   27.371056] usb usb9: Product: USB/IP Virtual Host Controller
[   27.371058] usb usb9: Manufacturer: Linux 6.15.11 vhci_hcd
[   27.371059] usb usb9: SerialNumber: vhci_hcd.0
[   27.371190] hub 9-0:1.0: USB hub found
[   27.371196] hub 9-0:1.0: 8 ports detected
[   27.371475] vhci_hcd vhci_hcd.0: USB/IP Virtual Host Controller
[   27.371477] vhci_hcd vhci_hcd.0: new USB bus registered, assigned bus number 10
[   27.371491] usb usb10: We don't know the algorithms for LPM for this host, disabling LPM.
[   27.371514] usb usb10: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.15
[   27.371516] usb usb10: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   27.371517] usb usb10: Product: USB/IP Virtual Host Controller
[   27.371519] usb usb10: Manufacturer: Linux 6.15.11 vhci_hcd
[   27.371520] usb usb10: SerialNumber: vhci_hcd.0
[   27.371654] hub 10-0:1.0: USB hub found
[   27.371660] hub 10-0:1.0: 8 ports detected
[   27.645379] vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(13)
[   27.645383] vhci_hcd vhci_hcd.0: devid(4) speed(3) speed_str(high-speed)
[   27.645389] vhci_hcd vhci_hcd.0: Device attached
[   27.870290] usb 9-1: new high-speed USB device number 2 using vhci_hcd
[   27.901334] vhci_hcd vhci_hcd.0: pdev(0) rhport(1) sockfd(13)
[   27.901340] vhci_hcd vhci_hcd.0: devid(5) speed(3) speed_str(high-speed)
[   27.901346] vhci_hcd vhci_hcd.0: Device attached
[   27.986977] usb 9-1: SetAddress Request (2) to port 0
[   28.007215] usb 9-1: New USB device found, idVendor=32e4, idProduct=9210, bcdDevice= 1.00
[   28.007218] usb 9-1: New USB device strings: Mfr=1, Product=2, SerialNumber=2
[   28.007219] usb 9-1: Product: SindenCameraN
[   28.007221] usb 9-1: Manufacturer: SindenCameraN
[   28.007222] usb 9-1: SerialNumber: SindenCameraN
[   28.101239] videodev: Linux video capture interface: v2.00
[   28.109657] usb 9-1: Found UVC 1.00 device SindenCameraN (32e4:9210)
[   28.141587] usb 9-1: Bandwidth capped from 2688 to 1000 B/frame.
[   28.142527] usb 9-1: Bandwidth capped from 2688 to 1000 B/frame.
[   28.142713] usbcore: registered new interface driver uvcvideo
[   28.144392] vhci_hcd: unlink->seqnum 32
[   28.144394] vhci_hcd: urb->status -104
[   28.333625] usb 9-2: new high-speed USB device number 3 using vhci_hcd
[   28.404240] vhci_hcd: unlink->seqnum 35
[   28.404243] vhci_hcd: urb->status -104
[   28.404486] vhci_hcd: unlink->seqnum 37
[   28.404488] vhci_hcd: urb->status -104
[   28.445354] vhci_hcd vhci_hcd.0: pdev(0) rhport(2) sockfd(13)
[   28.445358] vhci_hcd vhci_hcd.0: devid(6) speed(2) speed_str(full-speed)
[   28.445364] vhci_hcd vhci_hcd.0: Device attached
[   28.453636] usb 9-2: SetAddress Request (3) to port 1
[   28.474250] usb 9-2: New USB device found, idVendor=32e4, idProduct=9210, bcdDevice= 1.00
[   28.474253] usb 9-2: New USB device strings: Mfr=1, Product=2, SerialNumber=2
[   28.474255] usb 9-2: Product: SindenCameraP
[   28.474256] usb 9-2: Manufacturer: SindenCameraP
[   28.474257] usb 9-2: SerialNumber: SindenCameraP
[   28.540988] usb 9-2: Found UVC 1.00 device SindenCameraP (32e4:9210)
[   28.573636] usb 9-2: Bandwidth capped from 2688 to 1000 B/frame.
[   28.574585] usb 9-2: Bandwidth capped from 2688 to 1000 B/frame.
[   28.576308] vhci_hcd: unlink->seqnum 68
[   28.576310] vhci_hcd: urb->status -104
[   28.760300] vhci_hcd: vhci_device speed not set
[   28.813631] usb 9-3: new full-speed USB device number 4 using vhci_hcd
[   28.830982] vhci_hcd: unlink->seqnum 71
[   28.830985] vhci_hcd: urb->status -104
[   28.831260] vhci_hcd: unlink->seqnum 73
[   28.831262] vhci_hcd: urb->status -104
[   28.876968] vhci_hcd: vhci_device speed not set
[   28.930300] usb 9-3: SetAddress Request (4) to port 2
[   28.957371] vhci_hcd vhci_hcd.0: pdev(0) rhport(3) sockfd(13)
[   28.957373] vhci_hcd vhci_hcd.0: devid(7) speed(2) speed_str(full-speed)
[   28.957377] vhci_hcd vhci_hcd.0: Device attached
[   28.961716] usb 9-3: New USB device found, idVendor=16c0, idProduct=0f01, bcdDevice= 1.00
[   28.961719] usb 9-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   28.961720] usb 9-3: Product: SindenLightgun
[   28.961722] usb 9-3: Manufacturer: Unknown
[   28.961723] usb 9-3: SerialNumber: HIDLG
[   29.087061] input: Unknown SindenLightgun Keyboard as /devices/platform/vhci_hcd.0/usb9/9-3/9-3:1.2/0003:16C0:0F01.0007/input/input21
[   29.143741] input: Unknown SindenLightgun Mouse as /devices/platform/vhci_hcd.0/usb9/9-3/9-3:1.2/0003:16C0:0F01.0007/input/input22
[   29.143876] hid-generic 0003:16C0:0F01.0007: input,hidraw2: USB HID v1.01 Keyboard [Unknown SindenLightgun] on usb-vhci_hcd.0-3/input2
[   29.147029] cdc_acm 9-3:1.0: ttyACM0: USB ACM device
[   29.147058] usbcore: registered new interface driver cdc_acm
[   29.147060] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[   29.309733] vhci_hcd vhci_hcd.0: pdev(0) rhport(4) sockfd(13)
[   29.309738] vhci_hcd vhci_hcd.0: devid(8) speed(2) speed_str(full-speed)
[   29.309744] vhci_hcd vhci_hcd.0: Device attached
[   29.326961] vhci_hcd: vhci_device speed not set
[   29.383639] usb 9-4: new full-speed USB device number 5 using vhci_hcd
[   29.446971] vhci_hcd: vhci_device speed not set
[   29.500313] usb 9-4: SetAddress Request (5) to port 3
[   29.519467] usb 9-4: New USB device found, idVendor=16c0, idProduct=0f02, bcdDevice= 1.00
[   29.519471] usb 9-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   29.519473] usb 9-4: Product: SindenLightgun
[   29.519474] usb 9-4: Manufacturer: Unknown
[   29.519476] usb 9-4: SerialNumber: HIDLG
[   29.629623] cdc_acm 9-4:1.0: ttyACM1: USB ACM device
[   29.631662] input: Unknown SindenLightgun Keyboard as /devices/platform/vhci_hcd.0/usb9/9-4/9-4:1.2/0003:16C0:0F02.0008/input/input23
[   29.641306] input: Sinden lightgun as /devices/virtual/input/input25
[   29.683751] input: Unknown SindenLightgun Mouse as /devices/platform/vhci_hcd.0/usb9/9-4/9-4:1.2/0003:16C0:0F02.0008/input/input24
[   29.683974] hid-generic 0003:16C0:0F02.0008: input,hidraw5: USB HID v1.01 Keyboard [Unknown SindenLightgun] on usb-vhci_hcd.0-4/input2
[   29.832948] vhci_hcd: unlink->seqnum 108
[   29.832952] vhci_hcd: urb->status -104
[   29.833232] vhci_hcd: unlink->seqnum 110
[   29.833235] vhci_hcd: urb->status -104
[   29.853751] vhci_hcd: unlink->seqnum 158
[   29.853754] vhci_hcd: urb->status -104
[   29.858563] vhci_hcd: unlink->seqnum 171
[   29.858565] vhci_hcd: urb->status -104
[   29.859462] vhci_hcd: unlink->seqnum 175
[   29.859463] vhci_hcd: urb->status -104
[   29.859536] vhci_hcd: unlink->seqnum 177
[   29.859537] vhci_hcd: urb->status -104
[   29.876956] vhci_hcd: vhci_device speed not set
[   29.878945] vhci_hcd: unlink->seqnum 225
[   29.878947] vhci_hcd: urb->status -104
[   29.883613] vhci_hcd: unlink->seqnum 238
[   29.883615] vhci_hcd: urb->status -104
[   29.884515] vhci_hcd: unlink->seqnum 242
[   29.884516] vhci_hcd: urb->status -104
[   29.884591] vhci_hcd: unlink->seqnum 244
[   29.884592] vhci_hcd: urb->status -104
[   29.884865] vhci_hcd: unlink->seqnum 246
[   29.884866] vhci_hcd: urb->status -104
[   29.884962] vhci_hcd: unlink->seqnum 248
[   29.884963] vhci_hcd: urb->status -104
[   29.885027] vhci_hcd: unlink->seqnum 250
[   29.885028] vhci_hcd: urb->status -104
[   29.885101] vhci_hcd: unlink->seqnum 252
[   29.885102] vhci_hcd: urb->status -104
[   29.930305] usb 9-5: new full-speed USB device number 6 using vhci_hcd
[   29.996969] vhci_hcd: vhci_device speed not set
[   30.050311] usb 9-5: SetAddress Request (6) to port 4
[   30.068218] usb 9-5: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[   30.068221] usb 9-5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[   30.144954] usbcore: registered new interface driver btusb
[   30.146186] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=6 rev=22bb
[   30.146188] Bluetooth: hci0: LMP ver=6 subver=22bb; manufacturer=10
[   30.217288] input: Sinden lightgun as /devices/virtual/input/input26
[   30.324329] Bluetooth: MGMT ver 1.23
[   30.326408] NET: Registered PF_ALG protocol family
[   30.337723] Bluetooth: RFCOMM TTY layer initialized
[   30.337729] Bluetooth: RFCOMM socket layer initialized
[   30.337732] Bluetooth: RFCOMM ver 1.11
[   33.270940] vhci_hcd: unlink->seqnum 575
[   33.270944] vhci_hcd: urb->status -104
[   33.344264] vhci_hcd: unlink->seqnum 580
[   33.344266] vhci_hcd: urb->status -104
[   33.350853] vhci_hcd: unlink->seqnum 582
[   33.350855] vhci_hcd: urb->status -104
[   33.352762] vhci_hcd: unlink->seqnum 585
[   33.352765] vhci_hcd: urb->status -104
[   33.352825] vhci_hcd: unlink->seqnum 586
[   33.352827] vhci_hcd: urb->status -104
[   33.354267] usb 9-1: Bandwidth capped from 2688 to 1000 B/frame.
[   33.354705] usb 9-1: Bandwidth capped from 2688 to 1000 B/frame.
[   33.355650] usb 9-1: Bandwidth capped from 2688 to 1000 B/frame.
[   33.631088] usb usb9: Not yet implemented
[   33.631094] usb usb9: Not yet implemented
[   33.631096] usb usb9: Not yet implemented
[   33.631097] usb usb9: Not yet implemented
[   33.631099] usb usb9: Not yet implemented
[   33.631101] usb usb9: Not yet implemented
[   33.631102] usb usb9: Not yet implemented
[   33.631104] usb usb9: Not yet implemented
[   33.631105] usb usb9: Not yet implemented
[   33.631107] usb usb9: Not yet implemented
[   33.744041] vhci_hcd: unlink->seqnum 692
[   33.744044] vhci_hcd: urb->status -104
[   33.761018] vhci_hcd: unlink->seqnum 698
[   33.761021] vhci_hcd: urb->status -104
[   33.762875] vhci_hcd: unlink->seqnum 700
[   33.762876] vhci_hcd: urb->status -104
[   33.764283] usb 9-2: Bandwidth capped from 2688 to 1000 B/frame.
[   33.764737] usb 9-2: Bandwidth capped from 2688 to 1000 B/frame.
[   33.765666] usb 9-2: Bandwidth capped from 2688 to 1000 B/frame.
[   38.635330] vhci_get_frame_number: 55278 callbacks suppressed
[   38.635333] usb usb9: Not yet implemented
[   38.635335] usb usb9: Not yet implemented
[   38.635336] usb usb9: Not yet implemented
[   38.635337] usb usb9: Not yet implemented
[   38.635338] usb usb9: Not yet implemented
[   38.635340] usb usb9: Not yet implemented
[   38.635341] usb usb9: Not yet implemented
[   38.635342] usb usb9: Not yet implemented
[   38.635343] usb usb9: Not yet implemented
[   38.635344] usb usb9: Not yet implemented
[   43.641669] vhci_get_frame_number: 57836 callbacks suppressed
[   43.641673] usb usb9: Not yet implemented
[   43.641676] usb usb9: Not yet implemented
[   43.641678] usb usb9: Not yet implemented
[   43.641680] usb usb9: Not yet implemented
[   43.641681] usb usb9: Not yet implemented
[   43.641682] usb usb9: Not yet implemented
[   43.641684] usb usb9: Not yet implemented
[   43.641685] usb usb9: Not yet implemented
[   43.641686] usb usb9: Not yet implemented
[   43.641688] usb usb9: Not yet implemented
[   48.646034] vhci_get_frame_number: 57741 callbacks suppressed
[   48.646037] usb usb9: Not yet implemented
[   48.646041] usb usb9: Not yet implemented
[   48.646043] usb usb9: Not yet implemented
[   48.646044] usb usb9: Not yet implemented
[   48.646046] usb usb9: Not yet implemented
[   48.646047] usb usb9: Not yet implemented
[   48.646049] usb usb9: Not yet implemented
[   48.646050] usb usb9: Not yet implemented
[   48.646052] usb usb9: Not yet implemented
[   48.646053] usb usb9: Not yet implemented
[   53.652348] vhci_get_frame_number: 57715 callbacks suppressed
[   53.652352] usb usb9: Not yet implemented
[   53.652355] usb usb9: Not yet implemented
[   53.652357] usb usb9: Not yet implemented
[   53.652358] usb usb9: Not yet implemented
[   53.652360] usb usb9: Not yet implemented
[   53.652362] usb usb9: Not yet implemented
[   53.652363] usb usb9: Not yet implemented
[   53.652365] usb usb9: Not yet implemented
[   53.652366] usb usb9: Not yet implemented
[   53.652368] usb usb9: Not yet implemented
[   58.658694] vhci_get_frame_number: 57805 callbacks suppressed
[   58.658696] usb usb9: Not yet implemented
[   58.658699] usb usb9: Not yet implemented
[   58.658700] usb usb9: Not yet implemented
[   58.658701] usb usb9: Not yet implemented
[   58.658702] usb usb9: Not yet implemented
[   58.658703] usb usb9: Not yet implemented
[   58.658705] usb usb9: Not yet implemented
[   58.658706] usb usb9: Not yet implemented
[   58.658707] usb usb9: Not yet implemented
[   58.658708] usb usb9: Not yet implemented
[   63.665040] vhci_get_frame_number: 57765 callbacks suppressed
[   63.665043] usb usb9: Not yet implemented
[   63.665045] usb usb9: Not yet implemented
[   63.665047] usb usb9: Not yet implemented
[   63.665048] usb usb9: Not yet implemented
[   63.665049] usb usb9: Not yet implemented
[   63.665050] usb usb9: Not yet implemented
[   63.665051] usb usb9: Not yet implemented
[   63.665052] usb usb9: Not yet implemented
[   63.665053] usb usb9: Not yet implemented
[   63.665054] usb usb9: Not yet implemented
[   68.669403] vhci_get_frame_number: 57485 callbacks suppressed
[   68.669406] usb usb9: Not yet implemented
[   68.669409] usb usb9: Not yet implemented
[   68.669411] usb usb9: Not yet implemented
[   68.669412] usb usb9: Not yet implemented
[   68.669414] usb usb9: Not yet implemented
[   68.669415] usb usb9: Not yet implemented
[   68.669416] usb usb9: Not yet implemented
[   68.669418] usb usb9: Not yet implemented
[   68.669419] usb usb9: Not yet implemented
[   68.669420] usb usb9: Not yet implemented
[   73.675721] vhci_get_frame_number: 57536 callbacks suppressed
[   73.675724] usb usb9: Not yet implemented
[   73.675726] usb usb9: Not yet implemented
[   73.675727] usb usb9: Not yet implemented
[   73.675728] usb usb9: Not yet implemented
[   73.675729] usb usb9: Not yet implemented
[   73.675731] usb usb9: Not yet implemented
[   73.675732] usb usb9: Not yet implemented
[   73.675733] usb usb9: Not yet implemented
[   73.675734] usb usb9: Not yet implemented
[   73.675735] usb usb9: Not yet implemented
[   78.682072] vhci_get_frame_number: 57513 callbacks suppressed
[   78.682074] usb usb9: Not yet implemented
[   78.682077] usb usb9: Not yet implemented
[   78.682078] usb usb9: Not yet implemented
[   78.682079] usb usb9: Not yet implemented
[   78.682080] usb usb9: Not yet implemented
[   78.682081] usb usb9: Not yet implemented
[   78.682082] usb usb9: Not yet implemented
[   78.682083] usb usb9: Not yet implemented
[   78.682084] usb usb9: Not yet implemented
[   78.682086] usb usb9: Not yet implemented
[   83.688432] vhci_get_frame_number: 57453 callbacks suppressed
[   83.688436] usb usb9: Not yet implemented
[   83.688438] usb usb9: Not yet implemented
[   83.688440] usb usb9: Not yet implemented
[   83.688441] usb usb9: Not yet implemented
[   83.688442] usb usb9: Not yet implemented
[   83.688444] usb usb9: Not yet implemented
[   83.688445] usb usb9: Not yet implemented
[   83.688446] usb usb9: Not yet implemented
[   83.688447] usb usb9: Not yet implemented
[   83.688449] usb usb9: Not yet implemented
[   88.692758] vhci_get_frame_number: 57512 callbacks suppressed
[   88.692762] usb usb9: Not yet implemented
[   88.692766] usb usb9: Not yet implemented
[   88.692768] usb usb9: Not yet implemented
[   88.692769] usb usb9: Not yet implemented
[   88.692770] usb usb9: Not yet implemented
[   88.692772] usb usb9: Not yet implemented
[   88.692773] usb usb9: Not yet implemented
[   88.692774] usb usb9: Not yet implemented
[   88.692776] usb usb9: Not yet implemented
[   88.692777] usb usb9: Not yet implemented
[   91.320393] udevd[590]: worker [2294] /devices/platform/vhci_hcd.0/usb9/9-4/9-4:1.2/0003:16C0:0F02.0008/input/input23/event13 is taking a long time
[   91.320404] udevd[590]: worker [2276] /devices/platform/vhci_hcd.0/usb9/9-3/9-3:1.2/0003:16C0:0F01.0007/input/input22/event12 is taking a long time
[   93.699104] vhci_get_frame_number: 57582 callbacks suppressed
[   93.699107] usb usb9: Not yet implemented
[   93.699110] usb usb9: Not yet implemented
[   93.699112] usb usb9: Not yet implemented
[   93.699113] usb usb9: Not yet implemented
[   93.699114] usb usb9: Not yet implemented
[   93.699116] usb usb9: Not yet implemented
[   93.699117] usb usb9: Not yet implemented
[   93.699118] usb usb9: Not yet implemented
[   93.699119] usb usb9: Not yet implemented
[   93.699121] usb usb9: Not yet implemented

Client status:
[root@BATOCERA ~]# ./vhclientx86_64 -t list
VirtualHere Client IPC, below are the available devices:
(Value in brackets = address, * = Auto-Use)

Pi5 (CloudHub_41bd5d:7575)
  --> XBOX ACC (CloudHub_41bd5d.3142)
  --> IDLE (CloudHub_41bd5d.311)
 *--> 0x0001 (CloudHub_41bd5d.313) (In-use by you)
 *--> (/dev/ttyACM1) SindenLightgun (CloudHub_41bd5d.314412) (In-use by you)
  --> USB Receiver (CloudHub_41bd5d.31442)
  --> IDLE (CloudHub_41bd5d.31444)
 *--> (/dev/ttyACM0) SindenLightgun (CloudHub_41bd5d.3122) (In-use by you)
 *--> SindenCameraP (CloudHub_41bd5d.314411) (In-use by you)
 *--> SindenCameraN (CloudHub_41bd5d.3121) (In-use by you)

Auto-Find currently on
Auto-Use All currently off
Reverse Lookup currently off
Reverse SSL Lookup currently off
VirtualHere Client is running as a service

Any idea how to improve this?

I've tried to increase usbfs_memory_mb to 1000 on the Raspberry Pi5:

cat /etc/init.d/vhusbd
#!/bin/sh /etc/rc.common
USE_PROCD=1
echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb

START=99

start_service() {
 procd_open_instance
 procd_set_param command /root/vhusbdchpi5
 procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
 procd_close_instance
}


But that didn't help either.

I've read stories that the guns were working for users using some nvidia shield device as a host.
So I expected the same from a Pi5.
 

#2

I don't think its a server issue. I think it is a client side issue. In batocera linux (the linux kernel) it is not providing all the APIs needed to stream the (virtual) camera properly. Note the entries "Not implemented" ... that is asking for a frame counter which is not supplied.

 

#4

Its literally not implemented in the kernel.  https://github.com/torvalds/linux/blob/7bb4d6512545a792a6cd8d6c8be5718920b9b11a/drivers/usb/usbip/vhci_hcd.c#L1273

I dont think its actually fixable. I think it might be trying to sync with a frame number which is not available due to it being a virtual host controller. 

Does it work ok just with 1 sinden lightgun or at least better than with two?
 

(I do see some bandwidth limiting messages too but i took a look a the kernel and i dont think thats a big issue.)