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 of sdp.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:
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
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'