ZBLOG

menu gatt 指令

bluetoothctl 工具中,menu gatt 是用于切换到 GATT(Generic Attribute Profile)菜单模式 的指令,专门用于管理低功耗蓝牙(BLE)设备的服务和特征值(Characteristics)。以下是详细用法和常见操作:


1. 进入 GATT 菜单

[bluetooth]# connect <MAC地址>      # 先连接目标BLE设备
[bluetooth]# menu gatt             # 切换到GATT菜单
[bluetooth][gatt]#                 # 提示符变为[gatt]表示进入成功

2. GATT 菜单下的关键指令

(1) 列出所有服务/特征值

  • 查看所有服务
    
    [bluetooth][gatt]# list-attributes
    
    输出示例: “` Service /org/bluez/hci0/dev_AA_BB_CC_DD_EE_FF/service0010 UUID: 0000180a-0000-1000-8000-00805f9b34fb (Device Information) …

Characteristic /org/bluez/hci0/dev_AA_BB_CC_DD_EE_FF/service0010/char0011

      UUID: 00002a29-0000-1000-8000-00805f9b34fb (Manufacturer Name String)
      Flags: read
      ...

#### **(2) 读取特征值数据**
```bash
[bluetooth][gatt]# select-attribute <属性路径>   # e.g., /org/bluez/.../char0011
[bluetooth][gatt]# read                          # 读取当前选中的特征值

输出示例:

Attempting to read /org/bluez/.../char0011
[CHG] Attribute /org/bluez/.../char0011 Value: [54,65,73,74] ("Test")

(3) 写入特征值数据

[bluetooth][gatt]# write <HEX或ASCII数据>       # e.g., write "48656c6c6f" (Hello的HEX)

(4) 启用通知(Notify)

[bluetooth][gatt]# notify on                   # 开启通知监听

设备主动推送的数据会实时显示在终端。


3. GATT路径的简化输入

如果手动输入长路径困难,可以:

  1. 用Tab补全:输入部分路径后按 Tab
  2. 直接复制路径:从 list-attributes 的输出中复制完整路径。

4. BLE调试技巧

(1) HCI层日志监控

打开新终端运行以下命令,观察底层通信:

sudo btmon | grep -i "ATT"

(2) Python自动化替代

对于复杂操作,推荐使用Python库 bleak

from bleak import BleakClient

async def read_char():
    async with BleakClient("<MAC>") as client:
        value = await client.read_gatt_char("<UUID>")
        print("Read:", bytes(value).decode())

asyncio.run(read_char())

⚠️注意事项

  1. 权限问题:确保用户有访问蓝牙设备的权限(通常需要 bluetooth 组)。
  2. 协议支持:目标设备需实现GATT协议,且特征值具有读写权限(通过 Flags字段确认)。
  3. 交互限制menu gatt仅适用于BLE设备,经典蓝牙需用RFCOMM/L2CAP。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=24005

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?