I'm doing an ordinary outbound RFCOMM connect that begins with an SDP browse to a Bluetooth Classic accessory. After the first run of my program to successful completion, upon the next run, the controller locks up after establishing the bidirectional ACL link. I have noticed that after re-plugging the dongle, it starts working again. For now, my best idea is to just reset the controller inside my program upon startup.
I'm not sure whether it's a firmware issue, or Bumble does something upon termination that leaves the controller in a bad state, or maybe I'm using Bumble in a way that causes this... Since I'm very new to all of this, I'd appreciate any help.
Steps to reproduce
- Physically plug in an ASUS USB-BT500 dongle
- Run a Bumble script that connects to a Classic peer and does an SDP browse → works
- Let the script exit normally; do not unplug anything
- Run the same script again → hangs; no L2CAP channel is ever established
usb.core.find(idVendor=0x0b05, idProduct=0x190e).reset(), then run again → works
Environment
|
|
| Bumble |
0.0.233 |
| Python |
3.14.4 |
| OS |
macOS 15.7.7 (arm64) |
| Transport |
usb:0 |
| Dongle |
ASUS USB-BT500, VID 0x0B05 PID 0x190E |
| Controller |
Realtek (manufacturer 93), RTL8761B |
| ROM firmware |
HCI v10 rev 11, LMP v10 subver 0x8761 |
| Patched firmware |
HCI v10 rev 57286, LMP v10 subver 0xd922 |
Details
I've looked at the BUMBLE_SNOOPER capture and noted the following:
-
The peer is reachable and does respond — its Info_Req arrives normally. So the ACL link is up and bidirectional at least briefly.
-
After the host's Info_Rsp, no further inbound ACL data arrives at all — 1 inbound packet versus 47 in a working run. The host eventually times out and disconnects.
-
The controller reports Number_Of_Completed_Packets count=1 for each ACL packet the host submits, i.e. it claims to have transmitted them. I cannot tell whether the controller stops transmitting or stops delivering received packets upward.
-
HCI_Reset (which Bumble does issue) does not clear the condition.
I'm doing an ordinary outbound RFCOMM connect that begins with an SDP browse to a Bluetooth Classic accessory. After the first run of my program to successful completion, upon the next run, the controller locks up after establishing the bidirectional ACL link. I have noticed that after re-plugging the dongle, it starts working again. For now, my best idea is to just reset the controller inside my program upon startup.
I'm not sure whether it's a firmware issue, or Bumble does something upon termination that leaves the controller in a bad state, or maybe I'm using Bumble in a way that causes this... Since I'm very new to all of this, I'd appreciate any help.
Steps to reproduce
usb.core.find(idVendor=0x0b05, idProduct=0x190e).reset(), then run again → worksEnvironment
usb:00x0B05PID0x190E0x87610xd922Details
I've looked at the
BUMBLE_SNOOPERcapture and noted the following:The peer is reachable and does respond — its
Info_Reqarrives normally. So the ACL link is up and bidirectional at least briefly.After the host's
Info_Rsp, no further inbound ACL data arrives at all — 1 inbound packet versus 47 in a working run. The host eventually times out and disconnects.The controller reports
Number_Of_Completed_Packets count=1for each ACL packet the host submits, i.e. it claims to have transmitted them. I cannot tell whether the controller stops transmitting or stops delivering received packets upward.HCI_Reset(which Bumble does issue) does not clear the condition.