ディープダイブ — その正体、比較、そして気まずい部分。
| Meshtastic | MeshCore | |
|---|---|---|
| パケット形式 | Protobuf、フィールド拡張可能 | コンパクトなバイナリ、オペコードごとに固定 |
| ルーティング | ホップカウント・フラッド + 暗黙的重複排除 | パス指向 — フラッドで経路発見、ユニキャストで追従 |
| コンパニオンリンク | BLE/Serial/TCP 上の Protobuf | BLE/Serial 上の長さ区切りバイナリオペコード |
| ロール | 汎用ノード + 任意のルーター | 明示的なロール — chat / repeater / room / sensor |
| オンボーディング | 接続して既定チャンネルへ | 同様、ただし名前付きチャンネル(Public がよく知られる) |
| テレメトリ | バッテリー / 環境 / GPS をメッセージバスにネイティブ | 専用 req/resp 経由の Cayenne LPP |
| 暗号 | チャンネル毎 AES-CTR + DM 毎 ECDH | チャンネル毎 AES-CTR + DM 毎 ECDH、署名付き advert |
どちらが「優れている」と一概には言えない — 異なるトレードオフ。MeshCore は電波上で軽量、Meshtastic はノード当たりの機能が豊富。
Advert にロールバイトが含まれるので、どのクライアントでも色分け / 重み付けできる。
フレームは [opcode][payload]、BLE 通知 1 件 = 1 フレーム。
主なオペコード:
0x01 APP_START — ハンドシェイク。0x02 / 0x03 — DM / チャンネルメッセージ送信。0x05 SELF_INFO — デバイス側 ID + 無線パラメータ。0x07 — 自身の advert を送信(flood か直送)。0x0E SET_ADVERT_LATLON — 位置情報を radio に push。0x14 BATT_AND_STORAGE — バッテリーテレメトリ。0x27 SEND_TELEMETRY_REQ — peer(または self)のテレメトリ取得。0x83 / 0x88 / 0x8B — 非同期 push — メッセージ待機 / RF ログ / テレメトリ応答。加えて、companion v3 フレームは SNR / RSSI をインライン搬送 — 信号認識 UI に必須。
ファームウェアは単一の C++ コードベース、ボード別バリアントは variants/ 配下。
2026 年 4 月に何が起こったか、詳細。
2026 年 4 月末、MeshCore コミュニティは分裂した。「the split」とは、コアチーム(Scott ら)と、それまで活発な貢献者だった Andy Kirby との公的な決別を指す。
チームの説明: blog.meshcore.io/2026/04/23/the-split
この争点を理解する価値は二つある:
meshcore.io、GitHub org、商標、Discord、それぞれの所有が争われている、または新規構築。meshcore.co.uk ドメインと Discord サーバを保持、チーム曰くビジュアルデザインも複製。meshcore.io、blog.meshcore.io、新しい Discord で再出発。商標の決着は未了。チームの立場は 「人間の手で書かれた」 を価値の中核に置く。そのため分裂は、コードの著者性そのものというより 開示 の問題として読める — チームが問題視したのは、AI 関与を長期間秘匿していた点。
合理的な読者でも見方は異なる。緊張感のある複数の枠組み:
どこに着地するかは、自分が優先する価値(透明性 / 著者性 / 実用性)次第。
ファームウェアはオープン。公式モバイルアプリはオープンではない。
docs/companion_protocol.md。(不完全 — ソースが真実。)典型的な opencore 構造 — プロトコルとリファレンスハードウェアは開かれており、洗練された消費者向けの面は閉じている。持続可能性の観点では理にかなうが、(a) アプリが端末で何をしているか検査したい、(b) 拡張したい、(c) 公式が意図的に作らないものを作りたい場合には不満が残る。
クローズドアプリの隙間を埋める二つのコミュニティ努力:
両方ともエコシステムにとって健全。一方が他方を置き換えるものではない。