We downloaded the zip archive of IDE version 2.2.1 (Oct. 2023) and encountered the followig problems:
esptool is a Python application using the serial port (COMx on Windows, ttyUSBx on Linux, etc.) to upload the compiled code to the microcontroller's flash memory. In some cases pyserial is not installed or not found.
Workaround:
sudo apt install pip3 pip3 install pyserial
Try to upload the code from the Arduino IDE to the esp32. It will call esptool in the background. It should work now.
The reason is that the CH340 usb-to-serial driver collides with the preinstalled Braille interface driver brltty.
You can check this driver registration problem with
sudo dmesg -w
Plug in the board and observe the dmesg output. You will see that the usb-to-serial driver is unloaded in the end. This is the problem. The driver, i.e. the serial communication device, is finally not available.
Workaround:
If you do not need a Braille interface the easiest would be to deinstall the full driver support by
Remove the brltty driver:
sudo apt remove brltty
Alternative: deactivate.
systemctl stop brltty-udev.service sudo systemctl mask brltty-udev.service systemctl stop brltty.service systemctl disable brltty.service
Solution:
Add the resepective Linux user to the user group dialout:
sudo usermod -a -G dialout <username>
Log out completely and log in again. A restart is not necessary. The Arduino IDE running under user id <username> should now have access to the ttyUSBx interface.