2017年6月24日土曜日

apu1用のlightMPD/upnpplayerがリリース

apu1用のlightMPD/upnpplayerがリリースされました。

lightMPDapu1-upnpplayer-v1.0.4-64.zip

これに伴い、apu2c4をplayerにしていたのですが、apu1cをplayerにすることにしました。

小耳に挟んだところによると、PC Engines社ではオーディオ用途にはapu2を推奨しているそうです。

だとすると、playerにはapu2c4を使った方が良さそうなのですが、apu1cのメモリーが2Gしかないので、apu2c4をplayerにするとpolipoのサイズがadapter<playerになってしまい、adapterがバッファーの役割を果たさないような気がするので、あえてapu1cをplayerにしました。

で、その結果なのですが、私の耳ではほとんど違いが解りません(^ω^;)

あえて言うなら、apu1cが少し大人しいような、、、。←多分気のせい


2017年6月14日水曜日

apu2用のlightMPD/upnpplayerが公開されました

upnpplayerが公開されたので、最新の設定ファイルをメモ。

今回リリースされたのは、"apu2"用で"apu1"用は準備中とのことです。

lightMPDapu2-upnpplayer-v1.0.4-64.zip

lightMPD/upnpgwから余分な機能を省いてplayerに特化したということで、さらなる高音質が期待できそうです。


_/_/_/_/upnpgw_/_/_/_/
----------------------------------------------------------
lightmpd.conf
*/lightMPD/conf/lightmpd.conf-upnpgw-nasgate
----------------------------------------------------------
#
#     lightmpd.conf-upnpgw-nasgate
#
#

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

[ntp]
        server=ntp.nict.jp
        ntpd=no
        timezone=Asia/Tokyo

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

[network:nasgate]
        interface=eth2
        address=10.0.1.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      
        logfilename=/tmp/upmpdcli.log
        openhome = 1
        ohmetapersist = 1    
        loglevel = 3


[polipo]
        enable=yes
#
        proxyAddress = 0.0.0.0
        allowedClients = 10.0.1.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,network:nasgate
        dnsforwarding=no
        ntpforwarding=no
        8023=10.0.0.2:23

----------------------------------------------------------
menu.lst
----------------------------------------------------------
#
#
default 0
timeout 0
#
serial --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=0 serial console
hiddenmenu
#
#
title lightMPD/upnpgw
root (hd0,0)

# upnpgw
kernel /boot/bzImage-4.6.5rt10-64 root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=98304 rootfstype=romfs rootdelay=5 clocksource=hpet lightmpd.systype=apu1 lightmpd.bootdev=LABEL=LMPDAPU

#  standalone
#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

#
initrd /boot/initrd-lightmpd-64



_/_/_/_/ upnpplayer _/_/_/_/
----------------------------------------------------------
lightmpd.conf
----------------------------------------------------------
#
#      lightmpd.conf    upnpplayer
#
[network]
interface=eth0
address=10.0.0.2
gateway=10.0.0.1
netmask=255.255.255.252
nameserver=192.168.1.1
domain=mydomain.jp
# post-up=/usr/sbin/ethtool -s eth0 speed 10 duplex half autoneg off
#

[network:nasgate]
interface=eth1
address=10.0.1.2
netmask=255.255.255.252
        mtu=4000
# post-up=/usr/sbin/ethtool -s eth1 speed 100 duplex full

[ntp]
server=ntp.nict.jp
ntpd=no
timezone=Asia/Tokyo

[mpd]
load_module=mpd-upnp-0.20.8rt

[polipo]
enable = yes
proxyAddress = 127.0.0.1
allowedClients = 127.0.0.1
        parentProxy = 10.0.1.1:8123
chunkHighMark = 3072
chunkLowMark = 768
chunkCriticalMark = 2304
objectHighMark = 2048
cacheIsShared = false
disableLocalInterface = true
clientTimeout = 1200

[rpcbind]
enable=no

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

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

[cpuaffinity]
#  0   normal
#  1   cpu1:  usb irq handler
#  2   cpu1:  usb irq handler
        type=2

[irqpriority]
setdefault=no
xhci_hcd#0=FIFO:99
# internal usb
# ehci_hce:usb1=FIFO:99

[debug]
interfaces=yes
resolvconf=yes
ntpd=yes
ntpconf=yes
ifconfig=yes
cards=yes
mounts=yes
ps=yes
mpdversion=yes
date=yes
ntpq=yes
music=yes
messages=yes
save=no


----------------------------------------------------------
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"
        priority         "FIFO:54"
mixer_type       "disabled"
buffer_time     "150000"
period_time     "37500"
}

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


###### decoder selector
# decoder_selector {
#    suffix                       "mp3"
#    plugin                       "mad"
# }

# decoder_selector {
#    suffix                       "m4a"
#    plugin                       "ffmpeg"
# }

# decoder_selector {
#    suffix                       "wav"
#    plugin                       "audiofile"
#    scan_plugin                  "ffmpeg"
# }

# decoder_selector {
#    suffix                       "flac"
#    plugin                       "flac"
# }

#
playlist_directory "/var/lib/mpd/playlists"
#sticker_file             "/var/lib/mpd/sticker.sql"
log_file "/var/lib/mpd/mpd.log"
pid_file "/var/run/mpd.pid"
state_file "/var/lib/mpd/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"

#audio_output_format "96000:24:2"
#
# extended audio format
#audio_output_format "X4L4:24:2"
#audio_output_format "x4L4:24:2"

# soxr
resampler {
   plugin              "soxr"
#
#   quality                   gain at fs/2
#--------------------------------------------
#    "ultra high"               -200 db
#    "very high"                -175 db
#    "high"                     -150 db
#    "medium"                   -126 db
#    "low"                      -102 db
#
   quality             "very high"

#   0.5 <= passband_end < 1.0(fs/2)    default 0.91
   passband_end        "0.95"
#   0.0 <= phase <= 100.0   default 50.0
#   phase               "0"
   threads             "0"
}

follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
default_permissions     "read,add,control,admin"
#
mixer_type "disabled"
#
audio_buffer_size "4096"
buffer_before_play "50%"
#
filesystem_charset "UTF-8"
id3v1_encoding "UTF-8"

----------------------------------------------------------
menu.lst
----------------------------------------------------------
#
#
default 0
timeout 0
#
serial --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=0 serial console
hiddenmenu
#
#
title lightMPD/upnpplayer
root (hd0,0)

#  lightmpd.bootdev
#
#   usb memory         lightmpd.bootdev=/dev/sda1  or   lightmpd.bootdev=/dev/sdb1
#   SD  memory         lightmpd.bootdev=/dev/mmcblk0p1
#   USE disk label     lightmpd.bootdev=LABEL=DISKLABEL

#
#  rt-kernel
#
kernel          /boot/bzImage-4.9.27rt18-64 root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=65536 rootfstype=romfs rootdelay=5 clocksource=tsc idle=poll processor.max_cstate=1 isolcpus=1 nohz_full=1 rcu_nocbs=1 lightmpd.systype=apu2 lightmpd.bootdev=LABEL=LMPDAPU
#
#  xenomai kernel
#
#kernel          /boot/bzImage-4.4.43-xenomai root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=65536 rootfstype=romfs rootdelay=5 clocksource=tsc idle=poll processor.max_cstate=1 isolcpus=1 nohz_full=1 rcu_nocbs=1 lightmpd.systype=apu2 lightmpd.bootdev=/dev/mmcblk0p1

#
initrd /boot/initrd-lightmpd-64
----------------------------------------------------------

※赤字が変更部分です。

※ "menu.lst" でブートデバイスを指定するのですが、デバイス名はfirmwareやUSBポートに接続されているデバイスによって一意に決まらない場合があるそうです。このため、lightMPD では、デバイスの指定方法にディスクラベルが使えるようになっています。
 lightmpd.bootdev=LABEL=LMPDAPU
がその指定をしている部分です。私のUSBメモリーは "LMPDAPU" というディスクラベル(名前)なので、このような記述になっています。

※参考にしたlightMPD掲示板のスレッド
https://groups.google.com/forum/embed/?parenturl=https%3A%2F%2Fsites.google.com%2Fsite%2Fdigififan%2Fhome%2Flightmpdbbs&service=jotspot&ul=1&theme=default&place=forum%2Flightmpd&showpopout=true&showsearch=true#!topic/lightmpd/yov2E_2nfu0

※polipoの設定
chunkHighMarkでpolipoが使うメモリの上限を設定。
chunkLowMark,chunkCriticalMarkはchunkHighMarkより小さな値を指定。
目安として、
chunkLowMark     = chunkHighMark の1/3
chunkCriticalMark = chunkHighMark の2/3

(追記)
combo384のendianが正しくハンドリングできない問題に対応したカーネルがリリースされたので「digifiのおと」さんのその部分を引用します。

preempt-rt版のkernel: apu2-64-bzImage-4.11.12rt7-20170803.zip
解凍するとbzImage-4.11.12rt-64 が作成されます。それをインストールしたメディアの/boot にコピーして下さい。
/boot/grub/menu.lstのkernelの行をbzImage-4.11.12rt-64 に変更して下さい。
xenomai版  apu2-64-bzImage-4.9.24-xenomai-20170803.zip
解凍するとbzImage-4.9.24-xenomai が作成されます。それをインストールしたメディアの/boot にコピーして下さい。(元のファイルにオーバーライトします)
/boot/grub/menu.lstのkernelの行を bzImage-4.9.24-xenomai に変更して下さい。