私は最近10.04からUbuntu 12.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
答え1
後で誰かがGoogleで検索した場合に備えて解決策を見つけたようです。私の10.04はデフォルトでusbserialをロードしなかったので、次のようにmodprobe usbserial vendor=0x0403 product=0x6001
usbserialをロードする必要がありました。私は背中を変えなかったので、それもロードされ、一種の衝突を引き起こすことができました。アンインストールして再起動しましたが、うまくいきました。/etc/modules
ftdi_sio
/etc/modules
usbserial
usbserial
/etc/modules
この解決策について本当に自信がある場合は、コンピュータを再起動し、シリアルポートが正常に表示されることを確認して確認します。しかし、再起動して接続が失われると、愚かな気分になります。なぜなら、作業を完了する必要があるからです。私も同じ時間に。
答え2
USBシリアルデバイス(ProlificやFTDIシリーズなど)は公式仕様に準拠していません。代わりに、転送速度などの項目を設定するために、ベンダー固有の制御メッセージと共に2つの一括エンドポイント(出力用1つ、入力用1つ)を使用します。したがって、usbserial
通常のドライバのようなものが転送速度を設定したり、FTDIチップで他の設定作業を実行したりするのに問題があることは驚くべきことではありません。ご存知のように、それはftdi_sio
うまく動作します。
Ubuntuは存在する間、ほぼ4003:6001(FT232)デバイスを処理するようにハードコーディングされているため、デフォルトではftdi_sio
10.04もロードする必要があります。ftdi_sio
私の考えでは、4003:6001を処理するために登録された2つのドライバをロードしているようです。 1つは設計によるもの、もう1つはモジュールパラメータによるものです。カーネルまたは月の位相を変更すると、一方が他方よりも正確にロードされることを意味します。usbserial
最初にロードすると、ボーレートを設定できません。手動usbserial
設定を削除してftdi_sio
デバイスを処理する必要があります。 10.04と12.04で動作します。