Never used Linux? Never touched a Raspberry Pi? Don't know what SSH, SPI, UART or YAML mean? This guide assumes you know none of it and walks you from parts on a table to a working 1 watt Linux-native Meshtastic node.

The MeshAdv Pi HAT project specifically warns that an antenna must be connected whenever the HAT is powered. Powering the E22 LoRa module without an antenna can damage it.
Before plugging power into the Raspberry Pi, verify the correct LoRa antenna is attached.
The Raspberry Pi is the computer. The MeshAdv Pi HAT adds the LoRa radio and optional GPS hardware. The Pi runs meshtasticd, the Linux-native version of Meshtastic. This setup is especially useful for base stations, routers, remote infrastructure, PoE-powered locations and MQTT-connected nodes.
PUT THESE THINGS ON THE TABLE.
THE HAT, IN PLAIN ENGLISH.

Board images are from the MeshAdv Pi HAT project repository. Always verify your exact board revision against the upstream documentation.
GIVE THE PI AN OPERATING SYSTEM.
Use the official Raspberry Pi Imager to write a current Raspberry Pi OS image to your microSD card.
meshadv.SSH lets you control the Pi from another computer over your network instead of attaching a keyboard and monitor.
PI OFF. HAT ON. ANTENNA ON. THEN POWER.
- Shut the Raspberry Pi down completely and unplug power.
- Carefully align the HAT with the Pi's 40-pin connector.
- Press it straight down without offsetting the pins.
- Attach the LoRa antenna.
- Check the antenna again.
- Only then power the Pi.
THIS IS THE ONLY “LINUX-LOOKING” PART.
meshadv.local.LET THE CONFIGURATION TOOL DO THE BORING STUFF.
The Frequency Labs configuration utility can install meshtasticd, enable Raspberry Pi hardware interfaces, select the HAT configuration and control the service.
curl -fsSL https://raw.githubusercontent.com/chrismyers2000/Meshtasticd-Configuration-Tool/refs/heads/main/install.sh | bashStart the tool
python3 ~/meshadv-config/meshadv-config.pyThe helper automatically uses a graphical interface on a Pi desktop and a terminal interface over SSH.
The MeshAdv Pi HAT v1.1 does not have the HAT+ EEPROM used by the Mini and Pro. The configuration tool may report no HAT detected and default to MeshAdv Pi HAT v1.1. That does not mean the board is missing or broken.
DO THESE IN ORDER.
A. Install meshtasticd
Choose Install / Remove meshtasticd and install the Stable release unless you specifically need a test channel.
B. Enable SPI
Choose Enable SPI. SPI is how the Pi talks to the LoRa radio.
C. Enable I²C
Choose Enable I2C. This supports the board's I²C expansion path.
D. Enable GPS / UART if you're using GPS
The tool enables UART and sets the GPS serial path for your Pi model. Pi 5/500 use /dev/ttyAMA0; earlier supported Pi models use /dev/ttyS0.
E. Set the HAT config
Choose Set Hat Config and select the recommended MeshAdv Pi HAT v1.1 file:
lora-MeshAdv-900M30S.yamlExpected. Reboot before troubleshooting.
sudo rebootOPEN THE TOOL AGAIN.
If you were using SSH, reconnect and run:
python3 ~/meshadv-config/meshadv-config.pyCheck that SPI, I²C and your HAT configuration show the settings you selected.
DO NOT SKIP THIS.
Install the Meshtastic Python CLI through the helper if required, then use Set Region.
Select the U.S. region for a node physically operating in the United States. If the node is elsewhere, use the legal region for that location.
Then choose Enable on Boot and Start Service.
CHECK STATUS. SEND A MESSAGE.
Open Service Status. You want meshtasticd running without a repeating fatal error.
Then use the helper's Send Test Message action.
Stop there for a minute. Prove basic RF operation before adding MQTT, dashboards, GPS timing or other services.
GET THE RADIO WORKING FIRST. ADD GPS SECOND.
The MeshAdv Pi HAT supports an external UART GPS module. The upstream project recommends the ATGM336H and notes that jumper J3 selects 3.3 V or 5 V for the GPS.
/dev/ttyAMA0; earlier Pis typically use /dev/ttyS0 in the upstream configuration.BEGINNER TROUBLESHOOTING.
The tool says no HAT detected
The radio isn't working
lora-MeshAdv-900M30S.yaml is selected, you rebooted after interface changes, and meshtasticd is running.meshtasticd will not start
GPS doesn't work
An old YouTube video tells me to edit config.yaml
SIX EASY WAYS TO MAKE THIS HARDER.
Project documentation
Hardware revisions and software screens can change. Use the original project documentation alongside this walkthrough.