调用btmgmt获取已连接BLE设备信息返回未连接且RSSI异常
使用btmgmt Rust库读取已连接BLE设备RSSI始终得到127的问题
我尝试用btmgmt Rust库读取已连接BLE设备的RSSI值,但返回结果一直是127。相关代码如下:
pub fn get_rssi(&self) -> Result<i8, Box<std::error::Error>> { let btmgmt = btmgmt::BTMgmt::new()?; let address = btmgmt::address::Address::from_string( self.addr.as_str(), btmgmt::address::AddressType::LeRandom, ) .ok_or("invalid address")?; let ci = btmgmt.get_connection_info(u16::from(self.adapter_id), &address)?; Ok(ci.rssi) }
我已确认设备处于连接状态且服务已解析,以下是bluetoothctl的输出:
Device DA:A4:58:46:AE:9F (random) Name: Device_name Alias: Device_name Paired: no Trusted: yes Blocked: no Connected: yes #<------------------------------- 已连接 😊 LegacyPairing: no UUID: Vendor specific (********-****-****-****-************) UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb) UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb) RSSI: -33 #<------------------------------- 此处可看到RSSI值 AdvertisingFlags:
但通过CLI调用btmgmt时,却得到设备未连接的报错:
$ sudo btmgmt conn-info DA:A4:58:46:AE:9F Get Conn Info for DA:A4:58:46:AE:9F (BR/EDR) failed. status 0x02 (Not Connected)
为验证问题,我测试了已连接的Bose QC3(同为BLE设备),输出如下:
$ sudo btmgmt conn-info 4C:87:5D:0C:B5:FC Connection Information for 4C:87:5D:0C:B5:FC (BR/EDR) RSSI 0 TX power -3 maximum TX power 12
疑问
- 我遗漏了什么?
- 为什么
btmgmt无法获取连接信息,而bluetoothctl输出显示一切正常?
环境信息
- Bluez版本:5.53
- Kernel版本:5.15.0-83-generic
内容的提问来源于stack exchange,提问作者gal brandwine
相关产品推荐
相关产品推荐

