我有一个不太常见的 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 尚未存在于驱动程序中,因此它不会产生任何内容。