panda's tech note

Advent Calendar 2020: ソフトウェア無線

注意LimeSDR などのソフトウェア無線は技術基準適合証明(通称,技適)を受けていないため,これらの機器を日本国内で無線機として利用することは電波法により禁じられています。無線機として使用するためには,実験試験局免許を取得するか電波暗室・シールドボックスなどの設備を使用する必要があります。または,アンテナの代わりにケーブルとアッテネータを用い有線接続をし電波を発しないようにすることで,無線通信ではなく有線通信とはなりますが実験することができます(この場合も電波が漏れないように注意してください)。このページを参照される方は,実験される国や地域の法令などを遵守するようにご注意ください。また,実験等はご自身の責任でお願いします。

Day 23: インタラクティブ通信実験

22日目 までに実装したコードは myprotocol.py に置いてあります。

端末A(アドレス1)と端末B(アドレス2)を使って以下のように双方向通信を行いました。端末Aからは foo というメッセージを受信後,bar というメッセージを入力・送信しています。

端末A

$ python3 myprotocol.py --my-address 1 --remote-address 2
linux; GNU C++ version 7.3.0; Boost_106501; UHD_003.010.003.000-0-unknown

[INFO] Make connection: 'LimeSDR-USB [USB 3.0] XXXXXXXXXXXXX'
[INFO] Reference clock 30.72 MHz
[INFO] Device name: LimeSDR-USB
[INFO] Reference: 30.72 MHz
[INFO] LMS7002M register cache: Disabled
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 5 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
[INFO] RX LPF configured
[INFO] RX LPF configured
[INFO] Tx calibration finished
[INFO] Rx calibration finished
Received: b'foo'
bar
Sending: bar

端末B からは bar というメッセージを入力・送信後,端末Aから foo というメッセージを受信しています。

端末B

$ python3 myprotocol.py --my-address 2 --remote-address 1
linux; GNU C++ version 7.3.0; Boost_106501; UHD_003.010.003.000-0-unknown

[INFO] Make connection: 'LimeSDR-USB [USB 3.0] XXXXXXXXXXXXX'
[INFO] Reference clock 30.72 MHz
[INFO] Device name: LimeSDR-USB
[INFO] Reference: 30.72 MHz
[INFO] LMS7002M register cache: Disabled
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 5 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
[INFO] RX LPF configured
[INFO] RX LPF configured
[INFO] Tx calibration finished
[INFO] Rx calibration finished
foo
Sending: foo
Received: b'bar'

今日のまとめと明日の予定

オリジナルプロトコルを SoapySDR で実装し,LimeSDR で動作を確認しました。