Dzieje się tak, ponieważ IDE nie ma wystarczających uprawnień, aby uzyskać dostęp do urządzenia Arduino.
Permissions
Możemy zajrzeć do urządzenia Arduino, uruchamiając
ls -l /dev/ttyACM*
w terminalu. Wyjście wygląda przeważnie tak:
crw-rw---- 1 root dialout 166, 0 Des 14 09:47 /dev/ttyACM0
Znak '0′ na końcu 'ACM’ może być inny, a na liście może być wiele wpisów, ale części, na których musimy się skupić, to ciąg liter i kresek z przodu oraz dwie nazwy root i dialout.
Nazwa pierwsza root to właściciel urządzenia, a dialout to grupa właścicieli urządzenia.
Literki i myślniki z przodu, zaczynające się po literze 'c’, reprezentują uprawnienia dla urządzenia według użytkownika: – Pierwsza trójka rw- oznacza, że właściciel (root) może czytać i pisać do tego urządzenia – Druga trójka rw- oznacza, że członkowie grupy właściciela (dialout) mogą czytać i pisać do tego urządzenia – Trzecia trójka --- oznacza, że inni użytkownicy nie mają żadnych uprawnień (co oznacza, że nikt inny nie może czytać i pisać do tego urządzenia)
W skrócie, nikt poza root i członkami dialout nie może nic zrobić z Arduino; ponieważ nie uruchamiamy IDE jako root ani jako członek dialout, IDE nie może uzyskać dostępu do Arduino z powodu niewystarczających uprawnień.
Dodanie siebie do grupy dialout
Ale czekaj! Wcześniej, gdy uruchamialiśmy IDE, dodaliśmy się do grupy dialout!

Dlaczego więc IDE nadal nie ma uprawnień dostępu do Arduino?
Zmiany, które wprowadza monit, nie są stosowane, dopóki się nie wylogujemy i nie zalogujemy ponownie, więc musimy zapisać naszą pracę, wylogować się i zalogować ponownie.
Po ponownym zalogowaniu się i uruchomieniu Arduino IDE, powinna być dostępna opcja Serial Port; zmień ją, a powinniśmy być w stanie przesłać kod do Arduino.

.