vagrantで構築した仮想マシン上のGNU Radioとgr-isdbtでワンセグ放送を受信する

仮想マシン自動構成ソフトウェアvagrantは、テキストファイルにより仮想マシンの自動設定を行うツールで、Linuxなどのイメージファイルの取得やセットアップを自動的に行うものです。また、GNU Radioはソフトウェア無線を実現するフリーウェアですが、gr-isdbtなどのモジュールを導入するためにはpybomsを使ったソースプログラムからのコンパイルが必要です。また、GNU Radioはパフォーマンスの点から仮想マシンでの利用は推奨されていませんが、一方で、GNU Radioは他の多くのソフトウェアに依存しているために仮想マシンを利用したいです。そこで、vagrantを使って仮想マシン上のLinux (debian) でGNU Radioを使ったワンセグ放送の受信を試みました。

gr-isdbt on Virtual Box

vagantを導入したMacのターミナルからvagrant upと打ち込むと、debianの取得からGNU Radioのコンパイル、gr-isdbtの導入までをほぼ自動的に行えます。RTL-SDR.com社製のDVB-T受信用のドングルをPCに接続し、少々の追加セットアップを手作業で行うことにより、ワンセグ放送を受信できました。

Vagrantfileは次の通りです。

# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "gnuradio"
   config.vm.provider :virtualbox do |vbox|
     vbox.name = "gnuradio"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 4096
     vbox.customize [
       "modifyvm", :id,
       "--vram", "256",
       "--clipboard", "bidirectional",
       "--draganddrop", "bidirectional",
     ]
  end
  config.vm.provision "shell", inline: <<-SHELL
#---
apt-get update
apt-get upgrade
apt-get -y install task-japanese
apt-get -y install xrdp fcitx-mozc task-cinnamon-desktop tigervnc-standalone-server
apt-get install -y python-pip git libgmp-dev ffmpeg swig
#
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF
cat << EOF > /home/vagrant/.xsessionrc
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xsessionrc
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | gawk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ap=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp
# install pyboms
pip install git+https://github.com/gnuradio/pybombs.git
cd ~vagrant
su vagrant -c "pybombs auto-config"
su vagrant -c "pybombs recipes add-defaults"
su vagrant -c "pybombs prefix init ~vagrant/prefix -a myprefix -R gnuradio-default"
su vagrant -c "pybombs install gr-osmosdr"
su vagrant -c "git clone httpd://github.com/git-artes/gr-isdbt.git"
cd gr-isdbt
su vagrant -c "mkdir build"
cd build
su vagrant -c "cmake ../"
su vagrant -c "make"
make install
ldconfig
cd ~vagrant
su vagrant -c "mkfifo test_out.ts"
#---
SHELL
end
作成日: 26th November 2018