I am in the process of moving from a Windows10 based PC to a Ubuntu 22.04 LTS one. Installing MS VSC and PlatformIO was successful, now I wanted to build and upload a simple blink sketch to a NodeMCU Amica (ESP8266). This is failing with
Configuring upload protocol...
AVAILABLE: espota, esptool
CURRENT: upload_protocol = esptool
Looking for upload port...
Using manually specified: /dev/ttyUSB0
Uploading .pio/build/nodemcuv2/firmware.bin
esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting........_____....._____....._____....._____....._____....._____....._____
A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
*** [upload] Error 2
On Ubuntu, and Mint etc, you need to be sure that your user is in the appropriate groups.
What do you get when you login as the affected user, and in a terminal session, type:
groups
You need to be sure that this user is a member of the group which owns the /dev/ttyUSB0 special file. On my Linux Mint (based on Ubuntu) system, I see this:
ls -l /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 0 Jan 8 15:45 /dev/ttyUSB0
The “dialout” group owns the device, so I need to be a member of this group:
groups
norman adm dialout cdrom sudo dip plugdev lpadmin sambashare docker
And I see that I am, so I can upload with no problems.
To add your user to the group:
sudo usermod --append --groups dialout $USER
You need to logout of the terminal session and then log back in, or you can simpky:
su - $USER
To start a new shell which will pick up the new group. Saves logging out and back in. Exit twice to fully logout when you are done.
If you started VSCode before adding yourself to dialout then you will need to exit and restart VSCode to pick up the new dialout group privileges.
I remember when I upgraded Linux Mint, there was a problem uploading. This was due to a screen reader utility , brltty, which took over the port and prevented uploads. Try this in the terminal:
dmesg --follow | grep -i brltty
Then connect your board and attempt an upload.
If you see “brltty” mentioned in the output from dmesg then you need to:
sudo apt remove brltty
The application is useful for visually impaired folks, but grabs the ttyUSB0 port and prevents Arduino/PlatformIO uploads to that port.
If this isn’t the case, I’m afraid I’m currently out of ideas!
Attempted to follow your advice - but there is no more /dev/ttyUSB0 now, so PlatformIO is not able to determine a port. WTF? I had another device plugged in (a DMM) before, so maybe that tricked me into believing I saw the ESP.
So I tried a different USB cable…
What can I say? It now is working.