Found my BT BLE dongle with the Broadcom chipset.
It’s a “Targus Bluetooth v4.0 Dual-mode Dongle ACB75A” that is sold at Staples.
usb 1-1: new full-speed USB device number 9 using xhci_hcd usb 1-1: New USB device found, idVendor=0a5c, idProduct=21e8 usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1: Product: BCM20702A0 usb 1-1: Manufacturer: Broadcom Corp usb 1-1: SerialNumber: 5CF370878D54 Bluetooth: hci1: BCM: chip id 63 Bluetooth: hci1: BCM: features 0x07 Bluetooth: hci1: BCM20702A Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000 bluetooth hci1: Direct firmware load for brcm/BCM20702A1-0a5c-21e8.hcd failed with error -2 Bluetooth: hci1: BCM: Patch brcm/BCM20702A1-0a5c-21e8.hcd not found
hci1: Type: Primary Bus: USB BD Address: 5C:F3:70:87:8D:54 ACL MTU: 1021:8 SCO MTU: 64:1 UP RUNNING RX bytes:1052 acl:0 sco:0 events:63 errors:0 TX bytes:4898 acl:0 sco:0 commands:63 errors:0 Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH SNIFF Link mode: SLAVE ACCEPT Name: 'xxxx' Class: 0x1c010c Service Classes: Rendering, Capturing, Object Transfer Device Class: Computer, Laptop HCI Version: 4.0 (0x6) Revision: 0x1000 LMP Version: 4.0 (0x6) Subversion: 0x220e Manufacturer: Broadcom Corporation (15)
so it’s a Broadcom BCM20702A chipset and my Ubuntu doesn’t find the firmware needed. It still works without firmware but I went after it.
This site helped:
wget https://s3.amazonaws.com/plugable/bin/fw-0a5c_21e8.hcd sudo cp fw-0a5c_21e8.hcd /lib/firmware/brcm/BCM20702A1-0a5c-21e8.hcd
I got my script working with 6 LEGO BLE devices. And 7. And even 8:
But latency isn’t great (with 8 I had to decrease the loop period from 1 second to 0.25 to prevent connection drops and even send the initial command twice to the Handset to hold the session) so even if it supports 14 sessions I doubt that we can make good use of 14 LEGO LPF2 hubs with just one dongle.
To reduce latency we can add more dongles. But even so, when a command takes 0.2 to 0.3 seconds to complete before we can send the next one, it’s hardly interesting for robotics. A Powered Up based robot will require a real autonomous device, able to read its own sensors and react on the fly, not with half a second round trip delay to the “brain”.
Also tried the script without the firmware. It works but with a few “connect error: Function not implemented (38)”.
And also re-tried the Cambridge CSR 4.0. It clearly states that it can’t handle the sixth: “connect error: Too many links (31)”