2024年4月13日 星期六

dn_expand()

擴展網域名稱 (dn, doamin name)。DNS 詢問或回覆訊息中的網域名稱,並沒有「.」,每個「.」隔開的 label 改為前面加 1-byte 欄位放 label 的長度。另外,先前出現的最長字尾,可以用訊息 offset 表示,來減少封包長度。dn_expand() 將其還原為原本完整的樣子。

int dn_expand( // 回傳處理的壓縮 dn 長度,錯誤回 -1
    const unsigned char *msg, // 訊息開始
    const unsigned char *eomorig, // 訊息結束
    const unsigned char *comp_dn, // 壓縮的 dn
    char *exp_dn, // buffer 放擴展後的 dn
    int length); // buffer 大小

壓縮的 dn 每個 label 第 1 byte 的 MSB 2-bit 是

  • 00 表示沒有壓縮,剩下 6-bit 是後續資料的長度,依照常長度將後續資料複製到 buffer,特殊字元前加 '\'、不可印的字元轉成 \ddd。
  • 11 表示有壓縮,剩下 6-bit 和下個 byte 合起來是訊息的 offset,檢查是否在範圍內,跳到 offset 繼續處理。
  • 其它為錯誤。

參考

  1. RFC 1035 4.1.4

2024年4月12日 星期五

LoRa Devices

Semtech SX1262 LoRa transceiver 比 SX1276 新,效能較好。基於 nRF52 比基於 ESP32 省電,但較貴。

  • SX1261, SX1262 and SX1268 sub-GHz radio transceivers,。
  • compliance with radio regulations ETSI EN 300 220, FCC CFR 47 Part 15, China regulatory requirements and the Japanese ARIB T-108. 頻率涵蓋150MHz ~ 960MHz 支援全世界主要 sub-GHz ISM bands。
  • FSK, GFSK, MSK, GMSK, LoRa and Long Range FHSS modulations。LoRa 最快 62.5kbps LoRa,FSK 最快 300kbps。
  • 170dB maximum link budget (SX1262 / 68)
  • +22dBm (SX1262/SX1268) 或 +15dBm (SX1261) high efficiency PA [傳送能力]
  • Low RX current of 4.6mA (???4.2 mA of active receive current consumption)
  • High sensitivity: down to -148dBm
  • 88dB blocking immunity at 1MHz offset
  • Co-channel rejection of 19dB in LoRa mode
  • Automatic Channel Activity Detection (CAD) with ultra-fast AFC

LoRa Modulation Parameter:• Modulation BandWidth (BW_L)• Spreading Factor (SF)• Coding Rate (CR)• Low Data Rate Optimization (LDRO)

Spreading Factor (SF):spread spectrum LoRa® modulation 是用多個 chip 代表一個 bit 資料。symbol rate (Rs)。SF = (nominal Rs)/(chip rate) = the number of symbols sent per bit of information.

Rs = BW/2SF

SF 5 = 25 = 32 chips/symbol

svrhost

 svrhost

2024年4月6日 星期六

Meshtastic

Meshtastic® 一個開放原始碼的組織,提供程式用 LoRa 無線裝置來建立傳輸文字訊息的低功率長距離 mesh 網路,存取界面可以是藍牙/Wi-Fi/Ethernet/Serial,不依賴其它通訊平台。

原理:rebroadcast

  • 未達 hop limit
  • 過濾重複的訊息 (保留最新 30 則嗎?)
  • 逾時沒回應重送,最多 3 次。

終點未連上用戶會存大約 30 則最新的訊息。

封包格式:Preamble (16) + LoRa Physical Header (2) + Packet Header (16) + Packet Data (max. 237)

  • Preamble:同步訊號頻率好開始傳資料。
  • LoRa Physical Header:Packet Length (1) + Sync Word (1)。Sync Word 0x2B 表示是 Meshtastic。
  • Packet Header:Destination NodeID (4) + Sender NodeID (4) + Packet ID (4) + Flags (1) + Channel Hash (1) + Padding (2)
    • 不加密,便於路由。
    • NodeID 是藍牙 MAC 位址後 4-byte,Destination NodeID 都 1 表示廣播。
    • Packet ID:和加密有關
    • Flags:3-bit Hop Limit,1-bit WantACK,1-bit ViaMQTT。WantACK 決定 reliable 傳送,等候終點回應。廣播行為不同,有收到 rebroadcast 就視為 ACK。
    • Channel Hash
  • Packet Data:最長 237,不含 protobuf overhead。超過 truncated。237 是因為 + 16 + 2 = 255?

CSMA/CD:傳送前進行 Channel Acitivity Detection (CAD),等候取自 contention window (CW) 的 random slot time。Channel 使用率越高 CW 越大,接收 SNR 越小,CW 越小。

限制 group member, 100 裝置以上。

  • 頻率
  • 機器位置靠近手機基地台,且有 B8 頻段,可以嘗試 RX Boosted Gain 選項關閉。

2024年4月4日 星期四

免執照頻段Unlicensed Band

免執照的頻段,也就是 ISM (Industrial Scientific Medical、工科醫) 頻段,各國挪出一些頻段主要開放給工業,科學和醫學使用,無需許可證或費用,只需要遵守一定的發射功率(一般低於1W),並且不要對其它頻段造成干擾即可,有 2.4GHz 和 Sub-GHz(5GHz?)。其中 2.4GHz 屬於短距離無線傳輸,大量應用於 Wi-Fi、Bluetooth、ZigBee、 微波爐、醫療器材、嬰兒監視器等,容易相互干擾,節點少不適合多點佈建。Sub-GHz 頻段傳輸距離遠、干擾較少、功耗低,適合工業製造領域。

Sub-GHz 部份

  • 全球通用:433 MHz頻段。
  • 868 MHz (歐洲)、315 MHz (北美、亞洲和日本)。
  • 美國 902–928 MHz (澳洲?)
  • 歐洲 868MHz
  • 台灣 902~928 MHz

台灣《中華民國無線電頻率分配表》112 年 3 月修正

  • 430 - 432 供業餘無線電使用432 - 440 供業餘無線電在次要使用條件下使用
  • 885 - 915, 930 - 960 供行動通信使用,920 - 925 供低功率物聯網設備(低功率射頻電機)在次要條件下使用,920 - 928 供無線射頻辨識系統(RFID)使用,922 - 926 供國道高速公路收費系統使用,926 - 928 供 0.5W 以下低功率海上活動示標器在海上以次要條件使用

參考

  1. https://delorescetleh.medium.com/lora-lorawan-第三節-10cbb86b55ae

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...