Beaglebone Black with externbal i2s clock

Beaglebone Black with external i2s clock

Current situation:

BBB --> USB out --> Lindemann USB DAC 24/192 with XMOS USB board

540.jpg


As the Lindemann DAC is causing cracks and dropouts ( my fault ... I took the bare PCB out of the enclosure and modded a bit ) I am going to replace the DAC board for a Sellarz ES9023 DAC with I2S input.

The BBB standard supports only the 48 KHz and multiples ( 24.576 on board clock ) but it can be used with an external clock.

I can use the XMOS board which has both clocks (22.579 and 24.576) which are automaticly selected by the samplerate of the song played.

Does it work if I use I2S direct out of the BBB (P9 terminals) and use the XMOS board as external clock to the BBB (still connected to USB of course for the auto clock select) to avoid re-sampling of 44.1 and multiples.

Or I can use the complete I2S from the XMOS board if this would give better results than I2S from BBB.
I would not expect that the extra conversion I2S - USB - I2S would sound better but as proven often that in practice it turns out other than expected.

What is your idea / suggestion about my options ??
 
Last edited:
Last weekend I had a closer look at the XMOS board but it seems it sends SPDIF out and not I2S.
This SPDIF signal goes with the other 2 signals (SPDIF in on RCA and Toslink) to a SPDIF switcher WM8805 and from there to a samplerate converter SRC4190 and then to the DAC chip.
So no tapping of the i2S signal at only the XMOS board :-(

Yesterday I received the DAC board so I started wiring everything up for the time being to see if I can get it working.

The Sellarz DAC is designed to fit on the BBB.
For now I mounted the boards with the connectors outwards for easy access wiring the boards for the initial test.

I connected from BBB P9 pin 1 + 5 (5 Vdc) to DC in on the Sellarz board.
Connected I2S from BBB P9 pin 28, 29, 31 and 43 to I2S in on DAC board.
Connected Line Out, DC plug to external P/S and power on.

I could connect to MPD but no play.
I remebered if the BBB can not connect to DAC via USB nothing will play.
I had to tell MPD to play though HDMI (were the I2S signal is tapped) so modified mpd.conf to hw:0,0:

#
audio_output {
type "alsa"
name "I2S Sellarz"
device "hw:0,0" # optional
mixer_type "hardware" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional

Rebooted and pronto ... music ... I did not expect it to be that easy but it works fine.

I will continue looking into the external dual clock 22.579 / 24.576 but I am happy for now.

720.jpg


720.jpg


540.jpg


720.jpg
 
Last edited:

linuxfan

Member
2007-12-09 3:09 pm
I will continue looking into the external dual clock 22.579 / 24.576 but I am happy for now.
The go-to forum discussion on this topic is "Building an open embedded audio applicance" -
http://www.diyaudio.com/forums/twisted-pear/250583-building-open-embedded-audio-applicance.html

It led to the development of the Twisted Pear Cronus/Hermes/Rhea board combination, and release of the Botic Linux distribution for BBB by Miero.

It was also announced, and summarised somewhat, on the hifiduino site -
https://hifiduino.wordpress.com/2015/03/02/bbb-dac-developments/
 
I have looked at the Twisted Pear offerings and the Acko cape + I2S islotaor.

And I am almost halfway reading the 150 pages here of the Miero topic for the Botic BBB driver.
Reading this topic I already have accumulated some questions but first need to connect my scope to the i2s signals to see when and what is reclocked using the BBB onboard 24.576 clock.

Just trying to get the full picture of what is available before making a final descision.
I already like the compactness of only 2 PCB's ;-)
 
In the meantime I have been reading some more of the Miero Botic topic and understand I can also us a single external clock for example the 44.1/88.2 files and still use the internel BBB clock of 24.576 for 48k and multiples.

Using only the internal clock like I do now all 44.1 / 88.2 files are resampled to fit the 48/96k samplerates.
To see what really happens I took my osciloscope and measured the MCLK and LRCLK from the BBB to the ES9023 DAC.

It seems that all 44.1/88.2 files are downsampled.
Http radio, MP3 and 44.1 are dowmsampled to 32k and 88.2 is downsampled to 48k.

I modified mpd.conf and set to resample everything to 96000:24:2 which resulted in all files playing at 96k.
As it was already late yesterday I only could listen for a short period after that but my first impression at http radio is a more direct and livelike sound.
Not bad for 128k streams.

As I happened to have a Tentlabs XO2.2 with 16.394 clock which I used in my CD player until some years ago I realise with Botic I can use this single clock as external 44.1/88.2 clock and still use the internal 24.576 for 48/96/192k.

A 16.394 clock might be a little low for 176.4 files but as i do not have any 176.4 files I will work with this frequency.
I can Always change the element to 22.579 later if needed.
 
Some major steps have been gone through since my previous post.

It seems the BeagleBone will not accept clocks lower than 22.579 / 24.576.
So only these or the double frequency ( 45 / 48 Mhz) so I bought a 22.579 XO at Tentlabs.

I got it running using the internal clock for 48/96/192 and the external Tentlabs for 44.1/88.2/176.4 although I have no music at 176.4.
Pin 25 of the BeagleBone is clock out when the internal clock is active or clock in when the external clock is used.
Pin 24 is the on/off output switch for the external clock. The Tentlabs board has an "disable" input when pulled to ground so it work perfect.

First I screwed everything onlo a wooden shelf for easy access wiring everything up.

This weekend I managed to build everything in an aluminium enclosure:

I put the DAC board in an extra aluminium enclosure which is put in the big enclosure.
Like having a vault in a building ;-)

This way the DAC board is isolated from most HF radiation, I even put a ferrite core around the I2S signal cables.
The P/S modules are only for the time being, for the BBB I will build a better regulator and the DAC board will be fed by a 2 sets of 18650 Li-on batteries (one charge; the other discharging and vice-versa to have the DAC completely isolated from the power supply.

Short story: from wood to aluminium ... enjoy the pictures :)

540.jpg


720.jpg


720.jpg


720.jpg


720.jpg


720.jpg


720.jpg


720.jpg


720.jpg
 
In standard configuration the BBB can already supply I2S signal to an external DAC.

The trouble without external clock is that you are relying on the internal audio clock on the BBB.
This is a standard clock of 24.576 MHz for the HDMI out and only supports 32/48/96/192 kHz.

If you play radio http radio streams or 44.1k rips both are downsampled to 32 Khz.
I could overcome the downsampling to set the samplerate to 96 kHz in mpd.conf so everything lower gets upsampled (and 192 k gets downsampled of course) which already improved the sound as I listen radio and 44.1k CD most of the time.

Using an external clock of 22.579 gives you native support for 44.1/88.2/196.4 files withour re-sampling.
To accept an external clock you need the special Botic driver because the standard Debian + MPD can not accept is.
More about Botic: The Linux Botic driver

Having a low jitter clock like Tentlabs really helps too creating a low jitter I2S signal. Having a dual (low jitter) external clock 22.579/24.576 with switchable selection will be the ideal world - see the Twisted Pear solution in the Botic topic or the Acko reclocker isolator board (search for AKL-S03) but as I had the Tentlabs clock already available from a previous project it was an easy choice.

With the setup first on the plank I already had a much better sense of being there at the performnce at first row. The three-dimensionality was so much better giving each instrument or singer its own positition was really amazing.

Building in the aluminium boxed moved the bar even more and recently I have been experimenting with 18650 battery supply (2 in series for 7.4 Volts) having the Sellarz DAC board isolated from the power supply.
This improved even more with increase in energy and intensity in the instruments and voices especially in the lower mids.
I am planning to also isolate the I2S signal by an IL715 isolator chip to get 100% galvanic isolation so it is still an ongoing project.

Furthermore I want to use 2 sets of batteries with alternate charging / discharging having 100% battery power without interrupts. Now I charge them externally and have to plug it in manually but it is worthwile :)

1k0.jpg
 
It has been some time but today I built my updated design with galvanic isolation between the BeagleBone and the DAC board and updated the external clock design.

As metioned in my first post at the top I wanted to do something with the clocks at the XMOS USB board which came out of my first (Lindemann) DAC.
Until now I only used one external clock (22.5792) for the 44.1/88.2 files and the low quality onboard clock for the 48/96/192 files.
Now all files will have a good clock :)

I measured some signals until I realised how it worked and cut the part that I needed :)

1k0.jpg


I connected it to the BeagleBone (glued it to a piece of proto PCB) and installed an AMS1117 3.3 board under the proto PCB for easy access to the pins.

1k0.jpg


On the DAC board I soldered an IL715 digital oscillator and connected the output to the I2S input of the board.
The chip needs a dedicated supply for the output side too so here I also used an AMS1117 3.3 board.

1k0.jpg


Connecting everything together and the I2S signal comes through the isolator nicely so I need to connect it to my stereo a.s.a.p.

1k0.jpg


One of the next steps first is to make a battery supply for the DAC.

I will use 2x 16850 Li-On cells in series.
Will have 2 sets, one supplying power to the DAC and the other being charged in the meantime and standby until the set feeding the DAC reaches the discharge limit and the batteries switch over by relays.

I will use a Pro Trinket for monitoring and control.
 
Last edited: