Meshtastic-PyGUI - A Python Script Based GUI that uses the Meshtastic API and PySimpleGUI for the interface

I am writing a GUI for Meshtastic in the hopes to make certain tasks easier or faster to complete. The GUI uses python and sh based commands but was written in and for windows users.
ZebusJesus/Meshtastic-PyGUI: Python Based GUI that uses the Meshtastic API (
This GUI depends on having your Environmental variables configured for the following:


If you are using windows and you have Visual Studio installed and configured for python, then windows will have change your python path. You will notice this if you launch IDLE and use the path browser. In order to make sure that the GUI works in this situation you just have to copy after using pip3 to install modules:


to the shared library folder for Visual Studio, the default location is:

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\Lib\site-packages

It is not full-featured and is still a work in progress but it does work and when it comes to flashing firmware it uses the dev’s scripts which are preferred. I will keep working on this but it does give you access to many features already.

It seems it needs to be run as admin for some of the commands to work. Of course, review the script before running but there is nothing there except system calls and for the time being because of the serial I/O the API uses, admin access is required. On Ubuntu, I was able to use the script just fine without needing sudo.

The firmware download tools is not complete and currently is just downloads the 1.33 binary to a folder that you can extract to locate the binary. The browse function of the tool works and you can browse to any usable bin you have. Flash will wipe everything and update will update the firmware while keeping settings.


Under the Alpha branch, there is an exe for the GUI in the dist folder

1 Like

Any interest in distributing on pypi? Then any OS could do “pip install meshtastic-pygui” to get your code and dependencies…

If you are unfamiliar I can send a PR with a suitable


Once I have a few bugs figured out I will do that.

1 Like

firmware downloads will now download based on firmware version including the Hamster Nightly Build, I will be adding filtering so only the firmware for your device will be present if you choose specific settings such as region on board type.


Once connected you can now see radio traffic as it comes and goes, you can also send messages while it is connected now.


pip install -i Simple index meshtastic-gui

meshtastic_pygui will launch it, I noticed I forgot to change that part for PyPi package. Its just the test version but it works

ZebusJesus/Meshtastic-PyGUI at Windows-EXE (

This repo contains a windows installer ready to use as well as the code for it. The exe was built with pyinstaller and the installer was made with NSIS

1 Like

The pyGUI while not 100% is not published to PyPi and will allow users to lots of useful stuff already, more updates coming soon. I plan on making current plugins usable next.

python -m pip install meshtastic-PyGUI


PyPi Version v2.4.4

recent update changes the way flashing is handled, instead of invoking a script with the sh command which required users to install git or something similar, the firmware tool now uses the command directly.


PyPi Version v2.5.4

Added most of the user-configurable options to a dedicated window. Located under toolbox there is an options selection. This will bring up a window that will allow you to select an option and then in the dialog box set the value you want to pass. I added a popup that gives users the ability to unplug their radio if they want to abort a setting change. It’s pretty raw but it makes not mistyping a setting variable nice and easy.


Wow, wow, wow!

(Adding more characters because the post must be more than 20 characters…)

1 Like

This is looking great.

I still can’t select a com port … In the Radio Window … I see “connect to Radio” button, I just get error connecting to radio,

I have tried running as admin and user. I have tried the unplug/re-plug as described for clearing a com port… but where do I select com1 or com2 or com_ .

You dont select COM py serial handles everything for you when it comes to that. When it comes to COM the port will lock and only allow one connection at a time, you have to unplug and plug the radio back in and this will unlock the COM port. Meshtastic handles the connection to the radios themselves so you shouldn’t need to specify any port

1 Like

Also I noticed that while connect to radio will work, it seems to not disconnect causeing the program to hang up. Im working on that right now but for now connect to radio will just allow you to see everything the radio sees and keep the connection to the radio alive. My goal is to add filters that will allow filtering the radio trafic so you can grab the data you want like GPS, messages etc

I’m currently experimenting with flashing firmware on Windows, but it looks like the script needs to escape any spaces in the file path when calling esptool (my home directory is “C:\Users\Have Blue”):

1 Like

ah this is because the spiffs-1.2.10 and system-info files need to be in your users home folder, thanks for pointing this out

if you use update firmware instead of flash firmware, it will keep your settings and it doesn’t use spifs* or system-info for the update command.

##Version 2.6

Version 2.6 address the issue of the location of the spiffs file and system-info file, you can now browse to any location where the needed firmware files are located.

Messaging now uses uses

def sendText()

instead of the API command, I also added flags for AK Msg and Want Response


Version 2.6.2

python -m pip install --upgrade meshtastic-pygui

pip3 install --upgrade meshtastic-pygui

Added the ability to backup firmware and restore it as well. Also added a window for nodes that will list the current nodes as well as make a text file for documenting nodes on the mesh.