麒麟系统中蓝牙键盘电量需通过命令行或工具查询:一、用bluetoothctl读取gatt电池服务;二、用dbus-send调用battery1接口;三、查dmesg日志确认内核是否识别电池报告;四、安装blueman图形化查看。

如果您在麒麟操作系统中连接了蓝牙键盘,但系统未在图形界面中直接显示其剩余电量,则可能是该设备未通过标准HID Battery Report特征上报电量信息,或BlueZ协议栈未启用电池服务监听。以下是查看蓝牙键盘剩余电量的具体操作步骤:
一、使用bluetoothctl交互式工具查询电池属性
bluetoothctl是BlueZ提供的命令行蓝牙管理工具,支持查询已连接设备的GATT服务,部分蓝牙键盘(如Logitech K780、Microsoft Surface Keyboard)会通过Battery Service (UUID: 0000180f-0000-1000-8000-00805f9b34fb) 暴露电量值。该方法依赖设备自身是否实现标准电池服务。
1、打开终端(Ctrl + Alt + T)。
2、输入bluetoothctl并回车,进入交互模式。
3、执行devices命令,确认目标键盘的MAC地址(格式如AA:BB:CC:DD:EE:FF)。
4、执行connect AA:BB:CC:DD:EE:FF,建立连接(若未连接)。
5、执行info AA:BB:CC:DD:EE:FF,查看设备详情,确认ServicesResolved: yes且包含0000180f-0000-1000-8000-00805f9b34fb。
6、执行menu battery,再执行select-attribute 00002a19-0000-1000-8000-00805f9b34fb,最后执行read。
7、若返回Value: 0xXX,其中XX为十六进制数值(如0x4A),则对应十进制电量百分比74%(需查表或转换)。
二、通过D-Bus接口调用org.bluez.Battery1接口
BlueZ 5.66+版本在D-Bus上暴露了Battery1接口,部分已配对且支持电池服务的蓝牙设备会自动注册该接口。此方式无需手动GATT读取,响应更稳定,但要求设备已在配对列表且服务已解析完成。
1、在终端中执行:dbus-send --system --dest=org.bluez /org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX org.freedesktop.DBus.Properties.Get string:"org.bluez.Battery1" string:"Percentage" --print-reply。
2、将命令中dev_XX_XX_XX_XX_XX_XX替换为实际设备路径(可用bluetoothctl devices | grep "Keyboard" 获取路径片段)。
3、观察reply中uint16值,例如uint16 68即表示68%剩余电量。
4、若提示Error: org.freedesktop.DBus.Error.UnknownMethod,说明该设备未注册Battery1接口,可能不支持或服务未激活。
三、检查内核hid-generic与battery模块日志
当蓝牙键盘以HID over GATT模式接入时,Linux内核hid-generic驱动可能将其识别为HID设备,并尝试通过hid-input解析电池报告。此过程会在内核日志中留下线索,可用于判断系统是否收到原始电池数据。
1、插入/重连键盘后,在终端运行:dmesg | tail -30 | grep -i "battery\|hid\|report"。
2、查找含“battery report”“HID_BATTERY_REPORT”“power_supply_register”的行。
3、若出现类似“hid-generic 0005:046D:B35B.0001: power_supply: registered as HID Battery”,说明内核已创建/sys/class/power_supply/hid-XX:XX:XX:XX:XX:XX-battery/目录。
4、执行cat /sys/class/power_supply/hid-XX:XX:XX:XX:XX:XX-battery/capacity,输出值即为当前整数百分比(如72)。
四、使用第三方工具blueman查看图形化电池状态
Blueman是兼容麒麟OS的增强型蓝牙管理器,其托盘图标右键菜单可显示部分设备的电池级别,前提是设备已广播Battery Service且BlueZ已完成服务发现。该方式无需命令行操作,适合桌面用户快速验证。
1、若未安装Blueman,执行:sudo apt install blueman。
2、启动Blueman-manager(可在开始菜单搜索)。
3、在设备列表中右键点击已连接的蓝牙键盘。
4、选择“Properties” → 切换至“Services”选项卡。
5、查找“Battery Service”条目,若右侧显示Level: 85%,则表示电量读取成功。
6、若该服务条目缺失或显示“Not available”,表明设备本身未实现标准电池服务。











