蓝牙设备配置 HCI
启动蓝牙设备
检查RFkill列表,蓝牙hci设备是否被Block
$ rfkill list 0: bt_default: Bluetooth Soft blocked: no Hard blocked: no 1: phy0: Wireless LAN Soft blocked: no Hard blocked: no 2: brcmfmac-wifi: Wireless LAN Soft blocked: no Hard blocked: no 3: hci0: Bluetooth Soft blocked: yes Hard blocked: no
若blocked yes则
若需要恢复关闭状态节约电源,使用block命令即可
蓝牙设备属性配置
sudo hciconfig hci0 piscan sudo hciconfig hci0 iscan
若有需要可以进入bluetoothctl管理,使用discoverable on、pairable on来开启蓝牙
蓝牙服务端配置
以L2CAP协议传输数据为例
import bluetoothdef l2cap_server (): server_sock = bluetooth.BluetoothSocket(bluetooth.L2CAP) psm = 0x1001 server_sock.bind(("" , psm)) server_sock.listen(1 ) print (f"Waiting for connection on L2CAP PSM {psm} " ) client_sock, client_info = server_sock.accept() print (f"Accepted connection from {client_info} " ) try : while True : data = client_sock.recv(1024 ) if not data: break print (f"Received: {data.decode('utf-8' )} " ) except IOError: pass finally : client_sock.close() server_sock.close() if __name__ == "__main__" : l2cap_server()
客户端在配对后连接
import bluetoothdef l2cap_client (): server_address = "XX:XX:XX:XX:XX:XX" psm = 0x1001 sock = bluetooth.BluetoothSocket(bluetooth.L2CAP) sock.connect((server_address, psm)) try : while True : data = input ("Enter message to send: " ) sock.send(data.encode('utf-8' )) except KeyboardInterrupt: pass finally : sock.close() if __name__ == "__main__" : l2cap_client()
即可正常传输数据