Raspberry Pi+PCM5102A DAC
HOME BACK

はじめに

Raspberry PiとI2S接続するDACの第二弾である。
第一弾は「Interface 2014年9月号」に紹介されていたIrBerryDACを使用し、平衡出力にしたりと実験的なこともしているので、未だにバラック状態である。
実はRaspberry Piはもう1台あり、こちらはI2S接続するDACとして真面目に組んでみようと思い、DIYINHK384kHz/32Bit PCM5102A DAC, I2S input, Ultra Low Noise Regulatorというキットを購入した。
このPCM5102Aは第一弾のIrBerryDACでも使われているのと同じDAC ICである。
WEB上で注文してから1週間後に到着し、支払いはPayPalである。

DIYINHKのDAC基板

下記写真左が送られてきた基板で、ICやチップ部品は全て装着されている。
写真右が電源端子、AF出力端子、ヘッダー・ピンを取り付けた状態である。
キットに入っていたのは、基板と端子類だけで取説等は一切なく、DIYINHKのサイトを探したが、マニュアル類は見つからなかった。

電源とAF出力端子は分かるが、ヘッダー・ピンをどのように使うのかが問題となるが、基板上にヘッダー・ピンのアサインが記されており、これで類推せよと言うことらしい。
Raspberry PiとI2S接続するためには、LRCK、BCK、DATA、GNDの4本だけでOKだと思われるが、基板上にはその他、MUTE、FLT、DEMP、CN2の気になるポートがあるが詳細は不明である。

PCM5102AのマニュアルによるとFLTについては「The PCM510xA provides 2 types of interpolation filter. Users can select which filter to use by using the FLT pin」と記載されている。

基板上の「1」にテスターを当てて計測すると電圧は3.3Vであったので、「FLT」と「1」を短絡すると内部のフィルターがNormalからLow-latencyに切り替わると思われる。




DEMPについては「De-emphasis control for 44.1kHz sampling rate(1): Off (Low) / On (High)」と記載されているが、アップ・サンプリング機能のことなのであろうか。

Raspberry PiのI2S端子

Raspberry PiのI2S端子は左側写真赤丸の位置にあり、へッダー・ピンを装着する。
ところが、筆者のRaspberry Piはこの8ピンの片側列のホールが半田で埋まってしまっていた。
このRaspberry Piはかなり初期のロットであるが、IrBerryDACと組み合わせた別のRaspberry Piはそのような事がなかったので、ロット固有の問題か と思われる。
仕方ないので、半田吸い取り線で埋まっていた半田を除去して8ピンのヘッダーを装着した。

これがI2S端子のピン・アサインであるが、このLRCK、BCK、DATA、GNDを4本の線でDAC基板のLRCK、BCK、DATA、GNDと接続することになる。

組み立て

今回もスクラッチから組み立てたわけではなく、左側写真のケースに入ったRaspberry Piを再利用した。
ケース内部左側にDAC基板を載せるスペースがあるが、このレイアウトではI2S接続の信号線が長くなってしまうが我慢することにした。

写真左のようにDAC基板、電源回路、RCAコネクターを配置した。

IrBerryDACでは、Raspberry Piへの電源供給はIrBerryDAC経由で、しかも電源回路には高品質コンデンサーが使用されるなど、かなり工夫されている。
本機ではRaspberry PiとDAC基板へは別々の+5Vラインで供給するが、回路図のような簡単な電源回路を追加した。
効果は不明であるが、Raspberry PiとDAC基板への+5Vラインは抵抗とフェライト・ビーズで分離し、手持ちの普通の電解コンデンサーを装着した。

Raspberry PiとDAC基板を接続する信号線である。

水色がGND

赤色がDATA

緑/灰色がBCK

茶色がLRCK

volumio

DAC基板と合体したRaspberry Piを動作させるためのソフトとして volumioを使用するが、この設定方法は Raspberry Pi+IrBerryDACと全く同じである。
ただし、固定IPだけは変えてある。
具体的にはRaspberry Pi+IrBerryDACで使用しているSDカードのコピーを作成して、本機に装着してブートするだけである。
コピーの方法はこのページの下の方にある「バックアップ」を参照してもらいたい。

特性

PCにインストールしたefu氏のテスト信号発生ソフト WaveGeneでいろいろな周波数、いろいろなレベルの192kHz24BITの サイン波を発生させ、waveファイルとしてNASに格納した。
それを再生しDACのアナログ出力電圧を計測してみた。
1kHz0dBFSを再生すると出力電圧は2.10Vで、残留ノイズは0.1mVとなった。

周波数特性の傾向はRaspberry Pi+IrBerryDACと同じである。
歪率特性では100Hz、1kHz、10kHzがRaspberry Pi+IrBerryDACほどには揃ってはいないが、傾向としては同じである。

トラブル・シューティング

いろいろといじっている内にRaspberry Piのブートが不安定になり、ついに基板上の電源LEDも点灯しなくなってしまった。
Raspberry Piの電源ケーブルはマイクロUSB端子のBタイプであるが、これを別のモノに換えてもダメであった。
最後の手段として電源ジャックを経由しないで電源を供給してみた。
Raspberry PiのJ1ヘッダーには+5V端子とアース端子があるので、ここへ直接、電源を接続してみたところ、無事、ブートすることができた。

写真の2ピン、4ピンが+5V端子で9ピンがアースとなっている。

Raspberry Piでは携帯電話のケーブルを流用するため、電源にマイクロUSB端子を採用したと思われるが、この部分が今回のトラブルの元になっているような感じがある。

まとめ

最終的な内部配線の状況は写真のようになった。

TI PCM5102Aのマニュアルには、AF出力に470オームと2200pFのLPFを外付けするように推奨しているが、DIYINHKのDAC基板に、このLPFが組み込まれているのか不明であった。
そのため、470オームと2200pFのLPFを外付けして周波数特性を計測したら、高域がかなり低下してしまった。
基板上をよく観察したら470オームのチップ抵抗とコンデンサーが見つかったので、LPFはすでに基板上に配置されていると思われる。

当然であるが、音はIrBerryDACを使用した第一弾と同じ傾向である。

追補

サンハヤト株式会社からPCM5102Aを使用したDACモジュール MM-51022が発売された。
その 取扱説明書にOSとしてRaspbianを使用した場合の設定方法が記載されていたので、試してみた。
筆者はRaspbianにmpdを組み込んでRaspberry PiをMusic Serrverとして使用していたので、そのimgファイルをSDカードに書き込み、それを改造した。
ベースになったRaspbianは2014-01-07-wheezy-raspbianである。

先ず、/etc/modulesを赤字で示したように修正する。
pi@raspberrypi:~$sudo vi /etc/modules
#snd-bcm2835
snd_soc_bcm2708
bcm2708_dmaengine
snd_soc_pcm5102a
snd_soc_hifiberry_dac

次に/etc/asound.confを作成し、以下の内容を書き込む。
pi@raspberrypi:~$sudo vi /etc/asound.conf
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

以上で設定は終了である。
再起動して以下のコマンドで確認する。
pi@raspberrypi:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
Subdevices: 0/1
Subdevice #0: subdevice #0

192kHz24BITの楽曲ファイルを再生すると問題なく聴くことが出来た。

これに気をよくして最新の2014-09-09-wheezy-raspbianをダウンロードしてmpdを組み込み、上記の設定を施した。
しかし、こちらでは192kHz24BITの楽曲ファイルを再生すると音切れが発生してしまい、聴けたモノではない。
ただし、44.1kHz16BITでは問題なく再生できるので、いろいろといじってみたが解決には至っていない。
さらに、このRaspbianではデフォルトでSSHサーバーが動作しておらず、ディスプレーとキーボードを接続して、設定画面からそれをenableする必要があった。

まともに聴けた方のバージョンは以下のとおりである。
pi@raspberrypi:~$ uname -a
Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l GNU/Linux
pi@raspberrypi:~$ mpd -V
mpd (MPD: Music Player Daemon) 0.16.7

当たり前であるが、volumioでは全く問題なく192kHz24BITの楽曲ファイルを再生できている。
volumioのバージョンは以下のとおりで、Raspbianよりも新しいので、わざわざ、使いにくいRaspbianで苦労するよりも素直にvolumioを使えと言うことなのかもしれない。
pi@volumio:~$ uname -a
Linux volumio 3.10.36+ #662 PREEMPT Fri Apr 4 18:31:16 BST 2014 armv6l GNU/Linux
pi@volumio:~$ mpd -V
Music Player Daemon 0.18.10

Voyage Mubox

Voyage MuBoxVoyage MPDのARM用platformsで、筆者はすでにBeagleBone Blackにインストールしているが、Raspberry Piバージョンもあったので、トライしてみる。

Raspberry Piブート用のSDカードを作成するわけであるか、この作業には
1. You need a Linux machine (could be x86, ARM based or any architecture)
2. a SD card and a compatible card reader
が必要である。

筆者はVoyage MPDをインストールしたMini-ITX PC(x86)をNASとしているので、これを使用し、4GB SDカードに書き込んだ。

先ず、 installation scriptをダウンロードしてLinux machineに格納し、 スプリクトを実行できるように属性を変える。
root@voyage:~# chmod 755 install-mubox-rpi.sh
4GBのSDカードをカード・リーダーに装着し、Mini-ITX PCのUSBポートに挿し込み、dmesgコマンドでデバイス名を確認する。
root@voyage:~# dmesg
[25508.595192] sd 4:0:0:0: [sdb] 7698432 512-byte logical blocks: (3.94 GB/3.67 GiB)
[25508.595805] sd 4:0:0:0: [sdb] Write Protect is off
[25508.595830] sd 4:0:0:0: [sdb] Mode Sense: 03 00 00 00
[25508.596566] sd 4:0:0:0: [sdb] No Caching mode page present
[25508.596592] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[25508.599816] sd 4:0:0:0: [sdb] No Caching mode page present
[25508.599845] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[25508.600707] sdb: sdb1 sdb2
となり、デバイス名は/dev/sdbであることが判った。

以下のコマントで書き込みを行う。
# ./install-mubox-rpi.sh /dev/sdb
下記のメッセージが出ると書き込み完了である。
Voyage MuBox for RaspBerry Pi installed!

ただし、筆者の場合、以下のアプリをインストールする必要があった。
# apt-get install curl dosfstools
# apt-get install ca-certificates

このSDカードをRaspberry Piに装着し各種の設定を行うが、その手順はBeagleBone Blackと同じなので割愛する。

次にI2S関係の設定である。

最初に /boot/config.txt を赤字のように編集する。
# vi /boot/config.txt
gpu_mem_512=16
gpu_mem_256=16
#dtoverlay=hifiberry-dacplus
device_tree=

次に/etc/modulesを赤字のように編集する。
# vi /etc/modules
snd_soc_bcm2708
bcm2708_dmaengine
snd_soc_pcm5102a
snd_soc_hifiberry_dac

念のため、/etc/asound.confが以下の内容であることを確認する。
# less /etc/asound.conf
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

Raspberry Piをリブートし、DACの状況を確認すると下記のようになった。
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pc
m5102a-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

Voyage Muboxのバージョンは以下のとおりで、ハイレゾ・ソースも問題なく再生できた。

# uname -a
Linux voyage-mubox 4.1.13+ #826 PREEMPT Fri Nov 13 20:13:22 GMT 2015 armv6l GNU/Linux

# mpd -V
mpd (MPD: Music Player Daemon) 0.17.6-DSD

HOME BACK

Last Update 22/Nov/2015 by mac