はじめに:一部のユーザーはこの質問があまり好きではないようです。理由はわかりません。この問題に共感する価値があると思われる場合は、理由を説明するコメントを残して解決策を教えてください。私の問題に対する解決策が必要で、必要に応じて私の質問を編集したいと思います。
TP-Link UE200
私はDebian Buster(書き込み時の最新の安定版)でUSB-Ethernetアダプタを使用しようとしています。通常の操作では、アダプタは最初に接続されたときにUSB CD-ROMドライブとして表示され、そのドライバを使用してイーサネットモードに切り替えます。
すでに実行されているシステムにアダプターを接続すると、アダプターは正常に機能します。 Linuxはアダプタを正しく検出し、自動的にデバイスを正しいモードに切り替えます。ただし、システムの起動中にアダプターを接続すると、システムは自動的に正しいモードに切り替わりません。
また、デバイスを機械的に取り外して再挿入せずにCD-ROM状態にあるときにデバイスをイーサネットアダプタとして表示する方法を見つけることができません。システムは手動介入なしで実行および再起動するように設計されているため、毎回手動で介入することは望ましくありません。
私の質問は次のとおりです:システムの起動時に接続されたアダプタを物理的に分離せずにイーサネットアダプタとして表示するにはどうすればよいですか?
注:
Raspberry Pi 4 + Ubuntu 19.10で同様の設定が実行されていることを追加したいと思います。イーサネットアダプタが接続されている状態でシステムを起動しても、イーサネットアダプタは正しく認識されます。これまで、私はDebian Buster / x86_64でのみこの問題を経験しました。
USBの場合、アダプタは2つの別々のUSBデバイスとして機能します。デバイスの2つのモードのそれぞれには、独自のUSB製品IDがあります(たとえば、CD-ROMドライブとして動作している場合は0601、イーサネットアダプタで動作している場合は0602)。
これまでに試したこと:
デバイスのバインド解除と再バインディングは、アダプタが再
/sys/bus/usb/drivers/usb/{unbind,bind}
表示され、カーネル0601
がそのデバイスをCD-ROMデバイスに再登録することによって発生します。正しく再初期化するには、デバイスの電源を完全に切る必要があるようです。usb-storage
デバイスからドライバを手動でバインド解除し、および経由cdc_ether
で/sys/bus/usb/drivers/usb-storage/unbind
ドライバをバインドします/sys/bus/usb/drivers/cdc_ether/bind
(モジュールを手動でロードした後)。当然ながら、デバイスはカーネルにUSB大容量記憶装置として表示されるため、この方法は機能しません。デバイスが0602と表示されるように手動で強制するために使用されます
usb_modeswitch
。デバイスは単にメッセージを無視するか、動作を拒否します。デバイスを取り出して-K
リセットしても-R
効果がないようです。以下を介してデバイスを切断する
/sys/bus/usb/devices/XXX/remove
:完全に機能しますが、Linuxがデバイスを物理的に再接続せずにデバイスを「削除」できるようにする方法はありません。私のinitramfsにモジュールを含め、最初の起動時に欠けているカーネルモジュールが原因で問題が発生したという無駄な希望で、カーネル
cdc_ether
コマンドライン引数を介してモジュールをプリロードしました。 Linuxはまだこれを使用しています。modules_load
usb-storage
答え1
インストールするusb-modeswitch
:
sudo apt install usb-modeswitch
を使ってデバイスIDを取得しますlsusb
。例:
Bus 001 Device 004: ID 2357:0601 TP-Link UE300 10/100/1000 LAN (ethernet mode) [Realtek RTL8153]
実行コマンド:
/usr/sbin/usb_modeswitch -v 2357 -p 0600 -R
そしてそれは修正されました。起動時にこれを行うサービスを作成しました。
これはTP-Link UE300にも当てはまります。
答え2
[コメントよりも貴重な答えを書いて申し訳ありません。モードを変えることができたらとても感謝します。 ]
BIOSがアダプタを起動可能なUSBデバイスとして扱い、カーネルが再び占有できないように、関連する割り込みとIOポートの処理をロックできますか?この場合は、USBデバイスを起動可能なデバイスのリストから強制的に削除し、BIOSがPnPシステムとして設定されていることを確認してください。