如何为蓝牙键盘外设配置bluez/kernel

如何为蓝牙键盘外设配置bluez/kernel

我正在尝试启动一个自定义 ARM 机器(类似于 Raspberry Pi),以使用 UART HCI 接口(而不是 USB 蓝牙适配器)连接到蓝牙键盘。

该设备似乎配对正确,但没有创建 HID 设备(或者至少输入未传递到 Xorg - 我也在 /dev/input 中查找设备,但没有看到任何内容。BT HID 设备是否在其他地方创建?)。

  • Debian Jessie 发行版
  • Linux内核3.14
  • bluez 5.43(本地构建)

具有与 Ubuntu 16.04 主机 (bluez 5.37) 连接到外围键盘的相同蓝牙主机控制器,也是通过 HCI UART 3 线,因此相信它应该仅限于这个新 ARM 设备上的某些内核/bluez 配置。在 Ubuntu 16.04 主机上配对后键盘立即工作。

请注意,控制器和外设仅与蓝牙 LE 有关(不是双重的)。

在有问题的设备中,bluetoothctl您可以看到控制器在询问时在 BT 外围设备上看到 HID 服务info [MAC ADDRESS],但它似乎没有注册 HID 服务,还是我遗漏了某些内容? (仅注册电池服务、设备信息和通用属性配置文件)

(already paired previously)
root@df666c9893549d4:~# bluetoothctl
[NEW] Controller D5:C0:BF:19:C4:AD BlueZ 5.43 [default]
[NEW] Device FA:D8:12:DD:86:72 AST61-Keyboard
[NEW] Primary Service
    /org/bluez/hci0/dev_FA_D8_12_DD_86_72/service000e
    0000180f-0000-1000-8000-00805f9b34fb
    Battery Service
[NEW] Primary Service
    /org/bluez/hci0/dev_FA_D8_12_DD_86_72/service0009
    0000180a-0000-1000-8000-00805f9b34fb
    Device Information
[NEW] Primary Service
    /org/bluez/hci0/dev_FA_D8_12_DD_86_72/service0008
    00001801-0000-1000-8000-00805f9b34fb
    Generic Attribute Profile

[AST61-Keyboard]# info FA:D8:12:DD:86:72
Device FA:D8:12:DD:86:72
    Name: AST61-Keyboard
    Alias: AST61-Keyboard
    Appearance: 0x03c1
    Icon: input-keyboard
    Paired: yes
    Trusted: yes
    Blocked: no
    Connected: yes
    LegacyPairing: no
    UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
    UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
    UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
    UUID: Battery Service           (0000180f-0000-1000-8000-00805f9b34fb)
    UUID: Human Interface Device    (00001812-0000-1000-8000-00805f9b34fb)
    Modalias: usb:v1915pEEEEd0001
    RSSI: 84
[CHG] Device FA:D8:12:DD:86:72 ServicesResolved: no
[CHG] Device FA:D8:12:DD:86:72 Connected: no
[CHG] Device FA:D8:12:DD:86:72 Connected: yes
[CHG] Device FA:D8:12:DD:86:72 ServicesResolved: yes

设备/内核通常与 USB 键盘外设连接。我添加了这些与蓝牙相关的 defconfig 以添加蓝牙支持:

# Bluetooth
CONFIG_BT=y 
CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y 
CONFIG_BT_BNEP_MC_FILTER=y 
CONFIG_BT_BNEP_PROTO_FILTER=y 
CONFIG_BT_HIDP=y
# Bluetooth userspace HID
CONFIG_UHID=y
# Bluetooth extra (may not be necessary)
CONFIG_BT_L2CAP=y
CONFIG_BT_SCI=y
CONFIG_BT_HCIUSB=y
CONFIG_BT_HCIUSB_SCI=y
CONFIG_BT_BNEP=y
# Bluetooth drivers
CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_3WIRE=y
CONFIG_BT_HCIVHCI=y
CONFIG_BT_HCIUART_BCM=y
CONFIG_BT_HCIUART_INTEL=y
CONFIG_BT_HCIUART_BCSP=y
CONFIG_BT_HCIUART_LL=y

驱动 BT 键盘是否需要其他 HID 相关配置?

最后,这里是一个详细的bluetoothd -n -d输出,表明 HoG(HID over GATT)正在尝试加载 HID 键盘(老实说,我无法判断输出是否表明成功或错误):

https://paste.debian.net/hidden/1d4b3c7e/

相关内容