Forum: PC Hard- und Software Platformio unter Linux installieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernd (b_b304)


Lesenswert?

Hallo,
ich würde gerne Visual Studio Code und PlatformIO unter Linux (derzeit 
Mint 20.1 Cinnamon) installieren. Für VS Code war das recht einfach, da 
es direkt im Paketmanager vom Betriebssystem in einer aktuellen Version 
verfügbar ist.

Wenn ich aber nun die Platformio-Extension installiere, bricht das Ganze 
mit der Meldung ab, dass kein Python -Interpreter gefunden werden 
könnte.

Ich kann das allerdings nicht so ganz nachvollziehen, da sowohl Python 
2.7 als auch 3.8 auf dem System installiert sind (über die Shell kann 
ich das mit python --version, python3 --version ausgeben lassen).

Hat jemand von euch da Erfahrungswerte? Was muss ich tun, damit 
Platformio installiert werden kann?

PS:
Funktionieren die USB-Seriell-Wandler, wie sie auf den üblichen 
ESP32-Boards verwendet werden out of the box? Unter Windows musste da ja 
immer ein spezieller Treiber installiert werden...

von Flip B. (frickelfreak)


Lesenswert?

Kannst du bitte die exakte Fehlermeldung angeben?

CP2102, CH340 und FTDI laufen ohne probleme out of the box.

: Bearbeitet durch User
von Nachdenklicher (Gast)


Lesenswert?

Flip B. schrieb:
> CP2102, CH340 und FTDI laufen ohne probleme out of the box.

Auch die ahch-so-bösen Prolifics laufen unter Linux problemlos.
Allgemein habe ich mit solchen Dingern unter Linux privat nie Probleme*, 
während es unter Windows bei der Arbeit regelmäßig erin Kampf ist.

*) Einmal hatte ich einen RS-485/USB-Wandler, bei dem war der CH340 aber 
schlicht und ergreifend kaputt. Neuer Chip aufgelötet und schon lief 
alles wieder.

von Bernd (b_b304)


Angehängte Dateien:

Lesenswert?

Flip B. schrieb:
> Kannst du bitte die exakte Fehlermeldung angeben?

Cannot find working Python [...] interpreter

von Bernd (b_b304)


Lesenswert?

Benutzt hier keine Platformio unter Linux?
Hab's leider immer noch nicht hinbekommen :-(

von Nop (Gast)


Lesenswert?

B. B. schrieb:
> Benutzt hier keine Platformio unter Linux?
> Hab's leider immer noch nicht hinbekommen :-(

Möglicherweise erwartet Platformio, Python mit dem Kommando "python" 
ausführen zu können. Das ist unter Mint per default nicht vorgesehen, 
weil unter Ubuntu alle Python-Programme explizit python2 oder python3 
aufrufen, die ja nicht mitieinander kompatibel sind.

Du könntest dem einfach abhelfen:
1
sudo apt-get install python-is-python3

Oder manuell einen Symlink /usr/bin/python auf /usr/bin/python3 setzen, 
was anderes macht das Paket auch nicht, aber am Paketmanager vorbei in 
/usr/bin rumzufummeln, ist vielleicht nicht so gut.

von Nop (Gast)


Lesenswert?

Ach ja, nur um nicht den Eindruck "aber aber man MUSS ja das Terminal 
benutzen!!11sabber" aufkommen zu lassen: man kann natürlich 
python-is-python3 auch per GUI in Synaptic installieren.

von Bernd (b_b304)


Lesenswert?

Nop schrieb:
> Möglicherweise erwartet Platformio, Python mit dem Kommando "python"
> ausführen zu können. Das ist unter Mint per default nicht vorgesehen,
> weil unter Ubuntu alle Python-Programme explizit python2 oder python3
> aufrufen, die ja nicht mitieinander kompatibel sind.

Python-is-python3 habe ich bereits installiert. "python --version" 
liefert dann auch 3.8.x. Allerdings interessiert das die 
Platformio-Installation wenig. Da kommt nach wie vor der gleiche Fehler.

von Jack V. (jackv)


Lesenswert?

B. B. schrieb:
> Cannot find working Python

Das Blaue auf dem Bild sind Buttons. Wenn man das Fenster weiter 
auseinanderzieht, sollte man lesen können, was sie bedeuten. Einer von 
denen sollte dazu führen, dass eine separate Pythonversion installiert 
wird, ein anderer Button sollte einem die Möglichkeit geben, das zu 
verwendende Binary direkt anzugeben.

von Reinhard S. (rezz)


Lesenswert?

B. B. schrieb:
> Benutzt hier keine Platformio unter Linux?
> Hab's leider immer noch nicht hinbekommen :-(

Was passiert, wenn du auf den Button klickst, das du python schon hast?

von Bernd (b_b304)


Lesenswert?

Reinhard S. schrieb:
> Was passiert, wenn du auf den Button klickst, das du python schon hast?

Dann ploppt oben im GUI eine Eingabeaufforderung auf, die mich bittet 
den Pfad zur Python.exe anzugeben. Das ergibt irgendwie wenig Sinn, da 
Python bereits im PATH ist, also ohne weiteres gefunden werden müsste. 
Zudem wird unter Linux wohl kaum eine Python.exe existieren, oder?

Jack V. schrieb:
> Einer von denen sollte dazu führen, dass eine separate Pythonversion installiert 
wird

Nope, dafür gibt es keinen Button. Sollte ja auch nicht nötig sein, da 
Python 2.7 und 3.8 ja bereits vorhanden sind.

von Nop (Gast)


Lesenswert?

B. B. schrieb:

> Dann ploppt oben im GUI eine Eingabeaufforderung auf, die mich bittet
> den Pfad zur Python.exe anzugeben.

Na dann versuch das doch, vielleicht klappt PATH ja nicht, wieso auch 
immer.

> Zudem wird unter Linux wohl kaum eine Python.exe existieren, oder?

/usr/bin/python3 angeben.

von Uwe (Gast)


Lesenswert?

B. B. schrieb:
> Flip B. schrieb:
>> Kannst du bitte die exakte Fehlermeldung angeben?
>
> Cannot find working Python [...] interpreter

siehe 
https://randomnerdtutorials.com/vs-code-platformio-ide-esp32-esp8266-arduino/

Insbesondere
1
$ sudo apt install python3-distutils
installieren.

von Jack V. (jackv)


Lesenswert?

B. B. schrieb:
> Dann ploppt oben im GUI eine Eingabeaufforderung auf, die mich bittet
> den Pfad zur Python.exe anzugeben.

Python.exe? Du versuchst aber nicht zufällig, VS Code für Windows unter 
Wine laufen zu lassen? Das würde allerdings die Probleme erklären …

B. B. schrieb:
> Nope, dafür gibt es keinen Button.

Doch, wäre der Erste von links: „Install Pyt…“

: Bearbeitet durch User
von blob (Gast)


Lesenswert?

Das Visual Studio Code aus der Anwendungsverwaltung von Mint 20.2 ist 
wohl keine offizielle Version und hat auch miese Bewertungen. Du kannst 
das einfach wieder deinstallieren (rechte Maustaste im Haupt Menü). Wenn 
du unbedingt Microsoft auf deinem Linuxrechner haben willst
dann hol dir das Original .deb File von Microsoft.
https://code.visualstudio.com/
Das wird auch einfach vom Packetmanager per klick installiert.
Und ja dafür ist Microsoft die sicherste Quelle, die haben es ja 
schließich programmiert.

von Bernd (b_b304)


Lesenswert?

Vielen Dank euch allen, insbesondere an Uwe :-)

Uwe schrieb:
> Insbesondere$ sudo apt install python3-distutils
> installieren.

Das hat geholfen. Jetzt lässt sich PlatformIO installieren und 
funktioniert auch soweit wie gewünscht. Auch mein ESP32-Board wird auf 
Anhieb erkannt und als USB-Gerät angezeigt.

Allerdings gibt es jetzt noch eine kleines Problem:
Beim Flashen auf den Mikrocontroller beklagt sich PlatformIO, dass es 
keinen Zugriff auf die USB-Schnittstelle hat. Ich vermute mal, hier ist 
Linux etwas restriktiver als Windows?
Die genaue Fehlermeldung habe ich jetzt nicht parat, aber ich vermute 
mal das ist ein bekanntes/typisches "Problem" mit USB-Schnittstellen 
unter Linux? Hat jemand einen Tipp wie man die für Anwendungen freigibt?

von Andreas B. (bitverdreher)


Lesenswert?

Wirklich USB oder serielle Schnittstelle?
Ansonsten dich zur Gruppe dialout zufügen.
sudo usermod -aG dialout ich

von Nop (Gast)


Lesenswert?

B. B. schrieb:

> Die genaue Fehlermeldung habe ich jetzt nicht parat, aber ich vermute
> mal das ist ein bekanntes/typisches "Problem" mit USB-Schnittstellen
> unter Linux? Hat jemand einen Tipp wie man die für Anwendungen freigibt?

Das geht über entsprechende udev-Regeln. Schau mal hier: 
http://rowley.zendesk.com/entries/45561-how-to-set-up-linux-for-usb-jtag-adapters

von Andreas B. (bitverdreher)


Lesenswert?

Nop schrieb:
> Das geht über entsprechende udev-Regeln.

In diesem Fall müßte man das Gerät wissen:
>lsusb

Das würde mich bei einem ESP32 aber wundern. Da sollte eigentlich ein 
simpler USB seriell Wandler drauf sein. CH340 o.ä.

von Nop (Gast)


Lesenswert?

Andreas B. schrieb:

> Das würde mich bei einem ESP32 aber wundern. Da sollte eigentlich ein
> simpler USB seriell Wandler drauf sein. CH340 o.ä.

War halt das Erste, was mir bei "Flashen über USB mit Linux" einfiel, 
weil ich da auch schon reingerannt bin.

von Bernd (b_b304)


Lesenswert?

Das Gerät erscheint in Platformio mit folgenden Daten:

/dev/ttyUSB0
USB2.0-Ser!
USB VID:PID=1A86:7523 LOCATION=1-9.2

Wird wohl ein CH340 oder so sein...

Die Fehlermeldung lautet:
PermissionError: [Errno 13] Permission denied: '/dev/ttyUSB0'

Nop schrieb:
> Das geht über entsprechende udev-Regeln. Schau mal hier:
> http://rowley.zendesk.com/entries/45561-how-to-set-up-linux-for-usb-jtag 
adapters

Sieht ziemlich wild aus ;-)

: Bearbeitet durch User
von someone else (Gast)


Lesenswert?

sudo chmod 666 /dev/ttyUSB0

von Sheeva P. (sheevaplug)


Lesenswert?

Andreas B. schrieb:
> Wirklich USB oder serielle Schnittstelle?
> Ansonsten dich zur Gruppe dialout zufügen.
> sudo usermod -aG dialout ich

Achtung: danach aus- und wieder einloggen, denn die 
Gruppenzugehörigkeiten werden nur beim Login gelesen.

von Nop (Gast)


Lesenswert?

B. B. schrieb:

> Sieht ziemlich wild aus ;-)

Ist echt bloß eine Datei mit einer Zeile Text für meinen JTAG-Adapter. 
Ich hätte openocd (nehme ich zum Flashen) ansonsten immer mit sudo 
aufrufen müssen, was ich natürlich nicht wollte.

von Andreas B. (bitverdreher)


Lesenswert?

someone else schrieb:
> sudo chmod 666 /dev/ttyUSB0
funktioniert auch, aber so etwas macht man nicht und das hält auch nur 
bis zum nächsten reboot.

Sheeva P. schrieb:
> Andreas B. schrieb:
>> Wirklich USB oder serielle Schnittstelle?
>> Ansonsten dich zur Gruppe dialout zufügen.
>> sudo usermod -aG dialout ich
>
> Achtung: danach aus- und wieder einloggen, denn die
> Gruppenzugehörigkeiten werden nur beim Login gelesen.
Stimmt! Vergaß ich zu erwähnen.

B. B. schrieb:
> Wird wohl ein CH340 oder so sein...
Ja, und da hilft der usermod. udev Regeln sind dazu nicht nötig.
Du kannst die Gruppenzugehörigkeit auch in der GUI einstellen, wenn Dir 
das lieber ist.

: Bearbeitet durch User
von someone else (Gast)


Lesenswert?

Andreas B. schrieb:
> someone else schrieb:
>> sudo chmod 666 /dev/ttyUSB0
> funktioniert auch, aber so etwas macht man nicht und das hält auch nur
> bis zum nächsten reboot.

Und warum genau macht man so etwas nicht? Weil etwa "furchtbar 
unsicher"?

Wir reden hier von einem ganz speziellem Device und nicht von 
irgendwelchen Systemdateien etc. Ich gehe mal davon aus, dass der User, 
welcher in der Lage ist einen µC zu programmieren, bewusst einen zu 
programmierenden Mikrocontroller anschließt, der dann per /dev/ttyUSB0 
zugreifbar ist. Und nicht etwa ein potentiell bösartiges USB-Gerät, 
abgesehen davon, dass bei /dev/ttyUSB0 die Möglichkeit zur Einflussnahme 
vom Device aus auf das System eher ziemlich gering ist, solange da keine 
Software läuft, die /dev/ttyUSB0 zuspielt.

Und ja, bei jedem reboot ist ein chmod auf /dev/ttyUSB0 wieder weg. Ist 
doch gut so, dann kann ich es bewusst wieder freigeben oder auch nicht. 
Ist im Zweifel ein einziger Klick auf ein Icon und ne Passworteingabe. 
Erinnert den User auch daran, zu überlegen, was er da gerade genau tut. 
Ansonsten ist der Zugriff für einen User gesperrt, kann man auch als 
Sicherheitsplus verkaufen.

Wer udev nutzen mag, soll es tun, ich verurteile das nicht. Viele Wege 
führen nach Rom.

Vorweg an alle Apologeten hier, es geht hier nur um chmod 666 auf 
explizit /dev/ttyUSB0 und sonst nirgendswo anders.

von Jens G. (jensig)


Lesenswert?

someone else schrieb:
> Andreas B. schrieb:
>> someone else schrieb:
>>> sudo chmod 666 /dev/ttyUSB0
>> funktioniert auch, aber so etwas macht man nicht und das hält auch nur
>> bis zum nächsten reboot.
>
> Und warum genau macht man so etwas nicht? Weil etwa "furchtbar
> unsicher"?

Nein. Eben weil das nur temporär ist (gut, kannst Du auch als 
Sicherheitsfeature betrachten, wenn Du es so magst).
Aber die feine englische Art ist es eher, den User einfach in die 
dialout-Gruppe zu schmeißen (wenn das die Standardgruppe für ttyUSB0 
ist). Schließlich ist die Gruppe extra dafür da.

von Jim (lordarkym)


Lesenswert?

Bernd schrieb:
> Uwe schrieb:
>> Insbesondere$ sudo apt install python3-distutils
>> installieren.

_Bei mir hat unter MxLinux21   erst sudo apt install python3-venv 
geholfen .

:)

von Karsten W. (lsmod)


Lesenswert?

Gibt es Erfahrungswerte PlatformIO zu nutzen ohne Visual Studio Code 
installieren zu müssen?

Dies kommt dann eigentlich einem Klein und Weich Zwang mit voller 
Überwachung und Rechteabtretung unter Linux gleich.

https://code.visualstudio.com/docs/setup/linux
By downloading and using Visual Studio Code, you agree to the license 
terms and privacy statement.

https://code.visualstudio.com/license
Data Collection. The software may collect information about you and your 
use of the software, and send that to Microsoft.

NEIN DANKE!

Offenbar gibt es noch andere Möglichkeiten:
https://docs.platformio.org/en/latest/integration/ide/index.html#desktop-ides
Welche haben sich hier unter Linux bewährt und sind zu empfehlen?

: Bearbeitet durch User
von Kalle G. (Gast)


Lesenswert?

Karsten W. schrieb:
> Gibt es Erfahrungswerte PlatformIO zu nutzen ohne Visual Studio Code
> installieren zu müssen?

Klar, Platformio funktioniert auch mit VSCodium prima. <8)

von Karsten W. (lsmod)


Lesenswert?

Danke für den Tip mit VSCodium!
https://vscodium.com/
https://docs.platformio.org/en/latest/integration/ide/vscode.html

Ich war schon dabei mir Netbeans anzuschauen, aber es ist von der 
Integration vielleicht nicht so gut und einfach wie VSCodium.

: Bearbeitet durch User
von Eduard I. (eiten)


Lesenswert?

Installiere python-venv

von Karsten W. (lsmod)


Lesenswert?

Wofür ist dies wichtig?

Unter Debian 12 (bookworm) gibt es folgende Pakete:
1
python3-pylint-venv - Pylint hook to use same pylint with different virtual envs
2
pypy3-venv - fast alternative implementation of Python 3.x - PyPy venv module
3
python3-virtualenv - Python virtual environment creator
4
python3-full - Default Python Interpreter with complete class library
5
python3-venv - venv module for python3 (default python3 version)
6
python3.11-full - Python Interpreter with complete class library (version 3.11)
7
python3.11-venv - Interactive high-level object-oriented language (pyvenv binary, version 3.11)
8
elpa-pyvenv - Python virtual environment interface

Welches kommt dafür in Frage und wie wird dieses gegenüber den bereits 
vorhandenen Paketen priorisiert?

Zur Zeit werden folgende Versionen beim Aufruf von python angeboten:
1
python             python2.7          python3.11         python3-config     
2
python2            python3            python3.11-config  pythontex

: Bearbeitet durch User
von Eduard I. (eiten)


Lesenswert?

Karsten W. schrieb:
> Wofür ist dies wichtig?
Mit venv können isolierte Installationen für verschiedene 
Python-Projekte erstellt werden (Modulabhängigkeiten lokal erfüllen).

> python3-venv - venv module for python3 (default python3 version)
ist das richtige

von Karsten W. (lsmod)


Lesenswert?

Danke für die Erläuterung.

In der Tat funktionierte das originale Debian Paket "platformio" nicht 
(irgendwelche Traceback Errors) und war zudem sehr veraltet. Daher 
wieder weg damit (purge).

Es war dann die Installation des Paketes python3.11-venv erforderlich, 
damit das Skript get-platformio.py funktionierte (dieses Paket hat es 
selber vorgeschlagen.)
https://docs.platformio.org/en/latest/core/installation/methods/installer-script.html

Danach funktionierte die Installation mit "python3 get-platformio.py" 
problemlos und pio läßt sich ausführen.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.