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* *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* *mpc play # returns stream or file currently playing* *returns:* *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* *(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/99d426ab-96a2-4b8b-90f6-60e4f6599d6e%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
