web-dev-qa-db-ja.com

USBシリアルデバイスでボーレートを変更できない

最近、10.04からubuntu12.04にアップグレードしました。 10.04では、usbserialドライバーを使用してシリアルポート経由でデバイスに接続するのに問題はありませんでした。アップグレード後通常ボーレートをリセットできません:9600に初期化されていますが、デバイスには115200が必要です。速度をリセットしようとすると、次のようになります。

$ Sudo stty -F /dev/ttyUSB0 
speed 9600 baud; line = 0;
-brkint -imaxbel
$ Sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations
$ Sudo setserial -av /dev/ttyUSB0
Cannot get serial info: Invalid argument
$ ls -l /dev/ttyUS*
crw-rw---- 1 root dialout 188, 0 Nov 26 10:21 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 Nov 26 10:21 /dev/ttyUSB1

奇妙なことに、私はこれを時々機能させることができました。初めてシステムを再起動したとき、それは機能しました。シャットダウン後も同じ問題が発生し、再起動は機能しませんでしたが、ドライバーのリロードは機能しました。残念ながら、これはそれ以来機能していません:

$ Sudo modprobe -r usbserial
$ Sudo modprobe usbserial vendor=0x0403 product=0x6001
$ Sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations
5
russell

誰かが将来それをググる場合に備えて、私はこれに対する解決策を見つけたと思います。 10.04はデフォルトでusbserialをロードしなかったため、modprobe usbserial vendor=0x0403 product=0x6001を追加する必要がありました。これを/etc/modulesに追加しました。アップグレード後、12.04はデフォルトでftdi_sioドライバーをロードします。これは、使用している組み込みデバイス用です。 /etc/modulesを元に戻さなかったので、usbserialも読み込まれ、おそらく何らかの競合が発生していました。 /etc/modulesからusbserialを削除して再起動したところ、うまくいきました。

この解決策に本当に自信がある場合は、マシンを再起動してシリアルポートが正しく起動したかどうかを確認することで確認しますが、再起動して接続を失った場合は、作業を完了する必要があるため、かなりばかげています。私はそれを持っている。

2
russell