{"id":29996665,"url":"https://github.com/chrismyers2000/meshtasticd-configuration-tool","last_synced_at":"2026-05-16T18:06:38.025Z","repository":{"id":306826299,"uuid":"1027332975","full_name":"chrismyers2000/Meshtasticd-Configuration-Tool","owner":"chrismyers2000","description":"A Python script to help you install meshtasticd and enable all of the related dtoverlays in order to get a lora pi hat working on raspberry pi.","archived":false,"fork":false,"pushed_at":"2025-08-03T23:33:35.000Z","size":242,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-04T00:32:02.413Z","etag":null,"topics":["gps","lora","mesh","meshtastic","meshtasticd","pi","portduino","python","raspberry","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chrismyers2000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-27T19:59:12.000Z","updated_at":"2025-08-03T23:33:39.000Z","dependencies_parsed_at":"2025-07-27T22:08:42.894Z","dependency_job_id":"b445364d-6db9-4d76-bb26-9c98b9f2c565","html_url":"https://github.com/chrismyers2000/Meshtasticd-Configuration-Tool","commit_stats":null,"previous_names":["chrismyers2000/meshtasticd-configuration-tool"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chrismyers2000/Meshtasticd-Configuration-Tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrismyers2000%2FMeshtasticd-Configuration-Tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrismyers2000%2FMeshtasticd-Configuration-Tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrismyers2000%2FMeshtasticd-Configuration-Tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrismyers2000%2FMeshtasticd-Configuration-Tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chrismyers2000","download_url":"https://codeload.github.com/chrismyers2000/Meshtasticd-Configuration-Tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrismyers2000%2FMeshtasticd-Configuration-Tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275576715,"owners_count":25489450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-17T02:00:09.119Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gps","lora","mesh","meshtastic","meshtasticd","pi","portduino","python","raspberry","raspberry-pi"],"created_at":"2025-08-05T02:53:27.292Z","updated_at":"2026-05-16T18:06:38.020Z","avatar_url":"https://github.com/chrismyers2000.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Meshtasticd Configuration Tool\n**by Frequency Labs**\n\nA graphical and terminal-based tool for installing and configuring [meshtasticd](https://meshtastic.org/) on Raspberry Pi hardware with MeshAdv Pi Hats.\n\n---\n![](https://github.com/chrismyers2000/Meshtasticd-Configuration-Tool/blob/7631016758dd2cac8d7d936a6e8e82dc870ac2d1/gui/GUI.png)\n---\n\n## Supported Hardware\n\n**Raspberry Pi models:**\n- Raspberry Pi 2, 3, 4, 5\n- Raspberry Pi 400, 500\n- Raspberry Pi Zero 2W\n\n**Operating Systems:**\n- Raspberry Pi OS Bookworm (32-bit and 64-bit)\n- Raspberry Pi OS Trixie (32-bit and 64-bit)\n\n**MeshAdv Pi Hats:**\n- MeshAdv Pi Hat v1.1\n- MeshAdv Mini\n- MeshAdv Pro *(coming soon)*\n\n---\n\n## Installation\n\nRun the following command on your Raspberry Pi to download and install the tool:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/chrismyers2000/Meshtasticd-Configuration-Tool/refs/heads/main/install.sh | bash\n```\n\n\n---\n\n## Running the Tool\n\nNavigate to the install directory and run:\n\n```bash\npython3 ~/meshadv-config/meshadv-config.py\n```\n\n### Display mode auto-detection\n\nThe tool automatically selects the right interface based on your environment:\n\n| Environment | Interface launched |\n|---|---|\n| Raspberry Pi desktop (with display) | GUI (CustomTkinter) |\n| SSH / PuTTY / headless | TUI (terminal, Textual) |\n\n### Command-line flags\n\nYou can force a specific interface regardless of environment:\n\n```bash\n# Force the graphical GUI\npython3 meshadv-config.py --gui\n\n# Force the terminal TUI (useful over SSH or on a Pi with a desktop)\npython3 meshadv-config.py --tui\n```\n\n---\n\n## Interface Overview\n\nBoth the GUI and TUI offer identical features. The layout consists of three areas:\n\n1. **Hardware Information** — shows detected Pi model, HAT, and meshtasticd version at the top\n2. **Configuration Options** — buttons for installing and configuring the system (left panel)\n3. **Actions** — buttons for controlling the meshtasticd service and CLI tools (below Configuration Options)\n4. **Output log** — real-time output from all operations (right panel)\n\nStatus indicators appear next to each button showing the current state (e.g. Enabled / Disabled, Installed / Not installed).\n\n---\n\n## Hardware Information Panel\n\nDisplayed automatically at startup. Shows:\n\n- **Pi Model** — detected from `/proc/device-tree/model`\n- **Hat** — detected from the HAT EEPROM. If no EEPROM is found, defaults to *MeshAdv Pi Hat v1.1* (which has no EEPROM by design)\n- **meshtasticd** — installed version, or *Not installed*\n- **OS** — distro name, version codename, and bit-width (TUI only)\n\n---\n\n## Configuration Options\n\n### Install / Remove meshtasticd\n\nOpens a dialog to install or remove meshtasticd.\n\n**Installing:**\n- Select a release channel: **Stable**, **Beta**, **Alpha**, or **Daily**\n- The tool automatically detects your OS version (Bookworm/Trixie) and architecture (32/64-bit) and uses the correct repository\n- Adds the apt source, imports the GPG key, runs `apt-get update`, then installs the package\n\n**Removing:**\n- Confirms before proceeding\n- Runs `apt-get purge meshtasticd` and cleans up the apt source and GPG key files\n\n\u003e The status label shows **Installed** or **Not installed**.\n\n---\n\n### Enable SPI\n\nChecks `/boot/firmware/config.txt` for the following lines and adds them if missing:\n\n```\ndtparam=spi=on\ndtoverlay=spi0-0cs\n```\n\nA **Reboot required** warning appears at the bottom of the window after this change. Reboot your Pi for SPI to activate.\n\n\u003e The status label shows **Enabled** or **Disabled**.\n\n---\n\n### Enable I2C\n\nChecks `/boot/firmware/config.txt` for the following line and adds it if missing:\n\n```\ndtparam=i2c_arm=on\n```\n\nA **Reboot required** warning appears after this change.\n\n\u003e The status label shows **Enabled** or **Disabled**.\n\n---\n\n### Enable GPS / UART\n\nConfigures UART and GPS support in `/boot/firmware/config.txt` and `/etc/meshtasticd/config.yaml`.\n\nWhat gets added depends on your hardware:\n\n| Setting | When added |\n|---|---|\n| `enable_uart=1` | All Pi models |\n| `dtoverlay=uart0` | Pi 5 and Pi 500 only |\n| `dtoverlay=pps-gpio,gpiopin=17` | MeshAdv Mini and Pro only |\n| `gpio=4=op,dh` | MeshAdv Mini and Pro only |\n\nIn `config.yaml`, the GPS `SerialPath` is uncommented and set to:\n- `/dev/ttyAMA0` — Pi 5 and Pi 500\n- `/dev/ttyS0` — all other Pi models\n\nA **Reboot required** warning appears after this change.\n\n\u003e The status label shows **Enabled** or **Disabled**.\n\n---\n\n### Set Hat Config\n\nOpens a file browser showing all available config files from `/etc/meshtasticd/available.d/`, including any subdirectories.\n\n- The recommended file for your detected HAT is highlighted with a **★** marker\n- Select a file to copy it into `/etc/meshtasticd/config.d/` (replacing any existing config)\n- A **Download Mini YAML** button is available to download `lora-MeshAdv-Mini-900M22S.yaml` directly from the Frequency Labs GitHub if the file is missing or needs to be refreshed\n\nDefault config files by HAT:\n\n| HAT | Default config file |\n|---|---|\n| MeshAdv Pi Hat v1.1 | `lora-MeshAdv-900M30S.yaml` |\n| MeshAdv Mini | `lora-MeshAdv-Mini-900M22S.yaml` |\n| MeshAdv Pro | `lora-MeshAdv-Mini-900M22S.yaml` *(temporary)* |\n\n\u003e The status label shows the filename currently in use, or **Not set**.\n\n---\n\n### Edit Config\n\nOpens `/etc/meshtasticd/config.yaml` in `nano` for manual editing.\n\n- **GUI mode:** Opens nano in a new terminal window (`x-terminal-emulator`)\n- **TUI mode:** Suspends the TUI, opens nano in the current terminal, then restores the TUI when you exit nano\n\n\u003e The status label shows **Available** if `config.yaml` exists, or **Not installed** otherwise.\n\n---\n\n## Actions\n\n### Enable on Boot\n\nRuns `sudo systemctl enable meshtasticd` so the service starts automatically after every reboot.\n\n\u003e The status label shows **Enabled** or **Disabled**.\n\n---\n\n### Start Service\n\nRuns `sudo systemctl start meshtasticd` to start the service immediately without rebooting.\n\n\u003e The status label shows **Running** or **Stopped**.\n\n---\n\n### Stop Service\n\nRuns `sudo systemctl stop meshtasticd` to stop the running service.\n\n\u003e The status label shows **Stopped** or **Running**.\n\n---\n\n### Service Status\n\nRuns `sudo systemctl status meshtasticd` and displays the full output in a scrollable popup window. Use this to check for errors or confirm the service is running correctly.\n\n---\n\n### Install Python CLI\n\nInstalls the meshtastic Python CLI (`meshtastic[cli]`), which is required for the **Set Region** and **Send Test Message** features.\n\nInstall steps:\n1. Checks for Python 3 (installs via apt if missing)\n2. Checks for pip3 (installs via apt if missing)\n3. Runs `pip3 install --upgrade \"meshtastic[cli]\"`\n4. If pip3 is blocked by a system-managed environment, automatically falls back to `pipx`\n\nProgress is shown in real time in the output log.\n\n\u003e The status label shows **Installed** or **Not installed**.\n\n---\n\n### Set Region\n\nOpens a region picker and sets the Meshtastic LoRa region using the CLI.\n\nAvailable regions:\n\n| | | | |\n|---|---|---|---|\n| UNSET | US | EU_433 | EU_868 |\n| CN | JP | ANZ | KR |\n| TW | RU | IN | NZ_865 |\n| TH | UA_433 | UA_868 | MY_433 |\n| MY_919 | SG_923 | | |\n\n\u003e Requires the meshtastic Python CLI to be installed and meshtasticd to be running.\n\u003e The status label shows your currently configured region.\n\n---\n\n### Send Test Message\n\nSends a test text message (`Test message from MeshAdv Config Tool`) to the default Meshtastic channel using the CLI.\n\n\u003e Requires the meshtastic Python CLI to be installed and meshtasticd to be running.\n\n---\n\n## TUI Keyboard Shortcuts\n\nThese shortcuts are available when running in TUI mode (over SSH or with `--tui`):\n\n| Key | Action |\n|---|---|\n| `Q` | Quit the application |\n| `R` | Refresh all status indicators and re-detect hardware |\n| `Tab` | Move focus between elements |\n| `Enter` | Activate the focused button |\n| Arrow keys | Navigate lists and radio buttons in dialogs |\n\n---\n\n## Reboot Required Warning\n\nAfter making any changes to `/boot/firmware/config.txt` (SPI, I2C, GPS/UART), a **Reboot required** banner appears at the bottom of the window. These changes only take effect after a reboot.\n\nTo reboot:\n```bash\nsudo reboot\n```\n\n---\n\n## File Locations\n\n| File | Purpose |\n|---|---|\n| `/boot/firmware/config.txt` | Pi hardware configuration (SPI, I2C, UART overlays) |\n| `/etc/meshtasticd/config.yaml` | meshtasticd main configuration |\n| `/etc/meshtasticd/available.d/` | Available HAT config files |\n| `/etc/meshtasticd/config.d/` | Active HAT config (one file placed here) |\n| `/etc/apt/sources.list.d/` | meshtasticd apt repository source |\n| `/etc/apt/trusted.gpg.d/` | meshtasticd apt GPG key |\n\n---\n\n## Troubleshooting\n\n**\"No config files found in available.d\"**\nmeshtasticd is either not installed or the available.d directory is missing. Install meshtasticd first, then try again. You can also use the **Download Mini YAML** button in the Set Hat Config dialog to fetch the Mini config from GitHub.\n\n**\"Command not found: meshtastic\"**\nThe meshtastic Python CLI is not installed. Use the **Install Python CLI** button. If you installed via pipx, you may need to close and reopen your terminal, or run `pipx ensurepath` and start a new session.\n\n**Service fails to start**\nUse **Service Status** to view the full error output from `systemctl`. Common causes:\n- HAT config not set (use **Set Hat Config**)\n- SPI not enabled (use **Enable SPI** then reboot)\n- Incorrect serial path in `config.yaml` (use **Enable GPS/UART** to set it automatically)\n\n**GUI doesn't open over SSH**\nSSH sessions don't have a display. Either run with `--tui` for the terminal interface, or use SSH X11 forwarding (`ssh -X`) if you need the GUI remotely.\n\n**pip3 install fails with \"externally managed environment\"**\nThis is normal on newer Raspberry Pi OS versions. The tool automatically falls back to `pipx`. If you're running **Install Python CLI** manually, use:\n```bash\nsudo apt install pipx \u0026\u0026 pipx install \"meshtastic[cli]\" \u0026\u0026 pipx ensurepath\n```\n\n\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrismyers2000%2Fmeshtasticd-configuration-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchrismyers2000%2Fmeshtasticd-configuration-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrismyers2000%2Fmeshtasticd-configuration-tool/lists"}