Msi2500とMsi001を用いたSDRレシーバをMacで使ってみた際のメモ

# はじめに
Amazonで売られているSDR(ソフトウェア無線)レシーバを衝動買いした。これをM1-Macで動かすまでのメモを記す

# 今回取り上げるSDRレシーバについて
Amazonで4000円〜5000円位で売られているもので以下のスペックのもの
* 受信周波数：10kHz〜1GHz
* ADコンバータの量子化ビット数：12bit
* 一度に取り込める最大帯域幅：10MHz
* 使われているLSI：Msi2500とMsi001 (この型番が情報収集には大事)
* 金属ケース入りのものと基板むき出しのものがある(購入したのは金属ケース入りのもの)
* 金属ケースには"SZ-PLZ Co.,Ltd."と書かれている

SDRレシーバとしては、RTL某(ワンセグTV受信用USBチューナとして格安で販売されていたもの)が有名で、私もこれを持っているが、こいつの問題点は、25MHz以下(長波・中波・短波)の受信にハード的なひと手間が必要なこと。個人的に25MHz以下の周波数を受信したかったため、ハード的なひと手間に手を出そうかどうかと悩んでいたところ、今回のSDRレシーバの存在に気がついた。 これの商品ページには、
> 【互換性のあるプラットフォームとソフトウェア】
> Windows、Linux、OS X、Android 4 プラットフォームと互換性があり、
> SDRuno、SDR Sharp、HDSDR、SDR consol、GNURadio、SDR Touch
> およびその他の主流ソフトウェア(Android 用) のサポートデバイスは OTG をサポートする必要があります)

などと書かれていた。ネット上でこれを実際にMacで使っている情報を見つけることができなかったが、実験的に買うことをギリギリ許せる価格だったこともあり、この能書きを信じて購入することにした。結果的には、自分の環境で問題なく使うことができているため、無駄な投資にはならずに済んでいる。

# このSDRレシーバで電波受信を行うための設定
## SDRplayのWebサイトから所望のソフトを入手しインストール
まず、以下のページにアクセスする
* [SDRplayのWeb-Site](http://https://www.sdrplay.com "SDRplay")

ここで、Software/Downloadsのページヘ移動
* このページ右側にある"Select your RSP Model"で"RSP1"を選択
* このページ右側にある"Select Operating System"で"MacOS Catalina"を選択(M1-Macの場合もCatalinaを選択)
> SDRplayで販売しているSDRレシーバ(RSP1)のチップセットと今回購入したSDRレシーバのチップセットが同一のため、RSP1を選択する

選択すると自動的にツールダウンロードのページヘ移動するので、以下の2つのソフトウェアをダウンロードする

* SoapySDR (SDRレシーバと受信用ソフトを取り持つツール(API)。pkg形式)
* CubicSDR (SDR受信用ソフト。dmg形式)

CubicSDR/SoapySDRともにgitで入手できるものだが、ここで配布しているものはRSP1に最適化されているため、これらを使うことをおすすめする。
SoapySDRをインストールしてから、CubicSDRをインストールする。インストールはMacOSの流儀で行う

## SDRレシーバの接続とCubicSDRの起動へ
インストール後、SDRレシーバをMacのUSBポートに接続する。SDRレシーバ付属のUSBケーブルは、Type-C->Type-Aになっているため、M1-Macの場合、Type-Aを受けるための変換ポートが別途必要になる
> 手元のType-C->Type-Cケーブルでの接続ではなぜか動作しなかった

次に以下のコマンドを入力する。これにより、SDRレシーバとCubicSDRが通信可能になるらしい
```
mac % sudo launchctl load /Library/LaunchDaemons/com.sdrplay.sdrplay_service.plist
```
さらに以下のコマンドを入力して、SDRレシーバを認識できているかどうかを確認する。コマンド入力後、以下のように返ってくれば成功
```
mac % /usr/local/bin/SoapySDRUtil --probe
######################################################
##     Soapy SDR -- the SDR abstraction library     ##
######################################################

Probe device
[INFO] devIdx: 0
[INFO] hwVer: 1

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=SDRplay
  hardware=B0001P0002
  sdrplay_api_api_version=0.000000
  sdrplay_api_hw_version=1

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 1 Rx, 0 Tx
  Timestamps: NO
  Other Settings:
     * RF Gain Select - RF Gain Select
       [key=rfgain_sel, default=1, type=string, options=(0, 1, 2, 3)]
     * IQ Correction - IQ Correction Control
       [key=iqcorr_ctrl, default=true, type=bool]
     * AGC Setpoint - AGC Setpoint (dBfs)
       [key=agc_setpoint, default=-30, type=int, range=[-60, 0]]

----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
  Full-duplex: NO
  Supports AGC: YES
  Stream formats: CS16, CF32
  Native format: CS16 [full-scale=32767]
  Antennas: RX
  Corrections: DC removal
  Full gain range: [0, 42] dB
    IFGR gain range: [20, 59] dB
    RFGR gain range: [0, 3] dB
  Full freq range: [0.01, 2000] MHz
    RF freq range: [0.01, 2000] MHz
    CORR freq range:  MHz
  Sample rates: 0.0625, 0.125, 0.25, 0.5, 1, 6, 7, 8, 9, 10 MSps
  Filter bandwidths: 0.2, 0.3, 0.6, 1.536, 5, 6, 7, 8 MHz
```
もし上記のような返答ではなく、エラーが返ってきた場合は、次のコマンドを入力してみる。USBケーブル抜き差しでも対応できる場合もあるが、こちらの方が確実っぽい。
```
mac % sudo launchctl unload /Library/LaunchDaemons/com.sdrplay.sdrplay_service.plist
mac % sudo launchctl load /Library/LaunchDaemons/com.sdrplay.sdrplay_service.plist
```
正常な返答があったら、いよいよCubicSDRを起動する。アプリケーションフォルダにアイコンができているので、これを右クリックして、開くを選択して起動する(いきなりダブルクリックでは起動できなかったような…)。
![スクリーンショット 2023-04-23 21.50.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/918174/1778ec10-5454-e792-b79e-282a4465ee03.png)
まず、CubicSDR::SDR Devices ウィンドウが開き、その向かって左側に
```
Devices->Local->SDRplay Dev0 RSP1 B0001P0002 (階層表示)
```
と表示されるので、"SDRplay Dev0 RSP1 B0001P0002"をクリックで選択し、startボタンをクリックすると、CubicSDRが動作を開始する
![スクリーンショット 2023-04-23 21.50.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/918174/c97bd099-b921-81b1-4a96-fcd7b356ea13.png)

> CubicSDRの使用方法については割愛(私の環境では、画面解像度を2048x1280以上に設定することでGUIが正常に動作した)

# 最後に(注意点)
* 購入したSDRレシーバのUSB Type-Cコネクタの接触が甘いようで、動作中にケーブルを動かすとCubicSDRが異常動作することがある。その場合、以下の対応のどれかあるいは全てが必要になる。
  * CubicSDR再起動
  * lanchctlやり直し(unload/load)後にCubicSDR再起動
* 実際の放送を受信するには、それなりのアンテナが必要。また、受信周波数帯別にアンテナ端子が付いているため、適切な端子にアンテナをつなぐ必要がある
  * 中波・短波受信には数メータのワイヤアンテナを屋外に設置して、それなりに受信ができている状態。アンテナがないと本当に何も受信できない
* Windowsで使う場合には、SDRunoがよいらしい(SDRplayのサイトから入手可能みたいです)