感谢@ukBaz,我现在可以在我的Raspberry Pi
Zero上访问蓝牙LE遥控器,他指出了如何通过GATT(Linux中的短 HoG) 访问HID :
使用配对 bluetoothctl
这只能发生一次。
首先,我同时按住1和3清除遥控器上的任何当前配对。这是我的远程型号专用的,但是很高兴知道在连接设备之前可能需要重置设备。
sudo bluetoothctlpower onagent on# you might need to do `scan on` / `scan off` until you see the remotepair AA:BB:CC:DD:EE:FF# click ok on the remote or otherwise confirm the pairingtrust AA:BB:CC:DD:EE:FFconnect AA:BB:CC:DD:EE:FF # Pairing might perform a connect, but it does not hurtinfo # info shows you if you're connected and or paired with the remote
现在重启RaspberryPi
自动连接
在
bluetoothctl提示中显示您是否已连接到设备。60秒后,连接断开。我以为这是个问题,遥控器现在不会向PI发送命令,但是需要注意的是,一旦建立了配对,遥控器似乎会自动连接到我的Raspberry
Pi。
Linux中的HoG和 /dev/input
我首先想到,我将需要挂接到GATT协议栈并检测那些GATT消息和事件,以便检测遥控器的按钮事件。这是可能的,但是由于Raspberry
Pi上的BlueZ支持基于GATT的HID,即蓝牙低功耗鼠标,操纵杆,键盘,游戏控制器或遥控器。这意味着Pi上的内核会创建一个驻留在中的输入设备
/dev/input/。所以一旦我被配对并连接我的BLE远程两个新项并在出现
/dev/input:
/dev/input/event1和
/dev/input/event0。
我做了一个
cat/dev/input/event1,当我按下遥控器上的一个键时,我看到了一些字节垃圾从终端飞过。因此,我可以验证遥控器是否正在向Pi发送事件。
使用阅读事件 evdev
更新 :evdev有一个模块,可让您快速输出所选设备的事件:
python3 -m evdev.evtest
@ukBaz指出我可以使用pip3包evdev来访问我的设备。通过运行以下python代码,我能够检测到遥控器上的按钮



