v0.01conf

設定(v0.01)

この節はlightMPD-v0.01の設定方法について説明します。lightMPD-v0.02以降のバージョンをお使いの方は 設定(v0.02以降)を参照して下さい。

lightMPDディレクトリ内にあるファイルでシステムの設定を行います。

    1. lightMPD/lightmpd.conf
    2. ネットワーク、NASの設定を行います。。
    3. lightMPD/mpd.conf
    4. mpdの設定を行います。
    5. mpd
    6. mpdの実行モジュールです。mpdがバージョンアップされた場合にこのファイルを置き換えます。

lightmpd.conf

lightmpd.conf でlightMPDが所属するネットワークや音楽ファイルが格納されているNASの諸元を指定します。

このファイルを編集する為には以下の情報が必要になります。(lightMPDではDHCPによるネットワークの設定は使用出来ません)

前準備として以下のネットワーク属性を調べて下さい。

    1. ネットワークアドレス
    2. サブネットマスク
    3. デフォルトゲートウェイのIPアドレス
    4. DNS サーバーのIPアドレス
    5. DNS Suffix
    6. NASのIPアドレス,またはホスト名

上記の1.から5.までの情報はlightMPDが所属するネットワークにWindows環境がある場合はWindowsのipconfigコマンドで調べることが出来ます。

Mac の場合はネットワーク環境で調べる事が出来ます。

前準備として上記のネットワーク属性を調べて下さい。その上で、lightMPDのIPアドレスを決定します。

IPアドレスの割り振り方

以下、簡単にするためサブネットマスクが255.255.255.0の場合について説明します。サブネットマスクがこれ以外の場合はネットワーク管理者に尋ねて下さい。ネットワーク管理者がいない場合は、掲示板で問い合わせて下さい。(まじめに説明しようつすると2進数から説明しなければならなくなります。)

IPアドレスはネットワークアドレス+ホストアドレスになります。今、ネットワークアドレスは決まってますからホストアドレスを決めます。ホストアドレスはサブネットマスクが0の部分です。サブネットマスクが255の部分がネットワークアドレスになります。

例えば サブネットマスクが255.255.255.0の場合、IP アドレス 192.168.10.10は

ネットワークアドレス 192.168.10.0

ホストアドレス 10

になります。

サブネットマスクが255.255.255.0の場合、ホストドレスは0 から255までの範囲で割り当てることが出来ます。但し、0はネットワークアドレスと区別がつかなくなるため、また、255はブロードキャストアドレスという特別なアドレスとして使われるので、この2つは除きます。また、240も避けた方がいいでしょう。

さらにホストアドレスの条件としては同一ネットワーク内にホストアドレスの重複は許されないというのがあります。ネットワーク内に同一のホストアドレスを持つ機械が2台以上あると不可解な動作をします。

以上を踏まえて

    1. ネットワーク内のホストアドレスが静的に割り当てれている場合(DHCPを使っていない)
    2. ルータ、NAS、PCなどに割り振られているアドレス以外から選ぶ
    3. ネットワーク内のホストアドレスがDHCPによって管理されている場合
    4. DHCPサーバーの設定で割り当てを除外するアドレスの範囲などの設定があるので、
    5. その範囲から未使用のホストアドレスを選ぶ

lightmpd.confの設定例

#

#

#

[network]

interface=eth0

address=192.168.0.0

netmask=255.255.255.0

gateway=192.168.0.0

nameserver=192.168.0.0

domain=mydomain.jp

[ntp]

server=192.168.0.0

timezone=Asia/Tokyo

[nas]

type=nfs

host=nashost

remotedir=audio_data

mountopt="hard,intr,noatime,rsize=4096,wsize=4096"

# type=cifs

# host=nashost

# remotedir=audio_data

# remoteuser=usrid

# remotepass=passwd

# iocharset=utf8

# mountopt="rw,iocharset=utf8,file_mode=0644,dir_mode=0755,user=root,pass=rootpass"

[debug]

interfaces=yes

resolvconf=yes

ntpd=yes

ntpconf=yes

ifconfig=yes

cards=yes

mounts=yes

ps=yes

mpdversion=yes

date=yes

ntpq=yes

audio=yes

lightmpd.confは通常のテキストファイルで、行末コードはCR+LFまたはLFです。また、漢字コードは含めないで下さい。

先頭が'#'の行はコメントとして無視されます。

lightmpd.confは複数のセクションからなり、[]で囲まれた行がセクションの開始になります。[]の中の文字列がセクション名になります。各セクション毎に属性を指定します。属性は属性名=属性値の形式で指定します。

ネットワークの設定 - [network]

ネットワークの設定はnetworkセクションで行います。設定する値がわからない場合は、ネットワークに接続されているWindows,Mac を使って調べる事が出来ます。

Windowsの場合はDOS窓から ipconfig /allコマンドを実行するとそのネットワークの属性が表示されます。

Macの場合はシステム環境設定->ネットワークでネットワークの属性が表示されます。

    • interface
    • networkの指定を行うインターフェイスを指定します。eth0を指定して下さい。
    • address
    • lightMPDに割り当てたIPアドレスを指定します。
    • netmask
    • ネットマスクを指定します。下記の値を設定します。。
    • Windowsの場合はipconfigコマンドのSubnet Mask
    • Mac の場合はネットワークのサブネットマスク
    • gateway
    • デフォルトゲートウェイのIPアドレスを指定します。下記の値を設定します。
      • Windowsの場合はipconfigコマンドのDefault Gateway
      • Macの場合はネットワークのルータ
    • nameserver
    • ネームサーバーのIPアドレスを指定します。下記の値を設定します。
      • Windowsの場合はipconfigコマンドのDNS Server
      • Macの場合はネットワークのDNS サーバー
    • domain
    • ドメイン名を指定します。下記の値を設定します。
      • Windowsの場合ははipconfigコマンドのConnection-specific DNS Suffix
      • Macの場合はネットワークの検索ドメイン

時刻の設定 - [ntp]

beagleboneのクロックはバッテリーでバックアップされていないので、電源をONするたびに時刻を設定する必要があります。

設定しないと時刻は2000年1月1日 9時0分0秒(日本時間)から計時されます。

lightMPDではntpという仕組みを利用して外部のサーバーから時刻を取得することにしました。

ntpセクションではntpの設定を行います。

    • server
    • ntpサーバーのサーバー名またはIPアドレスを指定します。サーバー名を指定する場合は、networkセクションのnameserverが正しく設定されている必要があります。
    • 設定値は以下のようにして調べます。
      • ネットワーク内でntpサーバーを運用している場合はそのアドレス
      • お使いのISPでntpサーバーを運用している場合はそのアドレス
      • NASにntpサーバーの指定があり、設定している場合はその設定値
      • インターネット上の適当なサーバーのホスト名またはアドレス
      • 推奨公開サーバから選ぶ
    • timezone
    • タイムゾーンを指定します。日本の場合は"Asia/Tokyo"を指定します。

lightMPDが所属するネットワークがインターネットにつながっていなくて、そのネットワーク内でntpサーバーを運用していない場合は"none"を指定して下さい。時間の設定を行わないでシステムを続行します。(これはあまりおすすめしません)

NASの設定 - [nas]

本来なら、ネットワークドライブのマウントはautomount + nfs が基本と考えているのですが、autofsを用意できなかったのでシステム起動時に直接マウントする事にしました。

システム起動時にNASがReadyになってないとマウントに失敗し、mpdも起動しません。電源の起動順序には十分気をつけて下さい。

host、remotedirで指定したNASはlightMPDの/audio ディレクトリにマウントします。

    • type
    • ファイルシステムのタイプを指定します。以下の値を指定します。
      • nfs
      • nfsでマウントします。
      • cifs(nfs以外)
      • cifsでマウントします。
    • host
    • NASのホスト名またはIPアドレスを指定します。lightMPDの属するネットワークがdnsで管理されている場合はホスト名が使えます。それ以外の場合はIPアドレスを指定して下さい。(ネットワークがdnsで管理されていない場合、Windowsからホスト名で参照できてもlightMPDからはホスト名でNASを参照する事は出来ません。)
    • remotedir
    • NASの共有ディレクトリを指定します。先頭の¥や/は含まないで下さい。
    • remoteuser
    • cifsでマウントする時にNASにログインする際のユーザ名を指定します。
    • remotepass
    • cifsでマウントする時にNASにログインする際のパスワードを指定します。
    • iocharset
    • cifsでマウントする時にNASのローカルパス名の文字コードを指定します。よくわからない場合はutf8を指定して下さい。これでファイル名が文字化けする場合はutf8以外のコードが採用されているのでシステムに併せて設定して下さい。(詳しい人に尋ねて下さい)
    • mountopt
    • マウント時のオプションを直接指定します。よくわからない場合はこの属性は指定しないで下さい。
    • この属性を指定しないときのデフォルトは
      • nfs
      • "hard,intr,noatime,rsize=4096,wsize=4096"
      • cifs
      • "rw,iocharset=utf8,file_mode=0644,dir_mode=0755,user=root,pass=rootpass"
      • user,passにはそれぞれremoteuser,remotepasで指定した値が入ります。

障害時の対応 - [debug]

beagleboneにはIOがないので、エラーがあった場合にその原因を表示する手段がありません。(シリアルコンソールを使えばそれが可能になります。)

lightMPDではシステム初期化後に各種設定ファイルや設定状況を把握するためのコマンドの結果をSDメモリ(lightMPD/status.txt)に記録することで、エラーの原因を突き止める方法をとりました。

通常は[debug]セクションの指定は行いませんが、思うように動作しない時に[debug]セクションを利用して下さい。他人に相談する時にも必要になる情報です。掲示板で問題を報告した場合も、この情報の提供を求める場合があります。

属性値にyesを指定した項目が記録されます。

  • interfaces=yes
    • /etc/network/interfacesを記録します。
    • resolvconf=yes
    • /etc/resolv.confを記録します。
    • ntpd=yes
    • /etc/default/ntpdを記録します。
    • ntpconf=yes
    • /etc/ntp.confを記録します。
    • ifconfig=yes
    • ifconfig -a の実行結果を記録します。
    • cards=yes
    • /proc/asound/cardsを記録します。
    • mounts=yes
    • /proc/mountsを記録します。
    • ps=yes
    • ps コマンドの実行結果を記録します。
    • mpdversion=yes
    • mpd -V の実行結果を記録します。
    • date=yes
    • dateコマンドの実行結果を記録します。
    • ntpq=yes
    • ntpq -p の実行結果を記録します。
    • audio=yes
    • ls -lt /audio/ の結果を表示します。

配布パッケージに入っているlightmpd.confではデバッグ出力がすべてyesになってますが、ちゃんと動作することが確認できたら

デバッグセクションは削除して下さい。デバッグセクションがあると起動時にSDメモリへの書き込み動作が発生あまり気持ちよくありません。(SDメモリの書き込み回数には上限があります)

mpd.confの設定

mpdの設定を行います。mpd.confは行末がCR+LFまたはLFのテキストファイルです。

lightMPDではrootファイルシステムがリードオンリーで外部記憶としてNASしか持たないので、

tag_cache,sticker.sql,playlist 等のデータはNAS 上に置くことを前提としてます。

下記の例はNAS上にmpdというディレクトリを作成しこれらのデータをこのディレクトリに置くように設定してあります。

また、DoPによるDSDの再生に対応しています。

mpd.confの例

realtime_option {

memlock "yes"

stack_reserve "2048"

heap_reserve "10240"

main_priority "OTHER:0"

player_priority "FIFO:53"

decoder_priority "OTHER:0"

update_priority "OTHER:0"

}

audio_output {

type "alsa"

name "uda"

device "hw:0,0" # optional

priority "FIFO:54" # optional

use_mmap "yes"

mixer_type "disabled"

dsd_usb "yes"

buffer_time "2500000"

period_time "500000"

}

###### dsd #######

decoder {

plugin "dsdiff"

enabled "yes"

}

#

music_directory "/audio/Music"

playlist_directory "/audio/mpd/playlists"

db_file "/audio/mpd/tag_cache"

sticker_file "/audio/mpd/sticker.sql"

log_file "/dev/null"

pid_file "/var/run/mpd.pid"

state_file "/tmp/state"

user "root"

group "root"

bind_to_address "any"

port "6600"

#

#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"

metadata_to_use "artist,album,title,track,genre,date,disc"

follow_outside_symlinks "yes"

follow_inside_symlinks "yes"

default_permissions "read,add,control,admin"

#

mixer_type "disabled"

#

audio_buffer_size "8192"

buffer_before_play "50%"

#

filesystem_charset "UTF-8"

id3v1_encoding "UTF-8"

mpd.confの詳細はmpdのドキュメントを参照して下さい。

よくわからない場合は下記のものを環境に合わせて変更し、それ以外の項目は変更しないで下さい。

lightMPDでは以下のファイルはNAS上に置くことを前提にしています。NAS のマウントポイントは/audio になります。

NAS のレイアウトによって/audio/ 以下の値が異なります。

    • music_directory
    • 音楽ファイルの格納されているディレクトリを指定します。
    • playlist_directory
    • playlistを記録する為のディレクトリを指定します。
    • db_file
    • 音楽ファイルのインデクッスを指定します。ファイル名はtag_cacheとしてください。
    • sticker_file
    • sticker.sqlを指定します。
  • metadata_to_use
  • tag_cacheに保持するデータ項目を指定します。すでにあるtag_cacheを使う場合はそれに併せて設定します。