1

设备/操作系统:Jetson Nano / Ubuntu 18.04

蟒蛇 3

有一个蓝牙加密狗连接。

如 UI 所示,Joy-Con 已连接: 在此处输入图像描述

以及当我这样做时:

$ hcitool con
Connections:
    > ACL B8:78:26:19:C1:8C handle 11 state 1 lm MASTER AUTH ENCRYPT

$ bt-device -l
Added devices:
Joy-Con (R) (B8:78:26:19:C1:8C)

我已经使用说明从源代码安装了https://github.com/trezor/cython-hidapi(我在构建过程中尝试了 hidraw 和 libusb API。

在这两种情况下,这个简单的代码:

import hid

devices = hid.enumerate(0, 0)
print(devices)

仅打印连接到设备的有线 USB 鼠标和 USB 键盘:

[
{'path': b'0001:0006:00', 'vendor_id': 1118, 'product_id': 203, 'serial_number': '', 'release_number': 256, 'manufacturer_string': '', 'product_string': '', 'usage_page': 0, 'usage': 0, 'interface_number': 0},
{'path': b'0001:0004:00', 'vendor_id': 1008, 'product_id': 36, 'serial_number': '', 'release_number': 304, 'manufacturer_string': '', 'product_string': '', 'usage_page': 0, 'usage': 0, 'interface_number': 0}
]
4

2 回答 2

0

解决方案是使用udev 规则这些规则适用于我的情况。

我最终还使用了不同的 Python 库https://github.com/apmorton/pyhidapi。但我相信原来的 cython-hidapi 会一样好。

于 2020-06-17T13:12:13.560 回答
0

与上面的答案相反,即使使用正确的规则,我也无法使用 cython-hidapi 找到 Joycon。对于遇到此问题的任何人,我建议您尝试使用 pyhidapi 库。那时工作得很好。另外,我注意到上面给出的规则并没有接受joycons。这可能是因为某些系统差异,或者可能是因为我使用的是欧洲joycons?无论如何,我按照这里给出的方式对其进行了修改(它仍然不应该太宽泛,因为它基于joycon设备名称):
KERNEL=="js0", SUBSYSTEM=="input", MODE="0666"

我发现这条规则对调试也很有帮助,因为 udev 规则有时真的很挑剔。如果规则的其余部分选择了设备,它实质上会在桌面上创建一个 udev-env.txt 文档(当然,用你自己的名字替换用户):
KERNEL=="js0", SUBSYSTEM=="input" , RUN+="/bin/sh -c 'echo == >> /home/user/Desktop/udev-env.txt; env >> /home/user/Desktop/udev-env.txt'"

我真的希望这个答案可以帮助像我一样被困的其他人。花了整整 3 天的时间才找到正确的方法让它发挥作用,我不希望其他人经历同样的过程。

于 2021-02-17T09:29:14.597 回答