Re: combo384でもnative-dsd playback

3,090 views
Skip to first unread message
Message has been deleted

digi...@gmail.com

unread,
Mar 9, 2016, 10:11:40 AM3/9/16
to lightMPD
takobozuさん

> comobo384所有者です。rpiとcombo384でnative-dsd再生ができるようになるんでしょうか?
rpi以外の機種では対応はすんでいるのですが、生憎combo384に繋がるDACの手持ちがなくテストできていない状態です。
rpiは現在調整中です。
rpi,rpi2は近々1.02を提供するよていで、1.02のカーネルではcombo384のnative-dsdに対応する予定です。
その他の機種はカーネルだけアップデートします。

karas...@gmail.com

unread,
Mar 11, 2016, 12:44:05 AM3/11/16
to lightMPD
digififan 様

横から失礼します。
ラズパイはMPDもアップデートするみたいですが、
APU1cなどにも流用できるのでしょうか?

combo384もありますが、Mytek Brooklyn DACもあるので気になるところです。

digi...@gmail.com

unread,
Mar 11, 2016, 7:53:38 AM3/11/16
to lightMPD
karasawa998さん

> ラズパイはMPDもアップデートするみたいですが、
> APU1cなどにも流用できるのでしょうか?
raspi2は現在のファームウェアではkernel-4.4がbootできないので、ファームウェアも含めてパッケージ自体のバージョンアップとして対応します。
機能的にはmixerの対応を追加しますがmpdなどのバージョンはアップしません。
raspi2の対応はすんでるのですが、raspiが遅れています。raspi、raspi2を同時に出す予定です。

> combo384もありますが、Mytek Brooklyn DACもあるので気になるところです。
combo384も Mytek Brooklyn もテスト出来ないのですが取り合えず対応だけはしてあります。
最新版は4.4.4rt11です。必要があれば早出しできます。

あと、mpdのdsd2pcmを改造したのでapu,cubox14,raspi2様のmpdを近々公開します。

karas...@gmail.com

unread,
Mar 17, 2016, 2:34:19 AM3/17/16
to lightMPD
digififan 様

少し分からないのですが、mpdのバージョンを上げなくても、
カーネルをあげれば対応できるようになるということでしょうか?

karasawa998

digi...@gmail.com

unread,
Mar 17, 2016, 9:55:38 PM3/17/16
to ligh...@googlegroups.com
kawasawa998さん

combo384のfirmwareをfirmware_1099rc1にする必要があります。
また、mpdはmpd-0.19.9rt-native-dsd を使って下さい。
native-dsd に関しては
 diyinhk,electroart以外ではテストしていません。また、combo384のfirmwareもupdate
していません。
こんな状況です。

P.S. 今 lintweaker(native dsdの対応を行っている)さんgithubを確認したら rc1 はうまく動作しないようです。

Message has been deleted

digi...@gmail.com

unread,
Mar 20, 2016, 10:10:19 PM3/20/16
to lightMPD
takobozuさん

> 当方combo384のfirmwareを最新のものにアップデート済みですが、lintweaker氏はrc1は正しく動作しないみたいなことをおっしゃっているので、rpi,rpi2のlightmpdもcombo384のファームウェアアップデート待ちということになるんでしょうか?

その通りです。しかし、どのような不具合なのかは確認していません。
動くけど一部問題があるのかまったく動作しないのかはテストしてみないとなんとも言えません。

lightMPDの予定ですが、rpi2ではテストもほぼ完了したので数日中にV1.0.2を出します。V1.0.2ではカーネルが4.4.3rt11になってcombo384のnative dsdにも対応します。
rpiはその後になります。

Message has been deleted
Message has been deleted
Message has been deleted

digi...@gmail.com

unread,
Apr 4, 2016, 8:06:44 AM4/4/16
to lightMPD
takobozuさん

> rpi2+combo384でチャレンジいたしますので他に注意点などございましたらご教示の程よろしくお願いいたします。(combo384のファームウエアは1099rc2にアップ済み)
> 結果以前のように雑音ばかりでしたら現時点では諦めるしかないと思いますので、その旨もご報告いたします。

設定などに誤りはありません。
しかし、一点気になる箇所があります。
今回combo384のinterface format が SNDRV_PCM_FMTBIT_DSD_U32_LE に変更になりました。
以前はSNDRV_PCM_FMTBIT_DSD_U32_BEでした。
mpd.confの dsd_native_type の"2"はBEの指定です。
mpdのソースを調べたのですがLEに相当するdsd_native_typeは用意されていないようです。

もし、dsd_native_type = "2" で旨く動かないとちょっとお手上げです。

Message has been deleted

digi...@gmail.com

unread,
Apr 4, 2016, 10:20:51 PM4/4/16
to lightMPD
テストありがとうございました。
combo384は持っているのですが、それにつなぐDACがないのでテスト出来ない状態です。
また、以前firmwareのアップデートに失敗してcombo384をダメにして経験があってfirmwareのアップデートもしていません。
amaneroのサイトをみると最新版のfirmwareはfirmware_1099rc1の用ですがrc2はどこからダウンロードしましたか?
この際、combo384の環境を作ろうかなと思っています。

  >やけくそで、dsd_native_typeを3にしてみました。すると「サー」というノイズとともに美しい音色が。この「サー」さえなければなあ。あと1でも同様の結果となりました。
0と2だけが全くノイズだけしかでないという結果です。本当に残念です。

dsd_native_typeが0,2以外だとdsd2pcmでpcmに変換する用です。

mpdのdsd2pcmは 
     1. dsd2pcmでdsdのサンプリング周波数の1/8のpcmに変換
     2. samplerate_converterでdacの上限にダウンサンプリング

 の2段階のフィルターを経由します。
  1.の段階ではノイズが取り切れず2.でさらにノイズの除去を行っています。
 しかし、combo384のばあいは上限がdsdのサンプリング周波数の1/8になっているので2はおこなわれません。

 サーというノイズは1.で取り切れないノイズだと思います。 20khz以上のノイズも盛大にでていると思われます。
 これを防ぐためには audio_output_formatでx1L2やx1L4などのようにする必要があります。
 こうすると当然384Kのpcmもダウンサンプリングされてしまいます。

 実は、1.0.2のmpd-0.19.10rt-native-dsdはdsd2pcmの機能を拡張してあります。

 新dsd2pcmでは dsdを直接指定したサンプリング周波数のPCMに変換します。
 目的は上記の問題を回避する為と、フィルターを2段経由するよりは1段ですませた方が
 音質的に有利では考えた為です。
 また、firフィルターの係数もnas上において自由に入れ替えられるようにしてあります。
  raspebery pi 2の場合  dsd64を44.1Kのpcmに変換する係数は2560tapになっています。

 まだ、係数の吟味ができないのと、さらに係数の持ち方を変更したので非公開にしています。

mpd.confに

  decoder {
      plugin                  "dsdiff"
      enabled                 "yes"
      output                  "PCM:X4:32"
  }

  decoder {
      plugin                  "dsf"
      enabled                 "yes"
      output                  "PCM:X4:32"
  }

 を追加するとoutputで指定した形式に変換します。
  outputの形式は

   "PCM:Xn:bit"

  です。
 Xnのnで出力サンプリング周波数を指定します。44.1Khz,48Khzのn倍のサンプリング周波数に変換されます。
  bitでbit数を指定します。16,24,32で指定します。

 outputを指定するとdsd_usb,dsd_nativeは無視されます。
 
 新dsd2pcmについては正式に公開するときに改めて説明しますが、興味があれば使ってみて下さい。
 
 注意する事は新dsd2pcmではcpuがほぼ100%に振り切れる場合があります。
 環境によっては音切れがでるかもしれません。
 mpd.confのaudio_buffer_size,buffer_before_playの値を大きくすると再生が開始されるまで時間がかかります。

  audio_buffer_size    "2048"
    buffer_before_play   "20%"

  ぐらいがいいです。

Message has been deleted
Message has been deleted

digi...@gmail.com

unread,
Apr 14, 2016, 12:07:15 PM4/14/16
to lightMPD
takobozuさん

> lintweaker氏やその他の方々のやりとり(英語)を見てますとcombo384のファームウェアを
> 最新にしたあとの不具合報告がないように思われますがどうなんでしょうか。うまくいってるなら
このサイトを教えて下さい。
combo384だけbitの並びがたの物と逆なのでこのままだとノイズだらけになると思います。
mpd側でなんらかの対象が必要と感じています。
combd384に繋がるDACが用意できていないのでテストはまだ先になります。


Message has been deleted

digi...@gmail.com

unread,
Apr 15, 2016, 10:43:42 AM4/15/16
to lightMPD
takobozuさん

サイトの紹介ありがとうございました。
やはりmpd-0.19ではDSD_U32_LEにの対応は行われていませんでした。
mpd-0.18だとdsd_native_type に3があってこれがU32_LEに対応するようです。
lightMPDではmpd-0.18の対応は行っていません。
今のところ、lint weakeさんの対応を待つしかありません。




Message has been deleted

digi...@gmail.com

unread,
Apr 16, 2016, 12:14:34 AM4/16/16
to ligh...@googlegroups.com
takobozuさん

mpd-0.20にはsacdisoもマージされたそうで、相当先になるのではないでしょうか?
また、0.19のnative dsd 対応版にもDSD_U32はあってこれは0.18のDSD_U32_BE(big endian)に相当します。
combo384はDSD_U32_LE(little endian)です。


>(2)lintweaker版ではmpd-0.18をつかわないとだめですよ。
>(3)Use pre-compiled binariesなどFedora 20 x86_64での例が書かれてますがこう いうことに詳しくないと手が出せない。


lingweaker版mpd-0.18の他kernelの対応も必要になります。Fedoraで使う場合は多分kernelのbuildも必要になります。

raspiのv1.0;.2の対応が終わるので、その後に0.19にDSD_U32_LEの対応を検討します。

> はぁーとため息がでます。手っ取り早いのはやはりサポートされているiFi Audioなどのdacを購入せよってなっちゃいますね、
DDCだけならjlsoundsのI2SoverUSBがおすすめです。適切に使えば音はいいです。但し、I2Sの直前でアイソレートされているので
DAC側から電源(5v)が必要になります。

ちょっと補足します。
I2SoverUSBの場合DSD/PCM信号はアイソレートされてません。
この信号が必要なDACの場合はこの信号をアイソレートするかアイソレートをやめてGNDをUSBのGNGと共通にする必要があります。
また、結構電源を食います。


ja7...@gmail.com

unread,
Apr 16, 2016, 10:10:08 AM4/16/16
to lightMPD
takobozu 様

横から失礼します。
私もcombo384でnative-dsdで再生できないかとファームをアップデートしてもだめでした。
ところで,foobar2000でnative-dsd再生が本当に出来ているのかどうか実は疑問です。
もう2年以上前のことで,当時のcombo384のファームのバージョンも,foobar2000とコンポーネントのバージョンも忘れてしまいましたが,foobar2000でASIO nativeの設定で問題なくDSDの再生が出来ていました。もちろんDoPでも再生出来ていました。音の違いは分かりませんでしたが。
その時は何も疑問に思わなかったのですが,今になって当時のcombo384ではnative-dsdは出来なかったということを知り,あれは何だったんだろうと思っています。

Message has been deleted
Message has been deleted
Message has been deleted

digi...@gmail.com

unread,
Apr 22, 2016, 11:42:22 PM4/22/16
to lightMPD
takobozuさん

combo384でのnative-dsdに対応しました。
テスト版ということで早出ししますので、テストをお願いします。

その前に確認なのですが、 私の所ではraspi2 + combo384の組み合わせではノイズがでます。
combo384以降はLVDS(HDMI)でDACに接続しました。このシステムでAPU1などは問題ないのですが、raspi2だけたまにノイズがのります。
takobozu さんの所ではでませんか?
テストしていただくmpdはraspi2用でいいでしょうか?

apu1c版も用意できますが、apu1c版の場合はkernelもアップデートする必要があります。

ご希望のバージョンを指定して下さい。

よろしくお願いします。


Message has been deleted

digi...@gmail.com

unread,
Apr 23, 2016, 1:26:31 AM4/23/16
to lightMPD
takobozuさん

combo384のmpd をアップロードしました。これは暫定版になります。

ファイルをダウンロードすると mpd-0.19.14rt-native-dsd-u32le というファイルが作成されるので、
これをSDメモリの/lightMPD/にコピーして下さい。

lightmpd.confの[mpd]->load_moduleをmpd-0.19.14rt-native-dsd-u32leにして下さい。
mpd.confの dsd_native_typeは"3" にして下さい。


> 以前、新dsd2pcmのお話を頂いておりましたので試しにやってみたのですがノイズだらけで聴けませんでした。無理してrpiBでdsd聴かなくてもいいと思いますので私の場合は良いのですが。もしconfファイルの設定次第でどうにかなるようでしたら、私と似た環境をお持ちの方は嬉しいかもしれません。とりあえず簡単なご報告まで。

raspiはcpuが非力なためdsd2pcmの拡張は行っていません。 
decoderにoutput を指定しても無視されます。その場合、output の指定が有効になります。
オリジナルのdsd2pcmでもraspiではまともに再生できません。

Message has been deleted

digi...@gmail.com

unread,
Apr 23, 2016, 4:59:55 AM4/23/16
to lightMPD
takobozuさん

テストありがとうございます。
ちゃんとdsd_nativeで再生されています。

ノイズに関しては私の所では10秒に1,2どの頻度でこれではちょっと聞けないなという感じです。
dsdだけではなくpcmでも出ます。

あと、私の所では dsd128 で再生したあとでdsd64 を再生すると dac が dsd128のままになります。その結果ノイズまみれになります。
(コンピュータ側はちゃんとdsd64に切り替わってます)
この現象は raspi2 , apu1cとも出ます。
takobozuさんの所では問題ありませんでしたか?
こちらのdacの問題かもしれませんが、よろしければテストしていただけないでしょうか?

よろしくお願いします。


Message has been deleted
Message has been deleted

digi...@gmail.com

unread,
Apr 23, 2016, 11:43:59 AM4/23/16
to lightMPD
takobozuさん

テストありがとうございます。
まず、一つ先のメッセージで報告があった

> pcmからdsdを聴くときの最初に「ボッ」という比較的大きいノイズがでますが、

ですが、これはkernelの問題でした。pcmからdsd切換時にノイズが出ないような対処を行っているのですが、それを対処した時にDSD_U32_LEはなかったのでもれてました。
combo384の対応を正式にリリースする時にkernelもリリースします。

> ただ、DSD128からDSD64切り替わった直後からはディストーションされた聴くに耐えない音に。これはおっしゃられるとおりにこちらの環境でも再現したようです。ただ、hw_paramsはDSD64のものにちゃんと切り替わっております。不思議です。その後pcmに切り替わってからは当方では何も問題なく再生されました。

これは当方ででた現象と同じです。combo384のfirmwareの問題の様です。


どうもありがとうございました。




Message has been deleted

digi...@gmail.com

unread,
May 19, 2016, 11:11:15 AM5/19/16
to lightMPD
takobozuさん

> combo384のnative-dsdがサポートされている文をみていよいよその時が来たかと喜んでおります。ただ、これが他のボードにも波及していくご予定なのかちょっと気になりましたので書き込みをいたしました
combo384の対応はraspi用に早出しした物と仕様は同じです。dsd128->dsd64の切換が旨くいきません。
raspi関連は部分てきにですが暫定版を出しているので後回しになります。
以下の順で順次バージョンをアップする予定です。

1. apu1  64bit版
2. cuboxi4,wandaboard
3. bbb
4. cubox
5,alix3d2
6 apu2,apu1 32bit版

apu2,apu1の32bit版は64bitで施したチューニング(full tickless)が行えないので、要望が無ければ廃止したいなと思ってます。
full ticklessが32bit版でも出来るようなら出します。現在検討中です。

Message has been deleted

yama3...@gmail.com

unread,
Jul 1, 2016, 9:23:52 AM7/1/16
to lightMPD
takobozu様

最近、combo384のライセンス版を入手し、dsd-native化に着手しようとしています。

まずは、combo384のfirmwareのバージョンアップ(1099rc2)から始めている
のですが、アップデート後のfirmwareが1099rc2かどうか?確認する方法があれば、
教えていただけないでしょうか?

oem tool 117には、”Fixed dsd64 to pcm 176.4Khz problem"と表示
されています。

アップデートメッセージを見るかぎり、バージョンアップが正しく行なわれて
いると思われるのですが。

Message has been deleted

yama3...@gmail.com

unread,
Jul 2, 2016, 9:19:33 AM7/2/16
to lightMPD
takobozu様

ご回答ありがとうございます。

dsd-native化してみましたが、特にノイズも乗っていないので、
正しくバージョンアップされているのだと思います。

dopより雑味が減った感じで、満足度が高いです。

kku...@gmail.com

unread,
Jul 10, 2016, 12:01:54 AM7/10/16
to lightMPD
本題から外れる話題かも知れません。お許しください。
4.x系のソース quirks.c の内容を確認してみると
たしかにDIYINHK製のDDC(XMOS)がサポートされていて
当方の環境 APU1C Linux arch 4.6.3-1-ARCH でもネイティブ再生が出来ました。
このソースを見る限り、Combo386の項目は当然無いのですが
これにCombo386ベンダーとか必要項目を追記してカーネルを再構築すれば
普通のArchlinuxでもnative-dsd playbackになるのでしょうか。
今回、lightmpdでCombo386でもネイティブ再生を可能にするにあたって
どんな作業を行ったか教えていただけないでしょうか?
DSDネイティブ再生が思った以上にすばらしく他の環境でも実現したく考えています。

digi...@gmail.com

unread,
Jul 10, 2016, 10:34:20 AM7/10/16
to lightMPD
kkumaxさん

> これにCombo386ベンダーとか必要項目を追記してカーネルを再構築すれば
> 普通のArchlinuxでもnative-dsd playbackになるのでしょうか。
下記のパッチをkernelに当てて下さい。Combo386を追加してあります。


Combo386の場合、mpdのnative-dsdのパッチでは対応されてませんので、下記のパッチをmpdに当てて下さい。
このパッチはnative-dsdにcombo386の対応を行ったものです。


native-dsd,DoPではdsd->pcmの切換時にノイズがでます。
mpd-0.19.17 で対応したとありますが、あの対応ではダメです。
下記のパッチをkernelに当てるとそのノイズをなくす事ができます。


Message has been deleted

kku...@gmail.com

unread,
Jul 10, 2016, 1:14:57 PM7/10/16
to lightMPD
対応ありがとうございます。
カーネルはlinux-4.5.7を持ってきて二つのパッチを
Hunkは出るものの当てる事が出来ましたが
0008-native-DSD-u32le.patchが
mpd-0.19.14 mpd-0.19.17 の二つのソースを試しましたが
うまくパッチがあたりません?
バージョンは何を使えば上手くいくでしょうか?

kku...@gmail.com

unread,
Jul 11, 2016, 3:59:38 AM7/11/16
to lightMPD
とりあえずパッチはあたりましたがこのバージョンではコンパイルエラーになってしまいました。

$ patch -p1 < 0001-Add-native-DSD-support-to-MPD-0.19.14.patch
patching file Makefile.am
patching file README-DSD
patching file configure.ac
patching file src/AudioFormat.cxx
patching file src/AudioFormat.hxx
patching file src/decoder/plugins/DsdiffDecoderPlugin.cxx
patching file src/decoder/plugins/FlacPcm.cxx
patching file src/output/plugins/AlsaOutputPlugin.cxx
patching file src/output/plugins/OssOutputPlugin.cxx
patching file src/pcm/ChannelsConverter.cxx
patching file src/pcm/FallbackResampler.cxx
patching file src/pcm/FormatConverter.cxx
patching file src/pcm/PcmDsdNative.cxx
patching file src/pcm/PcmDsdNative.hxx
patching file src/pcm/PcmExport.cxx
patching file src/pcm/PcmExport.hxx
patching file src/pcm/PcmFormat.cxx
patching file src/pcm/PcmMix.cxx
patching file src/pcm/Volume.cxx

In file included from src/decoder/DecoderBuffer.cxx:21:0:
src/decoder/DecoderBuffer.hxx:41:20: エラー: ‘uint8_t’ was not declared in this scope
DynamicFifoBuffer<uint8_t> buffer;
^~~~~~~
src/decoder/DecoderBuffer.hxx:41:27: エラー: template argument 1 is invalid
DynamicFifoBuffer<uint8_t> buffer;
^
src/decoder/DecoderBuffer.hxx: メンバ関数 ‘void DecoderBuffer::Clear()’ 内:
src/decoder/DecoderBuffer.hxx:61:10: エラー: request for member ‘Clear’ in ‘((DecoderBuffer*)this)->DecoderBuffer::buffer’, which is of non-class type ‘int’
buffer.Clear();
^~~~~
src/decoder/DecoderBuffer.hxx: メンバ関数 ‘size_t DecoderBuffer::GetAvailable() const’ 内:
src/decoder/DecoderBuffer.hxx:78:17: エラー: request for member ‘GetAvailable’ in ‘((const DecoderBuffer*)this)->DecoderBuffer::buffer’, which is of non-class type ‘const int’
return buffer.GetAvailable();
^~~~~~~~~~~~
src/decoder/DecoderBuffer.hxx: メンバ関数 ‘ConstBuffer<void> DecoderBuffer::Read() const’ 内:
src/decoder/DecoderBuffer.hxx:87:19: エラー: request for member ‘Read’ in ‘((const DecoderBuffer*)this)->DecoderBuffer::buffer’, which is of non-class type ‘const int’
auto r = buffer.Read();
^~~~
src/decoder/DecoderBuffer.hxx:88:27: エラー: could not convert ‘{<expression error>, <expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘ConstBuffer<void>’
return { r.data, r.size };
^
src/decoder/DecoderBuffer.hxx: メンバ関数 ‘void DecoderBuffer::Consume(size_t)’ 内:
src/decoder/DecoderBuffer.hxx:105:10: エラー: request for member ‘Consume’ in ‘((DecoderBuffer*)this)->DecoderBuffer::buffer’, which is of non-class type ‘int’
buffer.Consume(nbytes);
^~~~~~~
src/decoder/DecoderBuffer.cxx: メンバ関数 ‘bool DecoderBuffer::Fill()’ 内:
src/decoder/DecoderBuffer.cxx:29:18: エラー: request for member ‘Write’ in ‘((DecoderBuffer*)this)->DecoderBuffer::buffer’, which is of non-class type ‘int’
auto w = buffer.Write();
^~~~~
src/decoder/DecoderBuffer.cxx:41:9: エラー: request for member ‘Append’ in ‘((DecoderBuffer*)this)->DecoderBuffer::buffer’, which is of non-class type ‘int’
buffer.Append(nbytes);
^~~~~~
src/decoder/DecoderBuffer.cxx: メンバ関数 ‘bool DecoderBuffer::Skip(size_t)’ 内:
src/decoder/DecoderBuffer.cxx:61:24: エラー: request for member ‘Read’ in ‘((DecoderBuffer*)this)->DecoderBuffer::buffer’, which is of non-class type ‘int’
const auto r = buffer.Read();
^~~~
src/decoder/DecoderBuffer.cxx:63:10: エラー: request for member ‘Consume’ in ‘((DecoderBuffer*)this)->DecoderBuffer::buffer’, which is of non-class type ‘int’
buffer.Consume(nbytes);
^~~~~~~
src/decoder/DecoderBuffer.cxx:67:9: エラー: request for member ‘Clear’ in ‘((DecoderBuffer*)this)->DecoderBuffer::buffer’, which is of non-class type ‘int’
buffer.Clear();
^~~~~
make[1]: *** [Makefile:7278: src/decoder/libdecoder_a-DecoderBuffer.o] エラー 1

それでmpd-0.19.16で試したらコンパイルが通るようなので
0008-native-DSD-u32le.patch と 001の0.19.16用パッチを当てて
コンパイルしたmpdをインストール、テストするとDIYINHKのみネイティブ動作する事を確認できました。
現在、カーネルをコンパイル中ですが...良くわかってないのがArchlinuxで現状使用している
カーネルのコンフィグを取り出せず(^_^;)新しく作ったので動くかどうか??

digi...@gmail.com

unread,
Jul 11, 2016, 7:38:20 AM7/11/16
to lightMPD
kkumaxさん

連絡が遅れて申し訳ありませんでした。
私の説明が間違っていました。lintweakerさんのnative-dsdのパッチを当てた状態でパッチをかけて下さい。

lightMPDでは0.19.14がターゲットになっていますが、コンパイルエラー等は起きていません。
多分、gccのバージョンが合ってないと思われます。

combo384を使う場合はmpd.confのdsd_native_typeを"3"にして下さい。
私がテストしたところdsd128からdsd64へ旨く移行できない以外特に問題はありませんでした。

> 在、カーネルをコンパイル中ですが...良くわかってないのがArchlinuxで現状使用している 
> カーネルのコンフィグを取り出せず(^_^;)新しく作ったので動くかどうか??
多分config.gzがmodule になっているので、

modprobe configs

で/proc/config.gz が見えるようになります。

kku...@gmail.com

unread,
Jul 11, 2016, 10:38:13 AM7/11/16
to lightMPD
アドバイスありがとうございます。非常に助かります。

0001-Extend-native-DSD-support-for-MPD-0.19.16.patch
0008-native-DSD-u32le.patch
最初に001を当てて二つ目に管理人様のパッチを当てないとエラーが出ますね(^_^;)
上記ふたつのパッチをmpd-0.19.16にあててコンパイルしてみたら
エラー無く終了したのでインストールして
/proc/asound/card0/pcm0p/sub0/hw_params を
動作を確認すると
DIYINHK製のDDCからはDSDが直に出ている事が確認出来ました。(DoPでは無い)
そこから教えていただいた残り二つのパッチ
native-dsd-4.4.6-20160502.patch
native-dsd-noise-kernel.patch
linux-4.5.7のソースにあててmakeしていますが半日すぎても終わりません(^_^;)
先は遙かに長そうです?!


kku...@gmail.com

unread,
Jul 12, 2016, 11:12:14 PM7/12/16
to lightMPD
>/proc/config.gz
このコンフィグを使ってみたのですが半日でもコンパイルが終わらず?(^_^;)
ネットを徘徊したところ make localmodconfig というコマンドを
見つけて試したところ約2時間でコンパイルが終了して
カーネル、モジュールをインストール。無事に起動を確認しました。

同時に二台のDDCを接続してDSD64を再生すると
結果は下の様に表示されますが正しい状態でしょうか?(^_^;)

--------------------------------------
カード 0: Combo384
access: RW_INTERLEAVED
format: DSD_U32_LE
subformat: STD
channels: 2
rate: 88200 (88200/1)
period_size: 11025
buffer_size: 44100
--------------------------------------
カード 1: DIYINHK
access: RW_INTERLEAVED
format: DSD_U32_BE
subformat: STD
channels: 2
rate: 88200 (88200/1)
period_size: 11025
buffer_size: 44100
--------------------------------------

digi...@gmail.com

unread,
Jul 13, 2016, 8:10:17 AM7/13/16
to lightMPD
kkumaxさn

> このコンフィグを使ってみたのですが半日でもコンパイルが終わらず?(^_^;) 
> ネットを徘徊したところ make localmodconfig というコマンドを 
> 見つけて試したところ約2時間でコンパイルが終了して 
> カーネル、モジュールをインストール。無事に起動を確認しました。 
debianやarch等の汎用ディストリビューションのkernelはどのマシーンでも動くように殆どのデバイスを含んでいるのでコンパイルに時間がかかります。
実機でbuildする場合はlocalmodconfigが便利ですが、それでもraspiやbbbなどでbuildするのはやはり無謀だと思います。
私はmacでvmware上にubuntuを構築してbuildしています。lightMPDのkernel だと10分程度で完了します。
もし、本格的にkernelを追い込んでいくならpc上にクロス開発の環境を作った方がいいと思います。linuxさえ用意できれば、クロス開発の環境の構築はそれほど難しくはありません。

> 結果は下の様に表示されますが正しい状態でしょうか?(^_^;) 
> カード 0: Combo384 
> access: RW_INTERLEAVED 
> format: DSD_U32_LE 
DSD_U32_LEとなっているので正しいと思います。

kku...@gmail.com

unread,
Jul 13, 2016, 9:09:09 AM7/13/16
to lightMPD
APU1Cのアーキテクチャーはx86-64なので他のマシン(4コア)にArchlinux64ビットを
インストーしてアップデートを行いそのマシンでコンパイルをしたカーネルソースを
実機に移動してブート可能かどうか?やってみたのですが見事に失敗しました。
Archilinuxのクロスコンパイル環境ってどうやって作るべきか?
armに関しては沢山記事があるのですが...イマイチわかりません。
次の段階でリアルタイムカーネルを作りたいので超えなければいけない壁です。
それと申し訳ないのですがrt(リアルタイム)のパッチが沢山あって当てようとすると
当たらないパッチが何個かあるのですが最低限何を当てれば良いか?
教えていただけないでしょうか?
lightmpdをそのまま使えば良いとは思いつつ、
APU1CにHDを直接接続する方式に拘っているため迷惑をおかけしています(^_^;)

digi...@gmail.com

unread,
Jul 13, 2016, 10:08:28 AM7/13/16
to lightMPD
kkumaxさん

> APU1Cのアーキテクチャーはx86-64なので他のマシン(4コア)にArchlinux64ビットを
> インストーしてアップデートを行いそのマシンでコンパイルをしたカーネルソースを
> 実機に移動してブート可能かどうか?やってみたのですが見事に失敗しました。
私が外してました。てっきりarm系の話だとおもってました。

archlinux64ビット機上でapu1用のconfigを作ってbuildすればapu1cで動作します。
但し、localmodconfigは使えません。

方法としては

1. apu1上のarchlinuxでlocalmodconfigを行う
2. それで出来た .config を archlinux64ビット機に転送
3. archlinux64ビット機でmake
     make
     make modules
     INSTALL_MOD_PATH=../apu; make modules_install
     とすると
  ../apu/lib/modules/....
     と../apu配下にmodulesが作成されます。

4. bzImage および modulesを apu1に転送

でapuで動作するカーネルが作成できます。

kku...@gmail.com

unread,
Jul 14, 2016, 12:43:31 AM7/14/16
to lightMPD
>1. apu1上のarchlinuxでlocalmodconfigを行う
>2. それで出来た .config を archlinux64ビット機に転送

ありがとうございます。ここが鍵だった様で成功しました。
ノイズ防止のパッチがすばらしいですね。
このパッチをlinux-4.5.7に当てた時は効かなかったのですが
lightmpdで使っているバージョンに合わせたら効きました。
あとはリアルタイムカーネルが構築できればHD接続版と
ネットワークではどちらの音が良いか比較できるのですが...
リアルタイムカーネルのパッチが綺麗に当たらず途中で色々質問されます。
すべてスキップしてコンパイルするとエラーになります。
(gzip -dc ../patch-x.xx.26-rtxx.tar.gz | patch -p1)
このコマンドで当てています。
前スレで質問しましたが
最低限、当てなければいけないパッチ?が分かれば良いのですが...
3.0系のころは引っかからずにパッチ出来ていたのに...

digi...@gmail.com

unread,
Jul 14, 2016, 10:32:26 PM7/14/16
to lightMPD
kkumaxさん

> リアルタイムカーネルのパッチが綺麗に当たらず途中で色々質問されます。
> すべてスキップしてコンパイルするとエラーになります。


は問題無くbuildできます。


kku...@gmail.com

unread,
Jul 15, 2016, 7:30:05 PM7/15/16
to lightMPD
お世話になってます。RTのパッチは綺麗に当たりました。
ありがとうございます。あとは7/10に教えていただいた
パッチを当ててビルドするだけですが

native-dsd-4.4.6-20160502.patch
native-dsd-noise.patch

$ patch -p1 < native-dsd-4.4.6-20160502.patch
patching file sound/usb/quirks.c
Hunk #1 succeeded at 1302 (offset 22 lines).

$ patch -p1 < native-dsd-noise.patch
patching file sound/usb/endpoint.c
Hunk #1 succeeded at 635 (offset 30 lines).

この二つのパッチはHunkが出ていますが問題ないですか?

digi...@gmail.com

unread,
Jul 16, 2016, 2:49:18 AM7/16/16
to lightMPD
kkumaxさん

> この二つのパッチはHunkが出ていますが問題ないですか?
Hunkがでたディレクトリに*.rej というファイルがなければまず問題ありません。
patchをあてたあと

find . -name "*.rej" -print

として何もでなければOKです。

kku...@gmail.com

unread,
Jul 16, 2016, 10:18:56 AM7/16/16
to lightMPD
ありがとうございます。
linux-4.6.2.tar.xz と path-4.6.2-rt5.patch.xz
この組み合わせでカーネル再構築が何とかできました。
しかし軽量化には失敗しているように思います。
コンパイルで使ったメインマシンの力ずくのような(笑)

折角、APU1Cでconfigを作成しても他マシンに移動して
make -j 5 とかすると省いたはずのモジュールについて再度質問してきます?
なのでコンパイルが始まった時点で.configが書き換えられてしまいます。
理由が良くわかりません。

kku...@gmail.com

unread,
Jul 17, 2016, 1:16:25 AM7/17/16
to lightMPD
native-dsd-noise.patch はDIYINHK製のDDCには効果絶大ですが
Combo386にはまったく効果が出ない?で正常ですか?

digi...@gmail.com

unread,
Jul 17, 2016, 9:13:00 AM7/17/16
to lightMPD
kkumaxさん

今、combo384に繋がるDACが調達できないのでテストできないのですが、このスレッドの前の記事を見るとやはり
ノイズはでるようです。

実は、このパッチを当ててもノイズが無くならないDDCも確認されてます。最近のDDC(DAC)ではDAC側でノイズの除去を行うものもあるようです。(micro iDSD 等)
今次期バージョンの準備をしているので、このために時間がさけません。
すこし、時間を下さい。解決できる保証はありませんが、調査します。


Message has been deleted

kku...@gmail.com

unread,
Jul 17, 2016, 8:07:15 PM7/17/16
to lightMPD
ご対応ありがとうございます。(^_^)
今回、提供された貴重なパッチをarchlinuxへ適応して
言わば archlinux+lightmpd を試す事が出来ました。
正直言うとDSDファイルのDoPの再生ではPCMファイルには
音質的に敵わないと思っていました。
管理人様のお陰で native-dsd再生 が出来るようになって
DSD再生時に何時も感じていた音楽以外の音というか色みたいなものが
かなり取れて美しさを感じる様になりました。感謝です!
今後とも宜しくお願いしたします。
Message has been deleted

digi...@gmail.com

unread,
Nov 27, 2016, 9:07:14 AM11/27/16
to lightMPD
takobozuさん

情報ありがとうございます。

まだ、firmwareのupdateを行っていないのですが、little endianとbig endian の区別は付くようになってるのでしょうか?
lintweakerさんもまだパッチは作っていないようです。

> bbb(bbg)やrpiの次期バージョンでは問題なく再生できるようになるといいですね。
big endianだけならkernelのみで対応できます。
これが確認できたら各機種用のkernel,mpdをupdateする予定です。

Message has been deleted
Message has been deleted

digi...@gmail.com

unread,
Nov 27, 2016, 9:16:22 PM11/27/16
to lightMPD
takobozuさん

> mpd.confではdsd native再生の設定である dsd_native "yes" と
> dsd_native_type "2"を試しました。

mpd.gitを確認しましたが、lintweakerさんのコードは入っていないようです。
dsd_native,dsd_native_typeは無効になります。
alsaからかえってくる情報に合わせて変換するようです。

> これはhifi25nlさんいわく、
> If you want to try now, you can simply change
> SNDRV_PCM_FMTBIT_DSD_U32_LE
> to
> SNDRV_PCM_FMTBIT_DSD_U32_BE
> in the patch

これだと little enidan用,big endian 用の二つのkernelを用意しなければなりません。
lightMPDで対応する場合はどちらか一方にしたいと思います。

digi...@gmail.com

unread,
Nov 27, 2016, 9:24:46 PM11/27/16
to lightMPD
takobozuさん

upnpで使う場合はpolipoはあったほうがいいと思います。
必要ならlightMPDで作成したpackageをuploadします。

lightmpdではupnpgwではkernelからもnfs,cifs,inotify,dnotifyなどの機能は削除しました。
また、mpdではdatabaseも必要なくなるのでnfs,cifs,databaseもハズしてあります。

archlinuxでも効果があるかもしれません。


Message has been deleted
Message has been deleted

kku...@gmail.com

unread,
Nov 27, 2016, 10:03:18 PM11/27/16
to lightMPD
takobozuさん情報ありがとうございます。
当方バリバリのArchlinix環境(笑)なのでさっそく
http://www.tophifi.it/ftp/packages/kernel/Amanero/ 
からdownloadして試してみました。

DSD64(2.8MHz)再生時のALSAのステイタス
--------------------------------------
カード 0: Combo384
access: RW_INTERLEAVED
format: DSD_U32_LE
subformat: STD
channels: 2
rate: 88200 (88200/1)
period_size: 11025
buffer_size: 44100

--------------------------------------
カード 1: CM6631A
access: RW_INTERLEAVED
format: S24_3LE
subformat: STD
channels: 2
rate: 176400 (176400/1)
period_size: 22050
buffer_size: 88200
--------------------------------------

カード 2: DIYINHK
access: RW_INTERLEAVED
format: DSD_U32_BE
subformat: STD
channels: 2
rate: 88200 (88200/1)
period_size: 11025
buffer_size: 44100
--------------------------------------

こんな感じに出力されて無事Combo386でdsd_nativeで再生できました。
残念ながら管理人様作成のノイズ防止パッチは当たっていない様です(^_^;)

ちなみに
$ uname -a
Linux arch 4.8.6-rt5-1-rt #1 SMP PREEMPT RT Fri Nov 18 10:52:04 CET 2016 x86_64 GNU/Linux
こんな名前になっています。
Message has been deleted

kku...@gmail.com

unread,
Nov 27, 2016, 11:46:57 PM11/27/16
to lightMPD
takobozuさんありがとうございます。
やはり曲間にノイズが出るのが気になり(^_^;)調子こいて

patch -p1 < patch-4.8.6-rt5.patch
patch -p1 < 0001-usb-Add-native-DSD-support-for-Amanero-Combo384.patch
patch -p1 < native-dsd-noise.patch

これで再度ノイズ防止パッチも当てて再構築してみました(使用しているmpdは0.19.17-dsd)
うちの環境では早送りにはならず問題なく再生できました。
11.29MHzも再生してみましたが特に音が歪むということもなく再生できました??

--------------------------------------
カード 0: Combo384
access: RW_INTERLEAVED
format: DSD_U32_LE
subformat: STD
channels: 2

rate: 352800 (352800/1)
period_size: 32768
buffer_size: 131072
--------------------------------------

書き忘れましたが再生PCはAPU1Cです。
i5マシンにもArchlinuxを入れてコンパイルはそちらでしています。
所要時間は10分ぐらいなのでやる気があれば試す事が出来る環境です。
APU1CはアーキテクチャがARMでは無い所が色々出来て面白いです。

Message has been deleted
Message has been deleted
Message has been deleted

digi...@gmail.com

unread,
Dec 1, 2016, 9:32:30 AM12/1/16
to lightMPD
takobozuさん

> polipoのgithubなどにいきますと
>                   Polipo is no longer maintained
> となってますが使い続けて大丈夫なんでしょうか?
もし、バグなどがあれば自分でメンテナンスする必要があります。
メンテナンスが終わったソフトで最も心配なのがセキュリティホールだと思いますが、lightMPDではローカルのネットワーク内でつかうのでこの点では不安はありません。

> またpolipo以外の選択肢はあるんでしょうか?
> よろしくご教示ください。
polipoはproxyサーバーというソフトに分類されます。
proxyサーバーではsquidというのが有名です。かなり昔につかったことはあるのですが、キャッシュはローカルの
ディスクの置かれていたと記憶しています。
この点でlightMPDでは採用しませんでした。もしかすると、今ではオンメモリのキャッシュもあるかもしれません。未調査です。

proxyはブラウザーの代理をする物ですが、サーバーを代理するリバースproxyというソフトもあります。
制限がありますが、リバースproxyも今回の用途には使えます。
リバースproxyではvarnishというソフトが有名です。
lightMPDでもこれは検討したのですが、キャッシュがmmapという仕組みで管理されており、メモリ上にキャッシュは
置かれるのですが、実メモリのマッピングがディスク上に作成されるます。
この点と、buildするのにpythonで作成したユーティリティが必要でlightMPDではbuildするのが大変なので採用を見合わせました。

いろいろ検討した結果polipoに落ち着きました。
設計がが古いので、メモリも1Gbyte以上をハンドリングする事もできません。
また、シングルスレッドで動作するように作られているのでちょっと見通しが悪くなっていてメンテンスもしずらいです。

現在、polipoをカスケードすると不可解な動作をすることが解っています。
polipo -> varnish(ubuntu)では問題なく動作するのでやはりpolipoに問題があります。

Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

digi...@gmail.com

unread,
Jan 6, 2017, 7:23:15 AM1/6/17
to lightMPD
takobozuさん

> まずは、lintweakerさんの0001-usb-Add-native-DSD-support-for-Amanero-Combo384.patchを
> あてた場合ですが、早送り再生となりました。
mpd-0.20はまだ使ってないので状況を把握してません。なんとなくmpd-0.20の不具合のような気がします。
今、mpd-0.20のソースを眺めているのですが、native dsdにはちょっと問題もあるのでlightMPDでmpd-0.20の対応はまだ先になります。

> 上記patchをあてない場合は、再生はされるのですがサーというノイズがいっしょに出続けます。
deviceがnative dsdに対応していない場合は
audio_outputで

dop "yes"

を指定してないとpcmに変換されます。
deviceのsample rateの上限が386KHz 以上の場合、そのあとのフィルターがかからないのでサーというノイズがでる場合があります。
audio_outputないのformatでsample rateの上限を88.2KHzとかにするとサーというノイズはでなくなると思います。
mpd-0.20でdsdを再生する場合は今のところdopを使ったほうがいいかもしれません。

mpd-0.20のnative dsdの問題点

lintweakerさんのnative dsd対応では native_dsd,native_dsd_typeでnative_dsdの使用の有無をユーザーが選択できました。
その際、native_dsd_type で出力のフォーマットを指定します。これがdeviceの仕様と合ってない場合はノイズがでます。

一方、mpd-0.20では deviceの仕様をしらべてnative dsdが可能であればnative dsdでデータを出力します。その際、データのフォーマットは
devicに合わせます。

しかし、DDCがnative dsdに対応していてもその先に繋がるDACがdsdに対応しているとは限りません。
combd384にdsdの再生できないdacをつなぐ場合もあります。
このような場合でもmpd-0.20ではdsdをnative dsdでddcに送り出してしまいます。

lightMPDではnative_dsdを復活させる予定です。

Message has been deleted

kku...@gmail.com

unread,
Jan 10, 2017, 11:06:37 AM1/10/17
to lightMPD
気軽にCombo386のファームウェアを最新変更したら...
DSD出力がnativeじゃなくなって汗が(笑)
これってmpdもバージョンを上げないとダメって事なんですね?
あわててファームを戻そうとテクソルのHPから
oem tool 117 をdownloadして作業を進めると
以前に書き込んだ 1099rc2 がメニューに見当たらず...汗(笑)
それでとりあえず 1099c1 を書き込んだらまともに動作しない...汗
次に1099cを書き込んだら元に戻ったようです(^_^;)
現状、環境を記録しておくことが大切だと思いメモ...

Kernel Version
Linux arch 4.8.6-rt5-ARCH #1 SMP Mon Nov 28 12:54:58 JST 2016 x86_64 GNU/Linux
0001-usb-Add-native-DSD-support-for-Amanero-Combo384.patch
native-dsd-noise.patch
patch-4.8.6-rt5.patch
#
MPD Version
Music Player Daemon 0.19.17-dsd
0001-This-patch-extends-native-DSD-support-for-MPD-0.19.1.patch
0008-native-DSD-u32le.patch
0004-ext-audio-format-v3.patch
#
firmware Version
1099c
"Alternate Settings 2 Little Endian Native DSD LONG MUTE"

Message has been deleted

kku...@gmail.com

unread,
Jan 11, 2017, 11:47:59 PM1/11/17
to lightMPD
Music Player Daemon 0.20.2 (v0.20.1-29-gdf578c91a)を
Combo384で何もパッチを当てずに試しましたが
DSD64が384KHzのPCMで出力されて雑音のみでした...
0008-native-DSD-u32le.patchはリジェクトしてしまうので
当てられず...どこが悪いか?検討つきません。
Message has been deleted

kku...@gmail.com

unread,
Jan 12, 2017, 12:15:33 AM1/12/17
to lightMPD
DIYINHKのDDCならうまく行きますね...
--------------------------------------
カード 0: DIYINHK
access: RW_INTERLEAVED
format: DSD_U32_BE
subformat: STD
channels: 2
rate: 88200 (88200/1)
period_size: 11025
buffer_size: 44100

--------------------------------------
これはkernelに0001-usb-Add-native-DSD-support-for-Amanero-Combo384-LE.patch
LE付きを当てていなかったのが原因の様です。すいません。
でもLEがついたパッチってどこにありますか?
付いてないものを編集すれば良いのですが...
Message has been deleted

kku...@gmail.com

unread,
Jan 12, 2017, 7:40:40 PM1/12/17
to lightMPD
教えていただいたありがとうございます。
動作しました。
もしかしてArchlinuxをインストール
git版のmpdをコンパイル、インストールが出来れば
カーネルで指定されているXMOSを使うという条件は付きますが
それだけでDSDnativeが実現できる様に思いますが...
何か勘違いしてるかな...
Message has been deleted
Message has been deleted
Message has been deleted

kku...@gmail.com

unread,
Jun 25, 2017, 2:30:16 AM6/25/17
to lightMPD
$ uname -a
Linux arch 4.11.5-1-ARCH #1 SMP PREEMPT Wed Jun 14 16:19:27 CEST 2017 x86_64 GNU/Linux
$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: Amanero [Combo384 Amanero], デバイス 0: USB Audio [USB Audio]
サブデバイス: 0/1
サブデバイス #0: subdevice #0
$ cat /proc/asound/card0/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: DSD_U32_LE
subformat: STD
channels: 2
rate: 88200 (88200/1)
period_size: 11025
buffer_size: 44100

曲間ノイズも全く出ません。問題なくインストールしただけでOKです!
Message has been deleted

kku...@gmail.com

unread,
Jun 25, 2017, 3:01:51 AM6/25/17
to lightMPD
海外では違うかも知れないけど日本でI2S接続のDACに取り組んでいて
Amanero Combo384 を使っていない人はあんまりいない様に思います。
特にプレーヤー側のOSをWindows10を使用している場合には
変な中華系DDCを使用してドライバー組み込みこもうとすると
苦労する事が良くあるように思います(^_^;)
Reply all
Reply to author
Forward
0 new messages