Fixing the Arduino IDE for the ESP32/ESP8266 on Ubuntu 20.04
If you want to use the Arduino IDE with an ESP32 or ESP8266 microcontroller on Ubuntu 20.04, you get the following error when compiling your sketch:
Traceback (most recent call last): File "/home/koan/.arduino15/packages/esp32/tools/esptool_py/2.6.1/esptool.py", line 37, in <module> import serial ImportError: No module named serial
This is because esptool.py
is called as a Python 2 program, and Python 2 is deprecated. Ubuntu 20.04 doesn't even have pip
anymore for Python 2, so you can't even install the serial
module to solve this error.
There are two solutions to this problem: using Python 3 or Python 2.
Installing the module for Python 3
One solution is to create a symlink from /usr/bin/python
to /usr/bin/python3
. Ubuntu even has a package for this:
After this install the pyserial
module:
If you already have the serial
module, you have to remove it first:
After this, try compiling your sketch again. This time the Arduino IDE calls esptool.py
with Python 3, and thus finds the module you just installed with pip3
.
Installing the module for Python 2
Another solution is to keep using Python 2 and thus installing the missing module with pip2
. First enable the universe
repository, where Python 2 has been moved to in Ubuntu 20.04:
Update your package list, install Python 2 if you don't have it (it's not included anymore by default in new Ubuntu installations, but the Arduino IDE would have shown you another error in that case) and then pip2
:
$ sudo apt update $ sudo apt install python2 $ curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py $ python2 get-pip.py
Then finally install the missing module:
After this, try compiling your sketch again. The Arduino IDE still calls esptool.py
with Python 2, but this time it finds the module you just installed with pip2
, so the error disappears.