RD-VH7PCとRaspberry Pi + Volumioで作るミュージックサーバー


![kenwood1.gif](https://qiita-image-store.s3.amazonaws.com/0/53101/7985c8ee-6f95-f9b1-281c-35851fd85739.gif "kenwood1.gif")


今のところハイレゾ音源などは持っていなし、とりあえずPCから簡単に扱えるミジューックシステムがあれば良いと思い先の構成でミュージックサーバーをつくってみました。[RD-VH7PC](http://mnoriko.s3.xrea.com/etc/vh7pc/)はlinuxのコマンドラインからUSB経由で各種操作ができるのでリモコンいらず。コマンドライン常用者の僕にはとても便利です。

なお、volumioの本家は、[http://volumio.org/](http://volumio.org/)。また使い方は、["volumioの使い方"](http://nw-electric.way-nifty.com/blog/2014/04/volumio-2f64.html)などを見てください。

今回は、Raspberry Pi + Volumioにつながっている先の、USB-DACとアンプをコマンドラインから操作するための設定を中心に解説したいと思います。

## Volumioのインストール

1. [ApplePi-Baker](http://www.tweaking4all.com/downloads/raspberrypi/ApplePi-Baker.zip)をDLする。
2. [Raspberry pi用のVolumioのイメージ](http://downloads.sourceforge.net/project/volumio/Raspberry%20PI/1.5/Volumio1.51PI.img.zip?r=http%3A%2F%2Fvolumio.org%2Fget-started%2F&ts=1420531334&use_mirror=jaist)をDLする。
3. ApplePi-Bakerを使って、Raspberry piを起動するためのSDカードを作成する。

詳しい操作方法の解説が必要な人は、[ここら辺](http://qiita.com/key/items/699611bb199f63a230d1)を参考にSDを作るといいと思う。

## Raspbery Pi を起動

1. RD-VH7PCとRaspberry piをUSBケーブルで接続する。
2. Raspberry piにLanケーブルを接続する。
3. RD-VH7PCの電源を入れる。
4. Raspberry piを起動する。

Raspberry piの起動が完了すれば、同一ネットワークからはIPアドレスをサーチしなくても、ブラウザーに[http:volumio.local/](http:volumio.local/)を入力することでミュジックサーバにアクセスできる。(僕は、手元にあった[LanScan](https://itunes.apple.com/jp/app/lanscan/id472226235?mt=12)でIPを検索しちゃいました。)

以後、固定のIPアドレスにおしておくと何かと便利なので、`Menu` --> `Network`からIPアドレスを固定で設定しておく。詳細は、[ここ](http://kitatokyo2013.blogspot.jp/2014/02/volumio.html)らへんかな〜。


## RD-VH7PCをRaspberry Piからコントロールできるようにする。

RD_VH7PCの操作には、次のリンクにある[VH7PC control software](http://www.gotom.jp/~gotom/software/vh7pc/index.html)を使います。そして、volumioで上で簡単にコンパイルできます〜。

sshでvolumioにアクセスするための基礎知識として:

- ID: root
- Password: volumio

ここからは、sshでvolumioが動作しているRaspberry piにアクセスして作業を進めます。
まずは、コンパイルができる環境を整えます。

``` terminal
apt-get update
apt-get install build-essential libusb-dev
```

VH7PC control softwareのソースをDLし解凍します。

``` terminal
wget http://www.gotom.jp/~gotom/software/vh7pc/vh7pc-0.6.tar.gz
tar zxf vh7pc-0.6.tar.gz
cd vh7pc-0.6
```

makeを実行すると、vh7pcというコマンドラインツールがコンパイルされているはずです。

``` terminal
make
```

どこからでも実行できるようにしたので、/usr/local/binあたりにコピーることにします。(パスが通ってるところならどこでこいいと思います)

``` terminal
cp ~/vh7pc-0.6/vh7pc /usr/local/bin/
```

## sshの認証を簡単にする

sshでパスワードを入力しなくても認証されるように、自分のMacのsshの公開用認証キーを、Raspberry piに書いておく。

Macの場合、id_rsa.pubをRaspberry piに転送し、authorized_keysに追記する。

id_rsa.pubを転送する。

``` terminal
scp .ssh/id_rsa.pub root@[volumioのraspiのIPアドレス]:

```

Raspberry piにsshでアクセスした後、認証キーを設定する。

``` terminal
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
```

これで、sshでraspberry piにアクセスしてもパスワードの入力を求めらことはなくなったと思います。


## 手元のPCからRaspberry pi経由で操作ができるようにする。

自分のMacで実行パスが設定されているディレクトリにコマンド名と同じ名前のshellスクリプトファイルを設置しておくことにします。以下のshell scriptをvh7pcの名前で、実行権限を付与し自分のMacに設置します。

``` shell
#! /bin/sh

ssh root@[volumioのraspiのIPアドレス] vh7pc $*

```

Raspberry piが起動している状態で、Shell scriptを使ってRD−VH7PCの状況を確認してみます。

``` terminal
$ vh7pc status
Power: Off
Volume: 50 (Mute: Off)
Tone: unknown
Current Input Mode: PC-USB
Mode specific information: None
```

細かい操作コマンドは、ヘルプで確認してください。

``` terminal
$ vh7pc -h
vh7pc - Kenwood VH7PC control program, version 0.6
Copyright (C) 2006 GOTO Masanori <gotom@sanori.org>, GPL.
Usage: vh7pc [options] [command]
  Omitting command shows the current status
Options:
  -i             Interactive mode
  -v             Show additional verbose messages
  -h             Show help
  -r <retry>     USB retry max timeout (sec) default=5
  -w <time>      USB retry wait time (ms) default=0
Control Commands:
  help           Show help
  status         Show currnet status (default)
  on             Power on
  off            Power off
  vol <val>      Set volume. val=0..50, up, down
  mute           Toggle mute
  nb             Toggle N.B./Tone mode. nbmode=nb1, nb2, tone
  cd [cdop]      CD operation: play, pause, stop, repeat, prev, next, eject,
                   random, ff, fb, 1..155
  md [mdop]      MD operation: play, stop, pause, record, ote, sk_next, sk_prev
                   ff, fb, alle, tracke, divide, combine, repeat, random, eject
                   1..155
  tuner [op]     Tuner operation: band, stereo, next, prev, 1..40
  tape [tapeop]  Tape operation: fwd, rev, fb, ff, stop, continue, sts
  sel <mode>     Change input: cd, tuner, md, tape, pc
  device         Search device and report it
```

## 今後の課題

VolumioのUIを変更し、RD-VH7PCの電源のON/OFFボタンをつけるのも有りかな〜とは思いますが、そこは、PHPの得意な読者のエンジニアに任せたいと思います。