chosan
2023年8月18日 16時59分
cuやminicomで試してみたのですが、CP210Xを使用しているUSBシリアルで送受信ができないのです。
デバイスとしては認識しているのですが、どこから調べればよいでしょうか?
FTDI系のUSBシリアルは送受信ができました。
ハードウェア AGX3142
状態はこんな感じです。
root@armadillo:~# uname -a Linux armadillo 4.9.133-at30 #2 SMP PREEMPT Tue Jun 27 13:04:36 JST 2023 armv7l GNU/Linux root@armadillo:~# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" root@armadillo:~# lsusb Bus 002 Device 003: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem Bus 002 Device 002: ID 0424:3503 Standard Microsystems Corp. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family] Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub root@armadillo:~# dmesg|grep USB [ 0.324968] GPIO line 85 (EC25_USB_VBUS) hogged as output/low [ 1.707684] pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver [ 1.776546] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.793537] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters [ 1.819480] usbserial: USB Serial support registered for generic [ 1.828562] usbserial: USB Serial support registered for cp210x [ 1.837724] usbserial: USB Serial support registered for FTDI USB Serial Device [ 1.848102] usbserial: USB Serial support registered for GSM modem (1-port) [ 1.858129] usbserial: USB Serial support registered for Sierra USB modem [ 1.868940] usbserial: USB Serial support registered for carelink [ 1.873788] usbserial: USB Serial support registered for zio [ 1.878190] usbserial: USB Serial support registered for funsoft [ 1.882958] usbserial: USB Serial support registered for flashloader [ 1.888049] usbserial: USB Serial support registered for google [ 1.892725] usbserial: USB Serial support registered for libtransistor [ 1.897987] usbserial: USB Serial support registered for vivopay [ 1.902748] usbserial: USB Serial support registered for moto_modem [ 1.907752] usbserial: USB Serial support registered for motorola_tetra [ 1.913122] usbserial: USB Serial support registered for novatel_gps [ 1.918211] usbserial: USB Serial support registered for hp4x [ 1.922712] usbserial: USB Serial support registered for suunto [ 1.927369] usbserial: USB Serial support registered for siemens_mpi [ 2.015848] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1 [ 2.051660] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00 [ 2.056595] hub 1-0:1.0: USB hub found [ 2.074197] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 2 [ 2.101653] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00 [ 2.106540] hub 2-0:1.0: USB hub found [ 2.228531] USB Video Class driver (1.1.1) [ 2.421656] usb 1-1: new full-speed USB device number 2 using ci_hdrc [ 2.471649] usb 2-1: new high-speed USB device number 2 using ci_hdrc [ 2.635587] usb 1-1: cp210x converter now attached to ttyUSB0 [ 2.638090] usbhid: USB HID core driver [ 2.687101] hub 2-1:1.0: USB hub found [ 15.443632] usb 2-1.2: new high-speed USB device number 3 using ci_hdrc [ 15.620474] usb 2-1.2: GSM modem (1-port) converter now attached to ttyUSB1 [ 15.700767] usb 2-1.2: GSM modem (1-port) converter now attached to ttyUSB2 [ 15.786245] usb 2-1.2: GSM modem (1-port) converter now attached to ttyUSB3 [ 15.866275] usb 2-1.2: GSM modem (1-port) converter now attached to ttyUSB4
コメント
chosan
>送受信できないと判断した操作を教えてもらえますか?
2種類あります。
①CP210Xを使っているUSBシリアルのTXとRXをつなげた状態
②CP210Xを使っている弊社の機器をUSBにつなげて、コマンドの受信と応答があるかの確認
以前のG3であれば問題なく動いていました。
通信速度は①が115200bps、②は19200bpsです。
動いていたころはこんな感じです。CP210Xをイネーブルにしてカーネルを再コンパイルしています。
Linux LP1010 4.9.133-at15 #3 SMP PREEMPT Wed Jul 8 14:48:11 JST 2020 armv7l GNU/Linux
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
他に試したことは、カーネルソースを見てみるとat15の頃からRTSCTS周りが変わっているようなので、
ハードウェアフロー制御をオフにしてcuやminicomで試したのですが送受信できませんでした。
at_mizo
溝渕です。
ご回答ありがとうございます。
> >送受信できないと判断した操作を教えてもらえますか?
>
> 2種類あります。
> ①CP210Xを使っているUSBシリアルのTXとRXをつなげた状態
loopbackしたが動作しなかったという理解で良いでしょうか?
次のようにコマンドを実行しても、コンソールに"aaa"と表示されませんか?
[armadillo]# cat ttyUSB0 & [armadillo]# echo aaa > ttyUSB0
また、次のコマンドの出力を教えてください。
stty -a -F /dev/ttyUSB0
> 動いていたころはこんな感じです。CP210Xをイネーブルにしてカーネルを再コンパイルしています。
> Linux LP1010 4.9.133-at15 #3 SMP PREEMPT Wed Jul 8 14:48:11 JST 2020 armv7l GNU/Linux
> VERSION_ID="10"
> VERSION="10 (buster)"
> VERSION_CODENAME=buster
>
> 他に試したことは、カーネルソースを見てみるとat15の頃からRTSCTS周りが変わっているようなので、
> ハードウェアフロー制御をオフにしてcuやminicomで試したのですが送受信できませんでした。
linux-4.9-at15では動いていたが、linux-4.9-at30で動かなくなったという理解で良いでしょうか?
CP210Xへの修正は、linux-4.9-at25とlinux-4.9-at26の間でのみ行なわれています。可能であれば、linux-4.9-at25とlinux-4.9-at26でも動作確認していただけますか?
chosan
こんな感じでした。コンソールに"aaa"と表示されませんでした。at25とat26は試してみます。
root@armadillo:~# ls /dev/ttyUSB* /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 /dev/ttyUSB4 root@armadillo:~# stty -a -F /dev/ttyUSB0 speed 115200 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc root@armadillo:~# cd /dev root@armadillo:/dev# cat ttyUSB0 & [3] 2693 root@armadillo:/dev# echo aaa > ttyUSB0 root@armadillo:/dev#
at_mizo
chosan
at_mizo
chosan
at_mizo
chosan
chosan
at26入れて送受信できたのは幻だったみたいです。
色々組み合わせてみましたが、送受信できないのは変わりません。
AT15のカーネルは、AT30のユーザーランドでは使えないのでしょうか?
抜き差しした後のcp210x.cのデバッグメッセージですが、なんで後からCRTSCTSをイネーブルにしてこようとするんですかね?
usb 1-1: new full-speed USB device number 6 using ci_hdrc cp210x 1-1:1.0: cp210x converter detected usb 1-1: cp210x converter now attached to ttyUSB8 cp210x ttyUSB8: cp210x_get_termios_port - baud rate = 115200 cp210x ttyUSB8: cp210x_get_termios_port - data bits = 8 cp210x ttyUSB8: cp210x_get_termios_port - parity = NONE cp210x ttyUSB8: cp210x_get_termios_port - stop bits = 1 cp210x ttyUSB8: cp210x_get_termios_port - flow control = NONE cp210x ttyUSB8: cp210x_change_speed - setting baud rate to 115200 cp210x ttyUSB8: cp210x_tiocmset_port - control = 0x0303 cp210x ttyUSB8: cp210x_set_termios - read ulControlHandshake=0x00000000, ulFlowReplace=0x00000000 cp210x ttyUSB8: cp210x_set_termios - flow control = CRTSCTS cp210x ttyUSB8: cp210x_set_termios - write ulControlHandshake=0x00000009, ulFlowReplace=0x00000080
at_mizo
溝渕です。
> at26入れて送受信できたのは幻だったみたいです。
> 色々組み合わせてみましたが、送受信できないのは変わりません。
何を組み合わせたのでしょうか?
> AT15のカーネルは、AT30のユーザーランドでは使えないのでしょうか?
ユーザーランドのバージョンは"v20230726"のように日付になっています。
https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…
「AT30のユーザーランド」は何を示していますか?
chosan
> 何を組み合わせたのでしょうか?
> ユーザーランドのバージョンは"v20230726"のように日付になっています。
> https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…
調べたのですがユーザーランドのバージョン確認方法がわかりません。カーネルat30が入っていた出荷時のままです。
確認したことは、カーネルを変えながらの動作確認です。動作確認は教えていただいたsttyで状態確認と「cat ttyUSB0 &」と「echo aaa > ttyUSB0」です。
USBシリアルをつなげて送信と受信をループバックしています。このハードウェアはWindowsでは問題なく入力した文字が戻ってきます。
カーネルとDTBファイルは、https://download.atmark-techno.com/armadillo-iot-g3/image/からダウンロードしています。
カーネルを変えたときは、再起動しています。
at30カーネル→認識したけど通信できず
at26カーネル→認識したけど通信できず
at25カーネル→CP210X認識せず
at25カーネル(CP210Xイネーブルして再コンパイル)→認識したけど通信できず
at15カーネル(CP210Xイネーブルして再コンパイル)→認識したけど通信できず
それぞれで、sttyを確認。
「stty -a -F /dev/ttyUSB0」で確認するとcrtsctsはイネーブル
「stty -F /dev/ttyUSB0 -crtscts」を実行するとコンソール入力に戻ってこない。
stty実行するとat15,at25だと「cp210x ttyUSB0: failed set request 0x7 status: -32」と表示される。
at_mizo
溝渕です。
> 調べたのですがユーザーランドのバージョン確認方法がわかりません。カーネルat30が入っていた出荷時のままです。
起動後に(簡単に)確認する方法はありません。もし書き換えを行った場合は、そのときに書き込んだバージョンを覚えておくのが良いと思います。
> at15カーネル(CP210Xイネーブルして再コンパイル)→認識したけど通信できず
以前、
> 動いていたころはこんな感じです。CP210Xをイネーブルにしてカーネルを再コンパイルしています。
> Linux LP1010 4.9.133-at15 #3 SMP PREEMPT Wed Jul 8 14:48:11 JST 2020 armv7l GNU/Linux
> VERSION_ID="10"
> VERSION="10 (buster)"
> VERSION_CODENAME=buster
と、動いていたと私は認識しているのですが合っていますか?
もし合っているなら、動いていたときと現在で何か環境に違いはありますか?
chosan
ユーザーランドが新しくなっているのでは?と思います。自分が書いたわけではないので確認しようがないです。
ユーザーランドに関しては、G3を購入した状態でapt update,apt upgradeするぐらいです。
最近購入したG3がat30になっていて、CP210Xを刺したら認識したので、今まで使っていたRubyとGemでserialport入れてプログラムを動かしたら応答がない、おかしいなぁ?となり、Rubyをやめてなるべく素のままで確認しよう、となってここまで来ました。
G3に期待するのはUSBシリアルがさくっと動けばいいだけなのですが、難しそうですね。
G1時代からずっと使ってきましたが、これは困った。
時間がかかるのが嫌だったのですが、古いユーザーランドを試してみます。
長く対応していただきましたが、ありがとうございました。
at_mizo
溝渕です。
なかなか進まずすみません...。
> ユーザーランドが新しくなっているのでは?と思います。自分が書いたわけではないので確認しようがないです。
> ユーザーランドに関しては、G3を購入した状態でapt update,apt upgradeするぐらいです。
>
> 最近購入したG3がat30になっていて、CP210Xを刺したら認識したので、今まで使っていたRubyとGemでserialport入れてプログラムを動かしたら応答がない、おかしいなぁ?となり、Rubyをやめてなるべく素のままで確認しよう、となってここまで来ました。
購入した状態でat15のときは動いていたが、購入した状態でat30になったら動かなくなったという事ですね。
https://armadillo.atmark-techno.com/news/20200629/software-update-aiotg3
から取得できるインストールディスクイメージを利用すると動きますか?
# USB_SERIAL_CP210Xが無効なので、Linuxカーネルはビルドする必要があります。
chosan
前回購入した時期を思い出して、下記のimgでリカバリして問題なくCP210X使えました。sttyみるとcrtsctsはディセーブルでした。
install_disk_sd_buster_20221026_iotg3_m1.img
カーネルがat25だったので、cp210xをイネーブルして再コンパイルしています。
at15で動いていたというか、購入したままのユーザーランドとの組み合わせがたまたま動いていたんでしょう。
at15自体はG2からG3に切り替わって色々試していた時の名残です。cp210x動けばいいやぐらいだったので。
リカバリは蓋を外してジャンパーピンをさす必要があるので、できればファイルの修正ぐらいでなんとかしたいところです。
at_mizo
溝渕です。
確認ありがとうございます。
> 前回購入した時期を思い出して、下記のimgでリカバリして問題なくCP210X使えました。sttyみるとcrtsctsはディセーブルでした。
> install_disk_sd_buster_20221026_iotg3_m1.img
> カーネルがat25だったので、cp210xをイネーブルして再コンパイルしています。
この状態で、最新のインストールディスクを使用すると、CP210Xが使えなくなったのですね。
今現在動く状態から、カーネルだけを最新にしてみてもらえますか?
それで動けばユーザーランドの差分を確認してみます。動かなければカーネルの差分を確認してみます。
chosan
> install_disk_sd_buster_20221026_iotg3_m1.img
でリカバリ後、「uImage-x1-v4.9-at30」と「armadillo_iotg_g3_m1-v4.9-at30.dtb」でカーネル書き換えし再起動してみました。
USBシリアルは認識し、応答も確認できました。
この時、sttyのcrtsctsはディセーブルでした。
catしてechoを実行するとコンソールに戻ってこないのですがechoバックはあったし、
minicom使って弊社の機器ともつながりましたので通信できたと判断しました。
root@armadillo:~# uname -a
Linux armadillo 4.9.133-at30 #2 SMP PREEMPT Tue Jun 27 13:04:36 JST 2023 armv7l GNU/Linux
root@armadillo:~# lsusb
Bus 002 Device 003: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
Bus 002 Device 002: ID 0424:3503 Standard Microsystems Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@armadillo:~# stty -a -F /dev/ttyUSB0
speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ;
eol2 = ; swtch = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc
root@armadillo:~# cat /dev/ttyUSB0 &
[1] 2640
root@armadillo:~# echo aaaa > /dev/ttyUSB0
root@armadillo:~# aaaa
aaaa
at_mizo
at_mizo
溝渕です。
ご利用のCP210XのUSBのVendor ID/Product IDですが、10c4/ea60だったりしませんか?
これは、以下のコマンドで確認できます。
[armadillo]# lsusb
もしそうであれば、Armadillo-IoT G3L用のパッケージ"brcm-patchram-plus"が悪さをしているかもしれません。
"brcm-patchram-plus"によってインストールされる、"/lib/udev/rules.d/77-ap6275p.rules"がhitし、tty deviceが使われてしまいます。
もし、上記に該当する場合は、最新のユーザーランドで起動した状態で、
[armadillo]# apt remove brcm-patchram-plus
とした後に再起動し、動作を確認してみてください。
kmr-cast
chosan
chosan
chosan
apt remove -y brcm-patchram-plus
をやっておけば良さそうです。
ttyCommModemが見えなくなったというのは下記のメッセージがコンソールに表示されてしまうことを言っていて、
connection-recover.serviceを止めていたせいかもしれません。何か余計な設定をしてしまったかもしれないので様子見します。
[ 583.175909] usb 2-1.2: new high-speed USB device number 7 using ci_hdrc [ 583.376103] usb 2-1.2: New USB device found, idVendor=2c7c, idProduct=0125, bcdDevice= 3.18 [ 583.384519] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 583.392838] usb 2-1.2: Product: Android nmcli device[ 583.397879] usb 2-1.2: Manufacturer: Android [ 583.411850] option 2-1.2:1.0: GSM modem (1-port) converter detected [ 583.418849] usb 2-1.2: GSM modem (1-port) converter now attached to ttyUSB0 [ 583.433124] option 2-1.2:1.1: GSM modem (1-port) converter detected [ 583.445079] usb 2-1.2: GSM modem (1-port) converter now attached to ttyUSB1 [ 583.458102] option 2-1.2:1.2: GSM modem (1-port) converter detected [ 583.464962] usb 2-1.2: GSM modem (1-port) converter now attached to ttyUSB2 [ 583.479695] option 2-1.2:1.3: GSM modem (1-port) converter detected [ 583.491643] usb 2-1.2: GSM modem (1-port) converter now attached to ttyUSB3
at_mizo
2023年8月18日 17時10分
溝渕です。
> cuやminicomで試してみたのですが、CP210Xを使用しているUSBシリアルで送受信ができないのです。
> デバイスとしては認識しているのですが、どこから調べればよいでしょうか?
まず、どのように送受信できないか教えてください。
> [ 2.635587] usb 1-1: cp210x converter now attached to ttyUSB0
と、ttyUSB0にアタッチはされているようです。
送受信できないと判断した操作を教えてもらえますか?