Open Ballo-02 opened 2 years ago
Hi. Clearly, the SDP logic here in sdp.py is incomplete, as it isn't dealing with error responses correctly. The AttributeError: 'SDP_ErrorResponse' object has no attribute 'attribute_lists'
exception is due to the fact that the parser expects a "normal" response, but in your case it is getting an error response, and the parser isn't checking for that. So I'll put that on the list of things to fix.
Now, the other question is: why are you getting an error response in the first place. From the log, we see that you're receiving an SDP_ERROR_RESPONSE
with error_code: [0x300]
. (the error code is incorrectly printed here, it should have been read as big-endian, so code==3, I'll push a fix for that). That's Invalid request syntax
. Since I see from the logs here that the SDP protocol has already completed multiple rounds, this isn't just a basic error, there's something that happens during the exchange that the peer doesn't like. I will look at the log in more detail shortly and followup on this thread.
Hi,
I've managed to fix this issue.
The function find_hf_sdp_record
fails because of what you have already stated (that is, no management of an Error response from the SDP client).
Now the question is: why is returning an error response ? and i've figured that is because the search_attributes
is probed with wrong data at some point.
By removing sdp.SDP_SERVICE_CLASS_ID_LIST_ATTRIBUTE_ID
, the function works flawlessly and i'm able to retrieve the RFComm channel necessary to proceed with a simulation of an Audio Gateway.
The fix is easy, although i'm not 100% sure it is the way to go to finally fix the issue.
What do you think ?
I'd love to be able to reproduce the error here to see what exactly the error looks like and whether it is really non-compliant to search for sdp.SDP_SERVICE_CLASS_ID_LIST_ATTRIBUTE_ID
, or if this an problem that's device specific, in which case including it or not would have to be gated by an option.
What device are you testing against? (if that's a device I could somehow find, or another device in the same family with possibly the same behavior)
Hi @barbibulle .
I was testing it with an S24 Ultra.
As i was saying above, rewriting the SDP Record query without sdp.SDP_SERVICE_CLASS_ID_LIST_ATTRIBUTE_ID
, fixed for my specific scenario.
I would like to understand how come. It looks that for some devices, the currently formatted query return an error, while for others it works just fine.
It's a little bit weird because S24 Ultra shouldn't enable HFP HF unless its property is overwritten. Still, I use the latest version of run_hfp_gateway.py to connect Pixel phones and the problem cannot be reproduced. Even if there isn't matched SDP record, host should reply a valid response with an empty attribute list instead of invalid syntax?
When running this script
run_hfp_gateway.py
I manage to connect to the HFP but get as far as searching for the attribute list which is it tells me is none existent (incorrect). I've narrowed down the error to line 471 ofsdp.py
'cls = SDP_PDU.sdp_pdu_classes.get(pdu_id)' as this comes back with an SDP error and I cannot step into it look further.Attribute Error: Exception has occurred: AttributeError 'SDP_ErrorResponse' object has no attribute 'attribute_lists' File "/home/anyone/Downloads/test/bumble/examples/run_hfp_gateway.py", line 50, in list_rfcomm_channels search_result = await sdp_client.search_attributes( File "/home/anyone/Downloads/test/bumble/examples/run_hfp_gateway.py", line 133, in main channels = await list_rfcomm_channels(device, connection) File "/home/anyone/Downloads/test/bumble/examples/run_hfp_gateway.py", line 209, in
asyncio.run(main())
Console Output: anyone@User1:~/Downloads/bumble$ sudo python3.9 examples/run_hfp_gateway.py DEBUG:asyncio:Using selector: EpollSelector <<< connecting to HCI... DEBUG:bumble.transport.usb:USB Device: Bus 001 Device 003: ID 0a12:0001 DEBUG:bumble.transport.usb:selected endpoints: configuration=1, interface=0, setting=0, acl_in=0x82, acl_out=0x02, events_in=0x81, DEBUG:bumble.transport.usb:current configuration = 1 DEBUG:bumble.transport.usb:starting USB event loop <<< connected DEBUG:bumble.keys:JSON keystore: /root/.local/share/Bumble/Pairing/00-00-00-00-00-00.json DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_RESET_COMMAND DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:reset not done, ignoring packet from controller DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_RESET_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_READ_LOCAL_SUPPORTED_COMMANDS_COMMAND DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_READ_LOCAL_SUPPORTED_COMMANDS_COMMAND return_parameters:
asyncio.run(main())
File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
return future.result()
File "/home/anyone/Downloads/bumble/examples/run_hfp_gateway.py", line 134, in main
channels = await list_rfcomm_channels(device, connection)
File "/home/anyone/Downloads/bumble/examples/run_hfp_gateway.py", line 50, in list_rfcomm_channels
search_result = await sdp_client.search_attributes(
File "/usr/local/lib/python3.9/dist-packages/bumble/sdp.py", line 718, in search_attributes
accumulator += response.attribute_lists
AttributeError: 'SDP_ErrorResponse' object has no attribute 'attribute_lists'
status: HCI_SUCCESS supported_commands: ffffff03fefffffffffffffff30fe8fe3ff783ff1c00000061f7ffff7f0000000000000000000000000000000000000000000000000000000000000000000000 DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_LE_READ_LOCAL_SUPPORTED_FEATURES_COMMAND DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_LE_READ_LOCAL_SUPPORTED_FEATURES_COMMAND return_parameters:
status: HCI_SUCCESS le_features: 0100000000000000 DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_READ_LOCAL_VERSION_INFORMATION_COMMAND DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_READ_LOCAL_VERSION_INFORMATION_COMMAND return_parameters:
status: HCI_SUCCESS hci_version: 6 hci_subversion: 8891 lmp_version: 6 company_identifier: 10 lmp_subversion: 8891 DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_SET_EVENT_MASK_COMMAND: event_mask: ffffffffffffff3f DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_SET_EVENT_MASK_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_LE_SET_EVENT_MASK_COMMAND: le_event_mask: 1f00000000000000 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_LE_SET_EVENT_MASK_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_READ_BUFFER_SIZE_COMMAND DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_READ_BUFFER_SIZE_COMMAND return_parameters:
status: HCI_SUCCESS hc_acl_data_packet_length: 310 hc_synchronous_data_packet_length: 64 hc_total_num_acl_data_packets: 10 hc_total_num_synchronous_data_packets: 8 DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_LE_READ_BUFFER_SIZE_COMMAND DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_LE_READ_BUFFER_SIZE_COMMAND return_parameters:
status: HCI_SUCCESS hc_le_acl_data_packet_length: 0 hc_total_num_le_acl_data_packets: 0 DEBUG:bumble.host:HCI ACL flow control: hc_acl_data_packet_length=310,hc_total_num_acl_data_packets=10 DEBUG:bumble.host:HCI LE ACL flow control: hc_le_acl_data_packet_length=310,hc_total_num_le_acl_data_packets=10 DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_READ_BD_ADDR_COMMAND DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_READ_BD_ADDR_COMMAND return_parameters:
status: HCI_SUCCESS bd_addr: C0:FB:F9:60:7D:EC/P DEBUG:bumble.device:BD_ADDR: C0:FB:F9:60:7D:EC/P DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_WRITE_LE_HOST_SUPPORT_COMMAND: le_supported_host: 1 simultaneous_le_host: 1 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_WRITE_LE_HOST_SUPPORT_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_LE_SET_RANDOM_ADDRESS_COMMAND: random_address: 00:00:00:00:00:00 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_LE_SET_RANDOM_ADDRESS_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_WRITE_LOCAL_NAME_COMMAND: local_name: 42756d626c652050686f6e65 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_WRITE_LOCAL_NAME_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_WRITE_CLASS_OF_DEVICE_COMMAND: class_of_device: [60020C] Services(Audio,Telephony),Class(Phone|Smartphone) DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_WRITE_CLASS_OF_DEVICE_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_WRITE_SIMPLE_PAIRING_MODE_COMMAND: simple_pairing_mode: 1 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_WRITE_SIMPLE_PAIRING_MODE_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT_COMMAND: secure_connections_host_support: 1 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_STATUS_EVENT: status: HCI_UNKNOWN_HCI_COMMAND_ERROR num_hci_command_packets: 1 command_opcode: HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT_COMMAND DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_WRITE_SCAN_ENABLE_COMMAND: scan_enable: 3 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_WRITE_SCAN_ENABLE_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_WRITE_EXTENDED_INQUIRY_RESPONSE_COMMAND: fec_required: 0 extended_inquiry_response: 0d0942756d626c652050686f6e65 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_WRITE_EXTENDED_INQUIRY_RESPONSE_COMMAND return_parameters: HCI_SUCCESS DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_WRITE_SCAN_ENABLE_COMMAND: scan_enable: 3 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_COMPLETE_EVENT: num_hci_command_packets: 1 command_opcode: HCI_WRITE_SCAN_ENABLE_COMMAND return_parameters: HCI_SUCCESS === Connecting to XX:XX:XX:XX:XX:XX... DEBUG:bumble.host:### HOST -> CONTROLLER: HCI_CREATE_CONNECTION_COMMAND: bd_addr: XX:XX:XX:XX:XX:XX/P packet_type: 52248 page_scan_repetition_mode: 2 reserved: 0 clock_offset: 0 allow_role_switch: 1 DEBUG:bumble.transport.usb:submit COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_COMMAND_STATUS_EVENT: status: PENDING num_hci_command_packets: 1 command_opcode: HCI_CREATE_CONNECTION_COMMAND DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_CONNECTION_COMPLETE_EVENT: status: HCI_SUCCESS connection_handle: 72 bd_addr: XX:XX:XX:XX:XX:XX/P link_type: ACL encryption_enabled: 0 DEBUG:bumble.host:### BR/EDR CONNECTION: [0x0048] XX:XX:XX:XX:XX:XX/P DEBUG:bumble.device:*** Connection: [0x0048] XX:XX:XX:XX:XX:XX/P as CENTRAL === Connected to XX:XX:XX:XX:XX:XX/P! DEBUG:bumble.l2cap:creating client channel with cid=64 for psm 1 DEBUG:bumble.l2cap:Channel(64->0, PSM=1, MTU=48, state=CLOSED) state change -> WAIT_CONNECT_RSP DEBUG:bumble.l2cap:>>> Sending L2CAP Signaling Control Frame on connection [0x0048] (CID=1) XX:XX:XX:XX:XX:XX/P: L2CAP_CONNECTION_REQUEST [ID=1]: psm: 1 source_cid: 64 DEBUG:bumble.host:### HOST -> CONTROLLER: (CID=1) ACL: handle=0x0048, pb=0, bc=0, data_total_length=12, data=080001000201040001004000 DEBUG:bumble.transport.usb:submit ACL DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_MAX_SLOTS_CHANGE_EVENT: connection_handle: 72 lmp_max_slots: 5 DEBUG:bumble.host:### CONTROLLER -> HOST: ACL: handle=0x0048, pb=2, bc=0, data_total_length=10, data=060001000a3a02000200 DEBUG:bumble.hci:<<< ACL PDU: 060001000a3a02000200 DEBUG:bumble.l2cap:<<< Received L2CAP Signaling Control Frame on connection [0x0048] (CID=1) XX:XX:XX:XX:XX:XX/P: L2CAP_INFORMATION_REQUEST [ID=58]: info_type: EXTENDED_FEATURES_SUPPORTED DEBUG:bumble.l2cap:>>> Sending L2CAP Signaling Control Frame on connection [0x0048] (CID=1) XX:XX:XX:XX:XX:XX/P: L2CAP_INFORMATION_RESPONSE [ID=58]: info_type: EXTENDED_FEATURES_SUPPORTED result: SUCCESS data: 80000000 DEBUG:bumble.host:### HOST -> CONTROLLER: (CID=1) ACL: handle=0x0048, pb=0, bc=0, data_total_length=16, data=0c0001000b3a08000200000080000000 DEBUG:bumble.transport.usb:submit ACL DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT: number_of_handles: 1 connection_handle[0]: 72 num_completed_packets[0]: 1 DEBUG:bumble.host:### CONTROLLER -> HOST: ACL: handle=0x0048, pb=2, bc=0, data_total_length=16, data=0c000100030108004000400000000000 DEBUG:bumble.hci:<<< ACL PDU: 0c000100030108004000400000000000 DEBUG:bumble.l2cap:<<< Received L2CAP Signaling Control Frame on connection [0x0048] (CID=1) XX:XX:XX:XX:XX:XX/P: L2CAP_CONNECTION_RESPONSE [ID=1]: destination_cid: 64 source_cid: 64 result: CONNECTION_SUCCESSFUL status: 0 DEBUG:bumble.l2cap:Channel(64->64, PSM=1, MTU=48, state=WAIT_CONNECT_RSP) state change -> WAIT_CONFIG DEBUG:bumble.l2cap:>>> Sending L2CAP Signaling Control Frame on connection [0x0048] (CID=1) XX:XX:XX:XX:XX:XX/P: L2CAP_CONFIGURE_REQUEST [ID=2]: destination_cid: 64 flags: 0 options: 01020008 DEBUG:bumble.host:### HOST -> CONTROLLER: (CID=1) ACL: handle=0x0048, pb=0, bc=0, data_total_length=16, data=0c000100040208004000000001020008 DEBUG:bumble.transport.usb:submit ACL DEBUG:bumble.l2cap:Channel(64->64, PSM=1, MTU=48, state=WAIT_CONFIG) state change -> WAIT_CONFIG_REQ_RSP DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT: number_of_handles: 1 connection_handle[0]: 72 num_completed_packets[0]: 1 DEBUG:bumble.host:### CONTROLLER -> HOST: ACL: handle=0x0048, pb=2, bc=0, data_total_length=16, data=0c000100043b0800400000000102ed03 DEBUG:bumble.hci:<<< ACL PDU: 0c000100043b0800400000000102ed03 DEBUG:bumble.l2cap:<<< Received L2CAP Signaling Control Frame on connection [0x0048] (CID=1) XX:XX:XX:XX:XX:XX/P: L2CAP_CONFIGURE_REQUEST [ID=59]: destination_cid: 64 flags: 0 options: 0102ed03 DEBUG:bumble.l2cap:MTU = 1005 DEBUG:bumble.l2cap:>>> Sending L2CAP Signaling Control Frame on connection [0x0048] (CID=1) XX:XX:XX:XX:XX:XX/P: L2CAP_CONFIGURE_RESPONSE [ID=59]: source_cid: 64 flags: 0 result: SUCCESS options: 0102ed03 DEBUG:bumble.host:### HOST -> CONTROLLER: (CID=1) ACL: handle=0x0048, pb=0, bc=0, data_total_length=18, data=0e000100053b0a004000000000000102ed03 DEBUG:bumble.transport.usb:submit ACL DEBUG:bumble.l2cap:Channel(64->64, PSM=1, MTU=1005, state=WAIT_CONFIG_REQ_RSP) state change -> WAIT_CONFIG_RSP DEBUG:bumble.host:### CONTROLLER -> HOST: ACL: handle=0x0048, pb=2, bc=0, data_total_length=10, data=060001000a3c02000300 DEBUG:bumble.hci:<<< ACL PDU: 060001000a3c02000300 DEBUG:bumble.l2cap:<<< Received L2CAP Signaling Control Frame on connection [0x0048] (CID=1) XX:XX:XX:XX:XX:XX/P: L2CAP_INFORMATION_REQUEST [ID=60]: info_type: FIXED_CHANNELS_SUPPORTED DEBUG:bumble.l2cap:>>> Sending L2CAP Signaling Control Frame on connection [0x0048] (CID=1) XX:XX:XX:XX:XX:XX/P: L2CAP_INFORMATION_RESPONSE [ID=60]: info_type: FIXED_CHANNELS_SUPPORTED result: SUCCESS data: f200000000000000 DEBUG:bumble.host:### HOST -> CONTROLLER: (CID=1) ACL: handle=0x0048, pb=0, bc=0, data_total_length=20, data=100001000b3c0c0003000000f200000000000000 DEBUG:bumble.transport.usb:submit ACL DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT: number_of_handles: 1 connection_handle[0]: 72 num_completed_packets[0]: 1 DEBUG:bumble.host:### CONTROLLER -> HOST: ACL: handle=0x0048, pb=2, bc=0, data_total_length=18, data=0e00010005020a0040000000000001020008 DEBUG:bumble.hci:<<< ACL PDU: 0e00010005020a0040000000000001020008 DEBUG:bumble.l2cap:<<< Received L2CAP Signaling Control Frame on connection [0x0048] (CID=1)XX:XX:XX:XX:XX:XX/P: L2CAP_CONFIGURE_RESPONSE [ID=2]: source_cid: 64 flags: 0 result: SUCCESS options: 01020008 DEBUG:bumble.l2cap:Channel(64->64, PSM=1, MTU=1005, state=WAIT_CONFIG_RSP) state change -> OPEN DEBUG:bumble.l2cap:>>> Sending L2CAP PDU on connection [0x0048] (CID=64) XX:XX:XX:XX:XX:XX/P: SDP_SERVICE_SEARCH_ATTRIBUTE_REQUEST [TID=0]: service_search_pattern: SEQUENCE([UUID(UUID-16:111E (Handsfree))]) maximum_attribute_byte_count: 65535 attribute_id_list: SEQUENCE([UNSIGNED_INTEGER(4#2),UNSIGNED_INTEGER(9#2),UNSIGNED_INTEGER(1#2)]) continuation_state: 00 DEBUG:bumble.host:### HOST -> CONTROLLER: (CID=64) ACL: handle=0x0048, pb=0, bc=0, data_total_length=28, data=180040000600000013350319111effff350909000409000909000100 DEBUG:bumble.transport.usb:submit ACL DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT: number_of_handles: 1 connection_handle[0]: 72 num_completed_packets[0]: 1 DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT: number_of_handles: 1 connection_handle[0]: 72 num_completed_packets[0]: 1 DEBUG:bumble.host:### CONTROLLER -> HOST: HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT: number_of_handles: 1 connection_handle[0]: 72 num_completed_packets[0]: 1 DEBUG:bumble.host:### CONTROLLER -> HOST: ACL: handle=0x0048, pb=2, bc=0, data_total_length=11, data=0700400001000000020003 DEBUG:bumble.hci:<<< ACL PDU: 0700400001000000020003 DEBUG:bumble.sdp:<<< Response: SDP_ERROR_RESPONSE [TID=0]: error_code: [0x300] DEBUG:bumble.transport.usb:waiting for IN[4] transfer cancellation to be done... DEBUG:bumble.transport.usb:IN[4] transfer cancellation done DEBUG:bumble.transport.usb:waiting for IN[2] transfer cancellation to be done... DEBUG:bumble.transport.usb:USB event loop done DEBUG:bumble.transport.usb:IN[2] transfer cancellation done Traceback (most recent call last): File "/home/anyone/Downloads/bumble/examples/run_hfp_gateway.py", line 210, in