• 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.

Support for Botic Linux driver

Member
Joined 2007
Paid Member
Though I2C controlling ES9038Pro would be a very nice feature.

I use I2C with ES9018s and it really is not hard to write scripts for the functions I want to change. Either Python or Bash are equally easy. Our systems are all so different downstream of the DACs, it would be better for each user to suit him/herself. Example code is available on GitHub - either Miero's pages or mine.
 
I use I2C with ES9018s and it really is not hard to write scripts for the functions I want to change. Either Python or Bash are equally easy. Our systems are all so different downstream of the DACs, it would be better for each user to suit him/herself. Example code is available on GitHub - either Miero's pages or mine.

Selecting digital filters, a simple script seems to be adequate. After selecting the best sounding filter for you, it can set it from a script easily at startup.

But I'm thinking of bit perfect digital volume control, integrated to the Volumio code would be fine, and I think a bit more difficult. For me at least.

I had seen there is hardver volume control selection possibility in Volumio, but I don't know whether or not it works with every ES90... DACs connected through I2S inteface.
 
Member
Joined 2007
Paid Member
But I'm thinking of bit perfect digital volume control, integrated to the Volumio code would be fine, and I think a bit more difficult. For me at least.

If I used Volumio I would also want the ES90xx to manage volume, and perhaps I could be more helpful. But as always, we must each draw our own line between rigor and convenience. :)

BTW, I wouldn't call the ESS solution 'bit-perfect', but we know what you mean...

Cheers!
 
I have installed the volumio-2.194-2017-06-11-bbb.img to my BBB, I wanted to run it via I2S and Cronus. I planned to do this in three steps: first trying it with the internal clock, second with a single external clock, and third with Cronus + two clocks. But reality was overwritten this plan.

1. Using the BBB's internal clock, with setting the Botic kernel option snd_soc_botic.ext_masterclk "0 ... no external clocks, just onboard for 48k freq." 0 parameter resulted to command syntax error.

2. Using a cheap NDK 24.000MHz oscillator for test as external clock, with setting the Botic kernel option snd_soc_botic.ext_masterclk "2 ... external clock for 48k only". No sound. No activity on the I2S pins according to the digital analizer.

3. Going back to the original driver setting (two external clocks), and keeping the single external clock: no activity on the I2S pins, but when starting to play a 96KHz file, clock selector pin activity was found. Should it work with single
clock?

Please advise.
 
The default setting was 3. I changed this single character only in the config file, to 0 first, to 2 next, and to 3 last. The clock select change is the only activity I could measured in case 3, but in every case the I2S pins were inactive.

Actually I get a syntax error message only in the 1. case, something like '0 is invalid parameter', I don't remember exactly the message. In case of 2. and 3. there were no syntax error message.

As far as I get BBB back from my audio friend, I will try to provide additional info.

Miero, thank you for your repetitive help - again.
 
Summary

Trying three different Botic settings I got the following results:

1. Setting snd_soc_botic.ext_masterclk=0 - I got syntax error message '0 invalid parameter' or the like. No activity measured on any I2S pin. Can somebody reproduce this with the volumio-2.194-2017-06-11-bbb.img ?

2. Setting snd_soc_botic.ext_masterclk=2 - For a very very short time, a warning message was flashed, like 'Alsa device 0,0 doesn't work'. No Activity measured on any I2S pin.

3. Setting snd_soc_botic.ext_masterclk=3 - No error or warning meassage. No Activity measured on any I2S pin, but when starting to play a 96KHz file, clock selector pin activity was found.

Note, I used a 24.000MHz oscillator as external clock, which is not exatly an audio frequency, but I don't think it's matter.

Here is the latest uEnv.txt file used, a bit edited with the nano editor to try pin maping:
#Docs: Beagleboard:U-boot partitioning layout 2.0 - eLinux.org

uname_r=4.8.13-botic7-rc3

#dtb=am335x-boneblack.dtb
dtb=am335x-boneblack-botic.dtb
#dtb=am335x-boneblack-botic-sabre32.dtb

cmdline=coherent_pool=1M imgpart=/dev/mmcblk0p2 imgfile=/volumio_current.sqsh quiet

#Docs for Botic: http://bbb.ieero.com/
optargs=snd_soc_botic.ext_masterclk=3 snd_soc_botic.serconfig=MDR-
#optargs=snd_soc_botic.ext_masterclk=3 snd_soc_botic.pinconfig=compat

# Fix console on older bootloaders
console=ttyS0,115200n8

##These are needed to be compliant with Angstrom's 2013.06.20 u-boot.

loadaddr=0x82000000
fdtaddr=0x88000000
rdaddr=0x88080000

initrd_high=0xffffffff
fdt_high=0xffffffff

##These are needed to be compliant with Debian 2014-05-14 u-boot.

loadximage=echo debug: [/boot/vmlinuz-${uname_r}] ... ; load mmc 0:1 ${loadaddr} /boot/vmlinuz-${uname_r}
loadxfdt=echo debug: [/boot/dtbs/${uname_r}/${fdtfile}] ... ;load mmc 0:1 ${fdtaddr} /boot/dtbs/${uname_r}/${fdtfile}
loadxrd=echo debug: [/boot/initrd.img-${uname_r}] ... ; load mmc 0:1 ${rdaddr} /boot/initrd.img-${uname_r}; setenv rdsize ${filesize}
loaduEnvtxt=load mmc 0:1 ${loadaddr} /boot/uEnv.txt ; env import -t ${loadaddr} ${filesize};
check_dtb=if test -n ${dtb}; then setenv fdtfile ${dtb};fi;
loadall=run loaduEnvtxt; run check_dtb; run loadximage; run loadxrd; run loadxfdt;

mmcargs=setenv bootargs console=tty0 console=${console} ${optargs} ${cape_disable} ${cape_enable} root=/dev/mmcblk0p1 rootfstype=${mmcrootfstype} ${cmdline}

uenvcmd=run loadall; run mmcargs; echo debug: [${bootargs}] ... ; echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ; bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr};
 
I'm thinking of similar you suggested: decided to try it with Ruineaudio V0.2-beta. Probably it handles internal clock only, but I can see if the hardware issue has a big chance or not.

I have bought it from BBONE-BLACK-4G - BEAGLEBOARD - Development Kit, AM3358 ARM Cortex-A8 MCU,4GB eMMC On-board Flash Storage, USB Interface | Farnell HU , I hope it's not an incompatibility issue with Volumio.

I'm not quite sure: in the current Volumio version shall I set anywhere the I2S output, or is it the default output?
 
that BBB model seems OK to me.

current volumio should work out of the box if you connect it to hermes-bbb that provides clock to the BBB. so if you route your MCLK signal to P9_25 pin of BBB, then it should work (except playing speed might not be correct, because it expects 22579200/24576000 Hz clocks.
 
current volumio should work out of the box if you connect it to hermes-bbb that provides clock to the BBB. so if you route your MCLK signal to P9_25 pin of BBB, then it should work (except playing speed might not be correct, because it expects 22579200/24576000 Hz clocks.

I didn't try BBB with hermes-Cronus. I tried it with a single external clock. Should it work also out of the box?

And syntax error message '0 is invalid parameter' doesn't see hardware error in step 1. It rather seems a software problem.
 
Last edited:
Member
Joined 2004
Paid Member
Roon Bridge to the Boticied/BBB

Hi,
I'm trying to add Roon Bridge to the Boticied/BBB to use in place of SqueezeLite.
The RB install reports back that GLIBC 2.16 or higher is required, and
currently it is 2.13.
Is it possible to upgrade the GLIBC in the Botic I'm running?

Linux beaglebone 4.0.0-botic5 #1 PREEMPT Tue Apr 28 23:42:17 CEST 2015 armv7l GNU/Linux