ベンダーと製品ID(VIDとPID)を無視するために、ATコマンドを使用して愚かにブロックされたWWANデバイスがあります。私は、カードが挿入されたときにラップトップが起動しないようにするノートブックのホワイトリスト機能をバイパスするためにこれを行いました。
この時点で、デバイスは起動し、他のUSBデバイスであるかのように正しく動作しますが、Linuxはそのデバイスの正しいドライバをロードせず、すべての目的にアクセスできなくなります。 VID / PID値を復元するためにシリアルポートを取得できなくなりました。
質問:Linuxがデバイス2cb7:0007を発見した場合、内部的にそのIDを1199:9079に置き換えるように指示するか、少なくとも回復できるようにシリアルインタフェースを取得するようにいくつかのドライバを強制的にロードするように指示する方法はありますか?アイデンティティ?別のオペレーティングシステムを使用してこれを実行できますか?
答え1
次のコマンドを使用すると、ベンダー製品ID 1199:9079のUSBデバイスにロードされるモジュールを表示できます。
sudo modprobe -c | grep usb:v1199p9079
結果は次のようになります。
alias usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in* qcserial
alias usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in08* qmi_wwan
alias usb:v1199p9079d*dc*dsc*dp*ic*isc*ip*in0A* qmi_wwan
インターフェイス番号8と10(0xA 16進数)の場合、モジュールはデバイスの他のすべてのインターフェイスを制御することをqmi_wwan
示します。qcserial
ほとんどのLinux USBシリアルドライバには、ドライバに不明なデバイスを許可するように指示する方法があります。
この場合、rmmod
通常、デバイス2cb7:0007にロードされたドライバ(該当するドライバがある場合)をブラックリストに追加する必要があります。次に、モジュールの手動ローディングを使用し、次のようにsudo modprobe qcserial
デバイスの現在のIDを作成します。/sys/bus/usb-serial/drivers/qcserial/new_id
echo "2cb7 0007" | sudo tee /sys/bus/usb-serial/drivers/qcserial/new_id >/dev/null
デバイスの実際の動作を変更せずにID値のみを変更したため、ドライバは通常どおりデバイスを制御できる必要があります。
これは、カスタムベンダー/製品IDを持つ組み込みOEM USBシリアルコンバータチップを備えたデバイスを処理する方法でもあります。使用されている実際のチップを処理できるドライバを識別したら、このメカニズムを使用して Linux シリアル コンバータ チップ。行ドライバー開発者はまだ特定のカスタムベンダー/製品IDペアを知らず、ドライバーはそのベンダー/製品IDペアを使用してデバイスを請求することを許可します。もちろん、この場合、新しいIDを説明する電子メールをそのシリアルドライバの管理者に送信して、将来のカーネルバージョンがこれらのカスタムOEM USBシリアルチップを自動的に認識できるようにすることが役に立ちます。