Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。 記事の転載や、基板・キットの商用利用の方は、ご連絡ください。学生やサークルの学習目的でまとめてご購入する場合は特別価格でご提供させていただきます。

スポンサー

無料ブログはココログ

« SB32+PRO DoP 初期ロット納入 | トップページ | SB32+PRO DoPの専用ページつくりました »

2019年2月 8日 (金)

mpdにちょっとしたバグがあるので

ツイッターの方でちらっと投稿しましたが、MPDのDoP出力まわりにバグがあります。

DSDを再生したとき、様子がおかしい。。。 DoPマーカーが付いていないじゃないか!

現在最新のvolumio2もmoodeでも同様で、dop "yes" と指定していてもPCM変換されてしまいます。

 

Dop01

  << DoPではなくPCMが出力されている >>

先日の記事のとおり /etc/mpd.confに以下の1行を追記すると

 audio_output_format  "*:32:*"

 

CDからリッピングしたWAV/FLACのI2S信号は16bitモードではなく32bitモードで出力されるようになります。

ここまでは正しい動作です。

 

 

mpd.confに32bit出力を指定するとDoP出力できない

DSDを再生したときにDoPではなく、PCM変換が働くようになっていました。

ためしに、audio_output_format  "*:32:*" を削除すると

 

Dop02

 << DoPマーカー付きでDSDがI2Sに出力されている >>

このようにDoPが出力されます。

 

MPDの不具合? mpd.confで対処できない

静止したオシロ波形では8bitのマーカーの判別はちょっと分かりにくいですが、2.8MHzDSDを再生したDoP出力は176kHzが正解です。一番上の写真では384kHzになっていますね。

再生しているfsを見るだけなら下記のコマンドでも確認可能です。(正確に判断するにはマーカーの有無をちゃんとみないといけない。)

$ cat /proc/asound/card0/pcm0p/sub0/hw_params

(環境によりcard1の場合もある)

MPDオプションを調べて色々試してみたのですが、どうもダメなようです。これはバグですね。

 

2.8MHzDSDをDoP出力すると fs=176.4kHz になります。

dsd2pcmでPCM変換されると2.8MHzの1/8(=352.8kHz)になります。DACが352kHzに対応できないときはDACの最高fsに変換されます。

 

 

2つの対策案

正攻法として、

 1.MPDのバグを修正する。

でも、手軽なのは、

 2.PCM5122ドライバを改変して16bitサポートを切る。

※ PCM5122は16bitもサポートしているけど、このときのSB32+PROは32bitのみ対応だったので、16bit-I2S信号をだすと倍速再生してしまいました。

 

 

PCM5122ドライバを改変

MPDをコンパイルするのは、わりと大変なのでドライバをサクっと改変してみました。

ドライバソースpcm512x.c の snd_soc_dai_driver pcm512x_dai の中の

   .formats = SNDRV_PCM_FMTBIT_S16_LE |
               SNDRV_PCM_FMTBIT_S24_LE |
               SNDRV_PCM_FMTBIT_S32_LE

赤文字の部分を削除すると16bit対応がなくなり32bitモードで出てきます。 24bitはRPiが対応していないので、残った32bitモードだけになるからです。

これで完璧です。mpd.confに32bit出力を指定しなくても32bit-i2sで出るしDSDを再生するとDoPマーカーがちゃんと付きます。

ですが、せっかく専用ドライバが無くなるのに、またドライバが必要なのか?という残念なことになてしまいますね。

 

 

第3の案

ES9218Pデータシートをよく見るとマスター時に16bitをサポートできることが判明いたしました。(スレーブでは従来から16bit対応できてます)。 MCLKとデバイダーの関係もシステムクロックをちょっと工夫することで対応可能っぽい。

ということで、第3の対策案です。

最初からちゃんと読め!ってことなんですけども SB32+PRO DoPのファームウェアを変えてテストしてみました。

完成したファームウェアは、PCM5122との互換性が高まり、mpd.confも触らずにすむようになりました。

 

めでたしめでたし ということで出荷準備に入ろうと思います。

 

 

 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村
ブログランキングに参加中です。 めざせ1位! 
もしよろしければ「ぽちっと」お願いします。 

 

 

« SB32+PRO DoP 初期ロット納入 | トップページ | SB32+PRO DoPの専用ページつくりました »

SB32+PRO DoP」カテゴリの記事

コメント

対応お疲れ様です
読む分には見つかって、結果これで行けます
みたいに見えますが
すごく大変だったのでは?
僕ら側は、買って使わせてもらう
それしか出来ませんが
頑張ってください
新基盤通販で買うつもりですが
時期が合えば大阪に買いに行く予定です
楽しみにしています

クドウさん

ですね。 mpdの設定でどうにかできないか? など調査とトライ・アンド・エラーを繰り返して3日間。PCM5122ドライバ改変で1日。
PICのファームウェア改変で1日。 デバッグ2日間。

などなど、時間はかかりましたが、結果的に何も気にしないで動くようになったので良かったです。

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: mpdにちょっとしたバグがあるので:

« SB32+PRO DoP 初期ロット納入 | トップページ | SB32+PRO DoPの専用ページつくりました »

サイト内検索

Sponsors link

2019年10月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31