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.
dmesg:
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
hciconfig:
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)”
Hi Jorge,
Just to let you know, with my MacBook Pro’s built into Bluetooth, I’ve tested controlling 3x Move Hubs, 7x Powered Up Hubs, 4x Powered Up remotes, and 1x WeDo 2.0 Smart Hub, cycling LED colours with almost no latency. I’ve also tried with controlling motors. So perhaps this is an adapter specific thing.
The only exception to this is the WeDo 2.0 hub – it seems to have slightly slower hardware, as the LED changes a couple of milliseconds after all the others.
Cheers,
Nathan
Thanks.
That is in line with the latest statements from LEGO, they said they use 10 connections from an iPhone.
Can you check what is your BT chipset? And you have a pause between each loop iteraction without loosing connection?
I suppose your test was with node.js?
Yes, it was with my Node.js library – https://github.com/nathankellenicki/node-poweredup/
I pause for about two seconds between cycling colors. Perhaps if you’re using Bash commands there’s no running process keeping the socket open between them? Not sure how gatttool works. 🙂
My system report says my adapter is a Broadcom 20703A1 chipset.