cp210x USB to UART driver issues, Arduino IDE, ESP32 dev board

Hi all,

after having a lot of fun with several raspberry pis for a ling time, I’ve bought me a ESP32 dev board to play with. It’s a “NodeMCO ESP32”, and doc are saying usable/compatible with Arduino IDE.

As usual with OpenSuse, there are two general possibilities to get this Arduino IDE, “direct” install from download page (unzip a .tar.gz in this case), or zypper. Trying our rpms first, from repo CrossToolchain:avr, version 1.8.7, should be new enough. Whyever, I’m getting an “error when downloading” the ESP32 library files. Using the same (I swear :-)) settings for the 1.8.8 directly downloaded IDE, I can (at least) download these libraries.

Starting from then I ran in a bigger issue with the “COM port” used / to be used for this board. First ran into a hardware issue: I’ve 4 port USB3.0 hub, but when connecting the ESP32 board to this hub, nothing happened, no light showing me that even a connection took place.

Using a “direct” USB port in my OpenSuse box adds a device

Bus 001 Device 011: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]

Not really an idea how to use it :frowning:

At first, as a normal user, I’ve got not a single “port” option shown on Arduino IDE. Found this guide: https://playground.arduino.cc/Linux/OpenSUSE, mentioning “to make every user a member of the groups: dialout, lock and uucp.”
Did, and got dev/ttyS0 and /dev/ttyS1 offered in Arduino IDE.

But these seems to be native/hardware serial interfaces of my OpenSuse box, I don’t have any connectors, but can enable them in BIOS settings. For whatever reason :slight_smile:

Piping “ls /dev” output to files, one when ESP32 board is connected, one when ESP32 board is not connected, shows me that the connected ESP32 board adds this file:

lrwxrwxrwx 1 root root 15 16. Dez 11:35 vantage -> bus/usb/001/011

But Arduino IDE does not offer it for selection, as said only /dev/ttyS0 and /dev/ttyS1. And “enabling” them the hard way in ~/.arduino15/preferences.txt

serial.port=/dev/vantage
serial.port.file=vantage

leads to an error

esptool.py v2.3.1
Traceback (most recent call last):
  File "/home/michael/.arduino15/packages/esp32/tools/esptool/2.3.1/esptool.py", line 2637, in <module>
    _main()
  File "/home/michael/.arduino15/packages/esp32/tools/esptool/2.3.1/esptool.py", line 2630, in _main
    main()
  File "/home/michael/.arduino15/packages/esp32/tools/esptool/2.3.1/esptool.py", line 2355, in main
    esp = chip_class(args.port, initial_baud, args.trace)
  File "/home/michael/.arduino15/packages/esp32/tools/esptool/2.3.1/esptool.py", line 193, in __init__
    self._port = serial.serial_for_url(port)
  File "/usr/lib/python2.7/site-packages/serial/__init__.py", line 88, in serial_for_url
    instance.open()
  File "/usr/lib/python2.7/site-packages/serial/serialposix.py", line 272, in open
    self._reconfigure_port(force_update=True)
  File "/usr/lib/python2.7/site-packages/serial/serialposix.py", line 326, in _reconfigure_port
    raise SerialException("Could not configure port: {}".format(msg))
serial.serialutil.SerialException: Could not configure port: (25, 'Inappropriate ioctl for device')
Beim Hochladen des Sketches ist ein Fehler aufgetreten

Running out of ideas, any hints would be great. Any OpenSuse “makers” being here?

Joyful Third Sunday in Advent,
Michael

Hi
So you have never connected to your RPi’s over a serial/USB connection?

If like the RPi’s it will be /dev/ttyUSB0 rather than ttyS0, you can check via dmesg output when adding the device connection.

Adding your user to dialup should be enough.

Hi Malcolm,

thanks for answering!

No, thanks to SSH and for a gui VNC never needed :slight_smile:

THANK YOU! Did already before, but not precisely enough, missed the “disconnected” line:

  164.049374] usb 1-2.4: new full-speed USB device number 8 using xhci_hcd
  164.209179] usb 1-2.4: New USB device found, idVendor=10c4, idProduct=ea60
  164.209183] usb 1-2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
  164.209186] usb 1-2.4: Product: CP2102 USB to UART Bridge Controller
  164.209189] usb 1-2.4: Manufacturer: Silicon Labs
  164.209191] usb 1-2.4: SerialNumber: 0001
  164.277600] usbcore: registered new interface driver usbserial
  164.277639] usbcore: registered new interface driver usbserial_generic
  164.277668] usbserial: USB Serial support registered for generic
  164.284901] usbcore: registered new interface driver cp210x
  164.284940] usbserial: USB Serial support registered for cp210x
  164.285019] cp210x 1-2.4:1.0: cp210x converter detected
  164.288591] usb 1-2.4: cp210x converter now attached to ttyUSB0
  164.453372] usb 1-2.4: usbfs: interface 0 claimed by cp210x while 'brltty' sets config #1
  164.454312] cp210x ttyUSB0: cp210x converter now disconnected from ttyUSB0
  164.454344] cp210x 1-2.4:1.0: device disconnected
  169.434230] input: BRLTTY 5.5 Linux Screen Driver Keyboard as /devices/virtual/input/input10

Digging further I’ve found that there’s already a bugzilla issue open for this: https://bugzilla.opensuse.org/show_bug.cgi?id=1007652

brltty daemon “catches” the port automatically.

Hi
Should be able to mask the brltty.target so it shouldn’t start, else uninstall the brltty packages and then add a lock.


 systemctl list-unit-files brl*
UNIT FILE       STATE   
brltty@.service static  
brltty.target   disabled
brltty@.target  disabled

3 unit files listed.

systemctl mask brltty.target
Created symlink /etc/systemd/system/brltty.target → /dev/null.

systemctl list-unit-files brl*
UNIT FILE       STATE   
brltty@.service static  
brltty.target   masked  
brltty@.target  disabled

or


zypper rm brltty brltty-driver-at-spi2 brltty-driver-brlapi brltty-driver-espeak brltty-driver-speech-dispatcher brltty-driver-xwindow brltty-lang
zypper al brltty brltty-driver-at-spi2 brltty-driver-brlapi brltty-driver-espeak brltty-driver-speech-dispatcher brltty-driver-xwindow brltty-lang

See how that goes…