昨年クラウドファンディングCloudSupplyでキャンペーンをしていたLimeSDRをBackしていましたが、1月末に出荷されました。ようやく到着したので、開封からSDRソフトウェアで試すところまでやってみました。
キャンペーンは昨年の4月でした。デリバリは11月予定だったはずなのでちょっと遅れたというところです。
- 2016/4/29 キャンペーン開始
- 2016/4/29 さっそくBackする
- 2016/6/22 ファンディング成功
- 2016/7/29 コネクタをMicro-Bに変更
- 2017/1/27 出荷
- 2017/2/5 受領
箱は黒いスリーブにレーザカッターでロゴが抜かれて内箱の緑が見えています。添付はUSB micro-Bのケーブルのみです。電源補助用のAプラグが二股になっています。
内側には携帯やWiFiなどのバンド番号と周波数(DL/UL)の表が書かれています。地味に有り難いです。
基板は小さく密度は高いです。購入時にUSBコネクタを選べますが、USB micro-Bにしました。他にUSB Aプラグタイプが選択肢にあります。
裏面にも部品が詰まっています。プラの6角スタッドが足として付いています。おぉっと思ったのは、おなじみのSi5351が使われています(AではなくC)。
bladeRFとくらべるとかなり小さいです。bladeRFは部品の配置に余裕があり、さらに拡張コネクタも装備されていました(結局使いませんでしたが)。それに対してLimeSDRは部品の密度も高く、拡張コネクタもFPGAから出ている10ピンのGPIOのみです(JTAGと同じコネクタ形状)。
肝心のRFコネクタですが、なんとU.FL(IPX)でごく小さいのです。TX,RXともに2チャネルずつ用意され、さらにTXはチャネル毎に2つ、RXもチャネル毎に3つコネクタが装備されているので、合計2x2+3x2=10個もあります。このようにポート数がとても多いため、SMAではスペースが確保できずU.FLを選択したのだと思われますが、ちょっとやり過ぎの感も否めません。U.FLは機械的強度がとても弱いので、何度も付け外しを繰り返すことができません。早急にケースに入れてケーブルを固定してしまうことが必須だと思われます。今回は仮にUFLのついたケーブルを机にテープで仮止めして外れないようにしています。
ソフトウェアは、例によってmacosにセットアップします。これを機会にようやくsierra(10.12)にバージョンアップしました。
LimeSDR用にLimeSuiteとしてツールがいくつか用意されています。これも公式ページに従ってbrewでインストールしておきます。
$ brew tap pothosware/homebrew-pothos
$ brew update
$ brew install limesuite
コマンドラインツールのLimeUtilでボードが認識できたら、さっそくファームウェアをアップデートしておきます。
$ LimeUtil -info
$ LimeUtil -update
LimeSuiteGUIというグラフィカルツールも用意されています。ボードに載っている各デバイスを細かくコントロールできるようです。動作させるためには、メニューのOptionsからConnection Setupでまずは接続を行う必要があるようです。ちょっとまごつきます。
SDRソフトウェアとしてgqrxをlimesdrで動作させることができるようです。そのためにはソースからビルドする必要があるため、各種ツールキットをインストールします。下記はbrewであっさりとインストール可能です。soapysdrは、SDR関連のライブラリやツールをまとめたSuiteとのことです。
- gnuradio
- soapysdr
下記はコードからビルド必要でしたが、今回brewのFormulaを用意/アップデートしました。githubに上げてありますので、brew tap ttrftech/gqrxで利用可能です。
- gr-iqbal
- gr-osmosdr
- gqrx
インストールに成功したら、gqrxを起動します。LimeSDRはsoapyというインターフェースで使用する必要があるので、デバイス設定として、
driver=lime,soapy=0
を指定します。起動がうまくいかないことがたまにありますが、もう一度実行するとOKだったりします。Input rateは8000000(8Msps)から55000000(55Msps)程度が指定可能でした。仕様上は上限60Mspsだったはずですが、これを指定すると起動できませんでした。
50Mspsの指定で動作させてみます。RTLドングルに付属していたアンテナをU.FLコネクタに接続します。最初は何も受信できずに焦りました。
設定が2箇所必要でした。まずアンテナポートを選択する必要があります。デフォルトではNONEになっているので何も受かりません。アンテナを接続したポートをプルダウンメニューで選択します。LNAH,LNAL,LNAWがRX1-H,L,Wにそれぞれ対応しているようです。RX2には未対応のようです。
そしてもう一つは、ゲイン設定を上げる必要があります。必須なのはLNAでこれは最大にします。他の設定ではレベルは変化しますが、NFは変化しないようです。適宜設定します。
そうすると受信できるようになりました。この画面では地上デジタルTVの3波がわずかの隙間を空けて並んでいるのが見えています。
ちょっと周波数を上げるとこちらも地デジが1チャネル分の隙間を空けて並んでいます。サンプリングレートが高いので、50MHzの帯域を一度に見ることができます。
もっと周波数を上げると携帯の周波数が見えてきます。 4つの帯の左からKDDIのLTE, 3G, Docomoの3G,LTEのDL(Down Link)です。
1.5G帯にも携帯の太い帯が見えています。
2.4Gでは室内の通信が見えています。一瞬出る横幅の太い線はWiFi(11gの20MHz幅)。点々と散らばっているのはおそらくBluetoothの周波数ホッピング(FH)です。
とりあえず、受信機として正常に使えているようです。
LimeSDRは0.1〜3800MHzというとても広い帯域に対応していることが謳われていました。気になる低い周波数ですが、300MHz以下を受信可能なことは一応確認しました。しかし顕著に感度は下がって行くようです。特にHF帯ではちょっと実用性は無さそうな感じです。資料を読むと30MHz以下の低い周波数の対応は、チューナではなく信号処理段で特別な処理を行うようですので、もしかすると使い方が足りていないか、まだ対応がされていない可能性もあります。
もう一つ気になることは、300MHz以下ではイメージが顕著に出ることです。例えば180MHzにチューニングすると明らかに地デジの帯が出てきます。右には違う周波数帯の携帯も見えています。チューニングをずらすとばらばらにズレていきます。このチップ(LMS7002)のチューニングスキームを理解できていませんが、300MHz以下の受信をしたい場合には、広帯域信号では不都合があります。適当なLPFで帯域を絞った信号を入れる必要があるようです。
使っているとチューナチップとFPGAどちらも結構発熱します。USBからは7〜800mA消費しているようです。
gqrxでの受信を試してみた印象ですが、300MHz以上の周波数帯では感度も良く、快適に使えそうです。元来WiFiやBluletoothの実験に供することを主眼に設計されているようですので、当然かもしれません。一方、低い周波数での応用は、特に無線用途では難しいと思われます。謳われているスペックを鵜呑みにするとがっかりすることになると思います。
さて、LimeSDRは受信だけでなく、信号生成機能もあります。bladerfではコマンドを使ってデータストリームを送受できたのですが、limesdrでは見当たりません。おそらくgnuradioを使うことで利用できるのではと思うのですが、こちらはまた探ってみたいと思います。
リファレンス
- クラウドファンディングサイト CrowdSupplyでのLimeSDRキャンペーン https://www.crowdsupply.com/lime-micro/limesdr
- LimeSDR公式 https://wiki.myriadrf.org/LimeSDR
- ユーザガイド https://wiki.myriadrf.org/LimeSDR-USB_User_Guide
- クイックスタートガイド https://wiki.myriadrf.org/LimeSDR_Quick_Start
- LMS7002 Datasheet (wiki) https://wiki.myriadrf.org/LimeMicro:LMS7002M_Datasheet
- 公式のLimeSuiteインストール手順 https://wiki.myriadrf.org/Lime_Suite#OSX_homebrew
- Gqrx https://gqrx.dk/
- 参考にした先人のgqrx構築手順 https://discourse.myriadrf.org/t/anyone-been-successful-in-getting-limesdr-osx-gqrx-working/657/14
- 今回作成してみたHomebrewのFormula https://github.com/ttrftech/homebrew-gqrx