USBポートの列挙が変更されるのはなぜですか?


10

Huawei GMS / UMTS USBモデムをGnokiiとGammuで使用しています。モデムはPiの下のポートにありました。ではdmesg | grep ttyそれが上に表示されるでしょう/dev/ttyUSB0/dev/ttyUSB1。(この場合、1つのスティックに2つのUSBデバイスが正常です)。

私はそれに応じてGnokiiとGammuを構成しましたが、ttyUSB0ではメッセージを送信することしかできませんでした。送信と受信の両方がttyUSB1でのみ機能します。

次に、スティックを上部のUSBソケットに移動しました(そうしないと、私のWiFiスティックが横に収まらないためです)。すべてが正常に機能し続けました。また、数回の再起動後、寒くて暖かい。

次に、ファイルシステムを拡張する必要がありました(そうですね、それを以前に行ったはずです)その後、モデムはttyUSB0およびttyUSB * 2 *上にありました。送信/受信は後者で動作しました。これを知るには少し時間がかかりました。

更新:2日後、ttyUSB2が消えました。動作しているモデムはttyUSB0(以前はttyUSB1)に現れました。

なぜこれが起こったのですか?関連するdebianやlinuxのドキュメントへのリンク、たぶん?私は大いに義務づけられるでしょう。


の名前を/sys/class/tty/ガイドとして使用してみてください。
Lekensteyn

/ sys / class / tty内の唯一のttyUSBは、ttyUSB0とttyUSB1です。今。明日どうなるか誰が知っている。
RolfBly 2013

USB列挙は設計により変更され、新しいデバイスを接続して新しい番号を取得します。または、以前のポート番号が未完了の転送でまだビジーである間に、古いデバイスである可能性があります。デバイスをすぐに再接続しないようにし、これらのデバイスを使用するすべてのソフトウェアが正常にビジネスを終了したことを確認してください。
lenik 2013

回答:


16

Gammuのドキュメントでは、回避策を提案しています(ただし、詳細については触れていません)。

編集:Atmelには、列挙プロセスを適切に説明するアプリケーションノートがあります。

列挙型は、ホスト、ハブ、デバイス間の会話で発生するため変更され、再起動のたびに設定が同じであっても、これらのそれぞれからの応答タイミングは異なる場合があります。

更新:ソリューションはオンラインで簡単に見つけることができず、あちこちに散らばっています。だから私はすべてを1つのドキュメントにまとめました。これは結局のところです。
1. ttyUSBの内容を確認します。

dmesg | grep ttyUSB  

2.デバイスのすべての属性を一覧表示し、idVendor + idProductなどの一意の識別子セットを選択します(同じidVendorとidProductを持つデバイスが複数ある場合は、必要に応じてSerialNumber)。

udevadm info --name=/dev/ttyUSB1 --attribute-walk

3. /etc/udev/rules.d/99-usb-serial.rules次のような行を含むファイルを作成します。

SUBSYSTEM=="tty", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", SYMLINK+="your_device_name" 

(そこにシリアル番号は必要なく、もちろん、手順2で見つけたidVendorとidProductの番号が必要であると仮定します。)
4.新しいルールをロードします。

sudo udevadm trigger

5.何が起こったかを確認します。

ls -l /dev/your_device_name  

シンボリックリンクが行ったttyUSB番号が表示されます。の場合は/dev/ttyUSB1、それを誰が所有し、どのグループに属しているかを確認します。

ls -l /dev/ttyUSB1   

それからそれを楽しむためだけに:

udevadm test -a -p  $(udevadm info -q path -n /dev/your_device_name)

8

あなたは自分の質問に部分的に回答しましたが、特にシリアルデバイスの場合、それを行う別の方法があり/dev/serial/*ます。それはパスです。Raspberry PiにProlific USB→RS232インターフェイスがあり、ほぼ常にと表示され/dev/ttyUSB0ます。ただし、システム上では次のように表示されます。

  • /dev/serial/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-port0
  • /dev/serial/by-id/usb-067b_2303-if00-port0

by-id別のPL2303ベ​​ースのコンバーターを追加しない限り、リンクの使用は同じままです。


..そして、誰かが本当に新しいPL2303ベ​​ースのコンバーターを追加したとき。(そのうちの2つ)では、何をドロップできますか?
Obmerk Kronen

あなたは行き​​詰まっています。私はこれを避けるためにブランドを混ぜ合わせてマッチさせることを好みます。
2016年

これは、Pythonで私に変更を加えていたシリアルポートに非常に役立ちました。
GhostToast
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.