Raspberry Pi+ES9018K2M DAC
HOME BACK

はじめに

Raspberry PiとI2S接続するDACの第三弾で、 今回はDAC-ICとして評判の高いES9018K2Mを使用してみる。
DIYINHKES9018K2M XMOS DSD DXD 384kHz USB DACというキットを購入した。
このES9018K2Mは第一弾第二弾で使用したPCM5102Aとは違いDSDもサポートしている。

DIYINHKのDAC基板

写真左が基板の表側で、ICやチップ部品は全て装着されている。
写真右が基板の裏側でヘッダー・ピンのアサインがプリントされている。

Raspberry PiとDACの接続

Raspberry PiのI2S端子は左側写真赤丸の位置にあり、へッダー・ピンを装着する。

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

左側写真がDAC基板の裏側から見たI2S端子のピン・アサインであり、このLRCK、BCK、DATA、GNDを4本の線で右側写真のようにRaspberry Piと接続する。

トランス式変換回路

このキットの平衡-不平衡変換はOPアンプを使用した左図のようなシンプルな回路である。
ただし、このキットには回路図が添付されていないので、筆者が基板のパターンをチェックして起こしたものである。
抵抗の値はテスターで計測したら750オームであったが、残念ながらコンデンサーの値は不明であるが、数百〜数千pF程度であると思われる。
ES9018K2Mは平衡出力を有するDAC-ICであるので、OPアンプをトランスに置き換えて平衡-不平衡変換とゲイン調整をすることにした。
なお、トランスは自作トランス式DACに使用していたタムラTK-2を再利用した。

上図が最終的なトランス式回路であるが、ここに至るまでには試行錯誤を重ねた。

基板上のチップ部品を外すことができれば良いが、そのスキルを持ち合わせていないので、オリジナルのチップ部品を利用することにした。
OPアンプのNFB回路の抵抗とコンデンサーは基板のアナログ出力端子をアースすることでI/V変換に転用した。
当初、直流遮断用の結合コンデンサーを省いたが、低域が100Hzから低下を始めてしまった。
また、トランス2次側のターミネート抵抗値も周波数特性と出力電圧の兼合いから調整が必要であった。
最終的には結合コンデンサーを挿入し、トランスに直流を重畳しないことにより、周波数特性、歪率特性である程度、満足できる結果が得られた。
結合コンデンサーは無極化するために2個の同容量の電解コンデンサーのマイナス端子同士を接続してある。
電解コンデンサーは手持ちの関係で220uFを使用したが、低域は20Hzまでフラットである。

組み込み

実験用のケースにこのような感じで組み込んでみた。
直流遮断用の電解コンデンサーを配置する場所が不足したので、苦肉の策でトランスの上にスペーサーをかませて基板を載せた。

DAC基板は2組の3.3Vが必要なので、以前作った電源基板を再利用したが、できれば定電圧ICはローノイズ・タイプとしたい。

Volumio

ES9018K2M-DAC基板と合体したRaspberry Piを動作させるためのOSとして、Volumioを使用する。
このVolumioはRaspberry PiとI2S接続するDACの第一弾でも採用している。
導入の詳細は「ここ」を参照してもらいたい。
VolumioのサイトからRaspberry Pi用の最新版Volumio1.55PIをダウンロードし、SDカードに書き込みRaspberry Piに装着した。
各種設定の後、I2S driverとして、とりあえずGENを選択したが、ES9018K2Mを認識してくれない。
他のドライバーに変更してもだめであった。

ネット検索するとVolumioのフォーラムで「このような書き込み」を見つけた。
Volumioを使い、 I2SでRaspberry PiとES9018K2Mを接続する場合、GUIの設定だけではだめでテキスト・ベースでファイルを編集する必要があるとのこと。
編集する最初のファイルは/etc/modulesであり、以下のように書き換える。
snd_soc_core
snd_soc_bcm2708_i2s
bcm2708_dmaengine
snd_soc_pcm1794a
snd_soc_rpi_dac

次のファイルは/etc/asound.confであり、以下のように書き換える。
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

最後のファイルは/etc/mpd.confであり、以下のように書き換える。
audio_output {
type "alsa"
name "Output"
device "hw:0,0"
mixer_control "Playback Digital"
mixer_device "hw:0"
mixer_index "0"
dsd_usb "yes"
}

書き換え後、リブートしたが、ES9018K2Mを認識してくれない。

改めてvolumioのフォーラムを確認すると

Volumio 1.4, 1.5 and 1.51 needs to be tricked to play music through the ES9018K2M. If you select a generic DAC driver, you cannot use it for audio output directly using the GUI.

どうやら上記のファイルを編集することで認識させることができるのはVolumio 1.4,1.5,1.51に限定されているようである。
VolumioのサイトからVolumio1.51PIをダウンロードして上記の設定を行ったら無事、ES9018K2Mを認識した。

root@volumio:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpirpidac [snd_rpi_rpi_dac], device 0: RPi-DAC HiFi pcm1794a-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

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

# uname -a
Linux volumio 3.12.26+ #702 PREEMPT Wed Aug 6 17:43:49 BST 2014 armv6l GNU/Linux

# mpd -V
Music Player Daemon 0.19.1

なお、Volumio1.4でも試したところ、認識できている。

Voyage Mubox

Voyage MuBoxVoyage MPDのARM用platformsで、筆者はすでにRaspberry Piにインストールしているが本機でも使用してみた。
インストールの詳細は上記を参照してもらいたい。

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_core
snd_soc_bcm2708_i2s
bcm2708_dmaengine
snd_soc_pcm1794a
snd_soc_rpi_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: sndrpirpidac [snd_rpi_rpi_dac], device 0: RPi-DAC HiFi pcm1794a-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

特性

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

周波数特性であるが、高域は10kHzから低下が始まっているが、 これはI/V回路の抵抗と並列に入っているコンデンサーの影響と思われる。

歪率特性では100Hz、1kHz、10kHzは揃っているが、最小の歪率が0.05%程度と良くない。

まとめ

実際にシステムに組み込んで聞いてみると、出力電圧が1Vと他のDACの半分程度しかないのがネックとなっており、音量が若干、不足する。
しかし、定位が非常にはっきりとしており、音像が前に展開し、ソースの録音の良し悪しが良く分かるのは好ましいと思う。
ES9018K2Mを導入した目的にDSDの再生があったが、残念ながら現状ではDSDを再生すると音が途切れてしまう。
しかし、手持ちのDACでは、今まで、DSDの再生は全く出来ていなかったので、音は途切れてしまうが一歩、前進した感じである。
DSDの再生ではRaspberry Piの動作が非常に重くなるので、より高性能なBanana Proと組み合わせるとどうなるか試してみたい。

追補

ES9018K2MとBanana Proを組み合わせてみた。

長めの接続ケーブルを作り、写真のようにBanana ProとES9018K2MをI2Sで接続した。
ネットから拾ってきたDSDの楽曲ファイルをBanana ProのHDDに格納し、MPDクライアントのGMPCで再生しようとしたが、楽曲ファイルがデータとして認識されない。
Raspberry PiとVolumioやVoyage Muboxの組み合わせでは、GMPCで問題なくDSDの楽曲ファイルを認識できている。
Banana Proにインストールしたmpdのバージョンは0.16.7と古いのでこのあたりに問題がありそうである。
以下のコマンドでmpd関係を最新のものにした。
# apt-get install mpd mpc
# apt-get install alsa-utils
Banana ProをリブートするとGMPCで認識でき、楽曲ファイルも問題なく再生できた。
mpdのバージョンは
# mpd -V
Music Player Daemon 0.19.1
となった。

これがGMPCでDSDファイルを再生した時、表示された情報である。
Codec:dsfとなっているのでDSDファイルが再生できている。
次に以下のコマンドで、DSDファイルを再生した時のDACデバイスの情報をチェックしてみた。
#cat /proc/asound/card1/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S24_LE
subformat: STD
channels: 2
rate: 192000 (192000/1)
period_size: 4096
buffer_size: 16384
これはPCM192kHz24BIT楽曲ファイルを再生した時と同じとなったので、もしかするとDSDをPCMに変換して再生しているのかもしれない。

追補その2

新たにBanana Proを購入したので、実験的にRaspberry Piと入れ替えてみた。
予想されたことだが、このケースではHDD関係等のケーブルの取り回しが困難で、HDDの格納場所も問題がある。
大きめのケースを用意してBanana Pro、HDD、ES9018K2Mを組み込んだサーバーにしてみたいが、現状のままでは出力電圧が1Vと他のDACの半分程度しかないところが気になっている。

この詳細は 「Banana Pro + ES9018K2M DAC」 でどうぞ。

追補その3

DIYINHKを覗いていたら、 ES9018K2M XMOS DSD DXD 384kHz USB DACが大幅値引きのUSD39.95で売られていたので、思わず購入してしまった。
と言うのも、このDAC-ICは平衡出力を有しているが、それをそのまま差動アンプで増幅してみたいと思ったからである。
本機でもトランスを使用して平衡出力を変換して不平衡出力も得ているが、メイン・アンプが平衡入力に対応していれば、不平衡出力への変換というプロセスを省くことができる。
今回も実験的な要素が強いので、手持ちの器材で使用していたFET差動バッファ・アンプを改造して組み合わせることにした。

このFET差動バッファ・アンプは不平衡型アンプであるが、簡単に平衡型アンプに改造できる。

改造後の回路は以下のとおりであり、差動の平衡型アンプとなっている。

周波数特性であるが、トランス式よりも帯域が伸びており、出力も2Vを確保できるようにゲインを調整した。
歪率はアンプ出力の一方だけを測定系に入力して計測したが、-20dB以上におかしな動きが見られる。
平衡アンプの方がトランス式の倍の出力レベルがあるが、音はイマイチの感があり、トランス式と聞き比べているところである。

追補その4

前述した差動アンプの歪率特性がイマイチだったので、このキットのオリジナルであるOPアンプを使用したI/V変換を試してみた。
当然、出力は不平衡となるが、まだ、平衡出力を諦めていないので、OPアンプの電源や出力系はかなり手抜きのバラックである。

OPアンプは+12Vと-12Vの2電源が必要であるが、ACアダプターの24V電源を2本の3.3kオームの抵抗で分割して擬似的な+12Vと-12Vの2電源とした。

OSも上述したVoyage Muboxではなく、最新のraspbian-stretch-liteを新規インストールした。
インストールの詳細は追補 Raspbian Stretch Liteのヘッドレス・インストール(WiFI編)を参照してもらいたい。
ただし、本機に使用しているRaspberry Piは初期バージョンなので、WiFiは装備されていないが、LANを使用して問題なくインストールできた。

DAC・MPD関連の設定
これもほぼ、同じであるが、ドライバー関係は以下のように設定する。
先ず、以下のファイルを作成する。
$ sudo vi /etc/asound.conf
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

次に/boot/config.txtに以下を追記する。
$ sudo vi /boot/config.txt
dtoverlay=rpi-dac
dtoverlay=sabreberry32

リブートしてaplay -lで確認すると、ドライバー等が組み込まれたことが判る。
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: sndrpirpidac [snd_rpi_rpi_dac], device 0: RPi-DAC HiFi pcm1794a-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

特性
周波数特性はFET差動バッファ・アンプよりも高域の低下が早いが、出力は2Vを確保できている。
歪率はかなり優秀な部類だと思われるが、電子電圧計で計測した無信号時の残留雑音が2.1mVもある。
Raspberry Piの5V電源をACアダプターからアナログ電源に代えると1.5mVに低下するが、 OPアンプの電源をACアダプターからアナログ電源に代えても、同じであったので、ノイズ発生源はOPアンプ以外だと思われる。
ただし、スピーカーからはこのノイズが聞こえないので、可聴帯域外で発生している可能性があるが、確認できていない。

試聴すると素直な音で、192kHz24bitのハイレゾソースも問題なく再生できるが、DSD再生では音が途切れてしまうが、これは初期バージョンのRaspberry Piの能力不足によるものである。

追補その5

OPアンプ方式にしたところ、それなりの性能が得られたが、OPアンプ用の24V電源を別に用意する必要がある。
一つの筐体に2種類の電源を接続するのは面倒であり、トラブルの原因ともなるので、電源は+5Vの単電源とし、OPアンプ用の24V電源はDC/DCコンバーターで昇圧してみることにした。
アンプ作りの参考にさせていただいているぺるけさんの「FET差動バッファ式USB DAC Version2」にぴったりのDC/DCコンバーターが解説されていたので、これを使用させていたき、部品頒布もお願いした。
これで、+5V単電源でOKとなったので、余っていたケース(タカチ YM-180)に移植することにした。

特性
周波数特性は上述した「追補その4」と同じであり、電子電圧計で計測した無信号時の残留雑音もアナログ電源使用時に1.5mVと同じである。
歪率は上述した「追補その4」よりも若干ではあるが、改善されていたので下記に示す。

本機は最終的にはES9018K2Mの差動出力をOPアンプでI/V変換した訳であるが、同様なコンセプトのRaspberry Pi Zero W + ES9018K2M DACと比べてみる。
大きな違いはWiFiのあるなしであるが、やはりWiFiがあるとLANケーブルを気にすることがなく便利である。
特性的には周波数特性に違いがあり、Raspberry Pi Zero W + ES9018K2M DACの方が高域まで延びているが、両機はES9018K2Mの差動出力をOPアンプでI/V変換しているだけなので、この違いには驚いている。
歪率特性は同様な傾向であるが、微妙な差異があり、最小歪率は本機の方が低くなっている。
比較試聴してみたが、違いはあるが、同じ傾向の音で甲乙付けがたいようである。

HOME BACK

Last Update 23/Jan/2018 by mac