問題:シリアルポートに接続されているシリアルデバイスの電源が入っていると、Ubuntu OSは2つのシリアルポートを処理できません。この問題を克服し、私のポートがクラッシュするのを防ぐ方法は?どうすればトラブルシューティングできますか?
症状の概要:2つのシリアル-USBコンバータがPCに接続されている場合(シリアルデバイスが接続されていない場合)、すべて問題ありません。それらはttyUSB0およびttyUSB1として表示されます。ただし、シリアルデバイスを接続し、シリアルデバイスの電源を入れると、シリアルポートの1つがクラッシュします(/ devディレクトリから消えます)。これはハードウェアの問題でも配線の問題でもありません。私の頭に白髪を追加しているOSで何かが起こっています。詳細をお読みください。
LenovoラップトップでUbuntu 14.04.3を実行しています。
私は、最小限のハードウェアとソフトウェアでエラーを再現できるようになりました。以下の手順で問題を再現します。
dmesg
を実行し、出力をファイルに保存します。 https://Pastebin.com/4fXxK1hV を参照してください何も接続されていない状態でRS422をUSBデバイスに接続します。 lsusb
を実行します。それはBus 003 Device 003: ID 0856:ac11 B&B Electronics
デバイスです。出力は次のとおりです。
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 004: ID 04f2:b44d Chicony Electronics Co., Ltd Bus 001 Device 003: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 003: ID 0856:ac11 B&B Electronics Bus 003 Device 002: ID 0cd5:0003 LabJack Corporation U3 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
dmesg
を再度実行しました。出力は次のとおりです。 https://Pastebin.com/uTGra1h7
/dev
に移動して、ls -l | grep USB
を実行します。シリアルポートが表示されます:constructor@constructor-pc:~$ cd /dev constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
RS422ポートに接続されているデバイスの電源を入れます。 /dev
またはls -l | grep USB
およびlsusb
の出力に変更はありません
RS232をUSBコンバーターに接続します。シリアルデバイスはまだコンバーターに接続されていません。 lsusb
を実行しました。それはBus 001 Device 018: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
デバイスです。出力は次のとおりです。
constructor@constructor-pc:/dev$ lsusb Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 004: ID 04f2:b44d Chicony Electronics Co., Ltd Bus 001 Device 003: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]
Bus 001 Device 018: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 003: ID 0856:ac11 B&B Electronics Bus 003 Device 002: ID 0cd5:0003 LabJack Corporation U3 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ls -l | grep USB
ディレクトリで/dev
コマンドを実行します。出力は次のとおりです。constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 crw-rw---- 1 root dialout 188, 1 Nov 21 18:47 ttyUSB1
ここまではすべて問題ありません。 dmesg
コマンドを実行して、トラブルシューティングのためにすべてをキャプチャします。参照: https://Pastebin.com/3kZNLtr6
この時点で問題が発生します。シリアルデバイスをRS232-USBコンバーターに接続します。今まではすべて大丈夫です。シリアルデバイスの電源を入れます(通常、これはプロトタイプを制御するソフトウェアがクラッシュするポイントです)。すぐにls -l | grep USB
コマンドを何度も実行します。出力は次のとおりです。
constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0
シリアルポートの1つを失ったことがわかります。
dmesg
を実行して、より知識のある人が診断に使用できるようにします。参照してください: https://Pastebin.com/sCYXeKa9過去5日間でテストした結論:
追加情報:この質問を聞いてから先週、USBポートの1つに障害があり、動作が変わらなかった場合に備えて、USBポートへのシリアルをさらに調達しました。また、スペアユニットで電源を入れたときにポートがクラッシュする原因となるシリアルコンポーネントを交換しましたが、動作は変わりませんでした。また、別のPCを試しましたが、動作は変わりませんでした。
この問題の修正を含む回答を提供していただけますか?または、この問題のトラブルシューティング方法は?
また、情報を提供したりコマンドを実行したりできる場合は、遠慮なくお知らせください!
前もって感謝します...
マイク
これは電気的な問題であり、O/Sの問題ではありません。次の方法で、製造元のドキュメントに従って、デバイスのシリアルポートをUSB-RS485コンバーターのシリアル側に配線しました。
Tx- to Rx- Tx+ to Rx+ Rx- to Tx- Rx+ to Tx+ gnd to gnd
最終的にこの問題を解決したのは、gndからgndへの接続を切断することでした。グラウンドループがあったに違いありません。