Volumio

現在位置のナビ

トップコンピュータの国雑記帳趣味趣味音響 → Volumio

説明

Volumioという名前のLinuxディストリビューションがあります。 オーディオ再生に特化したディストリビューションです。 ここでは、Volumioに関して簡単な情報発信をします。

2016年12月14日現在、webmasterがいじっているのはvolumio-2.004-2016-10-14-x86.imgです。

2021年12月22日現在、某オーディオメーカーに依頼されてRaspberry−Pi向けのVolumio ver.2のフォントを変更しました。 その話も後ろに書きます。

ファイルシステム

Volumioは、普通のLinuxとはファイル配置が違います。 普通のLinuxは、補助記憶装置(HDDとかSSDなど)にファイルシステムを作ります。 Volumioの補助記憶装置には、ディスクイメージが格納されています。 ブート用のファイルは、普通に格納されています。 どういうことかというと、Live CD-ROM(DVD-ROM)の様にファイルシステム全体が1個の塊として存在し、起動後にメモリ上に展開されて動作しています。

この方法を取ると、工場出荷設定に戻すことや、誤って書き換えてしまったファイル変更をなかったことにできます。

ディスクイメージの更新

起動時に毎回ディスクイメージを読み込むということは、ディスクイメージが変わらない限り毎回同じ起動状態になります。

実際には、起動中に書き換えたファイル変更は次回起動時にも保存されています。 これを実現するために、Volumioはファイル書き換えがあると、シャットダウン直前に現在の状態を新しいディスクイメージとして保存し、次回の起動には新しいイメージを使用します。

ファイルの書き換え

Volumioを最初に起動した時、パソコンのディスプレイにはGUIの操作画面が出ますし、SSHでリモートからログインすることができません。 どうやって、ファイルを書き換えればよいのでしょうか?

方法は2つあります。

大抵のLinuxは、コンソールの切替機能を持っています。 CTRL、ALTとファンクションキーの3つを同時に押すと、コンソールが切り替わります。 ファンクションキーはF1、F2、...がそれぞれ別画面に対応します。 Linux起動後の画面がどのファンクションキーに対応しているかは、ディストリビューションの設定で変わるので、ログインのCUI画面に切り替わるまでファンクションキーを変えて試します。

一旦コンソールが切り替われば、大抵のLinuxではログインのCUI画面になります。

ディスクイメージの書き換えは、Volumioの起動ディスクを外して、他のLinuxマシンにつなぎ、loopデバイスとしてマウントすることになります。 こちらはLinux上級者向けで、説明は割愛します。

2021年12月22日追記

今どきのLinuxのGnomeは、Volumioの起動イメージを見つけると、アイコンで表示します。 この表示をクリックするだけで、loopデバイスとしてマウントできてしまいます。 楽になりましたね。

小ネタ集 Volumio2

IntelパソコンにVolumioを入れてみて、いろいろいじっているところです。 とりあえず、こんな改良はいかがでしょうか。

shutdownした時にLinuxは止まるけど、電源が落ちてくれない時

ファイル /volumio/app/platformSpecific.js の中を以下のように変更します。

修整前の /volumio/app/platformSpecific.js

/sbin/shutdown -h now

修整後の /volumio/app/platformSpecific.js

/sbin/poweroff

日本語のディレクトリ、ファイルの順番が気になる時

Webmasterの環境では、漢字コードのディレクトリ名がUTF8のコード順にソートされてしまいました。 できればJISコード順に並んでくれると慣れているのですが、以下の変更でもしないよりマシな状態になりました。 ファイル /volumio/node_modules/sort-on/index.js の中を以下のように変更します。

修整前の /volumio/node_modules/sort-on/index.js

y.localeCompare(x) : x.localeCompare(y)

修整後の /volumio/node_modules/sort-on/index.js

y.localeCompare(x,"ja-JP") : x.localeCompare(y,"ja-JP")

本体のディスプレイでメタデータの日本語表示が長方形に文字化けするとき

以下の手順で日本語フォントデータをインストールしましょう。

/etc/apt/sources.listの内容を日本のサーバーに変更

deb http://ftp.jp.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ jessie main contrib non-free

フォントのインストール

sudo apt-get install fonts-ipafont-nonfree-jisx0208

Raspberry-Pi向けVolumioのフォント追加

2021年12月22日に、Raspberry−Pi向けのVolumio ver.2カスタマイズ依頼を受けました。 「コンソールで文字化けするフォントをなんとかしてほしい」とのことだったので、Takaoフォントをインストールしました。 以下手順です。

  1. Volumioを日本語モードにする
  2. Raspberry-Piにインターネットとキーボードを接続して起動する
  3. Volumioの操作画面になったら、『Ctrl』『Alt』『F1』の3つのキーを同時押しして、テキストモードに移行する
  4. ID=volumio、パスワード=volumioでログインする
  5. 以下のコマンドを打ち込む "sudo apt-get install fonts-takao"
  6. 電源を切って、インターネットとキーボードを外す
  7. 再度起動する

国際文字コードであるunicodeに、日本語向けのフォントを割り当てるので、中国語や韓国語を表示させるとおかしくなります。

Raspberry-Pi向けVolumio3と5インチタッチパネル

Raspberry-Pi モデル3Bに 800x480ドット 5インチタッチパネル を接続してVolumio3を動かしてみました。 このタッチパネルは、画面表示もタッチセンスもフラットケーブル経由で行います。 GPIOもHDMI端子も使わないので、便利でした。 ただし、フラットケーブルの端子面をどちら向きに接続するかで悩みました。

5インチタッチパネルにコンソール表示

Volumio3が起動したら、ネットワーク経由でHTMLブラウザ画面を開き、タッチパネルのプラグインをインストールします。 ただインストールしただけでは、5インチタッチパネルが有効にならないので、 ITでこぼこ日記 を参考に設定ファイルを書きました。 /boot/userconfig.txt に以下の記述を加えます。

hdmi_group=2
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0

/boot/config.txtではなくて/boot/userconfig.txtを書き換えるところが重要です。 コメントによれば、/boot/config.txtはモジュール更新で書き換えられる可能性があるので、ホスト独自の設定は/boot/userconfig.txtに書くように指示されています。

日本語フォントのインストール

Volumio3にsshでログインして、以下のコマンドを実行します。

sudo apt-get install fonts-takao

ネットの説明では fonts-ipafont をインストールする例が多いですが、takaoフォントにしてみました。 ipaフォントとtakaoフォントの違いは、Wikipediaに記述されています。

使い勝手

デフォルト設定では、数分で5インチタッチパネルのコンソール表示がブラックアウトします。

Volumio3の画面ではスクロールバーの幅が狭すぎて、5インチタッチパネルでは操作が困難です。 結局リモートマシンのHTMLブラウザから操作してます。

日本語のソートがJISコード順ではないので、不便です。

余計なお世話=インデックス作成

Raspberry-PiにインストールしたVolumio3を使ってみたのですが、非常に使いにくいです。 音声ファイルのメタデータからインデックスを作りに行くのですが、これがメチャクチャ時間をかけます。 Webmaster宅ではSamba上に1万3千くらいの音声ファイルがあります。 全部のスキャンに1,2時間ではすみません。 しかもスキャン中は、再生操作ができません。

再生時間のズレ

Volumioで楽曲再生していると、曲の開始からの時間をカウントします。 このカウントが、5分ほどの曲で終わる頃には数秒ずれています。

ずれの量はクリスタルの精度よりずっと悪いです。 Webmasterの想像になりますが、再生開始する時にカウントアップする時間をもらって、ブラウザ側のJavaScriptでカウントしているのではないでしょうか。 JavaScriptのタイマーを使用すれば、このくらいの誤差は出るでしょう。

DateインスタンスのgetSeconds()で、現在時刻-再生開始時刻を計算すればいいんじゃないでしょうかね。

ちなみに、webmasterはVolumio相当の再生アプリをCGIで作っています。 RaspberryPiを使ったヘッドフォンPDAはこの自作CGIシステムです。 再生時刻を取得するために、毎秒1回Wi-Fi通信でブラウザがPDA側の再生時刻を取りに行く仕様にしてあります。 CDアルバム1枚再生すると、毎秒1回のWi-Fi通信のせいで中古スマートフォンの電池が半分くらい減ってしまいます。 毎秒1回のWi-Fiアクセスはやめたほうがいいです。 Volumioがブラウザ側でカウントアップするのは、毎秒1回のアクセスをさせないためでしょう。

更新日

内容の移動 2016年12月14日

追記 2023年3月28日


back button 趣味趣味音響へ