• InnoMaker HiFi DAC HATがAmazonで買える様です

    こんにちはbunです

    しばらく前に一部で盛り上がった廉価なマスターモードのI2S DAC HAT(InnoMaker HiFi DAC HAT)が
    Amazon JPからも買えるようになった模様です。

    https://www.amazon.co.jp/InnoMaker-Raspberry-PCM5122-Audio-Expansion/dp/B07TFHNPCB

    私は既に直販で手に入れているので買っていませんが国際通販の面倒が無い分入手しやすくなったのではと思います。

  • :sushi: @bun さん

    innoは拙宅でフル稼働しています。
    moctさん方式の威力は絶大でした。
    マスターモードに取り組むきっかけをいただいたmoctさんにとても感謝しています。

    Amazonの在庫は翌日配送ですね!
    私は海外発送で送料をケチったので、2週間ぐらい待たされたような思い出があります:relieved:

  • ここで質問することが適当かどうかよく分からないのですが、溺れる猿は藁をもつかむということで、ご容赦を:joy: 。

    キツネDAC(Holo Audio Spring 2 DAC)を、TX_C1というHDMI基板を使い、rpi_3bと接続しています。この時、TX_C1とrpi_3bの間にInnoMaker HiFi DAC HATを入れないと再生が出来ません。dtboはallo-boss-dac-pcm512x-audio.dtboを選択することになります。DACとのhdmi接続ではmclkを使っていないので、HiFi DAC HAT無しで、直接rpiのGPIOとTX_C1のピン(data、sclk、lrck)を接続して、rpi-dac.dtboを指定しても、再生が出来るのではないかと思うのですが、駄目です。
    この理由がよく分からないのですが、お猿にも分かるように教えて頂けないでしょうか。

    ちなみにキツネDACは標準的なDACチップを使わず、r2rという特殊な方式でDA変換するDACなので、これが災いしているのかなと考えました。それで、Gustard x20というes9018チップを使ったハードでも試したのですが、同じ結果でした。Passさんのところの逢瀬DACはdtboにrpi-dacやhifiberry-dacを使い、PCM、DoP共に問題なく再生できるということなので、HDMI基板の問題なのかなとも考えるのですが、お分かりの方いらっしゃいますでしょうか。:confused:

  • @yo さん

    どのように結線しているか写真をアップしていただければと思います。プロに診断していただきましょう:wink:

    ソフトの問題では無いとは思うのですが、、、v0.9β以降はinnoでしか音出ししていないので、スレーブモード(rpi-dac)での動作確認はしておりません。
    v0.9系の不具合という可能性もゼロではありません。

  • @パパリウス さん

    こんな感じです。
    全体
    I2S.JPG
    C1
    c1.JPG
    HUT側面1
    hut1.JPG
    HUT側面2
    hut2.JPG

    謎はとけますか ?

  • @yo さん

    rpi-dacモードの時はHIFI DAC HATは外してますよね?

  • @yo さん

    一度poweroffで電源を切った後、改めて電源ONにしてみてください。


    HiFi DAC HATをマスターモード起動した状態からは、再起動(reboot)ではモードがうまく切り替わりません。

    例えば、config.txtを

    dtoverlay=allo-boss-dac-pcm512x-audio,slave
    

    に変更するとHiFi DAC HATをスレーブモードで動作させることができるのですが、再起動ではモードが切り替わらず、一度電源を落として立ち上げ直す必要がありました。

    使い始めた当初、この動作に気付かずハマったことがあります。

  • @Passさん

    不精をして:white_frowning_face: 、元の接続に戻した状態で写真をとりましたが、確認はHUTを外して行っています。繫ぎ方は、当然、同じにして確認しました。

    それで

    パパリウスさん

    dtoverlay=allo-boss-dac-pcm512x-audio,slave
    

    で音が出ることは確認しています。

    説明と掲載した写真が不十分でした。「hdmi接続で、mclkを使わないDACを、HUTを外した状態で、rpi-dac.dtboを指定して、音が出ないのは何故か」という質問です。

    pi@smpd:~ $ cat /proc/asound/cards
     0 [sndrpirpidac   ]: snd_rpi_rpi_dac - snd_rpi_rpi_dac
                          snd_rpi_rpi_dac
    

    でC1が認識されていることは確認しています。
    また、ympdで再生も開始するのですが、キツネ側はUNLOCK状態です。

  • 拙宅で追試してみました。

    DAC HATを繋いだ状態ですが、rpi-dacだと音がでません。
    DAC HATを外したとしても、恐らく同じ状況になると思います。

    v0.8.15まではDAC HATを使わず、rpi-dacで音出ししていました。
    ソフトウェアの問題だとすると、v0.8.15以降のどこかで発生した問題だと思います。

    ちょっと調べてみますね。


    追記

    sudo systemctl disable dsctr
    

    としたあと、再起動してみてください。

    拙宅では、これでrpi-dacでも起動音がなるようになりました。(environmentでS32を指定)
    DAC HATを接続したままの状態です。

    ただし、mpdではロック切れが頻発して音がでません。
    mpd.confで32bit変換を有効にすると音がでるようになりました。

    あとは/home/pi/configs/environmentで

    MPD_SETTING_44100=147,2,13,2300
    

    を

    MPD_SETTING_44100=147,2,4,2300
    

    ぐらいに設定すると音にも落ち着きが出てきました。


    拙宅での結果をまとめると、0.9系でrpi-dacで音をだすには、

    • dsctrサービスを止める
    • 32bit変換を指定する

    という設定変更が必要でした。

    32bit変換しないとrpi-dacで音が出ないというのは、ソフトウェアのバグだと思います。
    rtalsaか、xsinkか、ドライバの作りに問題があるのだと思います。


    dsctrサービスは、GPIOのdrive strengthを設定するサービスです。

    v0.8系の途中で導入していましたが、自動起動は無効にしていました。
    拙宅で動作確認を続け、v0.9系から自動起動を有効にしたという経緯があります。


    dsctrの実体は/usr/local/bin/dsctrです。

    引数なしで sudo dsctr を実行すると、現在のdrive strengthを表示します。
    PADS0の行がI2Sに関わるGPIOピンの設定になります。

    引数には0〜7の数値を指定します。
    0 : 2mA
    1 : 4mA (smpd v0.9系の設定値)
    2 : 6mA
    3 : 8mA (RPiのデフォルト値)
    4 : 10mA
    5 : 12mA
    6 : 14mA
    7 : 16mA

    実行例 : 引数なし

    pi@smpd:~ $ sudo dsctr
    PADS0: 0000001B (00000003) ←現在値(8mA)
    PADS1: 0000001F (00000007)
    PADS2: 0000001B (00000003)
    

    実行例: 8mA(引数3)から10mA(引数4)に変更

    pi@smpd:~ $ sudo dsctr 4
    PADS0: 0000001B (00000003) ←変更前(8mA)
    PADS1: 0000001F (00000007)
    PADS2: 0000001B (00000003)
    PADS0: 0000001C (00000004) ←変更後(10mA)
    

    dsctlサービスでは、引数を1で実行しています。
    つまり、v0.9系は起動時にdrive strengthを4mAに設定しています。


    dsctlのソースをアップしておきます。
    dsctr.tar.gz

    tar xzf で解凍して、

    gcc dsctr.c -o dsctr
    

    でビルドします。


    drive strengthの適切な値は環境によって異なるということですね。
    (当たり前と言えば当たり前ですが、、、)

    次にSDイメージを作り直す際に、dsctlの自動起動はOFFにしておこうと思います。

  • @パパリウスさん

    調査ありがとうございました。
    キツネはdsctrをdisableにしただけで、音は出るようになりました(DEFAULT_SAMPLE_FORMAT=S16のまま)。このあたりはDAC(チップ)によって変わるということなのですかね。
    こうなると逆に不思議なのは何でPassさんの逢瀬DACはdsctrがenableなのに何故動くのかですね。

    dsctrの解説とソースの公開ありがとうございます。参考になりました。案外簡単にビルド出来るのですね:relaxed: 。ダウンロード用イメージに開発環境もそのまま残されているということですか。興味深いです。
    なるほど、ジャイアンさんとsunatomoさんが遊びまくるわけだなと納得しました。

  • @yo さん

    こうなると逆に不思議なのは何でPassさんの逢瀬DACはdsctrがenableなのに何故動くのかですね。

    後付けですが、drive strengthはGPIO出力の最大電流値を決定する項目なので、この値を下げた事でドライブ能力が低下してデジタル波形に歪が発生したのではないかと思います。

    波形の歪具合は受け側の入力インピーダンスによって変化しますし、波形の歪があっても引き込める能力があれば動作可能範囲となる事もあります(音は劣化しますが。。。)

    この辺り、アナログだと劣化しながらも音は出るのですが、デジタルは許容範囲を超えると音が出なくなるので厄介ですね:disappointed_relieved:

    ところで、HIFI DAC HAT有りの時と音の差はどんな感じでしょうか?

  • @Pass さん

    ところで、HIFI DAC HAT有りの時と音の差はどんな感じでしょうか?

    聞くだけ野暮です:relaxed: 。
    パパリウスさんに折角調査して頂いたのに、「やっぱりHUTの方が音はいいので、すぐに元に戻しました」なんて書けるわけがないでしょ:cry: 。

  • せっかくdrive strengthの話題がでましたので、拙宅での傾向をお伝えしておきます。

    a038bfa2-5b89-4c37-9494-365ec2da42e4-image.jpeg

    最初は「drive strengthを大きい値に設定しておけば、音質が良くなるのではないか」と仮説を立てて取り組んでみました。

    ですが、2mAから16mAまで徐々に引き上げていったとき、音質は良くなったり悪くなったり、でたらめでした。

    だんだん良くなるとか、だんだん悪くなるとか、そのような単純な傾向は見られませんでした。

    具体的には、

    最も良い・・・4mA
    やや良い・・・2mA、6mA、10mA
    デフォルト(判断基準)・・・8mA
    やや悪い・・・12mA、14mA
    煩い・・・16mA

    という試聴結果でした。

    inno HiFi DAC HAT使用時という条件では、当初の仮説は誤りで、drive strengthを上げすぎるのは良くないと結論しています。

    試聴結果から推測したのは、

    • 経路が多いと煩く聞こえる(8mA,12mA,14mAは3経路、16mAは4経路)
    • drive strengthが低すぎると良くない(2mAのケース)

    つまり、出力が足りなくならない範囲で、経路が少ないほど、かつdrive strengthが低いほど 良いのではないかと仮説を立てています。

    HiFi DAC HATで言えば、2mAでは出力に不足が生じ、経路が2経路である4mA/6mA/10mAの中でdrive strengthが最も低い 4mA をsmpdの初期値としました。

    聴感のみで判断していますので、技術的な裏付けがあるわけではありません。

    皆さんのご感想も伺ってみたいところです。

  • @パパリウス さん、Pass さん

    興味深い結果ですね:grinning: 。
    HUTに戻した状態で、dsctr 0とdsctr 7で比較しました。確かに、0の方がクリアという感じがします。Dash Boardのグラフで確認しても、0の方が綺麗な形をしています。
    通るパスが少なく、ギリギリの値を設定した方が良いというのは、バッファ値なんかの設定と同じですね。

    この件(何故、rpi-dacで音が出ないか)は、僕とPassさんで「変だ」とか、「謎だ」とか、「不思議だ」とか、メールのやり取りをしていました。どうにも分からず、ここで質問して、結果的にこのような実験が出来たのは、「怪我の功名」ということかしら:relieved: 。

  • @パパリウス さん

    この話は電源を変えるとなぜ音が変わるのかという理屈と通ずるものがあるのですが。。。掘り下げるとややこしいので電源スレでも発言を避けてました:relieved:

    結論のみを言うと、drive strengthに関しては接続している電源やDACによって適正値が変わってくるはずですので、dsctlの自動起動をOFFにするのではなく、config.txtなどで設定を安易に変更できるようになりませんか?

    @yo さん

    ようやく謎が解けましたね。やっぱりややこしくなった時は複数の頭で考えるべきですね:blush:

  • @Pass さん @yo さん

    環境依存の差異、、、なにが原因だろうと記憶を辿って、drive strengthに思い当たってギクリとしました。

    導入当初は、dsctrを有効にすべきかどうか、初期値をどうすべきか、環境に依存する部分であるため、随分と悩みました。

    v0.9βでdsctrを有効にした状態でも目立った不具合の報告が無かったものですから、杞憂であったかと、そのまま導入に至りました。


    Passさんのおっしゃるとおり、設定しやすくした上で、十分な説明を尽くすというのが望ましいですね。

    configs/environmentでdsctrの設定をできるようにしたいと思います。

  • @bun さんへ
    こちらのDAC(InnoMaker HiFi DAC HAT)に興味があるのですが、このDACは I2S DAC対応表 (I2S DAC-Driver Compatibility Table) | symphonic-mpd にはこのDACが掲載されていませんので、I2S DACはどのように指定するのでしょうか?

  • @ s1showさん

    ドライバーはallo-boss-dac-pcm512x-audioです。
    据え置きI2SDACと接続するのであれば、audio_output_format "*:32"をに指定してください。

    それで動くと思います。

  • @s1show さん

    inno HiFi DAC HATは本フォーラムでも利用者が多いので、サポートを得やすいと思います。
    私もメインシステムで利用中ですので、何かご質問があれば遠慮無くどうぞ。

    YoさんはkkumaxさんにMCLKも取り出してもらったそうですよ。:grinning:

  • @Pass さんへ
    早速ご教示いただきありがとうございます。
    他にもアマゾンで買うものがありますので、あわせて買ってみようと思います。
    それにしても、「据え置きI2SDAC」というのは初耳ですが、RasPiにDACを乗せてさらに別のDACに繋ぐという発想はありませんでした。
    勉強することがたくさんありそうです。