Home‎ > ‎digifi labo‎ > ‎

lightMPD/upnpgw

1. 概要

lightMPD/upnpgw は lightMPDをupnpのレンダラーとして動作させるためのパッケージです。 PC Engines の apu1,apu2 で動作します。
UPnP動作時にはmpdとメディアサーバー間にキャッシュサーバーを配置し、より高音質化を目指しました。


UPnPについて

オーディオ愛好家にはDLNAという呼び方の方が馴染みがあると思いますが、、最近はUPnPという呼び方が一般的のようです。
UPnP,DLNAの関係に関してはここを参照して下さい。
要約すると、UPnPという技術を使ったオーディオ用途向けのガイドラインがDLNAのようです。

UPnPでのオーディオ再生環境は以下の3つのコンポーネントが必要です。
  1.  UPnP メディアサーバー
    音楽、映像などのファイルを格納、管理をします。データのインデックス化もここで行われます。
  2.  UPnP コントロールポイント 
    UPnPでのUI を担当します。メディアサーバーで管理されているメディアを選択しレンダラーに再生を指示します。
    また、メディアサーバーやレンダラーを選択し、コントロールします。
  3.  UPnP レンダラー
    コントロールポイントからの指令でメディアサーバーからデータを取得し再生を行います。

この文書を読むにあたって

この文書はlightMPD/upnpgwの説明書ですが、lightMPDの知識を必要とします。
lightMPDについては下記を参照して下さい。

また、lightMPD/upnpgwの説明には下記の用語を使用します。
  • ホームネットワーク
    NAS,PC等が接続されるネットワーク。lightMPD/upnpgw もこのネットワークに接続します。
  • メディアサーバー、コントロールポイント、レンダラー
    それぞれUPnPメディアサーバー、UPnPコントロールポイント、UPnPレンダラーの事です。
  • NASモード
    楽曲ファイルを置いてあるNASをマウントして使う場合
  • apu1
     PC Engines の apu1
  • apu2
    PC Engines の apu2 
ファイル名は /ディレクトリ/ディレクトリ...../ファイル のように表記します。"/"はディレクトリの区切りです。
ドライブ名はありませんが、lightMPDをインストールしたドライブを各自で補完して下さい。

例えば、D:ドライブにインストールした場合

/lightMPD/conf/lightmpd.conf-standalone

の表記は Windowsでは

D:¥lightMPD¥conf¥lightmpd.conf-standalone

になります。


2. 仕様

2-1. kernel

  • バージョン
    linux-4.6.5rt10
  • native dsdに対応するデバイス
    • Wyred 4 Sound DAC-2 DSD
    • iFi Audio micro/nano iDS
    • Matrix Audio X-Sabre
    • Matrix Audio Mini-i Pro
    • OPPO HA-1
    • Mytek Brooklyn DAC
    • Gustard DAC-X20U
    • DIYINHK DSD DXD 384kHz USB to I2S/DSD
    • JLsounds I2SoverUSB
    • Aune X1S 32BIT/384 DSD DAC
    • Unison Research Unico CD Due
    • OPPO HA-2
    • PS Audio NuWave DAC
    • Amanero Combo384
    • ElectrArt USDA2, USDA_MINI
    • Cyberdrive Feather DAC

2-2. mpd

mpdのロードモジュール名はmpd-0.19.18-native-dsd-upnpで、mpd-0.19.18をベースに以下のパッチを当ててあります。
  • native-dsd
  • realtime-option
さらにlightMPDの独自の機能を有してます。
  • decoder-select
  • 拡張オーディオフォーマット

2-3. upmpdcli

mpd を upnp化するに当たってupmpdcliというプログラムを利用しています。
upmpdcliはUPnPのプロトコルをmpdのプロトコルに変換するプログラムです。upmpdcliを使う事によってmpdをUPnPのレンダラーにする事ができます。
upmpdcliについてはここを参照して下さい。

2-3. polipo

polipoはHTTPサーバーからのデータをキャッシュします。
upmpdcliを使ってmpdをUPnPのレンダラーにした場合、mpdはUPnPメディアサーバーからHTTPによりデータを取り出します。
lightMPD/upnpgwではUPnPレンダラーとしてmpdを使う場合にpolipoを介して楽曲データをメモリ内にキャッシュする事ができます。

polipoのキャッシュデータはメモリ上に置かれ、領域の大きさはlightmpd.confで指定できます。
キャッシュメモリの上限は1Gバイトです。

本来のpolipoはローカルのディスクへのキャッシュ機能も有してますが、lightMPD/upnpgwではこの機能を削除してあります。

3. lightMPD/upnpgwの利用形態

lightMPD/upnpgwは下記の使い方ができます。
  • スタンドアローンのUPnPレンダラー
  • オーディオ用ネットワークルーター
  • UPnPアダプター
  • イーサーネットの分離

3-1. スタンドアローンのUPNPレンダラー

apu1またはapu2 1台で UPnPレンダラーになります。
図-1 にスタンドアローンのUPnPレンダラーの構成図を示します。

図-1  スタンドアローンのUPnPレンダラー


従来のlightMPDに
  • upmpdcli
  • キャッシュサーバー(polipo)
が組み込まれています。

キャッシュサーバーは設定により外す事も可能です。

mpdはメディアサーバーからHTTPによりデータを受信します。したがって、メディアサーバーをマウントする必要がありません。


3-2. オーディオ用ネットワークルーター

v1.0.2以前のlightMPDをホームネットワークから分離します。
図2にオーディオ用ネットワークルーターの構成図を示します。

オーディオ用ネットワークルータ
図2 オーディオ用ネットワークルータ

lightMPD/upnpgwをインストールしたapuのeth0をホームネットワークに接続し、eth1にlightMPDを接続します。
このような構成を取ることによりlightMPDはホームネットワークから分離され、lightMPD にはホームネットワークから不要なパケットが流れ込まなくなります。
ホームネットワークに繋がっている機器が多い環境では効果的です。

lightMPD/upnpgwはルータとして機能します。
ホームネットワー上の機器からlightMPDにアクセスする場合はIP MSQUERADE機能により行います。
逆に、lightMPDからホームネットワーク上のNASにアクセスする場合はNAT機能により行います。


3-3. UPNPアダプター

v1.0.2以前のlightMPDをupnpレンダラーにすると供にホームネットワークから分離します。
図3にUPNPアダプターの構成図を示します。

UPNPアダプター

図3 UPNPアダプター


接続はオーディオ用ネットワークルーターと同じですが、UPnPレンダラー化に必要なupmpdcli,polipoがmpdと分離されます。
DLNAコントローラーからのパケットはupmdcliがDLNA メディアサーバーからのデータはpolipoが中継するので、IP MASQUERADE,NAT機能は使いません。
polipoを使わない場合はNAT機能にりDNLAメディアサーバーとの通信を行います。


3-4. イーサーネットの分離

apu1/2 を2台使い、 NASまたはDLNAサーバーからのデータとそれ以外のデータを分離します。
apu同士の接続には2本のイーサーネットを使います。
図4,5にNASモード、UPnPレンダラーでのイーサーネットを分離した場合の構成図を示します。
この機能を使うためにはlightMPD側にその為の機能が必要です。この機能はlightMPD v1.1.0からサポートします。

lightMPD v1.1.0との連嶺
図4 イーサーネットの分離(NASモード)

lightMPD v1.1.0との連嶺
図5 イーサーネットの分離(UPnPモード)



    bbbの用にOTGポートを持っている機器は図6,7のような構成も可能になります。

lightMPD v1.1.0 との連携 usb otg
図6 USB OTG ポートを使ったイーサーネットの分離(NASモード)


lightMPD v1.1.0 usb otg

図7 USB OTGポートを使ったイーサネットの分離(UPNPレンダラー)




4. ダウンロードおよびインストール


4-1. ダウンロード


イメージファイル

パッケージ
rootイメージの入れ替えは解凍して出来たファイルを/boot/initrd-lightmpd-64にコピーして下さい。
  • upnpgw-initrd-20170428.zip
    • polipoを使った場合、44.1K/16以外のWAVがノイズにな不具合の修正
    • lightmpd.bootdevの指定にLABELを指定出来るようにした

4-2. インストール

BOOTイメージの書き込み

  1. イメージファイルのダウンロード
    インストールするSDメモリに合わせたイメージをダウンロードします。SDメモリより大きなイメージを選択するとインストールできません。
  2. イメージファイルの解凍
    イメージファイルは圧縮されてますので、それを解凍します。
    xzという属性のファイルは7zip等のプログラムを使って解凍します。
    xzが解凍できない場合は、256MbyteのイメージはWindows付属のプログラムで解凍できますので、SDメモリの容量によらず256Mbyteのイメージを使って下さい。
  3. 解凍したイメージをSDメモリに書き込みます。
    書き込みにはDDwin for Windowsを使って下さい。

パッケージのインストール

  1. 一度SDメモリを取り出して下さい。
  2. 配布パッケージのダウンロード
  3. 配布パッケージの解凍
    配布パッケージはzipで圧縮されています。配布パッケージをイメージファイルをインストールしたSDメモリに解凍します。
  4. /lightMPD/lightmpd.confの編集
  5. 必要があれば/boot/grub/menu.lstの編集
lightmpd.confの編集については「5.設定」で説明します。

パスワード

このバージョンからrootにパスワードを設定しました。

コンソールからまたはtelnetでloginする場合

 loginid    root
 passwd   lightmpd

を使用して下さい。
 

5. 設定


設定は/lightMPD/lightmpd.conf を編集する事で行います。
/lightMPD/confディレクトリに使用目的毎のlightmpd.confを用意しました。
設定手順は以下のようになります。

  1. 使用目的に従って/lightMPD/conf ディレクトリからlightmpd.conf-*を選択しそれを/lightMPD/lightmpd.confにコピーします。
  2. /lightMPD/lightmpd.confを環境に合わせて編集します。
  3. /lightMPD/mpd.confを環境に合えあせて編集します。
  4. /boot/grub/menu.lstを環境に合わせて編集します。

lightmpd.confの変更の他に/boot/grub/menu.lstを変更する必要もあります。
/boot/grub/menu.lstの編集については


を参照して下さい。


ブートデバイスの指定(menu.lstの補足)

lightmpdのブートデバイスを/boot/grum/menu.lstのkernelオプションのlightmpd.bootdevで指定します。
lightmpdではブートデバイスとして下記の物を指定できます。
  • apu1
    • SDメモリ
      /dev/sda1,/dev/sdb2,/dev/sdc1
    • USBメモリ
      /dev/sda1, /dev/sdb1,/dev/sdc1
  • apu2
    • SDメモリ
      /dev/mmcblk0p1
    • USBメモリ
      /dev/sda1, /dev/sdb1
apu1,apu2のUSBメモリとapu1のSDメモリはSCSI DISKと認識されます。そのデバイス名は sda1,adb1,... になります。
デバイス名はfirmwareやUSBポートに接続されているデバイスによって一意に決まらない場合があります。
このような場合、ブートデバイスのデバイス名を特定するのが困難になります。

この問題を解決する為にデバイスの指定方法にディスクラベルを使えるようにしました。

lightmpd.bootdev=LABEL=LIGHTMPD

とするとディスクラベルが"LIGTMPD"のディスクをブートデバイスとして指定した事になります。ディスクラベルを使ったほうがより確実にブートデバイスを指定する事ができます。
ディクスラベルを使う場合はディスクラベルの重複(同一のディスクラベルを持つディスクが複数存在する)が無いようにして下さい。

ディスクラベルはWindows 等でのディスク名の事です。ディスクラベルの設定・変更はWindows等を使って下さい。



5-1 スタンドアローンのUPnPレンダラーとして使用する場合

「3-1. スタンドアローンのUPnPレンダレラー」で説明したように、apu1またはapu2をUPnPレンダラーとして使用します。

lightmpd.confの編集

この場合のlightmpd.confの雛形は /lightMPD/conf/lightmpd.conf-standalone です。

lightmpd.conf-standalone

[network]
        interface=eth0
        address=192.168.0.0
        gateway=192.168.0.0
        netmask=255.255.255.0
        nameserver=192.168.0.0
        domain=mydomain.jp

[ntp]
        server=192.168.0.0
        ntpd=no
        timezone=Asia/Tokyo

[mpd]
        load_module=mpd-0.19.18rt-native-dsd-upnp


[cpuaffinity]
#  0   normal
#  1   cpu1:    usb irq handler
#  2   cpu1:    usb irq handler
       cpu2,cpu3: mpd
       type=2


[irqpriority]
        setdefault=no
        ehci_hcd:usb1=FIFO:99


[upmpdcli]
        enable=yes
        upnpiface = eth0
        mpdhost=localhost
        mpdport=6600
        friendlyname=UpLightMpd
        ohproductroom=UpLightMpd
        openhome = 1
        ohmetapersist = 1
        logfilename=/var/log/upmpdcli.log
        loglevel = 3


[polipo]
        enable=yes
#
        proxyAddress = 0.0.0.0
        allowedClients = 127.0.0.1
#
        chunkHighMark = 1024
        chunkLowMark = 256
        chunkCriticalMark = 768
        objectHighMark = 2048
#
        dnsQueryIPv6 = no
        cacheIsShared = false
        dnsUseGethostbyname = yes
        disableConfiguration = true
        disableIndexing = true
        disableLocalInterface = true

[webconsole]
#  yes | no
#  start page:   http://thishost:${port}/index.html
        enable=yes
        port=9000


[telnetd]
#  yes | no
        enable=yes
        port=23


雛形ファイルに対して下記のセクションを編集します。

1. [network],[ntp]セクション
これはlightMPDをお使いの方はlightMPDの設定と同じにして下さい。

2.[upmpdcli]セクション
upmpdcliの設定を行います。各パラメータはupmpdcliのパラメータそのものです。
パラメータが沢山ありますが、下記のもの以外変更する必要はありません

  • friendlyname
  • ohproductroom 

UPnPコントロールポイントでレンダラー一覧に表示される名前です。
デフォルトは"UpLightMpd"です。
変更する場合はfriendlyname,ohproductroomに同じ値を設定して下さい。


3. [polipo]セクション
キャッシュサーバーの設定を行います。
キャッシュサーバーを使わない場合は 

enable = no 

として下さい。

キャッシュの大きさの指定は下記のパラメータで行います。
  • chunkHighMark
    キャッシュの容量を指定します。単位はMbyteです。最大値は1024です。
  • chunkCriticalMark
    キャッシュが満杯になっりそうだと判断する値を指定します。単位はMbyteです。0 < chunkCriticalMark < chunkHighMarkになるように設定します。
  • chunkLowMark
    キャッシュに十分空きがあると判断する値を指定します。単位はMbyteです。0 < chunkLowMark < chunkCriticalMark になるように設定します。
polipoの動作は、キャッシュ内のデータがchunkCriticalMarkに達したときにキャッシュデータがchunkLowMarkになるまで古いデータを削除します。
これらのパラメータはキャッシュのフローを制御します。音質に関係しそうなパラメータですのでいろいろ試したくなりますが、不適切な値を設定すると音切れなどが発生するなどの問題を引き起こす場合があります。設定の目安としては  chunkCricicalMarkはchunkHighMarkの2/3程度、chunkLowMarkはchunkHighMarkの1/3程度にして下さい。

その他のパラメータは変更しないで下さい。


mpd.confの編集

mpdをUPnPレンダラーとして使用する場合は、

input {
    plugin     "curl"
    proxy      "127.0.0.1:8123"
}

をmpd.confに追加して下さい。

キャシュサーバーを使わない場合は

input {
    plugin     "curl"
}

とします。


kernelパラメータ

/boot/grub/menu.lstのkernelは下記のように設定して下さい。

kernel          /boot/bzImage-4.6.5rt10-64 root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=98304 rootfstype=romfs rootdelay=5 clocksource=tsc idle=poll processor.max_cstate=1 isolcpus=1 nohz_full=1 rcu_nocbs=1 lightmpd.systype=apu1 lightmpd.bootdev=/dev/sda1

lightmpd.systype,lightmpd.bootdevはお使いのシステムに合わせて変更して下さい。


5-2. オーディオ用ネットワークルータ

図2に示すように、従来のlightMPDまたは他のネットワークプレーヤーをhomeネットワークから分離します。

5-2-1. 接続

lightMPD/upnpgwではethを2ポート使います。
  • eth0     :      home ネットワークに接続
  • eth1     :      既存のlightMPDと接続


5-2-2. lightmpd/upnpgwのlightmpd.confの編集

オーディオ用ネットワークルータとして使う場合のlightmpd.confの雛形は/lightMPD/conf/lightmpd.conf-mpdgwです。        

lightmpd.conf-mpdgw

[network]
        interface=eth0
        address=192.168.0.0
        gateway=192.168.0.0
        netmask=255.255.255.0
        nameserver=192.168.0.0
        domain=mydomain.jp

[ntp]
        server=192.168.0.0
        ntpd=no
        timezone=Asia/Tokyo

[network:player]
        interface=eth1
        address=10.0.0.1
        netmask=255.255.255.252

[cpuaffinity]
        type=0

[irqpriority]
        setdefault=no

[telnetd]
#  yes | no
        enable=yes
        port=23

[ympd]
        enable=no
        host=10.0.0.2
        webport=8080
        mpdport=6600

[nat]
        masquerade=network:player
        dnsforwarding=yes
        ntpforwarding=yes
        8023=10.0.0.2:23
        6600=10.0.0.2:6600
        80=10.0.0.2:80
        9000=10.0.0.2:9000



雛形ファイルに対して下記のセクションを変更します。

1.   [network]セクションでhome ネットワークと接続するethポートの設定を行います。
  • 雛形ファイルではホームネットワークに接続するポートをeth0にしています。
  • 現在lightMPDを使っている場合は、その設定と同じ設定にして下さい。

2.   [network:player]セクションでmpdが稼働する装置と接続するethポートの設定を行います。
  • 雛形ファイルではplayerと接続するポートをeth1としています。
  • playerネットワークの設定ではgateway,nameserverは指定しないで下さい。
  • playerネットワークのアドレスはホームネットワークのアドレスと同じにしないで下さい。
  • 雛形ファイルではアドレスを下記のように設定しています。
    • lightMPD/upnpgwのアドレスを10.0.0.1
    • playerのアドレスを10.0.0.2
  • 雛形ファイルではホームネットワークではまず使わないと思われるネットワークアドレスになっています。
    ホームアドレスと重複する以外を除いてこの設定は変更しなくても問題ありません。

3.  [nat]セクションではgatewayの設定を行います。

  • masquerade=ネットワークの指定
    • 指定ネットワークからのパケットのソースアドレスの付け替えを行い、[network]で指定したネットワークに送出します。
    • ネットワークの指定はセクション名で行います。
  • dnsforwarding=yes | no
    • yesを指定したときにdnsのパケットを[network]->nameserverで指定したサーバーへ振り向けます.
    • yesを指定した場合は[network:player]->interface接続される装置のdnsサーバーアドレスは[network:player]->addressにします。
  • ntpforwarding= yes | no
    • yesを指定した時にntpのパケットを[ntp]->serverで指定したサーバーへ振り向けます。
    • yesを指定した場合は[network:player]->interface接続される装置のntpサーバーアドレスを[network:player]->addressにします。

  • ポート番号=振り向け先(IP-adress:port)
    playerはホームネットワークとは別のネットワークなのでホームネットワーク上の機器からアクセスする事はできません。
    lightMPD/upnpgwでは特定のポートをplayerのポートへ振り向ける事によりホームネットワーク上の機器からplayerにアクセスします。
    例えば
        
         8023=10.0.0.2:23

     とするとlightMPD/upnpgwの8023に向けられたパケットは10.0.0.2(playeのアドレス)の23番ポート(telnet)に振り向けます。
    lightMPD/upnpgwのアドレスを192.168.1.1とするとホームネットワーク上の機器から
    • telnet 192.168.1.1:8023とするとplayerのtelnetと接続します。
    • telnet 192.168.1.1:23とするとlightMPD/upnpgwのtelnetに接続します。
         雛形ファイルは以下のような設定になっています。
    • 8023=10.0.0.2:23
      telnet
    • 6600=10.0.0.2:6600
      mpd
    • 80=10.0.0.2:80
      webサーバー
    • 9000=10.0.0.2:9000
      webコンソール
        この設定例はlightMPD/upnpgw上にmpd,webサーバー,webコンソールが動いていない場合です。
        これらを動作する場合は下記のようにポートが重複しないようにして下さい。
    • 6601=10.0.0.2:6600
    • 81=10.0.0.2:80
    • 9001=10.0.0.2:9000
    

5-2-3. player側の設定

player側のネットワークをlightMPD/upnpgwの[network:player]に合わせて下さい。
playerがlightMPDの場合は、lightmpd.confの[network]の address,netmask,gatewayを下記の通りに変更して下さい。


[network]
        interface=eth0
        address=10.0.0.2                     <---- 変更
        netmask=255.255.255.252       <---- 変更
        gateway=10.0.0.1                     <---- 変更
        nameserver=192.168.0.0
        domain=mydomain.jp

domainはlightMPD/upnpgwの設定値と同じにして下さい。
nameserverはlightMPD/upnpgwのdnsforwrdingを
  • yesにした場合
    [network:player]->addressで指定した値(10.0.0.1)。
  • noにして場合
    ightMPD/upnpgwの設定値を同じ
にして下さい。


5-3. UPNPアダプター


図3に示すように、従来のlightMPDまたは他のネットワークプレーヤーをhomeネットワークから分離するとともに、UPnPレンダラーとして動作します。

5-3-1. 接続

lightMPD/upnpgwではethを2ポート使います。
  • eth0     :      home ネットワークに接続
  • eth1     :      既存のlightMPDと接続

ネットワークプレーヤーはmpdである必要があります。lightMPDに限らず"input plugin"に"curl"を組み込んだmpdなら使用する事ができます。


5-3-2. lightmpd/upnpgwのlightmpd.confの編集

UPnPアダプターとして使う場合のlightmpd.confの雛形は/lightMPD/conf/lightmpd.conf-upnpgwです。        


lightmpd.conf-upnpgw

[network]
        interface=eth0
        address=192.168.0.0
        gateway=192.168.0.0
        netmask=255.255.255.0
        nameserver=192.168.0.0
        domain=mydomain.jp

[ntp]
        server=192.168.0.0
        ntpd=no
        timezone=Asia/Tokyo

[network:player]
        interface=eth1
        address=10.0.0.1
        netmask=255.255.255.252

[cpuaffinity]
        type=0

[irqpriority]
        setdefault=no

[telnetd]
#  yes | no
        enable=yes
        port=23

[upmpdcli]
        enable=yes
        upnpiface = eth0
        mpdhost=10.0.0.2
        mpdport=6600
        friendlyname=UpLightMpd
        ohproductroom=UpLightMpd
        openhome = 1
        ohmetapersist = 1
        logfilename=/var/log/upmpdcli.log
        loglevel = 3

[polipo]
        enable=yes
#
        proxyAddress = 0.0.0.0
        allowedClients = 10.0.0.2
#
        chunkHighMark = 1024
        chunkLowMark = 256
        chunkCriticalMark = 768
        objectHighMark = 2048
#
        dnsQueryIPv6 = no
        cacheIsShared = false
        dnsUseGethostbyname = yes
        disableConfiguration = true
        disableIndexing = true
        disableLocalInterface = true

[nat]
        masquerade=network:player
        dnsforwarding=yes
        ntpforwarding=yes
        8023=10.0.0.2:23


雛形ファイルに対して下記のセクションを変更します。


1. [network]セクションでhome ネットワークと接続するethポートの設定を行います。
  • 雛形ファイルではホームネットワークに接続するポートをeth0にしています。
  • 現在lightMPDを使っている場合は、その設定と同じ設定にして下さい。
2. [network:player]セクションでmpdが稼働する装置と接続するethポートの設定を行います。
  • 雛形ファイルではplayerと接続するポートをeth1としています。
  • playerネットワークの設定ではgateway,nameserverは指定しないで下さい。
  • playerネットワークのアドレスはホームネットワークのアドレスと同じにしないで下さい。
  • 雛形ファイルではアドレスを下記のように設定してあります。
    • lightMPD/upnpgwのアドレスを10.0.0.1
    • playerのアドレスを10.0.0.2
  • 雛形ファイルではホームネットワークではまず使わないと思われるネットワークアドレスになっています。
  • ホームアドレスと重複する以外を除いてこの設定は変更しなくても問題ありません。

3. [nat]セクションではgatewayの設定を行います。
  • masquerade=ネットワークの指定
    • 指定ネットワークからのパケットのソースアドレスの付け替えを行い、[network]で指定したネットワークに送出します。
    • ネットワークの指定はセクション名で行います。
  • dnsforwarding=yes | no
    • yesを指定したときにdnsのパケットを[network]->nameserverで指定したサーバーへ振り向けます.
    • yesを指定した場合は[network:player]->interface接続される装置のdnsサーバーアドレスは[network:player]->addressにします。
  • ntpforwarding= yes | no
    • yesを指定した時にntpのパケットを[ntp]->serverで指定したサーバーへ振り向けます。
    • yesを指定した場合は[network:player]->interface接続される装置のntpサーバーアドレスを[network:player]->addressにします。
  • ポート番号=振り向け先(IP-adress:port)
    playerはホームネットワークとは別のネットワークなのでホームネットワーク上の機器からアクセスする事はできません。
    lightMPD/upnpgwでは特定のポートをplayerのポートへ振り向ける事によりホームネットワーク上の機器からplayerにアクセスします。
    例えば

       8023=10.0.0.2:23

    とするとlightMPD/upnpgwの8023に向けられたパケットは10.0.0.2(playeのアドレス)の23番ポート(telnet)に振り向けます。
    lightMPD/upnpgwのアドレスを192.168.1.1とするとホームネットワーク上の機器から
    • telnet 192.168.1.1:8023とするとplayerのtelnetと接続します。
    • telnet 192.168.1.1:23とするとlightMPD/upnpgwのtelnetに接続します。

   雛形ファイルは以下のような設定になっています。
    • 8023=10.0.0.2:23
      telnet
          

5-3-3. player側の設定

1. ネットワークアドレスの設定

player側のネットワークをlightMPD/upnpgwの[network:player]に合わせて下さい。
playerがlightMPDの場合は、lightmpd.confの[network]の address,netmask,gatewayを下記の通りに変更して下さい。


[network]
        interface=eth0
        address=10.0.0.2                     <---- 変更
        netmask=255.255.255.252       <---- 変更
        gateway=10.0.0.1                     <---- 変更
        nameserver=192.168.0.0
        domain=mydomain.jp

domainはlightMPD/upnpgwの設定値と同じにして下さい。
nameserverはlightMPD/upnpgwのdnsforwrdingを
  • yesにした場合
    [network:player]->addressで指定した値(10.0.0.1)。
  • noにして場合
    ightMPD/upnpgwの設定値を同じ
にして下さい。

2. mpd.confの編集

mpd.confに下記を追加します。

input {
    plugin     "curl"
    proxy      "10.0.0.1:8123"
}

"10.0.0.1"はlightMPD/upnpgwのIPアドレスです。キャッシュはlightMPD/upnpgwに置かれます。

キャシュサーバーを使わない場合は

input {
    plugin     "curl"
}

を追加します。

3. NASのマウント
UPnPメディアサーバーを使うのでNASのマウントは必要ありません。
mpd.confのmusic_directory,playlist_directory,db_file,sticker_fileは指定しなくても構いません。

lightMPDを使う場合は

  • [nas:xxx]セクションをすべて削除(またはコメントにする)して下さい。
  • [mpd]セクションは下記のようにして下さい。
        [mpd]
            load_module=mpd-0.19.x            <-- 使っているmpdを指定して下さい
            sticker_file=/tmp/sticker.sql
            db_file=/tmp/tag_cache
            log_file=/dev/null


5-4 upnpplayer

lightMPD/upnpgwから余分な機能を省いてplayer専用としました。upnpgwと接続して使う事が前提になります。単体では動作しません。
インストールは4.2 インストール を参照して下さい。

lightmpd.conf,mpd.confはlightmpd.conf-upnpgw-nasgatgeに合わせてあります。lightmpd.conf-upnpgw-nasgateを使っている場合はそのまま使う事ができます。


kernel

kernelはpreempt-rtカーネルの他xenomaiを用意しました。各OSのバージョンは
  • preempt-rt
    4.9.27rt-18
  • xenomai
    4.4.43-xenomai
になります。

kernelの切換は/boot/grub/menu.lstで行います。


mpd

mpdのバージョンはmpd-0.20.8rtです。

ダウンロード

Comments