日常生活中絕大多數通訊網路架構屬於 『star network』; 曾經火紅一時的 OLPC 以及今天要介紹的 meshtastic, 它們的架構則屬於 mesh network。 (請分別用這兩組關鍵詞做圖片搜尋。) 前者是中心化的架構: 有一些特別重要的節點 (例如各種伺服器) 如果停擺, 整個網路就跟著停擺; 後者則是去中心化的架構, 所以具有較高的通訊網路韌性。 可以用中共的統治架構 vs 香港「無大台」抗爭 的聯絡架構去理解兩者的差異。 (民主社會的 「國-州省-縣市-鄉鎮-村里」 架構幾乎也就是 star network, 但另外加上民意代表等等機制弱弱地稍微降低各層級中心的單點失敗風險。)
手上持有 meshtastic 裝置 (以下簡稱 M 機) 的人, 完全不需要靠現有的電信網路 (家中的有線網路、 手機或 SIM 卡分享器) 就可以直接跟鄰近的 M 友傳文字訊息。 從使用者的角度來看, 你可以把它想成是手機的硬體外掛裝置, 讓手機新增一個類似藍芽的功能, 但是它的連線速度超慢 (所以只能傳文字不能傳圖/影/音)、 距離超遠 (數公里到數十公里)、 沒有主從關係只有鄰居關係。
首先請欣賞一下 M 友網路地圖 快轉看一下 【Meshtastic】快速新手入門與戶外實戰、 買一顆 入門版 來玩。
一、 電腦 usb 連線查看狀態
研究這類玩具的時候, 貴哥一定要用命令列工具來查詢與設定, 這樣比較方便取得詳細的錯誤訊息, 可以拿來搜尋或是問 AI。 我的作業系統是 debian 13 "trixie"。 Windows 用戶可以先照著 這部影片 安裝 python 及 meshtastic 指令。
- 安裝命令列工具: 我選擇偷懶直接用系統提供的較舊版本:
sudo apt install python3-meshtastic
。 如果會設定 python virtual environment, 就可以用pip3 install meshtastic
安裝最新的版本。 - 允許自己使用通訊埠:
sudo usermod -a -G dialout $USER
必須登出再登入才會生效。 - 手邊的 M 機還沒跟電腦連線之前,
先查看一下電腦有哪些裝置:
ls /dev > /tmp/devices.txt
- 用 usb 線把 M 機連上電腦。
- 查看一下多出哪些裝置:
ls /dev | diff /tmp/devices.txt -
。 例如我看到的是:74a75 > serial 151a153 > ttyUSB0
所以我的 M 機的裝置名稱就是 /dev/ttyUSB0 。 如果沒有任何輸出, 請試著換一條 usb 線、 換一個 usb port、 或是換一部電腦測試。 - 查詢裝置目前的狀態:
meshtastic --info > me0-info.txt
如果成功的話, me0.txt 這個檔案裡面應該會有好幾個 json 結構。 如果你同時接了好幾顆 M 機, 可能就需要指定裝置名稱:meshtastic -s /dev/ttyUSB0 --info
我得到的資訊包含以下 (美化過排版):My info: { "myNodeNum": ----------, "rebootCount": 5, ... "pioEnv": "heltec-v3" } Metadata: { "firmwareVersion": "2.6.11.60ec05e", "deviceStateVersion": 24, ... "role": "CLIENT", "hasRemoteHardware": false }
二、 重刷韌體
最理想的狀況是不需要重刷韌體。 可以的話, 請直接略過此節。
如果無法連線, 或是出現其他問題, 以致必須重刷韌體 (flashing firmware) 有兩個選擇。
第一, 你可以用 chrome 瀏覽器打開 web flasher、 選擇機型、 選擇韌體版本 (通常就選穩定版中最新的那一個), 然後按 「刷寫」。
第二, 像我偏好用命令列者, 可以用 pip3 安裝 esptool。
然後查詢你的硬體型號: esptool.py chip_id
例如我看到的是 「Chip is ESP32-S3 (QFN56) (revision v0.2)」。
再到 所有釋出版本
頁面, 挑所有 "Beta" 版 (較穩定) 當中最新的那個、
在這個版本的 Assets 那一節挑一個適合你的硬體的 zip 檔。
例如我選的是 firmware-esp32s3-2.6.11.60ec05e.zip 。
建一個目錄、 解壓縮、 執行:
./device-install.sh -f firmware-heltec-v3-2.6.11.60ec05e.bin
幾分鐘後, M 機就會以這個版本重開機。
刷機相關的更多文件:
三、 手機連線
在你的 android 手機裡打開 f-droid 或 play store, 搜尋並安裝 meshtastic 這個 app。
第一次開啟 app, 看過一些資訊頁面之後, 就進到連線畫面。 有藍芽、網路、序號三種選擇。 我們就用預設的 「藍芽」。 點下 「掃描」、 允許一些權限之後, 大概要十幾秒鐘才會出現裝置名稱。
連線時, 手機要打什麼密碼?
如果你的機器還用 usb 線連在電腦上, 可以這樣查詢:
meshtastic --get bluetooth
也可以這樣更改密碼: meshtastic --set bluetooth.fixed_pin 9876
。
不知道為什麼 (可能跟韌體版本有關?) M 機一直不接受手機輸入的密碼。
最後我只好設定 (不安全的) 無密碼連線:
meshtastic --set bluetooth.mode NO_PIN
, 連線就成功了。
詳見 Bluetooth Settings 文件。
成功連線之後, 點選右上角的三個點, 就可進入 「設備設定」。 我先更改用戶名稱。 基於隱私考量, 我沒有用真實的姓名或是網路上常用的 id。 如果你的機器有 GPS 定位, 會精準洩漏自己的位置, 更應該小心隱私。 每次更改設定, M 機都會花幾秒鐘重新開機。
App 畫面最下方有幾個按鈕, 由左到右分別是: 聯絡人(contacts)、 節點(nodes)、 地圖(map)、 頻道(channels)、 連線狀態。 點選 「頻道」 按鈕、 點選掃描、 允許 app 存取相機、 到 這裡 掃描 QR Code, 快速加入台灣地區的社群頻道。 如果成功的話, 「聯絡人」 按鈕本會看到四個頻道: LongFast、 MeshTW、 SinglalTest、 Emergency! (原先只有 LongFast 一個頻道)。 隔幾分鐘後, 主畫面左上角 「Meshtastic」 底下會出現 "3 online / 5 total" 之類的訊息, 表示曾經看到過 5 位鄰居; 目前有 3 位在線上。
[未完待續]
因應 M 友活動, 本文早產刊出。 本篇未完, 待續, 會補在這裡。
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。