如果未加载设备特定的内核驱动程序,Hidraw 无法找到设备

如果未加载设备特定的内核驱动程序,Hidraw 无法找到设备

我正在尝试制作一个与蓝牙 HID 设备(特别是Wii遥控器

hid-wiimote加载内核模块后,我可以使用希达皮库(带有linux-static-hidraw后端)直接与设备对话,但内核驱动程序会定期轮询并经常更改操作模式。当我将 中的模块列入黑名单时/etc/modprobe.d,控制器上的 LED 会永远闪烁,并且库会返回以下错误:

系统中未找到具有请求的 VID/PID 的 HID 设备。

我很确定我已经正确设置了udev权限,这是我的自定义规则文件:

KERNEL=="hidraw*", KERNELS=="0005:057E:*.*", MODE="0666"

作为参考,这是我的最小 Rust 示例:

/**
 * [dependencies]
 * hidapi = { version = "2.4.0", default-features = false, features = ["linux-static-hidraw"] }
 */

use hidapi::HidApi;

fn main() {
    let hid = HidApi::new().unwrap();
    let wiimote = hid.open(0x057e, 0x0306).unwrap(); // error if `hid-wiimote` isn't loaded
}

答案1

原来我一直在尝试使用错误的 API。虽然hid_wiimote加载内核模块后可以通过 Hidraw 与 Wii Remote 进行通信,但其本机通信方法是蓝牙L2CAP,作为WiiBrew 页面说。

相关内容