• 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
The best performer in terms of latency was SoX!

Here is just a bit more experience concerning SoX for spdif->USB->ALSA streaming through the BBB. It's a very welcome addition to the core capabilities of Botic.

While I'm enthusiastic about the low latency of SoX, caution is in order. I tried a variety of different streaming and on-air video sources. Lip-synch latency ranged from practically perfect (e.g. Netflix) to annoyingly late. Also, one's display monitor matters greatly both in its firmware and setup. Please be forewarned, YMMV!

A little more on SoX:

a) I'm using version 14.4.1-101. This version has been stripped of many of the interesting capabilities of earlier versions.
b) I'm testing with a generation 3 AppleTV , which outputs only 48kHz, connected via wifi of ~40mbs bandwidth. There can be dropouts at the BBB, usually due to under-runs. The frequency depends on the sox parameters. Sox benefits from using 'nice' to increase the thread priority. I also found that the default buffer size (8192) is too large and needed to be reduced.
c) There were two setups that seemed best.
1: To optimize fidelity, one can upsample the 48k AppleTV output on the way to ALSA. This helps slightly with redbook files. The up sampling is not very high quality, but to my ear, still a small improvement. You may notice an occasional brief dropout due to a data over/underrun [with my 3-way crossover also running, maybe one per 10 minutes?]. CPU demand runs about 65% for me.
Code:
 nice -n -20 sox --buffer 2048 -c 2 -t alsa hw:1,0 -r 96000 -t alsa default
2: To optimize stability, simply call the program without changing any sample rates. You could also try '--buffer 4096' - over an hour between brief dropouts on my BBB. CPU demand runs about 20% for me.
Code:
nice -n -20 sox --buffer 2048 -c 2 -t alsa hw:1,0 -t alsa default

d) I can't deny the convenience of having the good sound equipment available via AirPlay! :) AirPlay will definitely get used by the spouse. For critical SQ, though, it can't compare to the great output from squeezelite in the BBB.

Over 'n out,

F.
 
Last edited:
I am digging deeper into Linux / MPD / ALSA optimization and would love your thoughts on it and maybe miero will consider to integrate some of the stuff into the distro, so that it becomes as audiophile as possible...

just found tons of tweaks here...

https://sites.google.com/site/computeraudioorg/linux-for-audio/setting-up-alsa

https://www.ibm.com/developerworks/...bc23c550/page/OS Jitter Mitigation Techniques

...is debian with botic running completly from ram ? if not not, can we get it there ?
 
Last edited:
Member
Joined 2007
Paid Member
I just tried to install squeezelite as described in the instruction by kinko earlier...ran into the following error:

root@botic:~/soxr-code# cmake ./
CMake Error at CMakeLists.txt:4 (cmake_minimum_required):
CMake 3.0 or higher is required. You are running version 2.8.11.1

...when i try to install cmake new with apt-get cmake install...it tells me I am runnaning already the latest version...?! I am stuck...
 
Last edited:
Member
Joined 2007
Paid Member
Last edited:
Blitz, you PM'ed me about my Botic set-up.

Can I ask you a basic question; what are you trying to achieve?

I ask because you seem to be scatter-gunning all over the place and appear to be over-complicating things by digging into the Linux kernel, Alsa config, web servers etc. Miero's excellent Botic distro is known to pretty much just work after a little configuration. I don't have a clear picture of where you are trying to get to so it's difficult to help.

Ray
 
nauti, as stated above in the thread:

I want to experiment with different setups, the twistedpear one is clear and well documented. Therefore the not so straight-forward solutioms are the ones I try to understand better. Diyaudio is all about learning, right ?

Asyou had a different setup alreadya year ago productive with an acko setup/clock, I wanted to learn from you simply a bit more. I would love to use my dual-xos from Ian with Pulsar-clock to be the master-clock for the bbb, following Ian'sresampler. From there into dual mono biii or soekris as described above.

I apologize if I ask the question in different place, but different people with different setups and experience are active in different threads, so its a bit fishing for the knowledge...
 
Member
Joined 2007
Paid Member
Thx a lot...which iser do you use in the conf-file ? I used root and when i try to start squeezelite, i get "permission denied"

Hmmm... :rolleyes:

Check permissions by going to your squeezelite directory and execute: 'ls -l'

I get: -rwxr-xr-x 1 root root 120916 Aug 7 2015 squeezelite

if you need execute permissions (no 'x' among permissions) use 'chmod +x squeezelite'

good luck
 
Blitz, you didn't answer my question so I'll assume you're on a journey without any particular destination in mind - fair enough.

I run Botic 'out of the box' with the only configuration being that specified on mieros web page to set the clock options etc. I run Botic as a UPnP renderer (the distro includes upnpdcli) and control it via BubbleUPnP on an Android tablet (there are other good UPnP control points, such as PlugPlayer) with no need for mpd control installations or web servers.

I've used BBB Botic to render PCM up to 384/24 and DSD to DSD256.

BBB clocking on my set up is external, using the clocks on my isolator/reclocker board. Botic 'previews the incoming data, selects the right clock on the external reclocker board which then provides the correct clock signal to the BBB.

All of this is achieved using the header pin assignments that are configured in Botic by miero. With some preparation, apart from the mecahics of the actual connections I don't see a big issue with sorting out the correct connectivity as long as the corresponding outputs/inputs are available at both ends.

As you know I don't use Chronos/Hermes but as this is a TPA forum I won't discuss the solution I use here but as you know what I use it shouldn't be difficult for Google to find the website or to track down the relevant threads on DIYAudio. Let's just say that it was all pretty simple really.

Ray
 
I just tried to install squeezelite as described in the instruction by kinko earlier..
Alternatively you can download all-in-one-self-contained compiled version of squeezelite from Ralph Irving site:
https://www.mediafire.com/folder/4q8dvq20iyz9e/Builds#lllwjg7xjl1by
just download and unpack newest *armv6hf.tar.gz file from: Builds/SqueezeLite/linux
In the archive there are two files:
squeezelite with and without FFMPEG support. Use one you prefer.
 
Member
Joined 2007
Paid Member
I am digging deeper into Linux / MPD / ALSA optimization and would love your thoughts on it ...
Greetings @Blitz,
I took a good look at the two links and they both are intended to optimize much busier computers. None of the 'tricks' applied directly to Botic.

However, I did learn about the command 'chrt', which allowed me to significantly reduce the buffer (and latency) in my current USB streaming project - down to a mere 256 bytes! Now there is always virtual synchronization with video. For example:
Code:
 chrt -f 52 sox --buffer 256  -c 2 -t alsa hw:1,0 -t alsa default
 
Sean, a new botic7 is being prepared, with fixed record capability and mostly improved modularity:
- (whole build) https://github.com/miero/linux-dev/tree/botic7

In the current state a shutdown function is broken. I hope I will fix it soon. After that I'll change development model, to release fast and often. But only kernel module, that is being developed in the:
- https://github.com/miero/botic-dev
 
Hi, I'm working on botic7 and there is an early version for adventurous users. I'd be glad for feedback on this botic7pre3 version:

wget http://repo.ieero.com/botic/pool/ma...6-botic7pre3-armv7-devel-r53_1cross_armhf.deb
dpkg -i linux-image-4.5.0-rc6-botic7pre3-armv7-devel-r53_1cross_armhf.deb
sync
reboot
(after reboot, check if the kernel version matches)
uname -r

It's based on the most recent kernel, so it might be better than botic5, or also not better.

Visible changes:
- fixed S/PDIF playback
- fixed I2S capture

At least 100MB of free disk space is needed for installation.

Previous kernel can be returned by editing /boot/uEnv.txt ... the uname_r= variable.

Questions for testers:
- any problems with the installation?
- does it play sound without skips?
- does it play high sample rates >192kHz as well as previous version?

Thanks.
 
Hey miero,
I followed your steps and when I do the command uname -r it does show the 4.5.0-rc6-botic7pre3-armv7-devel-r53
But now when I do either arecord -l or aplay -l it doesnt show any devices, compared to before with the earlier version it did show playback devices.
Also, the directory, /sys/module/snd_soc_botic is gone.
 
Questions for testers:
- any problems with the installation?
- does it play sound without skips?
- does it play high sample rates >192kHz as well as previous version?

Thanks.

Hi miero, thank you for this info.

Well, installation was okay:
root@botic:~# uname -r
4.5.0-rc6-botic7pre3-armv7-devel-r53

However, aplay failed to show Botic driver:

root@botic:~# aplay -l
aplay: device_list:268: no soundcards found...

Also, cifs mount failed like below:

root@botic:~# mount -a
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Any advices? TIA