[SDR]MacPortsを使ったgqrx-devel のインストール

こんにちは

数年前に気になって情報やら安価な機材を集めていたSDR(Software Defined Radio)の勉強を再び始めることにしました。

といってもハードの開発を簡単にできるわけではありませんし、関係する材料を集めるには多大な費用?がかかりそうなので、まず手軽に最近の情報をネットで集めってというところから始めてみようということです。

SDRとはいっても、RTL-SDRという製品を使えば、受信できる周波数帯は少し高くなりますが、比較的安く手に入れることができ、多くの資料がネット上にあふれていますので、情報を手に入れることは簡単にできますので、これを使わない手はありませんね。

ちょっと前置きが長くなってしまいましたが、SDRのハードの部分は比較的安く手に入れられるとしてもソフトワエアがないと、設定も受信した信号の音も聞くことができません。

ここでは、Macが手元にあるので、Macで使えるソフトを探すことにしました。Macで使えるソフトは本当に数が少なくてほとんどGNU radioを除けば、gqrxというソフトしかありません。(もしかしたらもっとあるのかもしれませんが、調べていないので)

そのgqrxというソフトをインストールすることができましたので、ここに紹介させていただきます。

なおほとんどの資料はネット上にあるのですが、公開されている時期が数年前といったものが多くて、最新のものについて本当にインストールができるか不安でした。 実はその不安は的中して、ソースからインストールがエラーなく出来る記事の紹介が少なくてたいへんでした。多分公開当時は問題なかったのだと思います。

Macにソフトを導入する場合に、MacPortsとHomebrewという管理ソフトがあります。

両方を試してみたのですが、Homebrew(brew)は私の感じとしては単体で動作するソフトの管理は問題ない様ですが、いくつかのソフトが絡んだものをインストールするには、私の知識では出来ませんでした。つまり必要なソフトが何なのかがわからないのです。

MacPortsはいくつかのソフトが絡んだ依存性のあるソフトの導入にも対応している様で問題はありませんでした。基本的に何もせずに関係あるソフトを自動的にインストールしてくれました。

今回はMacPortsを使って「gqrx」をMacにインストールしました。

まず最初に行うことは、MacPortsのインストールです。

少し情報が古いのですが、

MacPortsのインストールと設定メモ

を参考にさせていただきました。

MacPosrtsのインストール

  1. Xcodeをインストールします。最新版は Xcode 8でした。 https://developer.apple.com/jp/technologies/tools/
  1. MacPortsのdmgをダウンロードしてインストールします。

        http://www.macports.org/

  1. PATHの設定 

       .bash_profileを反映させます。

$ source ~/.bash_profile

使用方法

 更新確認とリストの更新

$ sudo port selfupdate

パッケージ検索

$ port search <キーワード>   

ここでは

$ port search gqrx

で検索すると以下の様に2件見つかりました。

gqrx @2.7 (science, comms)

   Gqrx is a software defined radio (SDR) receiver using GNU Radio, OSMOSDR,

   and Qt5.

gqrx-devel @20170827 (science, comms)

   Gqrx is a software defined radio (SDR) receiver using GNU Radio, OSMOSDR,

   and Qt5.

Found 2 ports.

インストール

インストールは以下のコマンドでおこないます。

$ sudo port install <パッケージ名>

パッケージ名が必要ですがパッケージ名の検索はパッケージ検索の項を参考にしてください。

ここでは gqrx-develをインストールすることにしました。

$ sudo port install gqrx-devel

でgqrx-develをインストールします。

アンインストール

アンインストールは以下のようにします。

$ sudo port uninstall <パッケージ名>

gqrx-develのインストール

インストールは2時間ほどかかりましたが、エラーもなく無事にできた様です。

以下は最後の部分を示してあります。

———————————————————

—>  Verifying checksums for gqrx-devel

—>  Extracting gqrx-devel

—>  Applying patches to gqrx-devel

—>  Configuring gqrx-devel

—>  Building gqrx-devel

—>  Staging gqrx-devel into destroot

—>  Installing gqrx-devel @20170827_0

—>  Activating gqrx-devel @20170827_0

—>  Cleaning gqrx-devel

—>  Updating database of binaries

—>  Scanning binaries for linking errors

—>  No broken files found.

—>  Some of the ports you installed have notes:

 coreutils has the following notes:

   The tools provided by GNU coreutils are prefixed with the character ‘g’ by

   default to distinguish them from the BSD commands.

   For example, cp becomes gcp and ls becomes gls.

   If you want to use the GNU tools by default, add this directory to the front

   of your PATH environment variable:

       /opt/local/libexec/gnubin/

 dbus has the following notes:

   ############################################################################

   # Startup items have been generated that will aid in

   # starting dbus with launchd. They are disabled

   # by default. Execute the following commands to start them,

   # and to cause them to launch at startup:

   #

   # sudo launchctl load -w

   /Library/LaunchDaemons/org.freedesktop.dbus-system.plist

   # launchctl load -w /Library/LaunchAgents/org.freedesktop.dbus-session.plist

   ############################################################################

 py27-cairo has the following notes:

   Make sure cairo is installed with the +x11 variant when installing the

   binary version of py27-cairo or install py27-cairo from source like so:

       sudo port install -s py27-cairo

 py27-cython has the following notes:

   To make the Python 2.7 version of Cython the one that is run when you

   execute the commands without a version suffix, e.g. ‘cython’, run:

   port select –set cython cython27

 py27-matplotlib has the following notes:

   The default backend is the interactive Mac OS X backend. Different backends

   can be specified using the ~/.matplotlib/matplotlibrc file. More details

   regarding backends can be found in the matplotlib FAQ:

   http://matplotlib.sourceforge.net/faq/installing_faq.html#what-is-a-backend

 py27-sip has the following notes:

   py27-sip is available under a PSF license with one addition:

  1. Licensee may not use SIP to generate Python bindings for any C or

          C++ library for which bindings are already provided by Riverbank.

   GPL-2 or GPL-3 licenses are also available. For details see

   /opt/local/share/doc/py27-sip/LICENSE [-GPL2 -GPL3]

 py27-sphinx has the following notes:

   To make the Python 2.7 version of Sphinx the one that is run when you

   execute the commands without a version suffix, e.g. ‘sphinx-build’, run:

   port select –set sphinx py27-sphinx

 python27 has the following notes:

   To make this the default Python or Python 2 (i.e., the version run by the

   ‘python’ or ‘python2’ commands), run one or both of:

       sudo port select –set python python27

       sudo port select –set python2 python27

   ##############################################################

   # IF YOU ARE USING PYTHON FROM THE TERMINAL, PLEASE INSTALL:

   #   py27-readline

   # TO AVOID A LIBEDIT / PYTHON INTERACTION ISSUE.

   # REF: https://trac.macports.org/ticket/48807

   ##############################################################

————————————————

gqrxの起動

なおMacminiのTerminalで最初に

$ gqrx 

としてrunしたところBuss error 10でrunしませんでしたが、もう一度runさせると

———————————

$ gqrx

Mac OS; Clang version 8.1.0 (clang-802.0.42); Boost_105900; UHD_003.010.002.000-MacPorts-Release

gr-osmosdr v0.1.x-xxx-xunknown (0.1.5git) gnuradio 3.7.11

built-in source types: file fcd rtl rtl_tcp uhd sdrplay hackrf bladerf rfspace airspy soapy

Resampling audio 96000 -> 48000

gr::log :INFO: audio source – Audio sink arch: osx

gr::log :INFO: audio_osx_sink0 –

Using output audio device ‘HDMI’.

 … which is the current default output audio device.

 Changing the default output audio device in the System Preferences will

 result in changing it here, too (with an internal reconfiguration).

BookmarksFile is /Users/kk/.config/gqrx/bookmarks.csv

Number of audio input devices: 0

Number of audio output devices: 3

get_devices started

Device count: 0

get_devices end

Number of audio input devices: 0

Number of audio output devices: 3

gr-osmosdr v0.1.x-xxx-xunknown (0.1.5git) gnuradio 3.7.11

built-in source types: file fcd rtl rtl_tcp uhd sdrplay hackrf bladerf rfspace airspy soapy

/path/to/your/file: No such file or directory

FATAL: can’t open file

Trying to fill up 1 missing channel(s) with null source(s).

This is being done to prevent the application from crashing

due to gnuradio bug #528.

libc++abi.dylib: terminating with uncaught exception of type std::bad_alloc: std::bad_alloc

Abort trap: 6

—————————————–

で一応起動し表示もOKでした。

gnuradio-companion

gqrxを導入するときにgnuradioをビルドしていることがわかりましたので、当然gnuradioも使えるものと思ったのですが、エラーで使えませんでした。

以下はそのエラーです。

———————————-

$ gnuradio-companion

** (process:902): WARNING **: Trying to register gtype ‘GMountMountFlags’ as enum when in fact it is of type ‘GFlags’

** (process:902): WARNING **: Trying to register gtype ‘GDriveStartFlags’ as enum when in fact it is of type ‘GFlags’

** (process:902): WARNING **: Trying to register gtype ‘GSocketMsgFlags’ as enum when in fact it is of type ‘GFlags’
Traceback (most recent call last):
File “/opt/local/bin/gnuradio-companion”, line 97, in <module>
check_gtk()
File “/opt/local/bin/gnuradio-companion”, line 64, in check_gtk
die(err, “Failed to initialize GTK. If you are running over ssh, ”
File “/opt/local/bin/gnuradio-companion”, line 42, in die
import gtk
File “/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.py”, line 69, in <module>
_init()
File “/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.py”, line 57, in _init
warnings.warn(str(e), _gtk.Warning)
gtk.GtkWarning: could not open display


これによるとどうもdisplayがひらけないといっている様にも見えます。

で色々調べたのですがよくわかりません。

数日経った後にふと気がついたのですが、gnuradioってX11を使用しているんですね。

MacってX11はどうなっていたんだっけ!

つまり現在販売されているMacにはX11が導入されていないんですね。

そこで調べたところ

XQuartzというソフトを導入することでX11が使えることがわかりました。

これを導入して

——————————

$ gnuradio-companion

を起動してみると

——————————
** (process:505): WARNING **: Trying to register gtype ‘GMountMountFlags’ as enum when in fact it is of type ‘GFlags’
** (process:505): WARNING **: Trying to register gtype ‘GDriveStartFlags’ as enum when in fact it is of type ‘GFlags’
** (process:505): WARNING **: Trying to register gtype ‘GSocketMsgFlags’ as enum when in fact it is of type ‘GFlags’/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/gnuradio/grc/main.py:43: GtkWarning: Theme directory 256×256@2/animations of theme hicolor has no size field
gtk.window_set_default_icon(gtk.IconTheme().load_icon(‘gnuradio-grc’, 256, 0))/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/gnuradio/grc/gui/BlockTreeWindow.py:102: GtkWarning: Theme directory 256×256@2/animations of theme hicolor has no size field
self.search_entry.set_icon_from_stock(gtk.ENTRY_ICON_PRIMARY, gtk.STOCK_FIND)<<< Welcome to GNU Radio Companion 3.7.11 >>>
Block paths: /opt/local/share/gnuradio/grc/blocks


で無事に起動できました。

これからは、gnuradioの勉強もしなければなりませんね。

勉強することが多くて大変ですが自分の趣味なので

コメント