KMX415/meshpoint

GitHub: KMX415/meshpoint

开源 LoRa 网状网络被动式全信道数据包捕获与智能分析系统,基于树莓派和多信道集中器实现 Meshtastic/MeshCore 流量的实时解码、存储与可视化。

Stars: 56 | Forks: 5

Meshpoint Logo

Meshpoint

针对 Meshtastic 和 MeshCore 网状网络的开源 LoRa 数据包智能分析系统。
支持 US915、EU868、ANZ915、IN865、KR920 和 SG923 频段。

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-green.svg)](https://www.python.org/) [![Platform: Raspberry Pi](https://img.shields.io/badge/platform-Raspberry%20Pi%204-red.svg)](https://www.raspberrypi.com/) [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white)](https://discord.gg/Cfuc6Cp4wM) ![Meshradar 仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/623bda8bdd155829.png) ![Meshpoint 终端](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8caa7775ba155832.png) ## 这是什么? 这是一个基于 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) RAK7248 Hotspot V2 拧下底部的 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) SenseCap M1 拧下背板(没有 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, 云端同步, 信号嗅探, 内存执行, 多信道接收, 实时仪表盘, 射频监听, 开源, 情报收集, 数据包解密, 无后门, 无线电频率, 无线网络, 流量捕获, 漏洞研究, 物联网, 网状网络, 网络拓扑, 网络测绘, 被动侦听, 边缘计算, 逆向工具, 防御绕过, 集中器