Thread Border Router 小註解

首先講到 Thread 這個技術, 它又是一個把常見名詞變成專業術語的東西. 上次那個 SALT 也沒紅, 不知道是否取這種名字不夠吉利? 總之, 先來介紹一下 Thread [1].

Thread 是由 Thread Group 開發, 所以不是來自諸如 The Hub Re-Assambled and Delivery 這種縮寫, 哈!

基本上它也 (只) 走 IPv6, 支援 mesh, 主要用於 IOT (Internet of Things). 其網路 protocol 6LoWPAN 基於 IEEE 802.15.4. 而藍牙/WPAN 是 802.15.1, BT/WIFI 共存是 802.15.2, 高速 WPANs 是 802.15.3, 可見它和藍牙的關係也匪淺. 事實上, ZigBee 也是走 802.15.4, 所以 Thread 更近似 ZigBee, 但是 Thread 在架構和相容性上又勝出 [2].

本圖取材自 [2] 的圖 1+圖 2, ZigBee 顯得不合群.

讓我們接受 Thread 比較好, 接下來看 router. 如果只是一對一連接, BT 就很好用了. 但在智慧家庭 (Home automation) 的考量下, 家裡可是會有一大堆 IOT. 而且分別來自不同陣營的生態系, Siri, Alexa, Google 可能混居一室, 這個就不是一個 PAN 可以搞定的.

另一個規格 Matter [3] 就是用來解決多生態系混搭的問題, 只要大家都可以用 IP 溝通不就可以在同一個環境共存了? 所以支援 mesh 的 WIFI 和 Thread 都可以支援 Matter. 既然 WIFI 有 router, Thread 當然也有 router [5]. 而在 WIFI 和 Thread 的交界, 就會有所謂的 Thread Border Router (TBR) [4].

上圖和下圖都來自 [4]. 上圖容易理解, 基本上就是說明 TBR 的角色是跨 LAN. 下圖比較複雜. 說明 TBR 的主要功能之一是 service discovery. 任何一個 Thread device 能夠提供服務的話 (如開燈, 播音樂…), 必須跟 TBR 以單播 (Unicast) 註冊, 而不需要跟 Thread 網內的其他 device 交頭接耳 . 這是它可以省電的方法.

由於 TBR 知道每個 Thread Device 能提供什麼服務, 它就可以對 WIFI mesh 進行多播 (Multicast) 但不是廣播 (Broadcast), 因為 LAN 裡面可能有非 Matter 相容的裝置. 所有的 Thread Device 都是透過 TBR 代理做 mDNS ( multicast DNS) [6], 這又有助於省電.

因此我們可以說 TBR 兼具了 SRP server 和 Advertising Proxy 的角色. 另一方面, Thread Device 怎麼發現 WIFI 那邊有什麼 service 呢? 答案還是透過 TBR, Thread Client 透過 TBR 當 DNS-SD (service discory) Discovery Proxy 跨出 Thread border.

總結來說, TBR 的 SDK 和 sample code 可以從公開網路上找到 [7]. 而且 TBR 成功地串起 WIFI 和 Thread 的世界, 讓 Matter 這種應用可以更容易地被實現. 套句廣告詞, 這麼好的東西去哪裡買呢? 其實目前很少有純 Thread borad router 可以買, 它可能只是 WIFI router 的一個附加功能, 或者直接在某個智慧燈泡裡.

所以我們要認 logo. 下圖左邊這個 logo 表明這個 Thread device 是個 TBR, 下圖右邊這個 logo 表明它是一個普通的 Thread Device. [5]

[REF]

  1. https://en.wikipedia.org/wiki/Thread_(network_protocol)
  2. https://www.electronicproducts.com/ip-on-wi-fi-zigbee-and-bluetooth-opportunity-and-risk/
  3. https://en.wikipedia.org/wiki/Matter_(standard)
  4. https://blog.espressif.com/matter-thread-border-router-in-matter-240838dc4779
  5. https://www.threadgroup.org/Portals/0/documents/support/ThreadBorderRouterWhitePaper_07192022_4001_1.pdf
  6. https://en.wikipedia.org/wiki/Multicast_DNS
  7. https://github.com/espressif/esp-idf/tree/master/examples/openthread/ot_br

華擎太極主機板 Error Code 小整理

雖然這塊板子的優點就是有 LED 顯示開機錯誤代碼 [1], 不過跑出錯誤代碼, 卻找不到官方解釋可是個大問題. 甚至會誤導 debug 的方向, 所以我把我遇到的狀況也註記在這裡.

[官方表格]

除錯代碼定義
FF,
00 – 19
D0 – D3
請檢查 CPU 是否正確安裝,然後清除 CMOS。
0d 例外, 詳見補充表格。
31 – 3B
51 – 55
CPU或記憶體相關問題。請重新安裝 CPU 和記憶體,然後清除 CMOS。
若問題仍存在,請只安裝一個記憶體模組,或嘗試使用其他記憶體模組。
D4 – D5PCI 資源分配錯誤,資源不足。
D6
92 – 97
顯示卡或CPU內顯無法辨識。請清除 CMOS 並嘗試重新安裝顯示卡。若問題仍存在,請嘗試安裝顯示卡至其他插槽或使用其他顯示卡。
D7鍵盤及滑鼠無法辨識。請嘗試重新安裝鍵盤及滑鼠。
D8密碼無效。
9A – 9DUSB 裝置相關問題。請嘗試移除所有 USB 裝置。
E8 – EBS3回復失敗 (S3=睡眠模式)
03電腦正在進入S3狀態 (S3=睡眠模式)
04電腦正在進入S4狀態 (S4=休眠模式)
05電腦正在進入S5狀態 (S5=軟關機)
30電腦正在從S3狀態中喚醒 (S3=睡眠模式)
40電腦正在從S4狀態中喚醒 (S4=休眠模式)
AA電腦完成開機程序進入作業系統

[實際 debug 經驗]

除錯代碼實際解決方式
0d跟 Clear CMOS 或 CPU 無關. 找到 [2] 這篇開始查記憶體。
拔掉可疑的 DDR Module. 原本插 4 條, 拔掉一條可開機.
打開 fPTM, 又出現 0d, 再拔掉一條, 剩兩條 DDR 時可正常開機. 前述兩條是同一時間買的.
64VGA 輔助 power 12V 一條脫落, 換個公頭後解決

[REF]

  1. https://www.asrock.com/support/index.tw.asp?cat=Debug
  2. https://forum.gamer.com.tw/C.php?bsn=60030&snA=549896