Skip to content
incompleto

Programación de ESP8266 en ArchLinux

La forma rápida es utilizar el paquete AUR esp8266-rtos-sdk la unica desventaja es que utiliza la version estable (2021), la version git actual corrige las vulnerabilidades CVE-2023-52160 CVE-2020-26142 entre otros errores

Instalación (Manual git)

La instalación consiste en la Toolchain (compilador), Build tools (CMake and Ninja) y SDK (RTOS SKD)

Pre-requisitos

bash
sudo pacman -S --needed gcc git make ncurses flex bison gperf python2-pyserial python python-click python-cryptography python-future python-pyelftools python-pyparsing python-pyserial python-virtualenv

Variables de entorno

Para usar como variable de entorno consulte Environment variables Variables - ArchLinux y ESP8266 RTOS SDK - Toolchain, según sea su caso.

Permisos /dev/ttyUSB*

Dependiendo de la configuración UDEV el usuario debe pertenecer al grupo dialout

bash
sudo usermod -a -G dialout $USER

O también cambiar directamente los permisos del tty

bash
sudo chmod -R 777 /dev/ttyUSB0

O en su defecto cambiar los permisos UDEV

Permisos UDEV

API/Librerías (utilizando python3)

TIP

Selecciona un directorio de trabajo para el repositorio

TIP

Si no se usa el argumento --depth 1 puede saltarse el paso Version FIX. Se establece --depth 1 para solo obtener la ultima version de la API (~190MB).

bash
git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git --depth 1

Se ingresa en la carpeta del repositorio cd ESP8266_RTOS_SDK

ncurses patch

Para corregir el siguiente error, descrito en menuconfig script fails for ncurses in Arch-Linux (GIT8266O-855) #1278

 *** Unable to find the ncurses libraries or the
 *** required header files.
 *** 'make menuconfig' requires the ncurses libraries.
 *** 
 *** Install ncurses (ncurses-devel) and try again.
 ***

Se aplica el parche para el paquete AUR esp8266-rtos-sdk

bash
wget https://aur.archlinux.org/cgit/aur.git/plain/esp8266-rtos-sdk-aur-ncurses-fix.patch?h=esp8266-rtos-sdk -O esp8266-rtos-sdk-aur-ncurses-fix.patch
bash
patch --forward --strip=1 --input=./esp8266-rtos-sdk-aur-ncurses-fix.patch

Version FIX

Ciertos procesos en la instalación y configuración requieren el tag de la version la forma mas simple de evadir este problema.

fatal: No names found, cannot describe anything.
Traceback (most recent call last):
  File "~/esp/ESP8266_RTOS_SDK/tools/idf_tools.py", line 1250, in <module>
    main(sys.argv[1:])
    ~~~~^^^^^^^^^^^^^^
  File "~/esp/ESP8266_RTOS_SDK/tools/idf_tools.py", line 1246, in main
    action_func(args)
    ~~~~~~~~~~~^^^^^^
  File "~/esp/ESP8266_RTOS_SDK/tools/idf_tools.py", line 1053, in action_install_python_env
    idf_python_env_path, _, virtualenv_python = get_python_env_path()
                                                ~~~~~~~~~~~~~~~~~~~^^
  File "~/esp/ESP8266_RTOS_SDK/tools/idf_tools.py", line 798, in get_python_env_path
    idf_version_str = subprocess.check_output(['git', '-C', global_idf_path, 'describe', '--tags'], cwd=global_idf_path, env=os.environ).decode()
                      ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/subprocess.py", line 472, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
               **kwargs).stdout
               ^^^^^^^^^
  File "/usr/lib/python3.13/subprocess.py", line 577, in run
    raise CalledProcessError(retcode, process.args,
                             output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['git', '-C', '~/esp/ESP8266_RTOS_SDK', 'describe', '--tags']' returned non-zero exit status 128.

Esto ocurre al por que se busca los tags del repositorio los cuales no están contenidos en el ultimo commit (--depth 1)

Se puede crear version.txt con el ultimo tag con

bash
echo v3.5 > version.txt

TIP

También se pueden extraer los tags (nótese que se descargaran los tags de todos los repositorios ~+47MB)

bash
git fetch --tags

Requisitos

Se crea un entorno virtual para poder trabajar con pip y se instalan los requisitos.

bash
py -m venv .

Instalación Automática

bash
./install.sh

De fallar se puede realizar manualmente, instalando el toolchain, estableciendo un entorno para python, instalando requirements.txt (siguiendo la guía official).

Toolchain (Manual)

Se descarga el toolchain

Linux 64bits (gcc8_4_0-esp-2020r3)

bash
wget -P ~/.espressif/dist https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz
bash
curl -o ~/.espressif/dist https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz

Se descomprime

bash
tar -xvf ~/.espressif/dist/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz -C ~/.espressif/tools

Por compatibilidad se puede trabajar en el directorio ~/esp, se elije trabajar en el directorio ~/.espressif (para tener todas las toolchain bajo un mismo directorio)

Errores en Submódulos

Algunos submódulos pertenecen a repositorios que están migrados entre otros errores, la recomendación es revisar issues y pull request

INFO

A términos del commit d412ac6 aplicar el pull request #1306 y actualizar los submódulos corrige los errores de compilación relacionado a módulos faltantes

bash
git fetch origin pull/1306/head:fix  
git checkout fix
git submodule update --init --recursive --depth 1

Plantilla

Inicializar entorno

se requiere inicializar el entorno de trabajo con

bash
[directorio del proyecto] [directorio de ESP8266_RTOS_SD]/export.sh

Ejemplo

bash
. $IDF_PATH/export.sh

Github Action

ESP8266 RTOS SDK Build - GitHub Action

Jackestar 2026