ブラウザから操作できるように。複数チャンネルの同時受信も可能みたいなので。しかし手こずりました。
https://github.com/kpreid/shinysdr
必要な物のインストール
大きいものは Python 2.7 と GNURadio、gr-osmosdr ですね。あとは Python まわりで setuptools と python-service-identity、セットアップ時の問題解決のために gcc-4.9 の更新も必要でした。
Python については、うちの環境にはありましたが、なければ apt-get を使って入れておきます。
librtlsdr も必要ですが、すでに何かしらやっている人については入っているのでは。なければ、手前味噌ですが (できるだけ楽をして) Raspberry Pi で rtl-sdr あたりを参考にして入れてください。
GNURadio は、wheezy ベースの Raspbian 向けパッケージがありませんが、jessie テスト版向けに提供されているので、それを使います。
→ 3.7.5 では一部コンポーネントがうまく動かなかったため、下の方でパッチを当てて別途入れ直しています。apt-get で取得出来るのがこのバージョンである場合、ここで gnuradio-dev を入れる必要はありません。ただ、問題ないバージョンが apt で入手できるようになったならば、apt を使った方が当然楽だし圧倒的に早いです。
$ sudo /etc/apt/sources.list
として編集画面とし、以下を追記。
deb http://archive.raspbian.org/raspbian jessie main
それから、
$ sudo apt-get update $ sudo apt-get install gnuradio-dev python-setuptools python-service-identity gr-osmosdr gcc-4.9 g++ $ sudo rm /usr/bin/arm-linux-gnueabihf-gcc $ sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-4.9 /usr/bin/arm-linux-gnueabihf-gcc
gnuradio のすごい量の依存関係に怯む…
ShinySDR のインストール
git でチェックアウトする。適当な場所で、
$ git clone https://github.com/kpreid/shinysdr
自動で shinysdr ディレクトリが出来て、その中にコードが入る。そこに cd しておいて、あとは適当に、
$ ./fetch-js-deps.sh $ sudo ./setup.py install $ sudo shinysdr --create /usr/local/etc/shinysdr
※ちなみに gcc が 4.6 だと、setup.py のところで以下のようなメッセージが出て止まってしまった。
cc1: error: unrecognized command line option ‘-fstack-protector-strong’ error: Setup script exited with error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1
動かしてみる
上の例だと /usr/local/etc/shinysdr に設定が出来ているので、いじっておく。
まだ起動前だけど、起動したら http://localhost:8100/manual/configuration でマニュアルが見られるらしい。
できたら、設定ディレクトリを指定して起動する。
$ sudo shinysdr /usr/local/etc/shinysdr
うーん、Volk とやらのまわりで Segmentation Fault。
VOLK: Error allocating memory (posix_memalign: 22) Segmentation fault
修正済み GNURadio のインストール
Volk のメモリアライメントに関するバグらしい (Bug #692 で議論されている)。パッチはあるので、GNURadio のソースを取ってきてビルド、インストールしてみる。
libboost-all-dev、libcppunit-dev、python-pip が要りそうなので、apt-get で追加インストールしておいた。
Volk のみ上書きします。
足りない物があると cmake がモジュール単位で無効にしていくので、cmake の出力は注意して見る必要があると思う。
例によって適当な場所で、
$ wget http://gnuradio.org/releases/gnuradio/gnuradio-3.7.5.tar.gz $ tar xvzf gnuradio-3.7.5.tar.gz $ cd ./gnuradio-3.7.5 $ wget http://gnuradio.org/redmine/attachments/download/821/0001-volk-Fix-volk_malloc-when-alignment-is-1.patch $ patch -p1 < 0001-volk-Fix-volk_malloc-when-alignment-is-1.patch //wget http://www.sbrac.org/files/build-gnuradio //git clone の行をコメントアウト //$ chmod +x ./build-gnuradio //$ ./build-gnuradio $ mkdir build; cd build $ cmake -DENABLE_DEFAULT=OFF -DENABLE_VOLK=ON -Dhave_mfpu_neon=0 ../ $ make $ sudo make install $ sudo rm /usr/lib/arm-linux-gnueabihf/libvolk.so.0.0.0 $ sudo ln -s /usr/local/lib/libvolk.so.0.0.0 /usr/lib/arm-linux-gnueabihf/libvolk.so.0.0.0
なお、GNURadio 全体をビルドしたい場合は、cmake 以降を
$ cmake -Dhave_mfpu_neon=0 ../ $ sudo service dphys-swapfile stop $ sudo vim /etc/dphys-swapfile (1024 とかにする) $ sudo service dphys-swapfile start $ make $ sudo make install $ sudo service dphys-swapfile stop $ sudo vim /etc/dphys-swapfile (戻す) $ sudo service dphys-swapfile start
とかするといいと思います。不要な物は個別に -DENABLE_(固有名)=OFF する形で。仮想メモリが足りなくなるので、スワップ量を変更しています。ちなみにめちゃんこ時間がかかるので注意。
また、libfftw3-dev、swig あたりも追加インストールが必要かも。
パッチは将来版で取り込まれる予定らしいけど…。
終わったら改めて、
$ sudo shinysdr /usr/local/etc/shinysdr
動いた!と思ったが、ブラウザでアクセスすると落ちた。Raspberry Pi じゃ非力すぎるのかな…? うーん、残念だけど、これ以上は、また今度。やらないかもしれないけど。
ウォーターフォールなんかはいらないので、いちいち SSH で接続しなくてもブラウザで選曲できて、2ch くらいを同時に聴ける、都合の良い SDR ツールはないかなあ!