Arduino i mikrokontrolery z rodziny ESP32 działają pod Linuxem bardzo dobrze — często nawet wygodniej niż pod Windowsem. W większości przypadków nie trzeba też instalować żadnych dodatkowych sterowników, ponieważ obsługa popularnych układów USB-UART jest już wbudowana w jądro systemu. Problem pojawia się zwykle dopiero przy pierwszym podłączeniu płytki: system widzi urządzenie, ale PlatformIO albo Arduino IDE nie potrafi wgrać programu. Najczęściej winne są… uprawnienia do portu szeregowego.
W tym artykule pokażę szybkie rozwiązanie problemu, które w większości przypadków sprowadza się do dodania użytkownika do grupy dialout.
ESP32, PlatformIO i Linux — problem z dostępem do portu
Jeśli używasz VS Code + PlatformIO bądź standardowego Arduino IDE, zapewne prędzej czy później natkniesz się na jeden z takich komunikatów:
Permission deniedlub:
cannot open /dev/ttyUSB0albo:
cannot open /dev/ttyACM0Sama płytka zwykle działa poprawnie. Linux po prostu nie pozwala zwykłemu użytkownikowi korzystać z portu szeregowego.
Jak dodać użytkownika do grupy dialout
Aby nadać sobie dostęp do portu szeregowego, trzeba dodać aktualnego użytkownika do grupy dialout.
Najpierw otwórz terminal. W Ubuntu najprościej zrobić to skrótem Ctrl + Alt + T
Możesz też wyszukać aplikację „Terminal” z menu systemowego.
Następnie wykonaj polecenie:
sudo usermod -aG dialout $USERDzięki temu dopiszesz bieżącego użytkownika do grupy dialout.
Ważne! konieczne jest wylogowanie
Po zmianie grup należy zakończyć sesję użytkownika:
- wylogować się i zalogować ponownie,
- albo po prostu zrestartować komputer.
Bez tego nowe uprawnienia nie będą aktywne.
Jak sprawdzić czy wszystko działa
Najpierw sprawdź, czy użytkownik należy do grupy:
groupsNa liście powinna pojawić się grupa:
dialoutNastępnie podłącz ESP32 i sprawdź, czy urządzenie jest widoczne:
ls /dev/ttyUSB*lub:
ls /dev/ttyACM*Jeżeli port istnieje, PlatformIO i Arduino IDE powinny już poprawnie komunikować się z płytką.
PlatformIO pod Linuxem
W przypadku ESP32 zdecydowanie najczęściej korzystam dziś z PlatformIO. Integracja z VS Code jest bardzo wygodna, a zarządzanie bibliotekami i środowiskami projektów działa znacznie lepiej niż w klasycznym Arduino IDE.
Co ważne — problem z grupą dialout dotyczy dokładnie tak samo PlatformIO jak Arduino IDE. Narzędzie używane do uploadu nadal musi mieć dostęp do portu szeregowego systemu.
Po poprawnym ustawieniu uprawnień upload działa bez dodatkowej konfiguracji.
Podsumowanie
Jeżeli ESP32 lub Arduino nie chce programować się pod Linuxem, pierwszą rzeczą do sprawdzenia powinny być uprawnienia do portu szeregowego.
W większości przypadków rozwiązaniem jest jedna komenda:
sudo usermod -aG dialout $USERPo ponownym zalogowaniu zarówno PlatformIO, jak i Arduino IDE powinny działać bez problemów.


