You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用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

疑问

  1. 我遗漏了什么?
  2. 为什么btmgmt无法获取连接信息,而bluetoothctl输出显示一切正常?

环境信息

  • Bluez版本:5.53
  • Kernel版本:5.15.0-83-generic

内容的提问来源于stack exchange,提问作者gal brandwine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:32:43