Open-source LoRa packet intelligence for Meshtastic and MeshCore mesh networks.
Supports US915, EU868, ANZ915, IN865, KR920, and SG923 frequency regions.
A Raspberry Pi-based LoRa listener that captures traffic from Meshtastic and MeshCore mesh networks simultaneously. The SX1302/SX1303 concentrator listens on 8 LoRa channels across all spreading factors at once, while an optional MeshCore USB companion monitors MeshCore traffic on its own frequency.
Packets are captured, decrypted, stored locally, and shown on a real-time dashboard. Optionally, everything syncs upstream to Meshradar for aggregated city-wide mesh intelligence.
Select your region during setup and the concentrator auto-tunes to the correct frequency. MeshCore companion radios are configured to match automatically.
| Region | Meshtastic Frequency | MeshCore Frequency |
|---|---|---|
| US | 906.875 MHz | 910.525 MHz |
| EU_868 | 869.525 MHz | 869.618 MHz |
| ANZ | 917.375 MHz | 916.575 MHz |
| IN | 865.625 MHz | Custom |
| KR | 921.125 MHz | Custom |
| SG_923 | 917.375 MHz | Custom |
Regions without a standard MeshCore preset prompt for custom frequency entry during setup, or use meshpoint meshcore-radio custom anytime. See the Onboarding Guide for full MeshCore setup details.
| Standard Node | Meshpoint | |
|---|---|---|
| Channels | 1 | 8 |
| Demodulators | 1 | 16 (multi-SF) |
| Role | Participant | Passive observer |
| Packet visibility | Own traffic | Everything in range |
| Storage | None | SQLite with retention |
| Dashboard | None | Real-time web UI |
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 4 bottom screws to access the SD card slot. 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.
┌─────────────────────────┐
│ Meshradar Cloud │
│ (meshradar.io) │
└────────────┬────────────┘
│ WebSocket
│
┌──────────┐ ┌──────────┐ ┌────────────┴────────────┐
│Meshtastic│ │ SX1302/ │ │ Meshpoint (Pi 4) │
│ packets │───▶│ SX1303 │───▶│ │
│ (OTA) │ │ 8-ch RX │ │ Capture → Decode → API │
└──────────┘ └──────────┘ │ │ │
│ Dashboard │
┌──────────┐ ┌──────────┐ │ (port 8080) │
│ MeshCore │ │ Heltec │ │ │
│ packets │───▶│ USB │───▶│ │
│ (OTA) │ │companion │ │ │
└──────────┘ └──────────┘ └─────────────────────────┘
Capture — SX1302 HAL receives Meshtastic on 8 channels across SF7-SF12. A USB MeshCore companion (optional) receives MeshCore traffic on its configured frequency.
Decode — Packets from both protocols decrypted and parsed. Positions, text messages, telemetry, node info, advertisements, routing data — all extracted and stored.
Dashboard — Local web UI with a live map, packet feed with decoded contents, traffic charts, and signal analytics.
Upstream — Optional WebSocket connection to Meshradar for aggregated multi-site mesh intelligence.
Connect a separate SX1262 radio (T-Beam, Heltec, RAK4631) via USB and the Meshpoint can re-broadcast packets it hears:
- Deduplication via packet ID tracking
- Token-bucket rate limiting
- RSSI-based signal filtering
- TX path is independent from RX — transmission never blocks reception
All settings live in config/default.yaml with user overrides in config/local.yaml.
radio:
region: "US" # US, EU_868, ANZ, IN, KR, SG_923
frequency_mhz: 906.875 # auto-configured from region
spreading_factor: 11 # SF11 (LongFast)
bandwidth_khz: 250.0
capture:
sources:
- concentrator
- meshcore_usb
meshcore_usb:
auto_detect: true # scans /dev/ttyUSB* and /dev/ttyACM*
relay:
enabled: false
max_relay_per_minute: 20
upstream:
enabled: true
url: "wss://api.meshradar.io/ws"FastAPI 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 |
WS /ws |
Real-time packet stream |
meshpoint status # service status + config summary
meshpoint logs # tail the service journal
meshpoint restart # restart the service
meshpoint meshcore-radio # configure MeshCore companion radio frequency
sudo meshpoint setup # re-run config wizardSee the Onboarding Guide for full CLI reference and configuration details.
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.
- Real-time packet streaming — Cloud dashboard receives packets instantly via WebSocket. Live animated lines trace packets from source nodes to your Meshpoint on the map as they arrive.
- Cloud map overhaul — Marker clustering, signal heatmap layer, topology lines from neighborinfo data, and a live Recent Packets ticker panel.
- SenseCap M1 support — Auto-detects SenseCap M1 carrier board via I2C probe during setup. Flash an SD card and go.
- 14 Meshtastic portnums decoded — TEXT, POSITION, NODEINFO, TELEMETRY, ROUTING, ADMIN, WAYPOINT, DETECTION_SENSOR, PAXCOUNTER, STORE_FORWARD, RANGE_TEST, TRACEROUTE, NEIGHBORINFO, MAP_REPORT — plus encrypted packet tracking.
- Device role extraction — Node table shows CLIENT, ROUTER, REPEATER, TRACKER, SENSOR, and other roles from NodeInfo packets.
- Smart relay engine — Deduplication, token-bucket rate limiting, hop/type/signal filtering, independent SX1262 TX path.
- Live dashboard UX — Color-coded packet feed, decoded payload contents, 24h active node counts, version-based update indicator, and enlarged map view.
- Cloud dashboard tabs — Tabbed layout with fleet view, interactive map controls, device-scoped filters, unified packet cards with signal strength bars, and public activity stream for visitors.
- MeshCore USB capture — New capture source for USB-connected MeshCore companion nodes. Auto-detects the device, configures radio frequency via the setup wizard (US/EU/ANZ presets or custom), with auto-reconnect and health monitoring. Startup banner shows all active sources.
- Custom frequency tuning — Configurable SX1302 channel plan via local.yaml. Validated on live hardware with LongFast (SF11/BW250). Dual-protocol HAL patch for simultaneous Meshtastic and MeshCore sync words.
- Multi-region concentrator support — Added support for US, EU_868, ANZ, IN, KR, and SG_923 frequency regions. The SX1302 concentrator automatically tunes to the correct primary frequency, spreading factor, and bandwidth for each region.
- Setup wizard region selector — New step in the setup wizard lets you choose your frequency region. MeshCore companion radios are automatically configured to match your selected region (US, EU, ANZ presets).
meshpoint meshcore-radioCLI command — New standalone command to switch your MeshCore companion radio frequency without re-running the full setup wizard. Supports preset regions (meshpoint meshcore-radio EU) or custom manual entry (meshpoint meshcore-radio custom). Auto-detects USB port, handles service stop/restart, and updates config if the port changes after reboot.
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. After updating, verify the new version in the startup banner or with meshpoint version.
You don't need to re-run the full setup wizard. Edit your config and restart:
sudo nano /opt/meshpoint/config/local.yamlAdd or change the region line under radio::
radio:
region: "EU_868"Then restart: sudo systemctl restart meshpoint
To change your MeshCore companion radio to match:
meshpoint meshcore-radio EUOr enter a custom frequency: meshpoint meshcore-radio custom
See the Onboarding Guide for full details on MeshCore radio configuration.
- 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.
MIT — see LICENSE. Compiled core modules are distributed separately under a commercial license.
Built for the mesh community by Meshradar.




