I just did a fresh install of Ubuntu 22.04 and it broke support for CH340 USB to serial adapter based devices. (support was native in 20.04)
When I do /$ ls /dev there is no ttyUSB0 entry in the list.
If I do /$ lsusb I do get : Bus 003 Device 002: ID 1a86:7523 QinHeng Electronics CH340 serial converter

If I do /$ lsmod I can see the right module is loaded : ch34x 24576 0

I tried to manually create the node with mknod /dev/ttyUSB0 c 188 0 and chmod it to 777 but it doesn't work either.

Any help is welcome :)

  • 1
    After plugging in the USB thing, run sudo dmesg the last few lines should show tow the USB device has been identified, and what device names that has been allocated.
    – Soren A
    Apr 22, 2022 at 9:46
  • Thanks so much for asking this question - solutions worked for me
    – xx1xx
    Jan 24, 2023 at 6:10
  • Soren A that is only correct in the cases where a driver attached an a device name was allocated. iow not this case. Aug 12, 2023 at 11:59

4 Answers 4


Unless you are using a braille display this should do the trick:

sudo apt remove brltty 

Don't forget to plug your dongle off and on.

  • 11
    Very helpful I did not expect to find such an obscure reason for my ESP32 not working!
    – Besi
    Sep 14, 2022 at 13:34
  • 4
    This is just ridiculous. I spent 3 hours trying to figure out why freshly installed Ubuntu with seemingly proper drivers is not accepting my ESP32 with the same wire I used with Raspberry Pi. Thanks! Sep 27, 2022 at 8:23
  • If re-plugging physically is tedious, see here: askubuntu.com/a/61165/367444 :-)
    – Harald
    Jan 15, 2023 at 14:43
  • 1
    Thanks you, I plugged/unplugged like 100 times before figuring out this. Before removing brlttly sudo dmesg showed this and tryied to load Screen Driver Keyboard ch34x 1-1.4:1.0: ch34x converter detected; usb 1-1.4: ch34x converter now attached to ttyUSB0; input: BRLTTY 6.4 Linux Screen Driver Keyboard as /devices/virtual/input/input71; usb 1-1.4: usbfs: interface 0 claimed by ch34x while 'brltty' sets config #1
    – Isuru
    Mar 1, 2023 at 14:51
  • Not working for me, after removing brltty and rebooting still I don't see the device.
    – user171780
    Jun 22, 2023 at 5:46

This happens because of conflict between product IDs (a Braille screen reader and my CH340 based chip). Here is the solution :

  1. Edit /usr/lib/udev/rules.d/85-brltty.rules
  2. Search for this line and comment it out:
    ENV{PRODUCT}=="1a86/7523/*", ENV{BRLTTY_BRAILLE_DRIVER}="bm", GOTO="brltty_usb_run"
  3. reboot

More on https://unix.stackexchange.com/questions/670636/unable-to-use-usb-dongle-based-on-usb-serial-converter-chip

  • 3
    Editing /usr/lib/udev/rules.d/85-brltty.rules worked for me on PopOS 22.04 to work with a esp8266, but to be sure this is fixed for good I also run sudo apt remove brltty . Thanks :) Sep 10, 2022 at 21:32
  • 1
    I found that it only affected one of the two USB slots on the front of my PC. After plugging in my ESP32-WROVER in each, I ran sudo dmesg | grep tty. For the slot affected by brltty, the last of the output was ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0; for the unaffected slot, that message was also there, but followed by usb 4-4: ch341-uart converter now attached to ttyUSB0. I also decided to use sudo apt remove brltty (Ubuntu 22.10).
    – user643722
    Jan 11, 2023 at 12:24

I had this due to a kernel issue.

The 5.4.0-99-generic modules package had no usb serial drivers, while 4.15.0-96-generic did. They are also in linux-modules-5.4.0-99-lowlatency. Those cannot be used due to a different module format. Pretty much all of them do, but seems there was this one that was wrongly packaged and of course released without checking.

in short, steps in that case

  1. check if the drivers are available

$ find /lib/modules/$( uname -r ) | grep usb/serial

  1. try to reinstall -generic
  2. still not functioning
  3. regret everything
  4. remove the 5.4 line kernel which seems some kind of forward port from 18.04?! and switch to 4.15.0 / linux-generic
  5. find it's still not working and manually load the ftdi_sio driver.
  6. find it's still not working as the driver did not fully attach to the device in-kernel
  7. remember a workaround that was really helpful on Windows 95 Rel2.0 which introduced USB support and as such still had a lot of little problems
  8. try that workaround: re-plug the usb device
  9. see that it now loads and is fully functional
  10. wonder what was the point of working in IT, from PC sales clerk & assembly, to helpdesk, to second level, to third level, to consulting, if I could still be overclocking MMX pentiums, play Quake or Falcon 4.0 and deal with the same issues as in 1997!

Ubuntu 23.04 with PlatformIO... I've had these same issues, and applied all of the fixes above at various times successfully. It is broken again. The same port doesn't exist error messages even though the d1-mini connects and disconnects... and permissions/groups are setup!

My Solution... The issue seems to be with how the port is specified... ttyUSB0 no longer works. Use /dev/ttyUSB0 instead.

Testing outside of platformio was to install esptool with:

sudo apt install esptool

Then attempt various port strings using:

esptool --port /dev/ttyUSB0 read_mac

For platformio add this line to the [env] section of platformio.ini file:

upload_port = /dev/ttyUSB0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .