蓝牙技术
直播中

张燕

8年用户 1464经验值
私信 关注
[问答]

如何使用 HCI 接口/hcitool 实现 AIROC CYW20721?

如何使用 HCI 接口/hcitool 实现 AIROC CYW20721

回帖(1)

王玉兰

2025-7-1 18:04:32

要使用 HCI 接口(如 hcitool)操作 AIROC CYW20721 蓝牙控制器,需通过 Linux 的 HCI 协议发送指令。以下是详细步骤:




1. 确认设备识别



  • 连接 CYW20721 模块(如通过 USB/UART)。

  • 检查设备是否被系统识别:
    hciconfig

    若设备存在(如 hci0),输出应包含其 MAC 地址和状态(UPDOWN)。





2. 基本操作命令


启动/关闭控制器


sudo hciconfig hci0 up      # 启动
sudo hciconfig hci0 down    # 关闭

扫描设备



  • 经典蓝牙扫描:
    hcitool scan

  • 低功耗蓝牙(BLE)扫描:
    hcitool lescan


查询信息


hcitool info [目标MAC]    # 查看设备信息
hcitool dev              # 列出本地适配器



3. 发送自定义 HCI 命令


通过 hcitool cmd 发送原始指令,格式:


hcitool cmd [OGF] [OCF] [参数1] [参数2] ...


  • OGF:操作组字段(Opcode Group Field),高6位。

  • OCF:操作命令字段(Opcode Command Field),低10位。

  • 参数:十六进制值(空格分隔)。


示例命令




  1. 复位控制器(OGF=0x03, OCF=0x0003):


    hcitool cmd 0x03 0x0003



  2. 读芯片版本(OGF=0x04, OCF=0x0001):


    hcitool cmd 0x04 0x0001



  3. 设置 BLE 广播参数(OGF=0x08, OCF=0x0006):


    hcitool cmd 0x08 0x0006 40 00 40 00 03 00 00 00 00 00 00 00 00 07 00





4. 厂商特定命令 (Cypress/Infineon)


CYW20721 需通过 Vendor-Specific Commands 配置高级功能:



  • OGF:固定为 0x3F(厂商专用)。

  • OCF:参考芯片手册(如配置节能模式、RF参数等)。


示例(伪代码,需替换实际 OCF):


# 设置发射功率
hcitool cmd 0x3F 0x0XXX 0xXX ...

# 进入低功耗模式
hcitool cmd 0x3F 0x0YYY ...


注意

具体命令参数需查阅 CYW20721 编程指南HCI Vendor Command 文档(联系 Infineon/Cypress 获取)。





5. 调试与监控



  • 使用 hcidump 捕获 HCI 数据:
    sudo hcidump -i hci0 -X

  • 查看内核日志:
    dmesg | grep Bluetooth




常见问题




  1. 权限不足

    使用 sudo 或将用户加入 bluetooth 组。




  2. 设备未识别  



    • 检查 USB/UART 驱动(如 brcmfmac)。

    • 确认固件已加载(部分模块需初始化固件)。




  3. hcitool 已弃用

    在较新系统(如 Ubuntu 18.04+)中,hcitool 被标记为弃用。替代方案:



    • 使用 bluetoothctl(交互式命令行)。

    • 用 Python 库(如 bluepyPyBluez)编程操作 HCI Socket。






替代工具:bluetoothctl


bluetoothctl
[bluetooth]# list-controllers    # 列出控制器
[bluetooth]# show C0:XX:XX:XX:XX  # 查看详细信息
[bluetooth]# scan on             # 扫描设备



通过以上步骤,可完成对 CYW20721 的基础控制和深度配置。关键操作依赖厂商提供的 HCI 命令手册,建议优先获取芯片文档。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分