usb_serial のエラー on Ubuntu Linux


環境

  • Ubuntu 18.04
  • USBシリアルモジュール CP2102
  • RobotDyn STM32F103 Dev.Board
  • NFC RFID-RC522 モジュール
  • ST-Link V2

「Arduino ESP32 と STM32 で NFC RFID-RC522」
https://qiita.com/nanbuwks/items/96c3c2d2af2cf97f3797
の実験をやっている時に、USBシリアルモジュールからデータが受け取れなくなる時がありました。

dmesgでは以下のようにエラーが出ます。


[212046.843899] cp210x ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[212048.518972] cp210x ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[212284.985795] cp210x ttyUSB0: failed get req 0x8 size 1 status: -32

ぐぐると FT232のニセモノが問題だとか、ARMが原因だとか出てきましたが根拠のあるものでは無さそうです。

CP2102 USBシリアル変換アダプタ

このモジュール自体はいろんな実験で使っていて割と信頼みがありました。

刺した時のdemsは以下の通り。


[212467.319926] usb 1-1.2.1.2: new full-speed USB device number 123 using ehci-pci
[212467.460061] usb 1-1.2.1.2: New USB device found, idVendor=10c4, idProduct=ea60
[212467.460063] usb 1-1.2.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[212467.460064] usb 1-1.2.1.2: Product: CP2102 USB to UART Bridge Controller
[212467.460065] usb 1-1.2.1.2: Manufacturer: Silicon Labs
[212467.460066] usb 1-1.2.1.2: SerialNumber: 0001
[212467.469347] cp210x 1-1.2.1.2:1.0: cp210x converter detected

解決方法

最初にこの記事をポストしたときには、ボーレートが遅すぎてフロー制御がうまくいってないのではないかという内容でしたが、それは間違いでした。

この実験では RobotDyn STM32F103 Dev.Board へ ST-Link から 3.3V の電源を供給していたのですが、供給力不足だったようです。RFID-RC522が動作した時に電圧降下が起こったかな?

ST-Linkからの電源供給をやめて、USBシリアルから5VをRobotDyn STM32F103 Dev.Board へ供給するようにしたら解消しました。