web-dev-qa-db-ja.com

既知の互換性のあるデバイスのIDをUSB wifiドライバーに追加する方法(または「echo new_id」を永続化する方法)

あまり一般的ではないUSB WiFiデバイス(私の場合は Hawking 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を追加するだけで、すべてのユーザーに「機能する」ことをお勧めしますが、よくわかりません。

新しいusb.idを含める通常の方法は、バグレポートを提出することです。 https://bugs.launchpad.net/ リリースされるまでに時間がかかる場合があります。

このメソッドは、usb.idをドライバーの通常のnew_id部分に追加することをお勧めします。

デバイスを取り外し、ターミナルで次の操作を行います:

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

長い行を1行追加します。

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

大文字、括弧、句読点などが重要です。 2回校正し、nanoを保存して閉じます。次:

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

長い1行を追加します。

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

2回校正し、nanoを保存して閉じます。デバイスを挿入します。すぐに開始しない場合は、次の手順を実行する必要があります。

Sudo modprobe rt2800usb

ドライバーソースをざっと見て、デバイスがデバイステーブルにないことを確認します

現在インストールされているカーネルバージョンに含まれているドライバーのデバイステーブルにある場合、ドライバーはデバイスを認識し、ユーザーからの入力なしでデバイスを駆動します。

以下で確認できます:

modinfo rt2800usb | grep 0004

Usb.idはまだドライバーにないため、何も生成されません。

2
chili555