KMX415/meshpoint
GitHub: KMX415/meshpoint
开源 LoRa 网状网络被动式全信道数据包捕获与智能分析系统,基于树莓派和多信道集中器实现 Meshtastic/MeshCore 流量的实时解码、存储与可视化。
Stars: 56 | Forks: 5
Meshpoint
针对 Meshtastic 和 MeshCore 网状网络的开源 LoRa 数据包智能分析系统。
支持 US915、EU868、ANZ915、IN865、KR920 和 SG923 频段。
[](LICENSE)
[](https://www.python.org/)
[](https://www.raspberrypi.com/)
[](https://discord.gg/Cfuc6Cp4wM)


## 这是什么?
这是一个基于 Raspberry Pi 的 LoRa 监听器,可同时捕获来自 **Meshtastic** 和 **MeshCore** 网状网络的流量。SX1302/SX1303 集中器可同时监听所有扩频因子下的 **8 个 LoRa 信道**,而可选的 MeshCore USB 伴侣设备可在其自身频率上监控 MeshCore 流量。
数据包将被捕获、解密、本地存储,并显示在实时仪表盘上。可选地,所有数据可同步至上游的 [Meshradar](https://meshradar.io),以获取聚合的城市级网状网络智能分析。
### 支持的频段
在设置期间选择您的地区,集中器将自动调谐至正确的频率。MeshCore 伴侣电台会自动配置以进行匹配。
| 地区 | Meshtastic 频率 | MeshCore 频率 |
|--------|---------------------|-------------------|
| **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 | 自定义 |
| **KR** | 921.125 MHz | 自定义 |
| **SG_923** | 917.375 MHz | 自定义 |
没有标准 MeshCore 预设的地区会在设置期间提示输入自定义频率,或者随时使用 `meshpoint meshcore-radio custom` 命令。有关完整的 MeshCore 设置详细信息,请参阅[新手指南](docs/ONBOARDING.md#adding-a-meshcore-companion-optional)。
### 标准节点 vs Meshpoint
| | 标准节点 | Meshpoint |
|---|---|---|
| **信道** | 1 | 8 |
| **解调器** | 1 | 16 (多扩频因子) |
| **角色** | 参与者 | 被动观察者 |
| **数据包可见性** | 自身流量 | 范围内的所有流量 |
| **存储** | 无 | 带保留策略的 SQLite |
| **仪表盘** | 无 | 实时 Web UI |
## 硬件
### 选项 A:RAK Hotspot V2(约 $60,推荐)
最简单的方案。RAK/MNTD Hotspot V2 矿机(型号 **RAK7248**)包含 Pi 4、RAK2287 (SX1302)、Pi HAT、金属外壳、天线和电源:您需要的一切都在这里。Helium 的 IoT 网络未能成功普及,因此 eBay 上到处都是售价在 $40-70 之间的这类设备。
[在 eBay 上寻找 ($30-80)](https://www.ebay.com/sch/i.html?_nkw=RAK%20Hotspot%20V2%20%2F%20MNTD&_sacat=0&_from=R40&rt=nc&_udlo=30&_udhi=80)

拧下底部的 4 颗螺丝即可访问 SD 卡插槽。刷入带有 Raspberry Pi OS 64 位的新卡,运行安装脚本,您就能拥有一个装在精美铝合金外壳中的 Meshpoint。
### 选项 B:SenseCap M1(约 $40-60)
另一款具有同样兼容性的 Helium 时代矿机。SenseCap M1 包含 Pi 4、Seeed WM1303 集中器 (SX1303)、载板、金属外壳和天线。部分机型出厂自带 64GB SD 卡。
[在 eBay 上寻找 ($30-60)](https://www.ebay.com/sch/i.html?_nkw=SenseCap%20M1&_sacat=0&_from=R40&rt=nc&_udlo=30&_udhi=60)

拧下背板(没有 Ethernet/天线接口的那一侧)上的 2 颗螺丝以访问 SD 卡:它可能被聚酰亚胺胶带固定住了。刷入 Raspberry Pi OS 64 位并运行安装脚本。USB-C 电源需连接到载板,而不是直接连到 Pi 上。
### 选项 C:自行组装(约 $85)
| 组件 | 价格 |
|-----------|-------|
| Raspberry Pi 4 (1GB+) | $35 |
| RAK2287 SX1302 + Pi HAT | ~$20* |
| 915 MHz LoRa 天线 | $10 |
| MicroSD 卡 (16GB+) | $10 |
| USB-C 电源 (5V 3A) | $10 |
*\*Helium 过剩的库存意味着 RAK2287 集中器和 Pi HAT 在 eBay 上的组合售价约为 $20。*
**组装:** 将 RAK2287 安装在 Pi HAT 上,将 HAT 安装在 Pi GPIO 接口上,连接天线。请务必在开机前连接好天线。
### 可选:MeshCore USB 伴侣设备
添加一个运行 [MeshCore USB companion firmware](https://flasher.meshcore.co.uk/) 的 Heltec V3/V4 或 T-Beam,以便在监控 Meshtastic 的同时监控 MeshCore 流量。将其插入 Pi 上的任意 USB 端口——设置向导会自动检测设备并为您所在地区配置其无线电频率。
## 安装
```
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.sh
```
这将编译带有 Meshtastic 补丁的 SX1302 HAL,设置 Python venv,并安装 systemd 服务。
```
sudo meshpoint setup # interactive config wizard
meshpoint status # verify everything is running
```
打开 `http://
:8080` 访问本地仪表盘。
## 系统架构
```
┌─────────────────────────┐
│ 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 │ │ │
└──────────┘ └──────────┘ └─────────────────────────┘
```
**捕获:** SX1302 HAL 在跨越 SF7-SF12 的 8 个信道上接收 Meshtastic 信号。USB MeshCore 伴侣设备(可选)在其配置的频率上接收 MeshCore 流量。
**解码:** 来自两种协议的数据包将被解密和解析。位置、文本消息、遥测数据、节点信息、广播、路由数据:全部提取并存储。
**仪表盘:** 具有实时地图、带有已解码内容的数据包流、流量图表和信号分析的本地 Web UI。
**上游:** 可选的到 Meshradar 的 WebSocket 连接,用于聚合多站点网状网络智能分析。
## 智能中继(可选)
通过 USB 连接一个单独的 SX1262 电台(T-Beam、Heltec、RAK4631),Meshpoint 就可以重新广播它听到的数据包:
- 通过数据包 ID 跟踪进行去重
- 令牌桶速率限制
- 基于 RSSI 的信号过滤
- TX 路径独立于 RX:发送永远不会阻塞接收
## 配置
所有设置都位于 `config/default.yaml` 中,用户覆盖配置位于 `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"
```
## 本地 API
运行在 8080 端口的 FastAPI 服务器:
| 端点 | 描述 |
|----------|-------------|
| `GET /api/nodes` | 所有已发现的节点 |
| `GET /api/nodes/map` | 拥有 GPS 信息的节点(用于地图显示) |
| `GET /api/packets` | 最近的数据包(分页) |
| `GET /api/analytics/traffic` | 流量速率和计数 |
| `GET /api/analytics/signal/rssi` | RSSI 分布 |
| `GET /api/device/status` | 设备运行状况和在线时间 |
| `WS /ws` | 实时数据包流 |
## CLI
```
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 wizard
```
有关完整的 CLI 参考和配置详细信息,请参阅[新手指南](docs/ONBOARDING.md#managing-your-mesh-point)。
## 故障排除
**芯片版本 0x00:** 集中器无响应。请检查集中器模块是否插好,SPI 是否已启用(`raspi-config` → Interface Options → SPI),并尝试完全断电重启(拔下电源 10 秒以上)。正常的芯片版本为 `0x10` (SX1302) 和 `0x12` (SX1303)。
**无数据包:** 验证天线已连接且频率与您所在地区匹配。检查 `meshpoint logs` 是否有 `lgw_receive returned N packet(s)`。
**上游 401 错误:** API 密钥无效。请在 [meshradar.io](https://meshradar.io) 获取一个免费密钥,然后重新运行 `sudo meshpoint setup`。
## 更新日志
### v0.5.0(2026 年 3 月 29 日)
- **多地区频率支持:** 6 个 Meshtastic 地区(US、EU_868、ANZ、IN、KR、SG_923),带有自动调谐集中器和设置向导地区选择器。
- **预设调谐:** 服务信道 SF 和 BW 可通过 `local.yaml` 进行配置。支持 MediumFast、ShortFast、ShortTurbo:不仅是 LongFast。
- **频率覆盖:** 在 `local.yaml` 中设置 `frequency_mhz` 以调谐至您所在地区的非默认时隙。
- **完整的 portnum 解码:** 位置速度/航向/高度、功率指标、路由错误、NEIGHBORINFO、TRACEROUTE 载荷。
- **`meshpoint meshcore-radio` CLI:** 无需重新运行整个向导即可切换 MeshCore 伴侣频率。提供预设(US/EU/ANZ)或自定义输入。
- **启动横幅准确性:** 启动日志显示实际的无线电配置,而不仅仅是地区默认值。
- **配置稳定性:** 空的 YAML 部分不再导致服务在启动时崩溃。
### 早期(2026 年 3 月)
#### 3 月上旬
- **实时数据包流:** 云仪表盘通过 WebSocket 即时接收数据包。动态动画线条在地图上追踪从源节点到您 Meshpoint 的数据包。
- **云地图大修:** 标记聚类、信号热力图层、来自 NEIGHBORINFO 数据的拓扑连线以及实时最近数据包滚动面板。
- **SenseCap M1 支持:** 在设置期间通过 I2C 探测自动检测 SenseCap M1 载板。只需刷入 SD 卡即可使用。
- **14 个 Meshtastic portnums 已解码:** TEXT、POSITION、NODEINFO、TELEMETRY、ROUTING、ADMIN、WAYPOINT、DETECTION_SENSOR、PAXCOUNTER、STORE_FORWARD、RANGE_TEST、TRACEROUTE、NEIGHBORINFO、MAP_REPORT,外加加密数据包跟踪。
- **设备角色提取:** 节点表显示来自 NodeInfo 数据包的 CLIENT、ROUTER、REPEATER、TRACKER、SENSOR 及其他角色。
- **智能中继引擎:** 去重、令牌桶速率限制、跳数/类型/信号过滤、独立的 SX1262 TX 路径。
#### 3 月中旬
- **实时仪表盘 UX:** 颜色编码的数据包流、解码后的载荷内容、24 小时活跃节点计数、基于版本的更新指示器以及放大的地图视图。
- **云仪表盘标签页:** 带有舰队视图的选项卡布局、交互式地图控件、设备范围过滤器、带有信号强度条的统一数据包卡,以及面向访客的公开活动流。
- **MeshCore USB 捕获:** 针对通过 USB 连接的 MeshCore 伴侣节点的新捕获源。自动检测设备,通过设置向导配置无线电频率(US/EU/ANZ 预设或自定义),并带有自动重新连接和健康监测。启动横幅显示所有活动的捕获源。
- **自定义频率调谐:** 可通过 `local.yaml` 配置的 SX1302 信道计划。已在运行 LongFast (SF11/BW250) 的实际硬件上验证。用于同时处理 Meshtastic 和 MeshCore 同步字的双协议 HAL 补丁。
## 更新
```
cd /opt/meshpoint && sudo git pull origin main && sudo systemctl restart meshpoint
```
当有新版本可用时,本地仪表盘将显示橙色的更新指示器。更新后,请在启动横幅中或使用 `meshpoint version` 验证新版本。
### 更改您的频率地区(适用于现有 Meshpoint)
您不需要重新运行完整的设置向导。只需编辑您的配置并重启:
```
sudo nano /opt/meshpoint/config/local.yaml
```
在 `radio:` 下添加或更改 `region` 行:
```
radio:
region: "EU_868"
```
然后重启:`sudo systemctl restart meshpoint`
若要更改您的 MeshCore 伴侣电台以进行匹配:
```
meshpoint meshcore-radio EU
```
或者输入自定义频率:`meshpoint meshcore-radio custom`
有关 MeshCore 无线电配置的完整详细信息,请参阅[新手指南](docs/ONBOARDING.md#changing-meshcore-radio-frequency)。
## 许可证
MIT:请参阅 [LICENSE](LICENSE)。编译后的核心模块在商业许可下单独分发。
*由 [Meshradar](https://meshradar.io) 为网状网络社区构建。*标签:ANZ915, EU868, IN865, IoT, IP 地址批量处理, KR920, LoRa, MeshCore, Meshpoint, Meshradar, Meshtastic, Mesh网络, Python, Raspberry Pi, SG923, SX1302, SX1303, US915, 云端同步, 信号嗅探, 内存执行, 多信道接收, 实时仪表盘, 射频监听, 开源, 情报收集, 数据包解密, 无后门, 无线电频率, 无线网络, 流量捕获, 漏洞研究, 物联网, 网状网络, 网络拓扑, 网络测绘, 被动侦听, 边缘计算, 逆向工具, 防御绕过, 集中器