Open-source Meshtastic base station with native TX/RX, 8-channel concentrator, and browser-based messaging.
Runs on Raspberry Pi 4 + SX1302/SX1303. Supports US915, EU868, ANZ915, IN865, KR920, and SG923.
A Raspberry Pi-based Meshtastic base station that sends and receives messages through an SX1302/SX1303 concentrator. The concentrator receives on 8 channels simultaneously (SF7-SF12) and transmits natively with up to 27 dBm output. Phones and nodes see it as a regular participant on the mesh.
Everything is managed from a browser dashboard: full chat with channels and DMs, node discovery, radio configuration, and live packet feed. Also supports MeshCore traffic through a USB companion. Optionally syncs upstream to Meshradar for aggregated multi-site mesh intelligence.
| Standard Node | Meshpoint | |
|---|---|---|
| Radio | Single transceiver | SX1302 concentrator (RX + TX) |
| Role | Participant | Observer + participant |
| Packet visibility | Own traffic | Everything in range |
| Messaging | Phone app only | Full chat from any browser |
| Storage | None | SQLite with retention |
| Dashboard | None | Real-time web UI with radio config |
Native mesh messaging. Send and receive Meshtastic messages directly from the dashboard. Broadcast to channels, DM individual nodes, or reply in conversations. MeshCore messaging supported through the USB companion. The SX1302 handles TX using the same sync word and encryption as the mesh network: phones and nodes see your Meshpoint as a regular participant.
Full chat UI. Conversations organized by channel and contact. Signal info (SNR, RSSI) on every received bubble. Duplicate badge shows how many times a relayed message was heard. Channel sidebar with LongFast, custom channels, and DM contacts. Message history persisted in SQLite.
Radio configuration from the dashboard. Change region, modem preset, frequency, TX power, and duty cycle without SSH. Add and remove channels with custom PSKs. Toggle TX enable/disable. All settings saved to local.yaml and survive restarts.
Node discovery. Live node cards showing every node your Meshpoint has heard: name, ID, protocol, hardware model, signal strength, battery, and last seen. Click any node to open a detail drawer with signal history and direct message.
Dual-protocol capture. Meshtastic and MeshCore traffic captured simultaneously. The SX1302 concentrator handles Meshtastic, while a USB MeshCore companion covers MeshCore on its own frequency.
Full packet decoding. 14 Meshtastic portnums decoded: TEXT, POSITION, NODEINFO, TELEMETRY, ROUTING, ADMIN, WAYPOINT, DETECTION_SENSOR, PAXCOUNTER, STORE_FORWARD, RANGE_TEST, TRACEROUTE, NEIGHBORINFO, and MAP_REPORT. 6 MeshCore message types decoded. Device roles (CLIENT, ROUTER, REPEATER, TRACKER, SENSOR) extracted from NodeInfo.
Multi-channel decryption. Configure private channel PSKs from the dashboard or local.yaml. The Meshpoint decodes traffic on those channels alongside the default key and routes messages to the correct conversation. Supports any number of channels with AES-128 or AES-256 keys.
6 frequency regions. US, EU_868, ANZ, IN, KR, and SG_923. Select during setup or change from the Radio settings page. MeshCore companion radios configure to match automatically.
Real-time dashboard. Live map with node positions, color-coded packet feed with frequency and spreading factor columns, traffic charts, signal analytics, and node cards. Accessible from any device on your network.
Cloud integration. Optional WebSocket uplink to Meshradar for aggregated multi-site mesh intelligence. Fleet management, city-wide maps, and packet history across all your Meshpoints.
Dual-protocol MQTT gateway. Publish captured packets to community MQTT brokers and Home Assistant. Dual-protocol: Meshtastic (protobuf) and MeshCore (JSON) from a single device. Two-gate privacy model ensures private channel data never leaks. Optional JSON publishing, HA auto-discovery, and configurable location precision.
Auto-detect hardware. RAK Hotspot V2 and SenseCap M1 identified automatically during setup. MeshCore USB companions auto-detected on /dev/ttyUSB* and /dev/ttyACM*.
Requirements: Raspberry Pi 4, 64-bit Raspberry Pi OS, Python 3.13. The compiled core modules are aarch64 binaries: other platforms (Pi 3, x86, 32-bit OS) are not currently supported.
The easiest path. RAK/MNTD Hotspot V2 miners (model RAK7248) include a Pi 4, RAK2287 (SX1302), Pi HAT, metal enclosure, antenna, and power supply: everything you need. Helium's IoT network didn't pan out, so these are all over eBay for $40-70.
Remove the black tape covering the SD card slot and carefully remove SD. Flash a new card with Raspberry Pi OS 64-bit, run the install script, and you have a Meshpoint in a nice aluminum enclosure.
Another Helium-era miner with identical compatibility. The SenseCap M1 includes a Pi 4, Seeed WM1303 concentrator (SX1303), carrier board, metal enclosure, and antenna. Some units ship with a 64GB SD card included.
Remove the 2 screws on the back panel (the side without the Ethernet/antenna ports) to access the SD card: it may be held in place by kapton tape. Flash with Raspberry Pi OS 64-bit and run the install script. USB-C power connects to the carrier board, not the Pi directly.
| Component | Price |
|---|---|
| Raspberry Pi 4 (1GB+) | $35 |
| RAK2287 SX1302 + Pi HAT | ~$20* |
| 915 MHz LoRa antenna | $10 |
| MicroSD card (16GB+) | $10 |
| USB-C power supply (5V 3A) | $10 |
*Helium's surplus means RAK2287 concentrators and Pi HATs go for ~$20 combined on eBay.
Assembly: Seat the RAK2287 on the Pi HAT, mount the HAT on the Pi GPIO header, connect the antenna. Always connect the antenna before powering on.
Add a Heltec V3/V4 or T-Beam running MeshCore USB companion firmware to monitor MeshCore traffic alongside Meshtastic. Plug it into any USB port on the Pi -- the setup wizard auto-detects the device and configures its radio frequency for your region.
Full step-by-step guide: See the Onboarding Guide for detailed instructions covering flashing, assembly, installation, MeshCore setup, and troubleshooting for all hardware options.
sudo apt update && sudo apt install -y git
sudo git clone https://github.com/KMX415/meshpoint.git /opt/meshpoint
cd /opt/meshpoint && sudo bash scripts/install.shThis builds the SX1302 HAL with Meshtastic patches, sets up a Python venv, and installs the systemd service.
sudo meshpoint setup # interactive config wizard
meshpoint status # verify everything is runningOpen http://<pi-ip>:8080 for the local dashboard.
First time? The Onboarding Guide walks through everything from flashing the SD card to verifying your first captured packets.
┌─────────────────────────┐
│ Meshradar Cloud │
│ (meshradar.io) │
└────────────┬────────────┘
│ WebSocket
│
┌──────────┐ ┌──────────┐ ┌────────────┴────────────┐
│Meshtastic│ │ SX1302/ │ │ Meshpoint (Pi 4) │
│ packets │◀──▶│ SX1303 │◀──▶│ │
│ (OTA) │ │ RX + TX │ │ Capture → Decode → API │
└──────────┘ └──────────┘ │ ▲ │ │
│ │ Dashboard │
┌──────────┐ ┌──────────┐ │ Messages (port 8080)│
│ MeshCore │ │ Heltec │ │ + Chat UI │
│ packets │◀──▶│ USB │◀──▶│ │
│ (OTA) │ │companion │ │ │
└──────────┘ └──────────┘ └─────────────────────────┘
meshpoint status # service status + config summary
meshpoint logs # tail the service journal
meshpoint report # full operational report (traffic, signal, system)
meshpoint restart # restart the service
meshpoint meshcore-radio # configure MeshCore companion radio frequency
sudo meshpoint setup # re-run config wizardFastAPI server on port 8080:
| Endpoint | Description |
|---|---|
GET /api/nodes |
All discovered nodes |
GET /api/nodes/map |
Nodes with GPS for map display |
GET /api/packets |
Recent packets (paginated) |
GET /api/analytics/traffic |
Traffic rates and counts |
GET /api/analytics/signal/rssi |
RSSI distribution |
GET /api/device/status |
Device health and uptime |
GET /api/config |
Radio, TX, and channel configuration |
PUT /api/config/transmit |
Update TX settings |
PUT /api/config/identity |
Update node ID, long/short name |
PUT /api/config/radio |
Change region, preset, frequency |
POST /api/messages/send |
Send a Meshtastic or MeshCore message |
GET /api/messages/conversations |
Message history by conversation |
WS /ws |
Real-time packet + message stream |
cd /opt/meshpoint
sudo git pull origin main
sudo systemctl restart meshpointThe local dashboard shows an orange update indicator when a new version is available.
v0.6.0 adds native TX support, which requires a one-time HAL recompile and two config files:
cd /opt/meshpoint
sudo git pull origin main
sudo bash /opt/meshpoint/scripts/patch_hal.sh
sudo cp config/sudoers-meshpoint /etc/sudoers.d/meshpoint
sudo chmod 440 /etc/sudoers.d/meshpoint
sudo cp scripts/meshpoint.service /etc/systemd/system/meshpoint.service
sudo systemctl daemon-reload
sudo systemctl restart meshpointpatch_hal.sh patches the concentrator HAL for Meshtastic-compatible TX sync words and recompiles (takes about 2 minutes). The sudoers rule allows the dashboard to restart the service when you change settings. Both only need to run once. Future updates go back to git pull + restart.
Chip version 0x00: Concentrator not responding. Check that the concentrator module is seated, SPI is enabled (raspi-config → Interface Options → SPI), and try a full power cycle (unplug for 10+ seconds). Normal chip versions are 0x10 (SX1302) and 0x12 (SX1303).
No packets: Verify antenna is connected and frequency matches your region. Check meshpoint logs for lgw_receive returned N packet(s).
Upstream 401: Bad API key. Get a free one at meshradar.io and re-run sudo meshpoint setup.
- Onboarding Guide: step-by-step from empty Pi to running Meshpoint
- Configuration Guide: all config options, private channels, relay, upstream, radio tuning
- Troubleshooting: common issues, recovery, and diagnostics
- Changelog: version history and release notes
- Discord: discord.gg/Cfuc6Cp4wM
- Website: meshradar.io
- Issues: GitHub Issues
Meshpoint is still early alpha. Pull requests are welcome, but please keep changes small and reviewable.
See CONTRIBUTING.md for guidelines, workflow, and PR expectations.
AI-assisted contributions are allowed, but contributors should review and understand all code before submitting.
AGPL-3.0: see LICENSE. Compiled core modules are distributed as pre-built binaries under the same license.
Built for the mesh community by Meshradar.






