0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Wi-SUNの信号のチャネル分離・復調・パケット可視化の機能をフルスクラッチで作成しました

0
Last updated at Posted at 2026-04-01

先にリポジトリを置いておきます。

パケットのPHY部の分析機能はほぼ実装完了していますが、MAC部の分析機能は未実装のため引き続き実装予定です。

作った背景

ソフトウェア無線機(SDR:Software Defined Radio)を2台ほど所持しており、スペアナがわりに920MHz帯を観察していたところ、明らかに変調された信号が大量に飛び交っていたため、復調してパケットを分析するための機能を勉強の意味も込めて作りました。

Wi-SUNとは

Wi-SUNは Wireless Smart Utility Networkの略で、日本では特定小電力無線と呼ばれる920MHz帯で使用され、2.4GHzや5GHz帯を使用するWi-Fiと比べると、通信速度は遅いものの、通信距離は長く、障害物にも強くてつながりやすく、しかも低消費電力で通信が可能な規格です。

電力会社のスマートメーターに利用されており、Wi-SUNには大きく4つの規格が存在しています。

1つ目は「Wi-SUN ECHONET プロファイル」で、主にスマートメーター ←→ HEMS間の1対1通信に使用されています。

2つ目は「Wi-SUN HAN(Home Area Network)」で、主に屋内 HEMS ←→ 家電間の1対多通信を目的として規格化されました。

3つ目は「Wi-SUN JUTA(Japan Utility Telemetering Association)」で、おもにガスメーター検針システムとして規格化されました。

4つ目は「Wi-SUN FAN(Field Area Network)」で、主にスマートメーター ←→ スマートメーターor電力事業者設備といった通信に利用されており、多段、マルチホップメッシュネットワークがおもな特長です。

image.png

(出典:1:Wi-SUN FANって?

Wi-SUNの仕様について

Wi-SUNには大きく4つの規格が存在すると記載しましたが、物理層は大体同じです。
ECHONETはHANと物理層は全く同じ?ようで、JUTAについてはデータが見つからなかったので、HAN向けモジュールのBP35C0のデータシート、FAN向けモジュールのBP35C5のデータシートを参考にしてみました。

  • Wi-SUN HAN
    • 変調方式:2値GFSK
    • データレート:100kbps固定
    • 使用チャンネル:33〜60ch

  • Wi-SUN FAN
    • 変調方式:2値GFSK
    • データレート:50kbps、100kbps、150kbps、300kbps可変
    • 使用チャンネル:24〜61ch

ちなみに920MHz帯のチャンネルは以下のように定められています。
(出典:920MHz特定小電力のチャンネルと周波数

Wi-SUN HANはデータレートが100kbps固定のため61chが使えないようになっている一方、FANは24〜32chを含む広い範囲での利用が可能になっています。

ch 50kbps選択時 100kbps選択時
中心周波数(MHz) 帯域(MHz) 中心周波数(MHz) 帯域(MHz)
24 920.6 0.2 920.7 0.4
25 920.8 0.2 920.9 0.4
26 921 0.2 921.1 0.4
27 921.2 0.2 921.3 0.4
28 921.4 0.2 921.5 0.4
29 921.6 0.2 921.7 0.4
30 921.8 0.2 921.9 0.4
31 922 0.2 922.1 0.4
32 922.2 0.2 設定禁止 -
33 922.4 0.2 922.5 0.4
34 922.6 0.2 922.7 0.4
35 922.8 0.2 922.9 0.4
36 923 0.2 923.1 0.4
37 923.2 0.2 923.3 0.4
38 923.4 0.2 923.5 0.4
39 923.6 0.2 923.7 0.4
40 923.8 0.2 923.9 0.4
41 924 0.2 924.1 0.4
42 924.2 0.2 924.3 0.4
43 924.4 0.2 924.5 0.4
44 924.6 0.2 924.7 0.4
45 924.8 0.2 924.9 0.4
46 925 0.2 925.1 0.4
47 925.2 0.2 925.3 0.4
48 925.4 0.2 925.5 0.4
49 925.6 0.2 925.7 0.4
50 925.8 0.2 925.9 0.4
51 926 0.2 926.1 0.4
52 926.2 0.2 926.3 0.4
53 926.4 0.2 926.5 0.4
54 926.6 0.2 926.7 0.4
55 926.8 0.2 926.9 0.4
56 927 0.2 927.1 0.4
57 927.2 0.2 927.3 0.4
58 927.4 0.2 927.5 0.4
59 927.6 0.2 927.7 0.4
60 927.8 0.2 927.9 0.4
61 928 0.2 設定禁止 -

Snifferの仕様について

作成中のプログラムについては、実際の無線信号を受信・復調してパケットを可視化しており、実際の無線信号を受信するためにソフトウェア無線機(SDR)と呼ばれる装置を利用しています。

自分は「USRP B210(USRP-2901)」と「LibreSDR B220mini(USRP Clone)」の2台のSDRを所持しており、この2台のSDRで動作することを確認しています。

Snifferの構成は以下のようになります。

wisun-sniffer.drawio.png

各々のブロックの処理についてはコードを確認いただきたいのと、また別途記事を書くかもしれないので、この記事での説明は割愛します。

1スレッドの処理では間に合わないので、「SDRからの受信用スレッド」、「チャネライザ用スレッド」、「復調用スレッド」の3つのスレッドを起動し、マルチスレッドで処理を行っています。

プログラムを実行すると、以下のようにリアルタイムでパケットの解析結果やMACペイロードが出力されます。

capture.gif

今後の予定

現状は、MACのペイロードがそのまま出力される仕様です。そのため、MACのヘッダーを分析する機能を実装予定になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?