
bluetoothctl主要功能扫描、配对、连接、信任、查看设备信息等。扫描ethanG5000:~$ bluetoothctl scan on SetDiscoveryFilter success Discovery started ethanG5000:~$ bluetoothctl devices Device B0:82:E2:67:46:DB XXXXXX配对ethanG5000:~$ bluetoothctl pair B0:82:E2:67:46:DB Attempting to pair with B0:82:E2:67:46:DB[CHG]Device B0:82:E2:67:46:DB Connected:yes[CHG]Device B0:82:E2:67:46:DB Bonded:yes[CHG]Device B0:82:E2:67:46:DB UUIDs: 00000000-deca-fade-deca-deafdecacaff[CHG]Device B0:82:E2:67:46:DB UUIDs: 00001101-0000-1000-8000-00805f9b34fb[CHG]Device B0:82:E2:67:46:DB UUIDs: 0000110a-0000-1000-8000-00805f9b34fb[CHG]Device B0:82:E2:67:46:DB UUIDs: 0000110b-0000-1000-8000-00805f9b34fb[CHG]Device B0:82:E2:67:46:DB UUIDs: 0000110c-0000-1000-8000-00805f9b34fb[CHG]Device B0:82:E2:67:46:DB UUIDs: 0000110e-0000-1000-8000-00805f9b34fb[CHG]Device B0:82:E2:67:46:DB UUIDs: 0000111e-0000-1000-8000-00805f9b34fb[CHG]Device B0:82:E2:67:46:DB UUIDs: 00001200-0000-1000-8000-00805f9b34fb[CHG]Device B0:82:E2:67:46:DB UUIDs: 0000e003-0000-1000-8000-00805f9b34fb[CHG]Device B0:82:E2:67:46:DB ServicesResolved:yes[CHG]Device B0:82:E2:67:46:DB Paired:yesPairing successful配对后可根据需要在本地添加信任。信任是一个本地策略不需要和设备通信。ethanG5000:~$ bluetoothctl trust B0:82:E2:67:46:DB[CHG]Device B0:82:E2:67:46:DB Trusted:yesChanging B0:82:E2:67:46:DB trust succeeded连接ethanG5000:~$ bluetoothctl connect B0:82:E2:67:46:DB Attempting to connect to B0:82:E2:67:46:DB[DEL]Device64:82:14:EE:F2:4164-82-14-EE-F2-41[CHG]Device B0:82:E2:67:46:DB Connected:yesConnection successful查看信息ethanG5000:~$ bluetoothctl devices Connected Device B0:82:E2:67:46:DB ROG GJALLAR ethanG5000:~$ bluetoothctl info B0:82:E2:67:46:DB Device B0:82:E2:67:46:DB(public)Name: XXXXXX Alias: XXXXXX Class: 0x00240414(2360340)Icon: audio-card Paired:yesBonded:yesTrusted: no Blocked: no Connected:yesLegacyPairing: no CablePairing: no UUID: Vendor specific(00000000-deca-fade-deca-deafdecacaff)UUID: Serial Port(00001101-0000-1000-8000-00805f9b34fb)UUID: Audio Source(0000110a-0000-1000-8000-00805f9b34fb)UUID: Audio Sink(0000110b-0000-1000-8000-00805f9b34fb)UUID: A/V Remote Control Target(0000110c-0000-1000-8000-00805f9b34fb)UUID: A/V Remote Control(0000110e-0000-1000-8000-00805f9b34fb)UUID: Handsfree(0000111e-0000-1000-8000-00805f9b34fb)UUID: PnP Information(00001200-0000-1000-8000-00805f9b34fb)UUID: Unknown(0000e003-0000-1000-8000-00805f9b34fb)Modalias: bluetooth:v0B05p1CB0d0100 ManufacturerData.Key: 0x0b05(2821)ManufacturerData.Value: 00 01 02 02 02..... RSSI: 0xffffffd8(-40)l2pingl2ping 是 BlueZLinux 官方蓝牙协议栈提供的一个命令行工具用于测试蓝牙设备之间的连通性和链路质量。它的作用类似于 IP 网络中的 ping 命令但工作在蓝牙协议栈的 L2CAP 层Logical Link Control and Adaptation Protocol逻辑链路控制与适配协议而不是网络层。核心原理l2ping 向目标蓝牙设备发送 L2CAP Echo Request回显请求 包目标设备如果在线且能响应会返回 L2CAP Echo Response回显响应 包。通过是否收到响应、响应时间RTT和丢包情况就能判断蓝牙链路是否可达以及质量如何。示例一ethanG5000:~$sudol2ping B0:82:E2:67:46:DB Ping: B0:82:E2:67:46:DB from D0:39:57:05:7F:08(data size44)...44bytes from B0:82:E2:67:46:DBid0time10.54ms44bytes from B0:82:E2:67:46:DBid1time8.91ms44bytes from B0:82:E2:67:46:DBid2time5.85ms44bytes from B0:82:E2:67:46:DBid3time10.94ms示例二ethanG5000:~$sudol2ping-f-s600-c3B0:82:E2:67:46:DB Ping: B0:82:E2:67:46:DB from D0:39:57:05:7F:08(data size600)...600bytes from B0:82:E2:67:46:DBid0time15.06ms600bytes from B0:82:E2:67:46:DBid1time15.95ms600bytes from B0:82:E2:67:46:DBid2time15.01ms3sent,3received,0% loss-f 是洪水模式、-s 600 大包看最后一行 x sent, x received, x% loss 和每个包的 time。丢包率高于 2%~3%、或延迟抖动大就说明有干扰或距离问题。l2testl2test是 BlueZ 协议栈自带的 L2CAP 层测试工具工作方式和 iperf 很像一端监听收/发另一端连接发/收用来测蓝牙 L2CAP 通道的连通性、吞吐量和稳定性。但需要两台设备无法在音箱上测试。向对端发信息请求information requestethanG5000:~$ sudo l2test -z B0:82:E2:67:46:DB Connectionless MTU size is 672 Extended feature mask is 0x0000解释Connectionless MTU 672 —— 无连接广播通道 MTU标准值Extended feature mask 0x0000 —— 扩展特性一位都没置意思是这台音箱只支持 Basic L2CAP 模式不支持 ERTM、Streaming、FCS、固定通道等任何高级模式。这是廉价音频设备的典型表现完全正常。以后测它别加 -X ertm。btmonbtmgmtbtmgmt 直接走 MGMT socket 跟内核对话绕过 D-Bus 和 bluetoothd。可能与bluetoothd争抢控制器。控制器身份的塑形工具、协议栈的调试探针、认证测试的手术刀维度btmgmtbluetoothctl操作层级内核 MGMT socket绕过 bluetoothdD-Bus → bluetoothd核心对象控制器自身属性地址、PHY、广播、SC 模式、debug keys、实验特性远端设备扫描、配对、连接、GATT后台依赖不需要 bluetoothd 运行必须有 bluetoothd官方定位底层调试/配置不推荐应用使用日常设备管理主入口示例一sudo btmgmt find -lsudo btmgmt find -b命令Address type行为find0x07BR/EDR LE Public LE Random 全扫find -l0x06只 LEPublic Random不发 Inquiryfind -b0x01只 BR/EDR只做 Inquirylegacy工具工具原用途现代替代hcitool发 HCI 命令、scan / lescan / infobluetoothctlbtmgmthciconfig查看/配置 hci0up/down、piscan、MTUbtmgmt/bluetoothctl showgatttoolBLE GATT 读写交互模式bluetoothctl menu gatt或 D-Bus GATT APIsdptool查询经典蓝牙 SDP 服务列表bluetoothctl info MAC看 UUIDrfcomm绑定 /dev/rfcommN 串口无完整替代需用 D-Bus Profile1 API 自己实现ciptoolCIP无绳电话 profile非常冷门基本无例如hcitool rssi B0:82:E2:67:46:DB