• 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

Hmm, it should work. Please check the botic configuration values:

grep . /sys/module/snd_soc_botic/parameters/*

and also the "aplay -l" output.

If there is no Botic sound card, then the dtb= selection in the uEnv.txt does not work as intended. A workaround could be to replace am335x-boneblack.dtb by am335x-boneblack-botic.dtb file.

cp /boot/dtbs/4.5.0-botic7-rc1/am335x-boneblack-botic.dtb /boot/dtbs/4.5.0-botic7-rc1/am335x-boneblack.dtb
 
Hey miero, the capture device shows up now I'm just having issues trying to record now. This is what I'm getting:

root@botic:~# arecord -v -D hw:0,0 -f S16_LE -r 11025 -c2 -t raw -d 2
Recording raw data 'stdin' : Signed 16 bit Little Endian, Rate 11025 Hz, Stereo
Hardware PCM card 0 'Botic' device 0 subdevice 0
Its setup is:
stream : CAPTURE
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 11025
exact rate : 11025 (11025/1)
msbits : 16
buffer_size : 5512
period_size : 1378
period_time : 124988
tstamp_mode : NONE
period_step : 1
avail_min : 1378
period_event : 0
start_threshold : 1
stop_threshold : 5512
silence_threshold: 0
silence_size : 0
boundary : 1444937728
appl_ptr : 0
hw_ptr : 0
arecord: pcm_read:2031: read error: Input/output error

Hmm. I've tested the record only with internal BBB clock. There might be an issue.

Does the playback work for you? It should be clocked from the same clock.

Please retry with the concurrent playback of the same sampling rate.
 
I do not. If you control Roon using their iOS or Android remote apps, there is a 'side-by-side' option. The 'NetIO' app would not run "within" Roon's own remote control but 'right next door' on the remote device. I use a separate player app and NetIO to control the BBB and DACs via I2C. With the iPad you can change between the two apps using a 4-finger swipe.

NetIO APP

http://www.diyaudio.com/forums/twisted-pear/281776-control-bbb-based-audio-appliances.html

I have it sorted and it was very simple! :)
I already have Squeezelite installed on top of my Botic driver. Seems it was as simple as enabling Squeezebox support within Roon and including the IP of the roon server in the squeezelite startup command using the '-s' argument to define a specific server.

So my squeezelite startup string now looks like:

squeezelite -o hw:CARD=Botic -n JRdddac -a 16384:1024:: -s 192.168.1.27

And my Roon now looks like
An externally hosted image should be here but it was not working when we last tested it.


And beautiful music is filling my room from my BBB Botic > Hermes > Cronus > DDDAC player. Happy days! :)
 
Member
Joined 2007
Paid Member
Hmm, it should work. Please check the botic configuration values:

grep . /sys/module/snd_soc_botic/parameters/*

and also the "aplay -l" output.

If there is no Botic sound card, then the dtb= selection in the uEnv.txt does not work as intended. A workaround could be to replace am335x-boneblack.dtb by am335x-boneblack-botic.dtb file.

cp /boot/dtbs/4.5.0-botic7-rc1/am335x-boneblack-botic.dtb /boot/dtbs/4.5.0-botic7-rc1/am335x-boneblack.dtb

I noticed the May 13 update to Debian 8.4 on the BBB site so I started fresh by installing the 8.4 image on a uSD chip. Then:
Code:
root@beaglebone:/# dpkg -i linux-image-4.5.0-botic7-rc1_4.5-botic7-rc1_armhf.deb
Selecting previously unselected package linux-image-4.5.0-botic7-rc1.
(Reading database ... 85220 files and directories currently installed.)
Preparing to unpack linux-image-4.5.0-botic7-rc1_4.5-botic7-rc1_armhf.deb ...
Unpacking linux-image-4.5.0-botic7-rc1 (4.5-botic7-rc1) ...
Setting up linux-image-4.5.0-botic7-rc1 (4.5-botic7-rc1) ...
Error! Error! Your kernel headers for kernel 4.5.0-botic7-rc1 cannot be found.
Your kernel headers for kernel 4.5.0-botic7-rc1 cannot be found.
Please install the linux-headers-4.5.0-botic7-rc1 package,
or use the --kernelsourcedir option to tell DKMS where it's located
Error! Please install the linux-headers-4.5.0-botic7-rc1 package,
or use the --kernelsourcedir option to tell DKMS where it's located
Your kernel headers for kernel 4.5.0-botic7-rc1 cannot be found.
Please install the linux-headers-4.5.0-botic7-rc1 package,
or use the --kernelsourcedir option to tell DKMS where it's located
update-initramfs: Generating /boot/initrd.img-4.5.0-botic7-rc1
zz-uenv_txt: Updating /boot/uEnv.txt [uname_r=4.5.0-botic7-rc1]
/boot/uboot is then empty, but the uEnv.txt that is usually there is found in the root directory

I edited /boot/uEnv.txt with 'dtb=am335x-boneblack-botic.dtb'

sync
reboot

then...
Code:
root@beaglebone:~# grep . /sys/module/snd_soc_botic/parameters/*
/sys/module/snd_soc_botic/parameters/blr_ratio:64
/sys/module/snd_soc_botic/parameters/clk_44k1:22579200
/sys/module/snd_soc_botic/parameters/clk_48k:24576000
/sys/module/snd_soc_botic/parameters/dai_format:16385
/sys/module/snd_soc_botic/parameters/dsd_format_switch:1
/sys/module/snd_soc_botic/parameters/ext_masterclk:3
/sys/module/snd_soc_botic/parameters/pinconfig:default
/sys/module/snd_soc_botic/parameters/serconfig:MMMM
root@beaglebone:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Botic [Botic], device 0: external botic-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

...will check back later before making any other additions in order to check for sound via Hermes/Cronus... ;)
 
sean03, recording should work with the botic7, but a sampling rate, for both playback and recording, should not be smaller than 1/2048th of the clock frequency.

For example, using 45.1584MHz clock the smallest supported fs is 22050Hz.

root@botic:~# uname -a
Linux botic 4.5.0-botic7-rc1 #1 PREEMPT Tue May 17 00:51:35 CEST 2016 armv7l GNU/Linux
root@botic:~# grep . /sys/module/snd_soc_botic/parameters/*
/sys/module/snd_soc_botic/parameters/blr_ratio:64
/sys/module/snd_soc_botic/parameters/clk_44k1:45158400
/sys/module/snd_soc_botic/parameters/clk_48k:49152000
/sys/module/snd_soc_botic/parameters/dai_format:16385
/sys/module/snd_soc_botic/parameters/dsd_format_switch:1
/sys/module/snd_soc_botic/parameters/ext_masterclk:3
/sys/module/snd_soc_botic/parameters/pinconfig:default
/sys/module/snd_soc_botic/parameters/serconfig:MDR-
root@botic:~# arecord -D hw:0,0 -f S16_LE -r 22050 -c2 -t raw | hd -n 8192
Recording raw data 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00002000
root@botic:~# arecord -D hw:0,0 -f S16_LE -r 11025 -c2 -t raw | hd -n 8192
Recording raw data 'stdin' : Signed 16 bit Little Endian, Rate 11025 Hz, Stereo
arecord: set_params:1297: Unable to install hw params:
...
 
I have it sorted and it was very simple! :)
I already have Squeezelite installed on top of my Botic driver. Seems it was as simple as enabling Squeezebox support within Roon and including the IP of the roon server in the squeezelite startup command using the '-s' argument to define a specific server.

....

Any comments please regarding the sound quality of Roon (500$ ??) compared to the MPD (0$ ;-) ? Is Roon worth its price?

Best regards
 
Any comments please regarding the sound quality of Roon (500$ ??) compared to the MPD (0$ ;-) ? Is Roon worth its price?

Best regards
There is no sound quality difference. Roon doesn't replace mpd, nor is it just a remote control tool. I already have remote control and Spotify /Tidal integration via Squeezelite and LMS server. I paid the $119 annual cost for Roon because of the experience of exploring, finding new music and even old music I have forgotten. I enjoy reading the biography of the artists and albums, making connections and learning. I also love the radio functionality where it will continue playing similar tunes when a playlist has ended. This week i have enjoyed my existing collection and heard new things I would not have done otherwise via Tidal and I have expanded my musical education, and for me that is well worth the cost of 1 cd per month :)

Anyway, this has been discussed at length many other places so I won't take this thread off track, just to say I am very pleased that Roon>Squeezelite >botic>hermes >cronus play together so nicely :)
 
If you want to control your BBB via oldschool infrared TV remote, you can try it with this LIRC driver:

https://github.com/miero/lirc-bbb

For compilation of the kernel driver for botic7-rc1, you will need to install also a DEB with headers:
http://repo.ieero.com/botic/pool/ma...ers-4.5.0-botic7-rc1_4.5-botic7-rc1_armhf.deb

Enjoy! :)

Hi, thanks for making this!

I have installed headers, but when I try "make prepare" I get this:

root@botic:/usr/src/lirc-bbb-master# make prepare
make -C /lib/modules/`uname -r`/build scripts
make[1]: Entering directory `/usr/src/linux-headers-4.5.0-botic7-rc1'
Makefile:667: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
CC scripts/mod/empty.o
cc1: error: unrecognized command line option '-fstack-protector-strong'
make[3]: *** [scripts/mod/empty.o] Error 1
make[2]: *** [scripts/mod] Error 2
make[1]: *** [scripts] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-4.5.0-botic7-rc1'
make: *** [scripts] Error 2

Any idea what I'm doing wrong?

Best regards
 
There is no sound quality difference. Roon doesn't replace mpd, nor is it just a remote control tool. I already have remote control and Spotify /Tidal integration via Squeezelite and LMS server. I paid the $119 annual cost for Roon because of the experience of exploring, finding new music and even old music I have forgotten. I enjoy reading the biography of the artists and albums, making connections and learning. I also love the radio functionality where it will continue playing similar tunes when a playlist has ended. This week i have enjoyed my existing collection and heard new things I would not have done otherwise via Tidal and I have expanded my musical education, and for me that is well worth the cost of 1 cd per month :)

Anyway, this has been discussed at length many other places so I won't take this thread off track, just to say I am very pleased that Roon>Squeezelite >botic>hermes >cronus play together so nicely :)

many thanks for the quick reply and the feedback!
best regards
 
Member
Joined 2007
Paid Member
Hi, thanks for making this!

I have installed headers, but when I try "make prepare" I get this:
...

Any idea what I'm doing wrong?

I tried using 'root@beaglebone:/# dpkg -i linux-image-4.5.0-botic7-rc1_4.5-botic7-rc1_armhf.deb'

It ran. There were three errors reported and I am investigating them now. I imagine (hope!) they are inconsequential.

a) temperature-mod
b) debugss-mod
c) cmem-mod

Frank
 
Hi, thanks for making this!

I have installed headers, but when I try "make prepare" I get this:

root@botic:/usr/src/lirc-bbb-master# make prepare
make -C /lib/modules/`uname -r`/build scripts
make[1]: Entering directory `/usr/src/linux-headers-4.5.0-botic7-rc1'
Makefile:667: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
CC scripts/mod/empty.o
cc1: error: unrecognized command line option '-fstack-protector-strong'
make[3]: *** [scripts/mod/empty.o] Error 1
make[2]: *** [scripts/mod] Error 2
make[1]: *** [scripts] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-4.5.0-botic7-rc1'
make: *** [scripts] Error 2

Any idea what I'm doing wrong?

Best regards

Hmm, that I see. You need at lest gcc version 4.9, but that one is not available for Debian Wheezy.

So, I've prepared compiled version for you. You can install it on the BBB:
cd /
wget http://bbb.ieero.com/botic7-rc1/lirc-bbb-4.5.0-botic7-rc1.tar.gz
tar xvzf lirc-bbb-4.5.0-botic7-rc1.tar.gz
rm lirc-bbb-4.5.0-botic7-rc1.tar.gz
depmod -a
reboot
After the reboot, the /dev/lirc0 should be available (if it is added in the /etc/modules).
 
Hi guys,
How do I get the botic build to have a different default sound output device?

I am trying to set botic to give 2 split channels (left and right) of right justified data output and I think I have the necessary work done, but I don't know how to set this new botic-split device as default output.

I have edited the /boot/uboot/uEnv.txt so the last line looks like this:
Code:
optargs=snd_soc_botic.ext_masterclk=3 snd_soc_botic.serconfig=MMMM snd_soc_botic.dai_format=16386 snd_soc_botic.blr_ratio=32

I have created an alsa output device which splits left and right by creating a /etc/asound.conf file with this in
Code:
pcm.botic-split {
type route;
slave.pcm "hw:0,0";
slave.channels 4;
ttable.0.0 1;
ttable.0.1 1;
ttable.0.2 1;
ttable.1.3 1;
}

ctl.botic-split {
type hw;
card 0;
}

and aplay -L lists 'botic-split' as an output

I have edited /etc/mpd.conf to have a new audio output option.

Code:
audio_output {
type "alsa"
name "Botic-Split"
device "botic-split"
format "*:24:2"
dsd_usb "no"
dsd_native "yes"
dsd_native_type "3"
priority "FIFO:32"
period_time "1"
mixer_type "software"
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional
}

But I'm stuck on the final hurdle, because I can't work out where the default output is set or how to change it.

Code:
sysdefault:CARD=Botic
    Botic,
    Default Audio Device

Any pointers gratefully received :)
James
 
Member
Joined 2007
Paid Member
Greetings James,

This is probably going to seem like a sketchy reply - sorry - but in practice ALSA can be fairly sketchy. Clearing things up could take us far away from Botic per se. So, depending on the following, I may suggest that we move to a thread in which ALSA is the topic.
How do I get the botic build to have a different default sound output device?
Botic doesn't specify the output device. The applications that run under Botic typically do so. Some applications will not accept ALSA plugins as output devices, but can accept 'hardware' output addresses (the correct term escapes me at present) like 'hw:0,0'. Unfortunately, I have never gotten MPD (nor Ecasound) to accept anything other than such addresses that bypass ALSA's programming space. That is why in my own system I am using squeezelite, because it does permit output to ALSA plugs. If this limitation of MPD is a deal breaker, then I can't help. You mentioned configuring squeezelite for Roon. If squeezelite is part of the system about which you inquire, then chances for success are good.
I am trying to set botic to give 2 split channels (left and right) of right justified data output and I think I have the necessary work done, but I don't know how to set this new botic-split device as default output.

ALSA can do that, no problem. If you want to proceed, let me know and we'll pick up the ALSA discussion here: http://www.diyaudio.com/forums/twisted-pear/277564-ladspa-filters-digital-crossovers-bbb.html

Looking at and copying working ALSA syntax is one of the most effective ways to get things functioning. ;)
 
Hi,
I'm trying to add lirc module to /etc/modules file.
When I add only
Code:
lirc_bbb
it works (see /dev/lirc0 file)
but when I 'm adding line:
Code:
lirc_bbb gpio_in_pin=66
after reboot lirc module is not loaded.
How can I fix this?

Try it again without gpio_in_pin parameter and check the kernel log:
root@botic:~# dmesg | grep lirc
[ 13.404177] lirc_dev: IR Remote Control driver registered, major 245
[ 13.418228] lirc_bbb lirc_bbb.0: lirc_dev: driver lirc_bbb registered at minor = 0
[ 13.418253] lirc_bbb: driver registered!
[ 14.371099] lirc_bbb: auto-detected active low receiver on GPIO pin 66

If it does not work, please post here the dmesg output with the parameter.
 
I'm having same problems as Bern.
Lirc0 is only showing in /dev when I only add "lirc_bbb" in /etc/modules:

Tried to run dmesg | grep lirc:

Code:
root@botic:~# dmesg | grep lirc
[    2.498762] lirc_dev: IR Remote Control driver registered, major 245
[    2.565920] lirc_bbb lirc_bbb.0: lirc_dev: driver lirc_bbb registered at minor = 0
[    2.565942] lirc_bbb: driver registered!
[    3.540901] lirc_bbb: auto-detected active low receiver on GPIO pin 60

It says that reciever is connected on GPIO pin 60? That is on the P9 header.
I have connected my IR-reciever on GPIO pin 66.

Does this have anything to do with line 81 in lirc_bbb.c?:
Code:
int valid_gpio_pins[] = { 48, 60 };