如何将已知兼容设备的 ID 添加到 USB wifi 驱动程序(或:使“echo new_id”永久存在)?

如何将已知兼容设备的 ID 添加到 USB wifi 驱动程序(或:使“echo new_id”永久存在)?

我有一个不太常见的 USB WiFi 设备(在我的情况下,是一个霍金 HWDN1),在执行以下操作后,它将与rt2800usb内核中已有的驱动程序一起工作:

sudo modprobe rt2800usb
sudo bash -c "echo 0e66 0004 > /sys/bus/usb/drivers/rt2800/new_id"

我正在手动加载驱动程序(modprobe),然后将其“绑定”到设备,即告诉它确实支持该特定设备(通过设备 ID)


不幸的是,重启后该功能不再有效。有没有一种巧妙的方法(例如,除了在启动时运行脚本之外的其他方法)可以使其永久生效?

或者更好的是,rt2800usb我该如何将 USB 设备 ID 提交给驱动程序的维护者,这样它就可以“适用于”拥有相同设备的每个人?快速浏览一下驱动源,确认我的设备不在设备表中(在文件的中间),但是非常相似的设备(相似的设备id)在那里 - 所以这似乎表明我可以只添加设备id并且它对每个人都“有效” - 但我不确定。

答案1

获取新的 usb.id 的常用方式是提交错误报告。https://bugs.launchpad.net/可能需要一些时间才能发布。

我建议使用这种方法将 usb.id 添加到驱动程序的常用 new_id 部分。

移除设备并在终端中执行以下操作:

sudo nano /etc/udev/rules.d/network_drivers.rules

添加一行长代码:

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0e66", ATTR{idProduct}=="0004", RUN+="/sbin/modprobe -qba rt2800usb"

大写字母、括号、标点符号等都至关重要。校对两次,保存并关闭 nano。下一步:

sudo nano /etc/modprobe.d/network_drivers.conf

添加一行长代码:

install rt2800usb /sbin/modprobe --ignore-install rt2800usb $CMDLINE_OPTS; /bin/echo "0e66 0004" > /sys/bus/usb/drivers/rt2800usb/new_id

校对两次,保存并关闭 nano。插入设备。如果它没有立即启动,您可能需要执行以下操作:

sudo modprobe rt2800usb

快速浏览驱动程序源代码,确认我的设备不在设备表中

如果它位于您当前安装的内核版本中包含的驱动程序的设备表中,那么驱动程序就会识别该设备并在无需您任何输入的情况下驱动它。

您可以通过以下方式确认:

modinfo rt2800usb | grep 0004

由于 usb.id 尚未存在于驱动程序中,因此它不会产生任何内容。

相关内容