• Disclaimer: This Vendor's Forum is a paid-for commercial area. Unlike the rest of diyAudio, the Vendor has complete control of what may or may not be posted in this forum. If you wish to discuss technical matters outside the bounds of what is permitted by the Vendor, please use the non-commercial areas of diyAudio to do so.

Building an open embedded audio applicance.

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Russ, did you expirience any difference depending on the location of the source file ? Meaning SD Card, USB or network ?

Thanks,

Davide

Yes, I found the best results streaming via network (both wired and wireless) from NAS. I also had excellent results using the RAM disk, but you can't fit much music on there. :)

I found using USB storage did not work well, even with an SSD.

Currently I am using a little RealTek USB wifi dongle (Edimax EW-7811Un - up to N150) that costs around $10 - and that works perfectly.

To make it work it's best turn off power management:

create this new file:

Code:
     sudo nano /etc/modprobe.d/8192cu.conf

then add this:
Code:
    # Disable power management

    options 8192cu rtw_power_mgnt=0

reboot, and your wifi won't fall asleep on you. :)
 
Hi Russ,

I've finished Buffalo III (it's fantastic, I've already wrote in TPA forum)
Also wanted to integrate some kind of embedded platform with I2S output to feed BIII

Raspbery Pi model B and Beagle Bone black were subjects of interest.
(BBB is out of stock everywhere, i'm waiting for next batch to buy it, with additional problem to get in my country, but will find somebody who travel...)
I have some questions and what i have already found, just to summarize:

1. I think BeagleBone BLack is better as audiphile server(don't want to go into war between two platforms, i like both), just BBB have newer chip which will have longer support in linux world, and here is not yet everything polished.

2. BBB will theoretically consume less power, because of newer chip

3. It have better Ethernet, not interrupted with USB serial com

4. it has two realtime integer processor inside AM3359 running at 200MHZ , we can program it for volume control, or BIII I2C control, with no affect on music reproduction

5. Both platforms are supported as far as I know, Volumio works on both, and I2s should work

6. Develeopers at Beaglebone are trying to push as much as possbile into linux kernel for it HW, also AM3359 is much easier for support than Broadcom in Rpi

7. About DSD, there are problems at the momment, I've looked into MPD and ALSA source code, there are definitions for bitstream DSD in ALSA, but MPD is not using it, nor any music client AFAIK. MPD have DSD over PCM, which BIII doesnot support, so we should make some changes into MPD, it is not too much of work, i will do that, when i get BBB (it will work on RPI also) and try to contact ALSA dev for full integration.

If I understood you correctly, you alse have Beaglebone Black, did you try the same thing on it (Volumio) ?

Regards
 
I am definitely still open to using the BBB.

I did use it with volumio for a while, but they were not supporting I2S out at the time. I will check again.

What's great is that even though the rpi may seem humble, it actually makes a really good streaming appliance! I am actually quite impressed. It easily beats a Squeezebox etc...

I will let you know what I find with the BBB
 
used to get pi i2s and send to ian's fifo for higher quality digi output
KrzJYiF.jpg
 
I am definitely still open to using the BBB.

I did use it with volumio for a while, but they were not supporting I2S out at the time. I will check again.

What's great is that even though the rpi may seem humble, it actually makes a really good streaming appliance! I am actually quite impressed. It easily beats a Squeezebox etc...

I will let you know what I find with the BBB

The BBB has better overall specs regarding processing power and memory, which should help when dealing with large music collections and large files (eg: dsd) right?

As far as I understood for some previous post, the pi/BBB still can send dsd via i2s to the buffalo? It's not a game changer now, but as more and more people get into dsd, it would help the adoption of such systems.
 
Both have enough power, 512MB memory and CPU( about 10% CPU usage for audio playback)

There is more CPU demand for compressed (even lossless) files, but nothing to care about.

DSD files (both DFF and DSF) are pretty simple for playback, they are like RAW format, if they are not DST compressed. It is just reading from file, which is buffered in chunks, and minor mem copy for channel order which is simple and fast.

Current problem, maybe I'm wrong, but looking into source code of MPD client, it only support DSD over PCM (DoP) which BIII doesn't support, so there is need for additional HW FIFO buffer to remove DoP bits, or to do it in software MPD , which is much easier and better solution.
But at the moment direct DSD stream is not supported.
MPD can read DSF and DFF files but only to play it in DoP mode.

it is possible to make MPD to play DSD files over I2S in bitstream DSD and PCM files(max 24bit/192k) in PCM mode over I2s depending on the source file format, which will bIII recognize and play perfectly :)
I looked into MPD/ALSA code and DSD specs it is not too much work to implement it, I'm just waiting for BBB to do it with real testing.

Regards,
 
I just sent an email to volumio and runeaudio teams inviting them to visit this thread and contribute! Let's see if they chime in!

Excellent! I will be glad if they chime in. It seems these changes to support the B3SE should be pretty simple. they could just create another DAC profile, like those that already exist.

It would also be very cool to add some dac module configs file which could be used (even with the aid of a UI) to set DAC registers via I2C and control volume as well.

This is especially handy since the B3SE needs special consideration in regard to internal DAC remapping to support the flexible I2S/DSD input scheme. The only other option is external (on the dac board in this case) control.

I hope we can work together to make it happen.
 
I have to be honest and admit that I hadn't the opportunity to dig into MPD+DSD yet. We are currently working to seamlessly integrate I2S output selection in RuneUI/RuneOS, and let users choose from a list of I2S DACs for Raspberry Pi, with no configuration hassle. We can do the same for your project, but I'm not an hardware guy and I can't help a lot on configuring output for DSD. But consider me interested in this.
 
Really interesting!
Since the little Rpi came out, I always thought i2s was the way to go!
Talking about different platforms, both BBB and Raspberry PI have power enough to play DSD data, with a proper optimized O.S.
The pi could struggle a little more, since it suffers a lot on high bandwith transfers, for the notorious poor BUS implementation. Even if we are not relying on USB to send the data, we do need to read from it, or if we use a NAS from ethernet (which shares the same bus). So, we may face some packet loss when reading DSD files from USB or NAS, that will of course affect playback.
BBB doesn't suffer from such problems, but I must admit I didn't thought about i2s on it already.

As for MPD, you're right. It handles only dop (and it is quite logical since before the rise of i2s on rpi, the only sensible application of DSD playback was with USB DACs). And development of DSD is quite still:
master/mpd.git -
For what you want to do, I think we need at least 2 different fields to be investigated:
1- An i2s Driver which could handle direct DSD instead of using PCM, I may be wrong but this could be achieved trough mmap (don't know if that would be the most optimal solution, really). The guy that can do that is Florian Meier, as it was already mentioned.
2- A proper patch of MPD which enables direct DSD playback on the path defined by the above driver. I perfectly agree that DoP is not a solution here, direct DSD is the way. I don't have any clue on how to implement that, unfortunately.


The O.S. itself then doesn't matter too much, if the two above requirements are met. I'm really interested on get this working, and I just have a 9018 ready to go here... Just let me know how can I support that goal, and I'll be more than happy to be part of this adventure.
In case this is needed, a proper set Master Clock has to be added, since PI cannot deliver Mclk. I don't know if BBB can.

Then, my 2 cents. I recently made some serious measurements, and found out that the Imx6 platform is the one that performs better with audio playback over USB(significantly less jitter, both periodic and stochastic). In my opinion there's more than just more computing power behind that result, I want to investigate that some more. Just to be clear, imx6 platform is used in lates cubox-i models, UDOO and compulab utilites. Even if i2s protocol is substantially less jitter prone than USB, this platform could have sure some other benefits if used with i2s (but no driver seems available as of now).

I'll stick this thread in my most time favourites!
 
Member
Joined 2000
Paid Member
Russ,

Does the Opus DAC work with the RPi and Volumio connected via I2S?

I see a switch for DSD on the Opus board. Does it engage DSD?
How does it work with respect to DSD?

Thanks,

Vince

PS. I get some pops and clicks using RPi, USB library, wireless dongle and USB DAC. Any ideas why?
I suspect the wireless. Anyone else experience this issue? With a DSD tracks, it so smooth it sounds like a vinyl record's pops and clicks.
 
Last edited:
@mikelangeloz

Thanks for your interest! One thing to note is I don't need a DAC master clock (sck) because I am using the ES9018 asynchronously (100Mhz clock). I Only need bitclock, wordclock, data for PCM and bitclock and data(1 and 2) for stereo DSD. One could use a DPLL 4X clock multiplier on bitclock to generate a master clock that would work for most DACs.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.