上次碰 Meshtastic 是好幾年前的事了,最近跟朋友聊天提到,回來看看。
Matter 有 CHIP Tool 可以直接 parse setup payload;Meshtastic 不想弄 node 或裝 App,要怎麼看社群裡頻道的設定呢?
通常頻道設定會用 QR Code 分享,像這邊。
裡面有個

帶著網址
https://meshtastic.org/e/#CjISIDhLvMAdwCLRgb82uGEh4fuWty5Vv3Qifp1q-0jWTLGhGgpERUZDT05uZWN0OgIIDRIRCAEQBjgBQANIAVAeaAHABgE爬了一下 code,payload 是把 Protocol Buffers 的 binary message 用 URL safe 的 Base64 裝起來。
知道了這點之後我們就可以用 CyberChef 簡單做到 QR Code to Protobuf Text。
右上角直接塞 QR Code 圖檔就可以解碼。用 🚫 關掉解 QR Code 的部份改成貼網址也可以。
如果輸出要更人性化一點,Meshtastic 官方有提供 Protobuf schema。拉回來之後,用 🚫 關掉解 Protobuf 的部份,另外用 protoc 解碼。
protoc --decode=meshtastic.ChannelSet meshtastic/apponly.proto就可以得到可讀性較高的輸出:
settings {
psk: "8K\274\300\035\300\"\321\201\2776\270a!\341\373\226\267.U\277t\"~\235j\373H\326L\261\241"
name: "DEFCONnect"
module_settings {
position_precision: 13
}
}
lora_config {
use_preset: true
modem_preset: SHORT_FAST
region: US
hop_limit: 3
tx_enabled: true
tx_power: 30
sx126x_rx_boosted_gain: true
ignore_mqtt: true
}備註:實測在 CyberChef 裡貼入 Protobuf schema 也可以做到,但要剪貼的檔案內容太多太麻煩。
雜談#
跟過去不同的地方#
2022 的時候 Meshtastic 有根據中華民國無線電頻率分配表更新了台灣的頻段,現在整個開放頻段都可用了。
加解密#
- Algorithm: AES
- Mode: CTR
- Key: PSK
- IV: 16 bytes as shown below
| 4 bytes (nonce) | 4 bytes (nonce) | 4 bytes (nonce) | 4 bytes (counter) |
|---|---|---|---|
| packet id (little endian) | 0x00000000 | from node id (little endian) | 0x00000000 |
AQ== 對應到 default key:1PG7OiApB1nwvP+rz05pAQ==。
用 LoRaWAN Gateway 硬體聽多個頻率相異的頻道?#
假如我們手上有一堆 QR Code,我們就可以知道各個團體所用的 PSK、頻率、頻寬等資訊。那我們有沒有辦法用可以同時解調 8 channels,多種 SF 的 LoRaWAN gateway 硬體(SX13xx)來大量收 Meshtastic 封包呢?
答案是 SX13xx 並沒有顯著優勢。
我們可以拿 chip block diagram 來看:

從圖中可以發現,SX13xx 多工最強的 8 個 channels(IF0-IF7)只能處理頻寬 125 kHz 的 LoRa 訊號,頻寬 250 kHz 或 500 kHz 的 LoRa 訊號只能交由 IF8 處理。IF8 同一時間又只能選擇單一 SF 解調,基本上跟 end-node IC 沒什麼兩樣。
Meshtastic 的 presets 中多數頻寬都不是 125 kHz 的,拿 gateway IC 來用就浪費了。
看來要做這樣的壞事還是得用 SDR。
MQTT Server Address and Location#
如果期待 MQTT 中繼在緊急時刻也可以通,怎麼提高可用性可能要思考一下。
若國際連線發生障礙,台灣的使用者
- 不是 .tw 的 address 可以解析嗎?
- 連得到不在台灣的 server 嗎?