古い開発ボードをベースにした組み込みLinux(比較的古いカーネルバージョン)を実行する外部ハードウェアがありますDaVinci DA850
。
ガジェットのシリアル接続を使用して、USBポートを介してホストPCと通信します。外部ハードウェアではこれをttyGS0
一般的と呼びます。
PC側では、Windowsガジェットシリアルドライバが正常に動作します。これはUbuntu 14でもテストされ、再び完全に機能しました。 Ubuntu 14もこのポートを認識していることは注目に値しますttyGS0
。最近Ubuntu 16とUbuntu 18で再テストしたところ、これはうまくいかないことがわかりました。これで、ポートをttyACM0
交換用として認識する新しいUSBシステムがあります。
これがうまくいかない理由を確認すると、外部ハードウェアはメッセージを正しく受信しますが、PC側アプリケーションはから応答を受け取りませんread()
。通常どおりread()
標準モードを使用してselect()
読み取り時間を超えました。おそらく重要なことは、最初の接続でポートが常に「AT」を3回送信することです。
これは、ガジェットシリアルの新しいバージョンがHayesスタイルのハンドシェイクを試みているため、外部ハードウェアが愚かなポートのように動作するとttyACM
予想しているため、これ以上進行できないことを示唆しています。RS-232
次のヒントに従ってください。@JdeBP、私は走ったsystemctl status ModemManager.service
、私は見た
Jun 02 21:10:58 XUbuntu-18 ModemManager[402]: <warn> Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1': Failed to find primary AT port
Jun 02 21:52:36 XUbuntu-18 ModemManager[402]: <info> [device /sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1] creating modem with plugin 'Generic' and '1' ports
Jun 02 21:52:36 XUbuntu-18 ModemManager[402]: <warn> Could not grab port (tty/ttyACM0): 'Cannot add port 'tty/ttyACM0', unhandled serial type'
Jun 02 21:52:36 XUbuntu-18 ModemManager[402]: <warn> Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1': Failed to find primary AT port
Jun 02 22:36:50 XUbuntu-18 ModemManager[402]: <info> [device /sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1] creating modem with plugin 'Generic' and '1' ports
Jun 02 22:36:50 XUbuntu-18 ModemManager[402]: <warn> Could not grab port (tty/ttyACM0): 'Cannot add port 'tty/ttyACM0', unhandled serial type'
Jun 02 22:36:50 XUbuntu-18 ModemManager[402]: <warn> Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1': Failed to find primary AT port
Jun 02 22:41:38 XUbuntu-18 ModemManager[402]: <info> [device /sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1] creating modem with plugin 'Generic' and '1' ports
Jun 02 22:41:38 XUbuntu-18 ModemManager[402]: <warn> Could not grab port (tty/ttyACM0): 'Cannot add port 'tty/ttyACM0', unhandled serial type'
Jun 02 22:41:38 XUbuntu-18 ModemManager[402]: <warn> Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1': Failed to find primary AT port
これはAT
、相手から見た3つのメッセージと一致するようです。
実行mmcli --list-modems
中ですNo modems were found
。
ttyGS
ガジェットのラインナップから新しいスタイルに移動しながら、以前にこのようなものを見た人はいますかttyACM
?私はこれを検索し、ガジェットのシリアル化に関するすべてのドキュメントを読んでACM
、AT
シリアル接続コマンドに関するすべてを確認しましたがACM
、この質問に答えると思われるものは何も見つかりません。
また、設定を確認してみましたがtermios
(元の作業バージョンで変更されたことはありません)、奇妙なことはないようです。
答え1
AT
ModemManagerがsの送信元である可能性があるポートを検索しようとしているようです。これにより、相手のデバイスが混乱する可能性があります。
ModemManager がデバイスに干渉しないように指示するには、udev ルールを設定する必要があります。たとえば、次のように配置できます/etc/udev/rules.d/01-disable-mm-ttyACM.rules
。
KERNEL=="ttyACM*", ENV{ID_MM_DEVICE_IGNORE}="1"
新しいルールを適用するには、を実行してsudo udevadm control --reload-rules
からデバイスを切断して再接続し、ModemManagerがデバイスを無視していることを確認する必要があります。