home( Japanese,  English)  articles  categories  archives (Japanese,  English)  profile (Japanese,  English)  bulletin_board  

Search powered by unicode msearch
>> search options

RaspberryPIをUPnP化させる(5)


「DIY Music Server with Arch Linux」のやり方に倣って、minidlnaサーバと vsftpdサーバを入れてみました。
polipo、upmpdcli と異なり、こちらは pacmanで普通にインストールできます。

pacman -S minidlna

設定ファイルを作成します。

nano /etc/minidlna.conf

楽をするために、apu版の lightMPD upnpgw をそのまま使います。

port=8200
#network_interface=eth0
#user=jmaggard
#   + "A" for audio  (eg. media_dir=A,/home/jmaggard/Music)
media_dir=A,/var/music
#merge_media_dirs=no
friendly_name=My DLNA Server
db_dir=/var/cache/minidlna
log_dir=/var/log
log_level=off
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
inotify=yes
enable_tivo=no
strict_dlna=no
#presentation_url=http://www.mylan/index.php
notify_interval=900
serial=12345678
model_number=1
#minissdpdsocket=/var/run/minissdpd.sock
root_container=M
#force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title
#max_connections=50

音楽用ディレクトリを作成します。 また、問題を避けるため、ユーザタイプをrootにしておきます。

mkdir /var/mymusic
useradd -G root minidlnad

systemdの設定ファイルはインストールされていますので起動だけですみます。

systemctl enable minidlna.service
systemctl start minidlna.service


次に、試しにと考え、ftpをインストールしてみました。

pacman -S vsftpd

設定ファイルは「DIY Music Server with Arch Linux」の内容をパクります。

nano /etc/vsftpd.conf

anonymous_enable=YES
local_enable=NO
write_enable=YES
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_root=/music
anon_max_rate=2048000
xferlog_enable=YES
listen=YES
chown_uploads=YES
chown_username=ftp
chown_upload_mode=0777
allow_writeable_chroot=YES

systemdの設定ファイルがインストールされるのはminidlnaといっしょです。/music ディレクトリのchmodが必要になります。

systemctl enable vsftpd.service
systemctl start vsftpd.service
chmod 777 /music

Windows 環境からのアクセスは適当なFTPクライアントプログラムを使うことになります。FFFTPを使ってアクセスしてみました。

当たり前ですが、普通にアクセスできます。使い勝手はクライアントの機能次第ですが、FFFTPの場合はミラリーング同期が簡単にとれるのは便利です。


だだ、Windows環境下で使うのであれば、やっばりSambaのファイル共用機能を使うのが便利ですね。というわけで、インストールしてみます。

pacman -S samba

次に設定ファイルの作成。

nano /etc/samba/smb.conf

[global]
   workgroup = WORKGROUP
   hosts allow = 192.168.0.
   server string = %h server
#   wins support = no
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdat$
   pam password change = yes
   map to guest = bad user
guest account = root
client lanman auth = yes
client ntlmv2 auth = no
client use spnego = no
   usershare allow guests = yes
[homes]
   comment = Home Directories
   browseable = no
   read only = yes
   create mask = 0700
   directory mask = 0700
   valid users = %S
#[public]
#   comment = Public Space for Everyone
#   path = /mnt
#   guest ok = yes
#   browseable = yes
#   public = yes
#   writable = yes
#   hosts allow = 192.168.0.
#   #create mask = 0600
#   #directory mask = 0700
[music]
  path = /music
  guest ok = yes
  writable = yes
  guest ok = yes

こちらはユーザ登録する必要があります。

pdbedit -a root

smbd、nmbdサービスを開始します。

systemctl enable smbd.service
systemctl enable nmbd.service
systemctl start smbd.service
systemctl start nmbd.service

結局、dlnaサーバとsambaサーバをBBB/BBG + arch linux 環境に同居させたということになります。
こっちの方が僕の環境では便利ですね。

ここまでやったら、「毒食わば皿まで」(^^;;;。MinimServerも同居させてみますかね。長くなったので、次回にご紹介します。

(PC_Audio)   2017/08/19

コメントする

DC-ARROW 七転八倒(2)




写真は完成したDC-ARROEを横(裏)から写していますが、放熱器の下から三分の一位のところに変な線がはってあるのが分かりますか。これが最初の躓きの石でした。という話はすぐ後で。

部品の取り付け順序は、背の低いものから、高いものの順に取り付けていくのが定石です。従って、

抵抗 -> ショットキーダイオード ->ツェナーダイオード -> 可変抵抗 -> 
LED -> USBコネクター -> ターミナルブロックin/out -> 
470μFコンデンサー -> tr1(2SC2240)トランジスタ -> 4700μFコンデンサー -> 
tr2(2SC5100)トランジスタ/ヒートシンク

これが最初の躓きの石でした。
「どこが」といういうと、最後のトランジスタ/ヒートシンクとその前の4700μFコンデンサーを逆にすべきでした。写真でご覧になれるように、放熱器とtr2を密着させるためのネジは放熱器側からトランジスタ側にねじ込んでいます。これはネジ穴の前に4700μFコンデンサーがあるため、放熱器側からネジを差し込むしかなかったためです。ところが、これが逆方向からの接続になるため、しっかり固定できませんでした。放熱器の下から三分の一位にある線はこの対策でした。
仕方がないので、最初の写真に写っているように、無理矢理、手元にあったエナメル線でトランジスタと放熱器を固定しました。
従って、部品の正しい取り付け順序は

抵抗 -> ショットキーダイオード -> ツェナーダイオード -> 可変抵抗 -> 
LED -> USBコネクター -> ターミナルブロックin/out -> 
470μFコンデンサー -> tr1(2SC2240)トランジスタ -> tr2(2SC5100)トランジスタ/ヒートシンク -> 
4700μFコンデンサー

となります。
しかし、その後、二号機を作った時に分かったのですが、tr2 -> c1/c2コンデンサー という順番でも差し込み辛いのは同じですね。結局、tr2の足の部分を折り戻して差し込んだのですが、こちらが正解のようです。となると順番はどちらでも良さそうです。

足の長い部品のハンダ付けはそのまま差し込み、足を適当な長さに調整し、折り曲げ、その状態でハンダしたあと、足の余分な部分を切るというやり方をしました。
抵抗をハンダ付けした時のこれが表側。



これが裏側。



この状態で、基板のランドというリード線を通す部分に、半田鏝を寝かせかげんにランドにあて、加熱しながら、ハンダをこて先に付け、リード線とランドを接続します。
同じ要領でショットキーダイオードを接続します。



この時、ハンダを流し込むのに苦労したので、半田鏝を変えることに気が付くべきでした。ハンダを追加することで(後で知ったのですが「追いハンダ」というらしいです)なんとか乗り切ったのが、後の破局につながります。こういう穴の大きい場所は電子機器工作用の鏝を使っていましたが、オーディオ用の容量の大きいものを使うべきでした。その後、大型のコンデンサー、大型のトランジスタなどを付ける時も同じような違和感を感じました。しかし、前述のコンデンサと大型のトランジスタの取り付け順序を間違えて、トラブったので、そちらの対応に追われ、こちらの問題は深く考えないで、ハンダ付けを完了させてしまいました。

ここからが破局です。「バンザイ、ハンダ付けが終わった」とよろこんだのも束の間、トランスの黄色(+)と灰色(-)の線を入力側端子ブロックに接続。電源をいれてもLEDが点灯しません。テスターを出力側端子ブロックに接続したがDCが出ている様子はない。「あらら、第二のトラブルだなぁ」。

こういう時はあせっても仕方がないので、のんびりかまえる。とりあえず、回路図を眺める(読むなどという高級なことはできないので^^;;;)。上段の線がプラス、下段の線がグラウンドだからダイオードで整流したあとの各ボイントのDCをあたれば、どこで断線しているか分かるなと考える。
ダイオードで整流直後の信号が確認できるホールがあるので、これで確認。8.4vでした。ここまでは OK。次に大型コンデンサーの直後を確認する。0vでした(^^;;;。「なるほど、このコンデンサ、ちょっとグラグラしているから、多分接触不良ね。」と判断。追いハンダする。
今度はコンデンサに触ってもグラグラしないレベルになったので、OKだろうと考え、電源を入れてみる。
以前、LEDが点きませんねぇ。テスターでコンデンサーの先をあたってみる。8.9v出てますね。しょうがないなぁ。夜も遅くなったので、この日はここでお終い。

翌日。部品を付けた基板をひっくり返していたら、突然、LEDが点灯しました。「あれれれ」。テスターで出力端子ブロックをあたってみる。ちゃんと5v出ていますね。ここで、もう一度基板をひっくり返したら点灯しなくなる。この状態で部品を触ってみて、大型のトランジスタが怪しい(接触不良)と分かる。
調べたら、こんな記事(話題の「DC-ARROW」をつくってみました)がありました。「なるほどねぇ。半田鏝をオーディオ用のものに交換。 大型トランジスタのBCEホールを徹底的に追いハンダしました。ついでに、USB端子の取り付け部分ももグラグラしているので、ハンダしておきます。どちらもがっちりしました。
再度、電源を入れる。今度は綺麗にLEDが点灯。5v出力されるようになりました。



トロイダルトランスと基板の接続ですが、一つのトランスから二系統出力されていて、黄色(+)と灰色(-)か橙(+)と白(-)となっているようです。このあたりはたかじんさんのサイトの図と違いますので、ご注意ください。

制作に必要な道具ですが、写真は制作中のテーブル上です。ここに使った道具のほとんどが置いてありますね。

必須なもの

あると便利なもの

この基板、最初にご紹介したように手持ちのDACをワンランクアップする位の威力があります。ハンダ付けの難度はちょっと高めですが、ここまで書いてきたような方法で対応は可能ですので、お勧めします。よろしければ、挑戦してみませんか。

紹介し忘れましたが、このサイトの作者はこの基板を使って4台制作されいます。この制作記はとても参考になるので、リンクしておきました。

p.s. とても気に入ったので、早速二号機を制作してみました。前回の記事に書いたヨドバシのサイトのキットを注文。結局コンデンサーが違うだけで、それ以外は全く同じですね。一号機がNichiconのKAシリーズなのに対して、二号機の方は東信工業のUSTJとなっています。比較試聴してみましたが、違いは分かりませんでした。



同じものは共立のサイトでも販売しています。差はヨドバシだとポイントが付くことと送料が無料なので、電源が不要ならちょっと安くなることですね。
コンデンサーの違いによる音の差は僅かで、どちらでも良さそうです。
三号機は部品を買い集める方式に挑戦する予定です。

(PC_Audio)   2017/08/11

コメントする

DC-ARROW 七転八倒(1)


この記事、最初に予定していたタイトルは「サルでも作れる DC-ARROW」でした(たかじんさん、ゴメンナサイ)。しかし、基板ベースのハードの世界、そんなに甘くはない。というわけで「DC-ARROW 七転八倒」に変えることとなりました。何に七転八倒したかは後で詳しくご紹介することにして、まず、「DC-ARROWって何 ? 」という話から。



DC-ARROWとは new_western_elec のたかじんさんが設計された Raspberry-PI用の電源基板です。
DC-ARROWはトランスから出力されるAC(6.3v)をそのまま基板へ入れ、整流して、RaspberryPiやBBB/BBGのDC5Vへ電源を供給するための電源基板です。安定化回路をディスクリートで組んであり、NFBを使わない、いわゆるnon-NFB回路とすることにより、負荷変動によるレスポンスの遅れを回避し、安定した動作を確保している。このため、2SC5100という強力なパワートランジスタを使い回路を構成し、出力インピーダンスを大幅に低減させることにより、安定したnon-NFB動作を実現したということのようです。
このあたりの詳しい解説は new_western_elec このページにあります。

まあ、理屈はよく分からないのですが(^^;;;、結果は素晴らしい。r-piが真空管アンプを使ったような温かい、きめの細かいそして落ち着いた音に変わります。

オーディオ関連のデジタル機器で電源が重要ということは良く承知していました。また過去電源を変えて音を改良するということはさんざんやってきたつもりです。しかし、電源を変えてこれだけ効果的だったのは初めてです。アンプをワンランク上のものにした位の効果があります。ビックリしましたね。

デジタル機器の電源はスイッチング方式のものが一般的ですが、安物のオーディオ用でないものはノイズが多く、音がきつくなり、あれた感じになりとてもお勧め出来ません。オーディオ用に対策したものもありますが、完全にはノイズをとりきることが出来ないので、音がきつくなる感じをゼロにすることはなかなか難しいようです。スイッチング電源に対する対策として、僕が一番効果的と思っているのはifi社のiPurifierというフィルターです。ちょっと高価(本格的な電源と比較すれば、たいしたことはありません)ですが、スイッチングノイズを減らし、落ち着いた音にするという意味ではとても良く出来た製品だと思います。
トランス方式のものを使うという対策もあります。 これも効果的ですが、限界があります。限界とはおとなしくなりすぎて、音楽が持っていた精気みたなものが失われしまうことがあるからです。何種類かのトランス型電源を持っていますが、Linuxボード(apuやBBB/BBG)に使った時に効果的という製品経験がありません。唯一の例外はYAMAHAの12vのトランス型電源(PA-6)です。これはライブミュージシャンに愛用されるだけあって、音楽の迫力や雰囲気はそのまま残しながら、ノイズだけ低減させるという感じです。
というわけで、僕はBBやr-piはiPurifierを、apuはYAMAHAを使うという方法で対応していました。

ここに DC-ARROW が登場。r-pi、bbなどの5v電源入力のものはこれで決まりですね。圧倒的な差があると思いました。

この電源はトランス方式の弱点であるおとなしくなりすぎてしまうという点が解消され、生き生きと音楽を鳴らしてくれます。ピアノの強打、打楽器など従来のトランス方式ではどうしても満足出来なかった音が見事に再生されます。SoulNote D1(r-pi)、aitlabo DAC(BBB+BBG)、KORG DS-DAC-10R(r-pi)、linuxcom B3D-A4495(BBB+BBG) の四つの環境で試してみましたが、どの環境でもオーディオ機器をワンランクアップさせたような効果がありました。一台だけでは不足しそうなので、早速二台目を注文してしまいました。

さて、この基板の作り方です。new_western_elec このページに作者たかじんさんの解説があります。
このページは分かりやすく書かれていると思いますが、初心者に基板を電源に完成させるためのものではありません。明記されていませんが、「作り方は、部品数も少なく、簡単な回路なので、部品表、回路図、外形図をみれば分かるでしょ」というスタンスで書かれています。確かに、このようなキットを制作した経験があれば、部品表、回路図、外形図をみれば、作り方は分かります。僕の場合もそうで、ハンダ付けの腕前はサル以下と自負して(?)いますが、電源基板を使った工作の経験はあったので、部品表、回路図、外形図で作り方は分かりました。

ということで、まったくこのような基板を使って電子機器を作ったことがないという初心者の方のために、ここから少し、部品の集め方、見分け方、付け方、ハンダ付けの仕方、回路図の解説などを行いたいと思います。ハード初心者の身、無謀の極みではありますが(^^;;;。

まず、部品の集め方です。これは簡単でこのサイト(共立)このページで基板、部品、電源をまとめて入手することをお勧めします(僕もそうしました)。部品表をみながら、部品ショップで必要なものを選ぶということも可能です。そちらの方が安上がりですが、初心者には大変です。部品を間違えて動かないというような悲劇を避けるには、リンク先を選ぶことが賢明です。あと、ここ(ヨドバシ)でも基板と部品をセットで販売しているようです。内容は共立と同じような感じですが、電源は選べないので、別に準備する必要があります。僕は共立に注文した一台目が気に入ったので、二台目をこちらから注文しました。部品が多少違うようです。それで音がどう変わるか興味があったので。



写真は共立ショップの電源を除く部品の全てです。上段左から抵抗(5本)、ダイオード(5本)、可変抵抗、LED、USB端子、入出力端子ブロック、コンデンサー(2種、4個)。下段左から、トランジスター、ヒートシンク、絶縁シート、ヒートシンク用ネジ、電圧計、スペンサー/とめネジ。ダイオードは四本のショットキーバリアダイオード と一本のツェナーダイオードからなります。トランジスターは2SC2240と2SC5100の二種です。
この構成で特徴的なのは普通の安定化電源回路だと入っている三端子レギュレータがないこと。代わりにトランジスターは2SC2240と2SC5100を使うということらしいです。これが non-NFB回路を構成しているということですかね。
回路図は極めてシンプルです。6.3v ACをダイオードとコンデンサーを使って、DCに変換し、そのDCの負荷変動を2SC2240と2SC5100で吸収するという仕掛けのようです。

さて、写真の部品の見分け方ですが、初心者からみると基板上で部品をどう配置するかに戸惑うことになります。この時、問題になるのは部品の方向性(極性)です。これを間違えると動かなくなるので。
方向性(極性)がある部品はダイオード、コンデンサー、トランジスター、LEDです。ダイオードは印字(マーク)のある方がカソードで(ない方はアノードでアノード側からカソード側に信号が流れます)、コンデンサー、LEDは足の長い方がプラス短い方がマイナスとなります。それぞれの情報についてはネット上にあふれています。参考までに僕が使った情報をご紹介します。

以上の情報を組み合わせて読めば部品をどのように取り付ければよいか分かると思います。ネットにない情報をふたつ。
ダイオードは写真にあるようにダイオードは白と赤の紙ではさまれています。この赤側がカソード、白側がアノードとなります。印字情報が曖昧な場合、方向性はこの情報で知ることもできます(ツェナーダイオードについてはこちらで配置を決めました)。
また回路図は上側がプラス、下側がマイナスとなります。 なお、コンデンサ、LEDは足の長い方がプラスですが、切ってしまうと分からなくなりますので、ご注意ください。

抵抗は方向性(極性)はありませんが、値が3種類(150Ω×3、2.2KΩ×1、1KΩ×1)あります。共立ショップの部品では1KΩ×1抵抗はカラーコード表示の一般の抵抗を使っていますが、150Ω×3、2.2KΩ×1はDALEのオーディオ用金被抵抗を使っています。この抵抗はカラーコード表示されていませんので、容量を知るには印字文字を読む必要があります。かなり細かい文字なので虫眼鏡が必須です。
500Ωの可変抵抗(VR1)については方向性がありますが、これをどう取り付けるかは形状より明らかでしょう。

トランジスタも当然方向性があります。こちらはエミッタ(E)、ベース(B)、コレクタ(C)ということになります。通常、トランジスタの方向性についてはデータシートに記載がありますので、これを調べるのが基本です。

tr2(2SC5100)については外形図にBCEの表示がありますので、これで方向性は分かります。tr1(2SC2240)は外形図に形の表示があり、トランジスタの平らな面が右向きと分かります。回路図からもtr1のエミッタがtr2のベースに入っていますので、これでも方法性は分かります。

以上解説した以外の部品については、どういう方向に置くかは形より明らかでしょうから、説明は省略しますが、一つだけ。入出力端子ブロックですが、線を差す部分が外側となります。ついうっかりして逆に付けちゃうということがよくあるのですよね。経験者は語るです(~~;;;)。

さて、次は部品の取り付けです。ここから、七転八倒の物語に入るのですが、長くなったので、次回。って典型的tease作戦ですね。何に七転八倒したか、ヒントとなる写真を次に。



(PC_Audio)   2017/08/05

コメントする

RaspberryPIをUPnP化させる(4)


前回に続き、起動方法と設定ファイルを作成について解説します。これでスタンドアロン型のupnpシステムが出来上がります。

起動方法をどうするかですが、rc.localを使い、mpd、polipo、upmpdcli をまとめて処理するが分かりやすくて、簡単です。
rc-localを使うには、systemd に rc-local.service を登録する必要があります。

nano /usr/lib/systemd/system/rc-local.service

rc-local.service に以下の内容を設定します。

[Unit]
Description=/etc/rc.local Compatibility
Wants=network.target

[Service]
Type=oneshot
ExecStart=/etc/rc.local
TimeoutSec=0
#StandardInput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

これで起動時に rc-local が実行されるようになります。

次に rc.local本体の内容です。

useradd -G root polipo
useradd -G root upmpdcli
nano /etc/rc.local

polipo と upmpdcli の起動方法は以下の通りです。それぞれ設定(conf)ファイルを指定します。

#!/bin/bash
/usr/local/bin/polipo -c /etc/polipo.conf &
sleep 1
upmpdcli -D -c /etc/upmpdcli.conf
exit 0

rc.localを実行可能にして、起動を確認します。

chmod 777 /etc/rc.local
起動の確認
systemctl --system daemon-reload
systemctl enable rc-local.service
systemctl start rc-local.service
systemctl status rc-local.service

polipo.conf と upmpdcli.conf の内容は boticized lightMPD のスタンドアロンモードといっしょです。

mkdir /var/cache/polipo/
nano /etc/polipo.conf

以下の内容を、新規ファイルに書き込みます。

### for standalone from here
        allowedClients=127.0.0.1

        chunkHighMark=671088640
        chunkLowMark=100663296
        chunkCriticalMark=536870912
        objectHighMark=256
#
        dnsQueryIPv6 = no
        cacheIsShared = false
        dnsUseGethostbyname = yes
        disableConfiguration = true
        disableIndexing = true
        disableLocalInterface = true
#
        dnsNameServer = "192.168.0.1"
        diskCacheRoot = "/var/cache/polipo/"
        forbiddenFile = "forbidden"

こちらはインストールで作成されたファイルに書き込みます。

nano /etc/upmpdcli.conf

以下の内容をラジオ曲の設定の前に放り込みます。

upnpiface=eth0
mpdhost=localhost
#mpdhost=10.0.0.2
mpdport=6600
friendlyname=botic
ohproductroom=botic
openhome=1
ohmetapersist=1
logfilename=/var/log/upmpdcli.log
loglevel=3
iconpath = /var/lightMPD/bin/miero.png


以下は補足です。
Arch linux の場合、ユーザとユーザグループの登録やsudoの使い方(ルートユーザのなり方)に関して、他のディストリビューションとちょっと違うようなので、戸惑いました。参考にしたリンクを挙げておきます。

rc-localを使わない方法もとれそうです。その場合の upmpdcli.service と

nano /usr/lib/systemd/system/upmpdcli.service

[Unit]
Description=UPnP Renderer front-end to MPD
After=network.target

[Service]
Type=simple
# Note: if start fails check with "systemctl status upmpdcli"
ExecStart=/usr/bin/upmpdcli -c /etc/upmpdcli.conf
# For some reason, the first start of libupnp fails. Probably this should
# be started later in the start sequence, but I don't know how. Retry a bit
# later.
Restart=always
RestartSec=1min

[Install]
WantedBy=multi-user.target

polipo.serviceです。

nano /usr/lib/systemd/system/polipo.service

[Unit]
Description=Polipo Proxy Server
After=network.target

[Service]
ExecStart=/usr/local/bin/polipo -c /etc/polipo.conf
User=polipo
PrivateDevices=yes

[Install]
WantedBy=multi-user.target

起動
systemctl --system daemon-reload
systemctl enable polipo.service
systemctl enable upmpdcli.service
useradd -G root polipo
useradd -G root upmpdcli
reboot

プレイバック中のtopです。他のディストリビューションと比較すると、とてもショッキングレッドですが、mpd、upmpdcli、polipo など正しく動いているようですね。



音はスタンドアロンシステムとしては十分なレベルだと思います。donuts.shop73 さんのr-pi upnp対応システムと比較しても遜色のないレベルで鳴りますので、これなら十分オーディオ用ケースに入ったr-piに使えそうです。


p.s. 前回の記事で libupnppとupmpdcli のgit ファイルの在り処を github.com と紹介しましたが、変わったようですね。

git clone https://@opensourceprojects.eu/git/p/libupnpp/code libupnpp-code
git clone https://@opensourceprojects.eu/git/p/upmpdcli/code upmpdcli-code

が最新のようです。まあ github側に「移動したよ」という案内はあるので、分かりますが。

(PC_Audio)   2017/07/29

コメントする

RaspberryPIをUPnP化させる(3)


ここからが本題です。
mpdが動いているシステムをupnp化させるソフトとしてはupmpdcliがあります。従って、これをインストールすればmpdシステムはupnp化されます。このソフトはメイジャーではないので、グローバルなRaspberryPIといえども簡単にインストールすることが出来ません。arch linux,raspbianともにビルドからインストールする必要があります。
また、lightMPDの場合、upnp化はpolipoというプロキシサーバーと組み合わせて使い、音楽データをキャッシュすることで、より高音質の再生を狙っています。これも顰みならうことにします。ただし、polipoもプロキシサーバとしてはマイナーなので、インストールはビルドからのみとなります。 折角、RaspberryPIというメイジャーなハードを使っているのに、例によってマイナー路線、茨の道が待ち受けていますが、案外簡単です。是非チャレンジしてみましょう。

実はハードはr-piでなく、BBB/BBGでもやり方は同じです。未確認ですが、moctさんの公開されている Boticized arch linux を使って、upnp化させることが出来るかもしれません。
osが arch linuxか、raspbianかでインストールしておく必要のあるパッケージなど多少の差があります。以下、arch linuxをベースに記述し、違うところだけraspbianではどうなるか補足します。

本論に入る前に周辺のリンク先をいろいろご紹介します。
まず、「DIY Music Server with Arch Linux」というそのものズバリのサイト。サブタイトルが Create your own Lightweight Music Server with Arch Linux( in raspberry pi, or anywhere)。

「in raspberry pi, or anywhere」というところが、グローバルな波を感じさせますが、BBB/BBG は anywhere に入れてもらえるようなので、参考になります。内容はmpdをベースにminidlaとupmpdcliを加えて、UPnP化させようというもの。面白いなと思ったのはこの時、Vsftpdサーバを追加してminidlaサーバの運用を行うというところ。ftpサーバを使うのはいい手だなと思いました。

この記事はよく書かれていると思いますが、残念ながら upmpdcli に関する部分は参考になりません。
理由はインストールの方法の紹介が AURベースだからです。

AURって何というご質問はあるかと思います。とりあえず、こちらをご参照下さい。英文のトップはこちら。管理しているライブラリの検索ページを兼ねています。
AURというのは arch linux 環境でパッケージをソースからビルドする標準化された仕組みです。arch linux は ubuntu や debian などと比較して少数派ですから、pacmanで管理されるパッケージの数も少なくなります。これを補う仕組みがAURで、パッケージの提供側がこの仕組みを使って、簡単にインストール環境を用意できるようにすることにより、数の不足を補おうというものです。
具体的にはパッケージ提供者側はインストールに関するPKGBUILDという標準書式のテキストファイルを用意する。pacmanに含まれるmakepkgが

pacman -S --needed base-devel

をインストールしておくと、PKGBUILDファイルを読み出して、 指定されたパッケージをビルド&インストールする。ビルドに必要なパッケージ(gccなど)も自動的にインストールされますので、便利ですね。
という仕掛けになっています。

upmpdcli(libupnp)、polipo の PKGBUILDファイルは以下のところにあります。


しかし、せっかく探し出したのですが、この標準の PKGBUILDファイルは使えないのですよね。理由はよく分からないが、「パーミッションがない」というエラーをクリアできません。


しかたがないので、画面右上のリンク先から呼び出せるPKGBUILDファイルを眺めて、どうすればビルドできるのかチェック。



gitでソースファイルを取得して、普通にビルドすれば、OKらしいと分かり、試してみることにしました。

最初に git をインストールします。

pacman -S git

次に、ソースのget。

git clone git://github.com/jech/polipo
git clone https://github.com/medoc92/libupnpp
git clone https://github.com/medoc92/upmpdcli.git

polipo は make と make install だけで OK なようですね。

cd polipo/
make && make install
cd ..

試しに起動してみます。

/usr/local/bin/polipo
別の端末で確認
ps aux

問題なく動いているようです。

raspbianの場合はビルド前に以下のパッケージをインストールする必要があります。

apt-get install apt-file
apt-file update
apt-get install texinfo

何故こういう差が発生するのか不明です。

次に upmpdcliですが、先にlibupnppをインストールしておく必要があるようです。
また、libupnpをインストールしておく必要もあります。mpdがインストールされていると、libupnpはインストールされますので、不要です。
こちらは autogen と configure を事前に行ったあと、make && make install する方式です。

pacman -S libupnp
これはmpdがインストール済なら不要

cd libupnpp/
./autogen.sh
./configure --prefix=/usr --sysconfdir=/etc
make && make install
ls /lib

最後の ls はインストールの確認です。configure は –help で特に設定は不要なことを確認しました。

pacman -S libmicrohttpd jsoncpp
cd ../upmpdcli
sh autogen.sh
./configure --prefix=/usr --sysconfdir=/etc
make && make install

実行の確認です。
root資格では実行できないというエラーになったので、無理矢理 upmpdcli を rootグループに入れてしまいましたが、乱暴だったですかね(^^;;;。

useradd -G root upmpdcli
upmpdcli -D -c /etc/upmpdcli.conf
ps aux

raspbianの場合はビルド前に以下のパッケージをインストールする必要があります。

apt-get install libtool libupnp-dev libcurl-ocaml-dev libexpat-ocaml-dev
apt-get install libmicrohttpd-dev libjsoncpp-dev libmpdclient-dev

紹介する順番が逆になりましたが、インストール途中で参照したページです。

urlでお分かりのように upmpdcli と upplay は同じ開発元なのですね。

次に設定ファイルの内容と起動方法です。キリがいいので、次回にまわします。

(PC_Audio)   2017/07/22

コメントする

http://karaage.hatenadiary.jp/entry/2015/10/07/073000

RaspberryPIをUPnP化させる(2)




前回、「新しいDACをget」と書きましたが、その新しいDACの写真です。新DACはオーディオルームで使っています。この部屋ではアナログレコードを中心に聞いています。オーディオ機器のレイアウトの特徴は手元にプリアンプだけおいて、それ以外のアナログプレーヤ、メインアンプ、スピーカーなどは音響効果を考慮し、部屋のあっちこっちに分散させていることです。写真にはDAC、プリアンプ、メインアンプ、スピーカー、NASシステムなどが写っていますが、ご覧のようにあっちこっちバラバラ。DACは他に置く場所がないので、プリアンプの横に置いています。写真に写っていませんが、DAC、プリアンプ後方のnasを置いたラックの横にアナログプレーヤを置いてあります。いろいろ試してみましたが、この場所に置くのが一番ワウフラッターが少なくなるので。
メインアンプをスピーカーの下に置き、プリアンプと距離を離し、スピーカーとの距離を最短にしています。最初は、普通(?)に、プリとメインを近くに置いていたのですが、試しにメインアンプをスピーカーのそばにもっていってみたら結果が良かったので、こちらに配置を替えています。同軸ケーブルは10メートル位のばしても音に影響はないはずですから、この方法はお勧めです。スピーカーケーブルがいかに音に有害かよく分かります。モノラルタイプのメインアンプをお持ちの方はお試しあれ。 スピーカーはHarbethのMonitor40という大型のBBCモニターを使っています。20年近く、使い続けていますが、いまでも現役です。BBCモニターらしい安定感のある音がします。専用の木製の台に乗せて使っていますが、そこにメインアンプを置けるのが便利ですね。
DAC、プリアンプ後ろのnas(dlna)サーバはcdのリッピングステーションも兼ねています。ここで入手したCDは直ちにnasに格納、それを聴くという運用をしていますので、CDプレーヤは使っていません。リッピングシステム用のディスプレイはなくても良いのですが、余っているので、繋いであります。upnpネットワークのコントロールポイントとしてはプリアンプの前に置いてあるiPadを使っていますから、オーディオ部屋はPCレスなのですよね。

さて、肝心のDACですが、SOULNOTE D1という製品です。最近の新しいDACチップを使った新製品に興味がありウオッチしていました。たかじんさんのサイトのこの記事を見て、これが linux で使えるなら、良さそうだなと考え、近所のオーディオ屋さんに試聴をお願いしました。このオーディオ屋さんは郊外ショッピングモールの隅っこで細々と(?)営業しているのですが、こういうお店が近所にあると便利ですね。ノートpc、無線lanハブ、apu二台、itonaなどを持ち込んで試してみました。
音は素晴らしいですね。現用のaitlaboと比較すると楽器の実在感がワンランクアップするという感じです。ピアノの響板の響き、弦楽器のアッタク音、声のブレスなど本当にリアルに再現します。aitlaboのDACを初めて聞いたとき同じような感想をもったのですが、4年たつと新しい世界が誕生するのですね。感心しました。
「面白いなぁ」と思うのはDACをレベルアップする度に音がどんどんアナログレコードに近づいていくこと。HD7A192 => クロックの追加 => aitlabo DAC => aitlabo DAC のi2s化(BBB+BBG) => SOULNOTE D1 という具合にレベルアップさせてきましたが、確実にアナログの音に似てきています。今回のSOULNOTEでほぼ追いついたという感じになっていますね。これならデジタル録音でも安心して聴くことができそうです。
欠点はデザインがいまいちですね。前面がヒートシンクのようなアルミ削りだしパネルになっているのですが、これがなんともダサイです。また、バカでかいです。オーディオ用ケースに入ったr-piと比較してその大きさは際立っていますね。あと、熱いです。ケースの放熱用のスリットから真っ赤に焼ける部品が見えるのですが、半熟でよければ、目玉焼き位は作れそう位熱くなります。冬場なら確実に暖房機の替わりになりそうです。
まあ、音の良さの前なら、酷いデザインも、バカでかさも、熱さも我慢するという音楽愛好家向けですね(^^;;;。



しかし、なんで基板が電熱器みたいにこんなに真っ赤になるのですかね ?

さて、本題に戻します。r-pi で arch linuxを使ってmpdとカーネルをビルドする方法です。mpdとカーネルのビルドにこだわるのはこの二つが出来ないとupnpシステムを構築出来ないからです。
arch linuxシステムのインストールについてはこの記事を、mpdのビルドについてはこの記事を参照して下さい。再確認しましたが、今でもそのまま使えます。ただし、–enable-libmpdclient は明に指定しておく必要があります。

r-pi の arch linux のカーネルのビルドにつてはインタネット上の情報は英文ばかりです。「raspberry pi arch linux kernel build」で検索すると英語のサイトばかり出てきます。古い情報が多いですが、多少参考になるのはこちら(elinuxのページです)

まず、ビルドに必要なソフトウェアのインストールですが、mpdのビルドを行っていれば、特に必要はないはずです。念のため以下を実行。

pacman -S git wget bc

次に、カーネルのソースをどこからダウンロードするか。以下、直前のelinuxのリンク先からの引用。

The kernel source should be downloaded from the Raspberry Pi Linux section on GitHub. Although you could just compile the vanilla kernel from Kernel.org, it will not have the necessary drivers and modules for the Broadcom SoC on the Raspberry Pi. You can however apply patches from the vanilla kernel to the Raspberry Pi one - be prepared for potential compiler grumbles though!

ということです。
ダウンロードの方法ですが、現在のバージョンは

[root@alarmpi ~]# uname -a
Linux alarmpi 4.9.30-1-ARCH #1 SMP Sat May 27 01:19:41 UTC 2017 armv7l GNU/Linux

ですので、

git clone --depth 1 https://github.com/raspberrypi/linux.git -b rpi-4.9.y
git clone --depth 1 https://github.com/raspberrypi/firmware.git

となります。
次に、configをどうするか。これは手こずりました。常識的には

cd linux
modprobe configs
zcat /proc/config.gz > .config

でOKなはずなのですが、何故か上手くいかない。makeが途中でエラーになります。
ネットで調べると bcm2709_defconfig というコンフィグを使えばいいらしいのですが、何故かダンロードしたディレクトリには存在しないのですよね。

[root@alarmpi linux]# ls -l arch/arm/configs/
・・・
-rw-r--r-- 1 root root  5719 Jun 30 06:23 axm55xx_defconfig
-rw-r--r-- 1 root root  2573 Jun 30 06:23 badge4_defconfig
-rw-r--r-- 1 root root  3342 Jun 30 06:23 bcm2835_defconfig
-rw-r--r-- 1 root root 32146 Jun 30 06:23 bcmrpi_defconfig
・・・

仕方がないので、ネットで bcm2709_defconfigをキーワードに検索してみます。
見つかりました。



ここです。WindowsとVmPlayer間でCopy&Paste で無理矢理 bcm2709_defconfigを作成します。

nano arch/arm/configs/bcm2709_defconfig

と書きましたが、その後、再度ご本家からダウンロードしたカーネルにはbcm2709_defconfigが含まれていました。gitだから日々進化しているということなのですかね。
あとは簡単。開始前にファームウェアの更新を行っておきます。

cp ../firmware/extra/Module7.symvers Module.symvers
make bcm2709_defconfig
make menuconfig
make -j4 zImage modules dtbs

menuconfigは

Device Drivers  ---> 
  [*] Network device support  ---> 
     <*>   USB Network Adapters  ---> 
       <*>   USB RTL8150 based ethernet device support
       <*>   Realtek RTL8152/RTL8153 Based USB Ethernet Adapters
       <*>   Microchip LAN78XX Based USB Ethernet Adapters 
  <*> Sound card support  --->
  [*] USB support  ---> 
    [*]     Rely on OTG and EH Targeted Peripherals List 
    <*>   Inventra Highspeed Dual Role Controller (TI, ADI, AW, ...) 
            MUSB Mode Selection (Dual Role mode)  --->
  <*>   USB Gadget Support  --->   

otg-usbとusb-lanを設定。
最後にビルドしたソフトをインストールします。

make modules_install
cp arch/arm/boot/dts/*.dtb /boot/
cp arch/arm/boot/dts/overlays/*.dtb /boot/overlays/
scripts/mkknlimg arch/arm/boot/zImage /boot/kernel7.img

再起動。入れ換えを確認します。

reboot
[root@alarmpi ~]# uname -a
Linux alarmpi 4.9.35-v7+ #1 SMP Tue Jul 4 12:59:49 UTC 2017 armv7l GNU/Linux

これで、前段の処理はお終い。次回から、polipoとupmpdcliのインストールに入ります。

(PC_Audio)   2017/07/15

コメントする

RaspberryPIをUPnP化させる




タイトルをみて、僕の節操のなさにあきれはてた人もいらっしゃると思いますが、RaspberryPIを使い出すことに決めた一番の理由はこのケースです。

このケース、ステレオサウンド社のサイトで委託販売されていますが、情報はこちらこちら。「ワンボードオーディオ・コンソーシアム」で策定作業を進めている規格に準拠。金属製ですがしっかりした作りです。
ケースが重要と知ってはいましたが、これほどとは思いませんでした。 Volumioでは信用できないので(^^;;;、Arch LinuxとRaspbian liteを使い試してみました。ケースに入れるか、入れないかで、まるで音が違います。ケースに入れた方が解像度、透明度、空間の感じなど全ての面でランクアップします。archとraspbianで微妙な差があるのですが、そんなのケースの有無の差の前にはどうでもいいという感じ。ビックリしました。
文字通り、オーディオ仕様のケースだと思いました。

実は、最近、新しいDACをgetしました。
いろいろ思案したのですが、i2s接続だと選択出来る機種は少ないので、USB接続タイプのものにしました。このため、USB出力で音の良いSOCを捜さないといけない。BBB/BBGは素晴らしいハードだと思いますが、USB出力はちょっと弱いので、使えません。ハードをどうするか物色している中で、このケースに目をつけたというわけです。まあ、もちろん、apuという選択肢はあるのだけど、只今、apu2が out of stock なのですよね(情報はここにあります)。



さて、このケース、雑誌の記事やウェブサイトの情報を見るとVolumioを使う方法が紹介されていますが、こんな良いケースを台無しにして、もったいないですね。これだけのケースを使うならapuと繋いで、自作、upnpタンデム接続の世界の一手でしょう。
という訳で「RaspberryPIをUPnP化させる」です。

本題に入る前にもう一つだけ脱線。自作は面倒という方々のために、donuts.shop73 さんのr-pi upnp対応システムをご紹介しておきます。
前回、BBB/BBG対応のusb-otgたすき掛け版をご紹介しましたが、こちらのr-pi版も素晴らしい内容です。lightMPDの掲示板「なんちゃってネットワーク分離」というスレッドで公開されています。直接、donuts.shop73 さんの書き込みにリンクする方法が分からないので、スレッドへのリンクをこちらに。1月15日のdonuts.shop73 さんの書き込みに情報があります。
このシステムはlightMPD r-pi版 1.02 がベースです。従って、インストール方法などはlightMPD r-pi版に準ずる形で行えますが、zipファイルを普通に解凍するとディレクトリ付きが指定されていますので、要注意です。また、起動するとランプを一切点灯させずに起動されますので、知らないと「あれハングしたの」と感違いするということになります(僕はこれで半分諦めかけました^^;;;)。この二つの難所をクリアできれば、networkのアドレスを設定するだけでスタンドアロンで動かすことができますので、インストールは簡単です。音もとても良いですので、お勧めします。

それでは本題に入ります。まずr-piを動かすOSの選択。
GUIはいらないので、debian、raspbian-lite、arch linux、ubuntu mini といったところが候補になります。
debianはこのサイトに情報がありますが、r-piにはちょっと辛口なので、パス。ubuntuはユーザ登録しないと使えないのですが、どうやって登録してもsshログインできないので、諦める。残された raspbian-lite、archの二正面作戦でいくことにしました。二つを試してみて良い方or動く方を取ろうということ。

まず、raspbian-liteです。情報は検索すればいたるところにあるので、省略。僕が苦労したことだけ書き残しておきます。
インストールはWindows環境でsdカードにイメージファイルを書き込むというやり方なので、サルでも出来ます。僕が参考にした情報はここ
問題は初回の起動時。hdmiでディスプレイを繋ぐのは面倒なので、sshで入ろうとしたが、どうやってもログイン出来ない。「なんで ? 」と調べたら、「raspberry pi 3でSSH接続できない?」ということです。

mount /dev/sdb1 /mnt
touch /mnt/ssh

という呪文を唱える必要があるようです。よく読んだら、インストールに参考にしたリンク先のサイトにも書いてありました(^^;;;。
あと、hdmiでディスプレイを繋ぐと、当然(?)最大解像度で繋がるので、僕の環境では文字が小さくて見にくいという問題があるのですが、この対応が結構大変でした。
解像度(1280x768 60 Hz)を変えるには

nano /boot/config.txt
hdmi_group=2
hdmi_mode=23

という具合に変更すれば、いいらしいのですが(ここの情報です)、さっぱり変化しない。config.txtのコメントをよく読んだら、頭にある

hdmi_safe=1

という行も変更しないといけないようです。手こずりましたね。
最初はこれでログインしてrootバスワードの設定とsshd_configの変更をやっておかないとスムーズをrootでsshログイン出来ません。

rootのパスワードを設定する
sudo passwd root
sshログイン可能にする
mount /dev/sdb1 /mnt
touch /mnt/ssh
nano /etc/ssh/sshd_config
PermitRootLogin yes

次にmpdのビルド。その前にmpdをインストールします。

apt-get update
apt-get install nfs-common cifs-utils winbind avahi-daemon avahi-autoipd
apt-get install alsa-base alsa-utils
apt-get install mpd mpc ncmpc

ここから先はたかじんさんのサイトの「MPDをソースコードからコンパイルしてPi 2 Pi 3に最適化する方法」のままです。コマンドだけ羅列しておきます。

準備
apt-get install autoconf unzip wget automake autopoint gcc
apt-get install eclipse-cdt-autotools
apt-get install libid3tag0-dev libflac-dev libvorbis-dev libsndfile1-dev libboost-dev libicu-dev libsqlite3-dev libsystemd-daemon-dev libglib2.0-dev libmms-dev libmpdclient-dev libpostproc-dev libavutil-dev libavcodec-dev libavformat-dev libnfs-dev libsmbclient-dev libsoxr-dev libasound2-dev libmpg123-dev

ソースの入手とconfigure
wget https://www.musicpd.org/download/mpd/0.20/mpd-0.20.9.tar.xz
xz -dv mpd-0.20.9.tar.xz
tar -xf mpd-0.20.9.tar
./configure CFLAGS="-O2 -march=armv8-a -mtune=cortex-a53 \
-mfpu=neon-fp-armv8 -mfloat-abi=hard" \
CXXFLAGS="-O2 -march=armv8-a -mtune=cortex-a53 \
-mfpu=neon-fp-armv8 -mfloat-abi=hard" \
--with-systemdsystemunitdir=/lib/systemd/system

コンパイルとインストール
make && make install
設定
nano /etc/fstab
//192.168.0.35/public /var/lib/mpd/music cifs username=yo,password=,sec=ntlm,uid=mpd,noauto,x-systemd.automount,file_mode=0666,dir_mode=0766,iocharset=utf8,rsize=130048,wsize=4096 0 0
nano /lib/systemd/system/mpd.service

簡単でした。
次にカーネルのビルド。これもたかじんさんの「秋の夜長の Raspberry Pi 3 カーネル・セルフ・ビルド」を参考にしました。タイトルが魅力的ですね。たかじんさんの記事の最後の方のリンク先も参考になります。

apt-get install bc ncurses-dev

git clone --depth 1 https://github.com/raspberrypi/linux.git -b rpi-4.9.y
git clone --depth 1 https://github.com/raspberrypi/firmware.git

cd linux
modprobe configs
zcat /proc/config.gz > .config
cp ../firmware/extra/Module7.symvers Module.symvers
make menuconfig
make -j6 zImage dtbs modules

make modules_install
cp arch/arm/boot/dts/*.dtb /boot/
scripts/mkknlimg arch/arm/boot/zImage /boot/kernel7.img

これも簡単。やっばりグローバル標準は楽ですね。
というところで、いつになったらupnp化の話に入れるやらですが、長くなったので、今回はここまでです。次回はarch linuxで再開。menuconfigで設定する内容は arch linux と共通ですので、次回説明します。

(PC_Audio)   2017/07/08

コメントする

BB用 Boticized lightMPD UPnP版とlightMPD UPnP-Adapter版の設定方法(2)




写真は僕のBoticシステム用実験システムを撮ったものです。ご覧のようにBBB、BBG、DACの三段重ね。ケースにも入れずに、むき出しですが、実験用なので、手抜きです。後ろにBBG用の電源として使っている外部電源供給型のUSBハブとBBB用の電源が並びます。USBハブの電源は製品のもの(12V2A)をそのまま使っていますが、iPurifier(左上)を装置と電源の間に入れ、対策しています。BBBはBBGを親としてusb-otg接続されていますが、電源ラインはIOデータ社のUSB-ACADP5(右手前)を使って外部から供給させるように変更しました。この方が動作が安定し、音も良くなるようです。

MPDの設定

MPDの種類

さて、BB用 Boticized lightMPD UPnP版とlightMPD UPnP-Adapter版の設定方法に関して前回説明しきれなかった部分を補足します。まずmpd設定に関連する内容。
Boticized lightMPD UPnP版では2つの別の方法でビルドしたmpdを動かすことができます。一つはbuildrootを使ってビルドしたmpd。もう一つは botilised arch linux 配下でビルドしたmpdです。いってみれば、前者はlightmpd用のmpd、後者はarch linux用のmpdということになります。前者は標準のlightmpdと同じ手法でビルドされているわけですから、特に解説は不要と思います。後者のarch linux用のmpdですが、これはarch linuxをBoticizedしたシステムのmpdがとても音が良いので、lightmpdにもってきたらどうなるだろうと試してみたものです。ビルド方法はここにあります。リンク先の情報は最初にトライした時の内容なので、現在の版のmpd-\,*archがcpでコピーしているモジュールは以下の通りとなります。

mkdir /save
cd /save
cp \
/usr/lib/libavformat.so.57 \
/usr/lib/libavcodec.so.57 \
/usr/lib/libavutil.so.55 \
/usr/lib/libmodplug.so.1 \
/usr/lib/libicui18n.so.58 \
/usr/lib/libicuuc.so.58 \
/usr/lib/libicudata.so.58 \
/usr/lib/libstdc++.so.6 \
/usr/lib/libm.so.6 \
/usr/lib/libgcc_s.so.1 \
/usr/lib/libpthread.so.0 \
/usr/lib/libc.so.6 \
/usr/lib/libdl.so.2 \
/usr/lib/libssh.so.4 \
/usr/lib/libbluray.so.1 \
/usr/lib/libgnutls.so.30 \
/usr/lib/libswresample.so.2 \
/usr/lib/libx265.so.102 \
/usr/lib/libx264.so.148 \
/usr/lib/libwebpmux.so.2 \
/usr/lib/libwebp.so.6 \
/usr/lib/libvpx.so.4 \
/usr/lib/libopenjp2.so.7 \
/usr/lib/libopencore-amrwb.so.0 \
/usr/lib/libopencore-amrnb.so.0 \
/usr/lib/liblzma.so.5 \
/usr/lib/libvdpau.so.1 \
/usr/lib/libva-drm.so.1 \
/usr/lib/libva-x11.so.1 \
/usr/lib/libX11.so.6 \
/usr/lib/libpsl.so.5 \
/usr/lib/librt.so.1 \
/usr/lib/libgomp.so.1 \
/usr/lib/libpcre.so.1 \
/usr/lib/libxml2.so.2 \
/usr/lib/libfontconfig.so.1 \
/usr/lib/libfreetype.so.6 \
/usr/lib/libp11-kit.so.0 \
/usr/lib/libnettle.so.6 \
/usr/lib/libhogweed.so.4 \
/usr/lib/libXext.so.6 \
/usr/lib/libdrm.so.2 \
/usr/lib/libXfixes.so.3 \
/usr/lib/libxcb.so.1 \
/usr/lib/libkeyutils.so.1 \
/usr/lib/libresolv.so.2 \
/usr/lib/libpng16.so.16 \
/usr/lib/libharfbuzz.so.0 \
/usr/lib/libXau.so.6 \
/usr/lib/libXdmcp.so.6 \
/usr/lib/libgraphite2.so.3 \
./

また検索では駄目でコピーしたものは以下の通りです。

        libupnp.so.6 => /usr/lib/libupnp.so.6 (0xb6e7d000)
        libmpdclient.so.2 => /usr/lib/libmpdclient.so.2 (0xb6e2c000)

Boticized lightMPD UPnP v3.1の/mnt/lightmpdにmpdは

-rwxr-xr-x    1 root     root        597004 Feb  4  2017 mpd-0.19.21rt-arch-dsd
-rwxr-xr-x    1 root     root        905980 Feb  8  2017 mpd-0.20.2rt-arch
-rwxr-xr-x    1 root     root        544928 May 18  2017 mpd-0.20.7rt-arch
-rwxr-xr-x    1 root     root        317180 Feb 20  2017 mpd-br-01921
-rwxr-xr-x    1 root     root        417956 Feb 19  2017 mpd-br-02004

いう具合に保存されています。
サフィックスにarchが付いているものがarch版です。
arch版のmpdは使用するlibrary構成がbuildroot版とはことなります。従ってinitrdをarch専用のものを使う必要があります。/mnt/bootの

-rwxr-xr-x    1 root     root      28117099 Jun  2  2017 uInitrd-br-upnp-player
-rwxr-xr-x    1 root     root      53400826 Jun  2  2017 uInitrd-br-upnp-player-arch
-rwxr-xr-x    1 root     root      28115949 Jun  2  2017 uInitrd-br-upnp-stand
-rwxr-xr-x    1 root     root      53400829 Jun  2  2017 uInitrd-br-upnp-stand-arch

サフィックにarchが付くものがmpd arch版用です。

MPDの設定方法

/mnt/uEnv.txt と /mnt/lightmpd/lightmpd.conf の設定が必要です。
lightmpd.conf では再生に使用するmpdプログラムを指定します(二つ前の引用部分を参照)。uEnv.txt は指定したmpdプログラムに対応するuInitrdを指定します(一つ前の引用部分を参照)。
lightmpd.conf側は解説不要でしょう。uEnv.txtで指定するuInitrdは動作中のモードがスタンドアロンかプレーヤかと指定したmpdがarchかどうかで決まります。プレーヤモードの場合、設定はmpdが動いているplayer側のシステムに行う必要があります。
二つのconfファイルを適切に処理するのは面倒なので設定用のシェルスクリプトを用意してあります。
使い方は

# /mnt/scripts/mpdset.sh
Welcome to Boticized lightMPD
Usage: /mnt/scripts/mpdset.sh {arch19|arch20|light19|light20}

となります。
このスクリプトですが、standaloneモードで archタイプのmpdからlightタイプのmpdに切り換えようとするとエラーになります。修正方法ですが、以下の通り、/mnt/scripts/uEnv.scrを入れ換えて下さい。

/^#initrd_file=\/boot\/uInitrd-br-upnp-stand$/N
s/#\(initrd.*stand\n\)\(initrd.*stand-arch\)/\1#\2/
/^#initrd_file=\/boot\/uInitrd-br-upnp-player$/N
s/#\(initrd.*player\n\)\(initrd.*player-arch\)/\1#\2/

何をやっているかの説明は省略します。
それからmpdを切り換える方法ですが /mnt/scripts/mpdset.sh の次の行を修正すれば可能です。

	arch19)
・・・
		sed "s/^#\(\tload_module=mpd-0\.19\.21rt-arch-dsd\)/\1/" > /var/lightmpd.conf
	arch20)
・・・
		sed "s/^#\(\tload_module=mpd-0\.20\.2rt-arch\)/\1/" > /var/lightmpd.conf
	light19)
・・・
		sed "s/^#\(\tload_module=mpd-br-01921\)/\1/" > /var/lightmpd.conf
	light20)
・・・
		sed "s/^#\(\tload_module=mpd-br-02004\)/\1/" > /var/lightmpd.conf

case文の名札とモジュール名を修正すればmpd0.20.9などに対応させることが出来ます。

usb-otg回線のタスキ掛け接続

前回、BBB/BBGを使ったタンデム構成の四つの接続方法について解説しましたが、もう一つありました。「usb-otg回線のタスキ掛け接続」です。donuts.shop73 さんに教えて頂きました。内容については掲示板にdonuts.shop73 さんの紹介と質疑応答があります。詳しくはそちらを参照して下さい。



写真はdonuts.shop73 さんのシステムを使ってusb-otg回線のタスキ掛け接続で再生中のものです。最初の写真と比較してすっきりしているでしょ。特長はシンプル/高性能/高音質です。
この方式はお勧めです。内容について簡単に紹介します。

Tandem Connection

         player(BBG)              adapter(BBB)
        +---------------+         +-----------------+
        |mpd       USB A+--line1--+miniUSB  upmpdcli| eth0 192.168.n.n
DAC <===|  usb1 10.0.0.2|         | usb0 10.0.0.1   |--line0--+ Internet
        |polipo microUSB+--line2--+USB A      polipo|             dlna control point
        |  usb0 10.0.1.2|         | usb1 10.0.1.1   |             dlna server
        +---------------+         +-----------------+


ご覧のように二台のBBB/BBGのmini/microB端子と相手側のUSB B端子をタスキ掛けに接続します。インタネットにはadapter側のETHを使って接続します。従ってタスキ掛けしない接続では必要となるUSB-LAN変換アダプターは不要となります。
高性能について説明すると、インタネット側はETH接続となるので、最高速となります。usb-otgによる対向接続はUSB-LAN接続の1.5倍の性能がでますので、この方式がトータルでみると一番性能を出せることになります。
音質は環境次第だと思いますが、僕の環境では、前回ご紹介した四つの方式の中で良好だったETH対向接続に匹敵する音がします。

donuts.shop73 さんのシステムはnetworkのipアドレスを設定するだけで使うことができます。BB二台お持ちの方にお勧めします。リンク先の掲示板への書き込みにダウンロードアドレスがあります。

(PC_Audio)   2017/06/24

コメントする

top page          previous page

mail