@Graham thanks for posting this. I expect to have to do some things differently since my target CODEC is different and overlays are now handled differently. In any case, this will give me a good head start and foundation to build on.
On Tuesday, December 26, 2017 at 12:54:04 PM UTC-8, Graham wrote: > > ags: > Here it is. > --- Graham > > == > > > *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* > *Making the Audio Cape Work 2017 > MAY 15* > > *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* > > *Notes: * > *My goal was specifically to make a CircuitCo Audio Cape Rev.B work, > driving an* > *amplified speaker system, and then operate the BBB as an "Internet > Radio."* > > *The CircuitCo Audio Cape is no longer in production, so may be difficult > to* > *find. It uses a Texas Instruments TLV320AIC3104 Codec. The same driver > may* > *work with other cards that use the same CODEC, or other CODECs in the > same* > *TI family that use the identical I2C commands to configure the CODEC.* > > *If you want to use a different CODEC, then you will need to research > whether * > *there is a Linux driver for that specific CODEC, and figure out how to > invoke* > *it from the device tree. If you are lucky, there may be one. If you are > not * > *lucky, then you will have to learn about writing your own Linux device > driver.* > > > *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* > *Hardware Note:* > * The CircuitCo card does not appear to have any supersonic filtering.* > * It needs a supersonic RC low pass.* > * The noise starts about 150 kHz, peaking at 625 kHz* > > *If you put a scope on the output, with the audio at reasonable volume > level,* > *you will see a bunch of Delta-Sigma leakage that is louder than the > desired audio. * > *You can not hear it with your ears, but could cause problems with > circuits that* > *are sensitive in that frequency region, with the chance of unexpected > amplifier* > *overload and distortion, for no apparent reason.* > > > *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* > > *I used Debian 8.6 Release 2016-05-11, iot, SDcard resident, in case I > wanted to* > *store a lot of music files.* > > *rm /uEnv.txt # backwards compatibility* > > *edit uEnv.txt:* > * dtb=am335x-boneblack-audio.dtb* > * cmdline=coherent_pool=1M verbose* > * cape_enable=bone_capemgr.enable_partno=BB-BONE-AUDI-02* > > *apt-get update* > *apt-get install git alsa-base alsa-utils mpd mpc* > > > *Expanding partition to full card size* > * cd /opt/scripts/tools/* > * git pull* > * sudo ./grow_partition.sh* > > > *================================================================================* > > *sudo update-initramfs -uk `uname -r` * > > *to make sure the *.dtbo get's copied to the intrd. (it'll still read * > *it from the /lib/firmware) * > > *otherwise, dmesg | grep cape * > > > *================================================================================* > > *You can check the existence of a soundcard by looking in > /proc/asound/cards. * > *For example:* > > * bash$ cat /proc/asound/cards* > > *or * > *aplay -l or aplay -L* > > > *================================================================================* > *Get Robert's asound.state file from* > *https://github.com/RobertCNelson/boot-scripts/tree/master/device/bone/capes/BBB_Audio_Cape_RevB > > <https://github.com/RobertCNelson/boot-scripts/tree/master/device/bone/capes/BBB_Audio_Cape_RevB>* > *Download the asound.state file to /var/lib/alsa/asound.state* > > *cat /var/lib/alsa/asound.state* > > *================================================================================* > *check to see that the 'cape' is loading:* > *look in the boot 'spew' for* > *[ ] bone_capemgr bone_capemgr: enabled_partno PARTNO 'BB-BONE-AUDI-02' > VER 'N/A' PR '0'* > > *----* > > *check if the CODEC can be accessed via I2C interface:* > *i2cdetect -y -r 2* > *should show the chip at address 0x18 for Audio Cape Rev.2* > > *If all the device tree files loaded, will show 0x18 as protected 'UU'* > *Meaning the kernel has claimed the CODEC, and is now in control.* > *You can no longer access the CODEC from user space* > > *If you want to dump the CODEC I2C configuration (I2C page 0)* > *i2cdump -f -r 0x00-0x7F -y 2 0x18* > > > *================================================================================* > *When I first got to this point, I thought the CODEC was not working, but > it* > *turns out the default gain levels are extremely low, and it was actually > working.* > *Turn up the volume before you get discouraged.* > > *================================================================================* > *Configure the Codec using amixer* > > *In the default routing:* > *amixer set 'HP DAC' 0 # 0 (No) Volume (Both HP MIXER CHANNELS)* > *amixer set 'HP DAC' 118 # Max Volume (Both HP MIXER CHANNELS)* > > *Alternate routing to bypass the HP Mixer on both channels* > > *amixer set 'Left DAC Mux' 'DAC_L2'* > *amixer set 'Right DAC Mux' 'DAC_R2'* > > *Set incoming gain to max* > *amixer set 'PCM' 127 # Master Play Volume (Both CHANNELS) 0.5 > dB per step* > > > *================================================================================* > *Testing* > > *Pink Noise Output:* > *-t pink means use pink noise (default).* > *speaker-test -t* > *speaker-test -t pink* > *speaker-test -t pink -c 2 # Ctl-C to cancel * > > *Sinewave tone output:* > *speaker-test -t sine* > *speaker-test -t sine -c 2 # Ctl-C to cancel * > > *aplay -t wav mymusic.wav* > > *================================================================================* > *Playing internet music with Music Player Daemon* > > *mpd auto-starts as part of bootup* > > *check by typing* > *~# mpc* > *returns:* > *volume: 94% repeat: off random: off single: off consume: off* > > > *================================================================================* > *Music Player Client* > > *music_directory* > * /var/lib/mpd/music* > > *playlist_directory * > * /var/lib/mpd/playlists* > > *mpc playlist # lists all entries in the current playlist* > > *mpc add http://kut1.streamguys1.com/kut1 > <http://kut1.streamguys1.com/kut1>* > > *mpc play # returns stream or file currently playing* > *returns:* > *http://kut1.streamguys1.com/kut1 <http://kut1.streamguys1.com/kut1>* > *[playing] #1/1 0:00/0:00 (0%)* > *volume: 94% repeat: off random: off single: off consume: off* > > *mpc play 2* > > > > *================================================================================* > *# wav files do not seem to work, but MP# works fine.* > *# copy MP3 file to /tmp folder ( because music directory is the /tmp > folder )* > *mpc update* > *mpc add file.mp3 ( adding /tmp/file.mp3 will NOT work )* > *mpc play* > > > *================================================================================* > > *================================================================================* > > > *I found this email in the reflector history useful:* > > > *Beaglebone Black Ubuntu playing Music* > *4 posts by 4 authors * > > *BeagleBone Capes* > > *Harry May * > > *2/27/14* > > > *since the standard Audio cape is not available, I purchased the DVID-02 > cape * > *which has HDMI and also the Audio TVL3106 chip which is the same as on > the normal * > *Audio cape.* > > *I was in anticipation of a nightmare configuring that all (since this > cape is * > *marked as incompatible with the BBB), I had low expectation of getting it > working.* > > *But fortunately this job was done in a few hours and the Audio is working > great !* > > *This is how to get it running under Ubuntu:* > > *1) install the BB-BONE-DVID-02 cape, switch on power and login via ssh > (no HDMI !)* > > *2) install the ALSA file:* > *apt-get install alsa-base, alsa-utils* > > *3) check if the TVL3106 can be accessed via I2C interface:* > *i2cdetect -y -r 1* > *should show the chip at address 1b ($18 for Audio Cape 2)* > > *lets test if a write/read access is possible:* > *write some data: i2cset -y 1 0x1b 2 3* > *read it back: i2cget -y 1 0x1b 2* > *this should return: 3* > > *4) lets see if a sound chip is detected:* > *aplay -l* > *no sound is detected, thats ok and we will activate it in the next step.* > > *5) prepare the uEnv.txt file* > *go to the uboot directory and open the file uEnv.txt* > *(Attention: this file is on the eMMC and also on SD Card, so be sure to > open the * > *file used for booting !).* > *add/modify this line:* > *optargs=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN,BB-BONE-EMMC-2G,BB-BONE-DVID > > capemgr.enable_partno=BB-BONE-AUDI-01* > > *this disables the HDMI (which is required, since the DVID cape is not > compatoble * > *with HDMI) and also disables the eMMC (since I am only using the SD card > for * > *Ubuntu, you may do that different)* > *and (thats the trick): enables the BB-BONE-AUDI-01* > > *Our board is not the BB-BONE-AUDI-01, but since both boards are using the > same * > *sound chip, we simple use the drivers for the BB-BONE-AUDI-01 board* > *which works fine with our DVID-02 board.* > > *6) reboot the BBB* > > *7) after rebooting lets check the system log:* > *dmesg* > > *this will show that Ubuntu found our DVID-02 board, but the installation > failed. * > *This is ok, since this board is not compatible with the BBB.* > > *[ 2.881593] bone-capemgr bone_capemgr.9: failed to load firmware > 'BB-BONE-DVID-02-00A1.dtbo'* > *[ 2.890507] bone-capemgr bone_capemgr.9: loader: failed to load slot-0 > BB-BONE-DVID-02:00A1 (prio 0)* > > *But it also shows that the BB-BONE-AUDI-01 was installed successfully and > the drivers are loaded:* > > *[ 2.900093] bone-capemgr bone_capemgr.9: slot #7: Requesting part > number/version based 'BB-BONE-AUDI-01-00A0.dtbo* > *[ 2.927274] bone-capemgr bone_capemgr.9: slot #7: Requesting firmware > 'BB-BONE-AUDI-01-00A0.dtbo' for board-name 'Override Board Name', version > '00A0'* > *[ 2.976130] bone-capemgr bone_capemgr.9: slot #7: dtbo > 'BB-BONE-AUDI-01-00A0.dtbo' loaded; converting to live tree* > *[ 3.013599] bone-capemgr bone_capemgr.9: slot #7: #5 overlays* > > *8) next lets check the slots file:* > *ubuntu@arm:~$ cat /sys/devices/bone_capemgr.*/slots* > * 1: 55:PF--- * > * 2: 56:PF--- * > * 3: 57:PF--- * > * 4: ff:P-O-- Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G* > * 5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI* > * 6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN* > * 7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-BB-BONE-AUDI-01* > > *as we can see, the HDMI and eMMC are not loaded, but the BONE-AUDI-01 is > loaded,* > *so it should be working.* > > *9) lets test again if a sound chip is found:* > *ubuntu@arm:~$ aplay -l* > ***** List of PLAYBACK Hardware Devices ***** > *card 0: EVM [DA830 EVM], device 0: AIC3X tlv320aic3x-hifi-0 []* > * Subdevices: 1/1* > * Subdevice #0: subdevice #0* > > *yes, it is found.* > > *10) now let us test if its working* > *connect a speaker/headphone to audio out (speaker only with an amplifier > since the volume is very low)* > *and enter:* > *speaker-test -t sine* > > *now we can hear a sine wave tone.* > > *11) lets play music* > *take a WAV file and play it:* > *aplay -t wav mymusic.wav* > > *Thats it, it was much easier than expected* > > *good luck* > *Harry* > > > *=================================================================================* > > *You (may) need to add this to your base *.dtb and recompile. You might > examine * > *the source for the base .dtb you are using to make sure it is there.* > > *https://github.com/RobertCNelson/dtb-rebuilder/blob/4.1-ti/src/arm/am335x-boneblack-audio.dts#L17-L28 > > <https://github.com/RobertCNelson/dtb-rebuilder/blob/4.1-ti/src/arm/am335x-boneblack-audio.dts#L17-L28>* > > *(that section can not be loaded as overlay, it must be in your base dtb)* > > > *=================================================================================* > > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/76e32ab8-832e-499f-b0db-c6fb566ea76a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
