[[PageOutline]] = Ventana Audio The Advanced Linux Sound Architecture (ALSA) system is the current audio driver subsystem in Linux. For details on detecting and configuring ALSA devices see [wiki:linux/audio linux/audio] The audio hardware available on Ventana boards: * [http://cache.freescale.com/files/analog/doc/data_sheet/SGTL5000.pdf?pspll=1 Freescale SGTL5000] with line level input and output (standard board configuration) or (custom board configuration) headphone level output (custom board configuration) - 45mW max into 16ohme@3.3V load, and mic input * tda1997x (HDMI Audio in) * imxhdmisoc (HDMI Audio out) For information regarding Audio / Video breakout adapters for Ventana see: * [wiki:ventana/breakoutadapters Audio / Video breakout Adapters] Note that by default, Ventana family boards that have analog audio have a default strapping of [http://en.wikipedia.org/wiki/Line_level line level] audio (both input and output). However, there is an option to load Headphone level output/Mic level input on request. Please contact sales@gateworks.com if you would like a special built with these loadings. [=#amixer-sgtl5000] === sgtl5000 (analog audio) Note that by default, Ventana family boards that have analog audio have a default strapping of [http://en.wikipedia.org/wiki/Line_level line level] audio (both input and output). However, there is an option to load Headphone level output and/or Mic level input on request. Please contact sales@gateworks.com if you would like a special built with these loadings. [=#amixer-sgtl5000-lineout] ==== Line Level Audio Output common {{{amixer}}} settings for Analog audio output (make sure to look at {{{/proc/asound/cards}}} to find the correct device number to use with the -c option below): * Determine Device number: {{{#!bash # cat /proc/asound/cards 0 [DWHDMI ]: dw-hdmi-ahb-aud - DW-HDMI DW-HDMI rev 0x0a, irq 22 1 [sgtl5000audio ]: sgtl5000-audio - sgtl5000-audio sgtl5000-audio 2 [tda1997xaudio ]: tda1997x-audio - tda1997x-audio tda1997x-audio # card=$(cat /proc/asound/cards | grep sgtl5000audio | awk '{ print $1}') }}} - the above output shows that device '0' is HDMI out, device '1' is analog audio in/out, and device '2' is HDMI audio in. This device numbering can change from kernel to kernel depending on driver init order so we use grep and awk to get the card number for the 'sgtl5000audio' device * Output (Line out) {{{#!bash # get card number for sgtl5000audio device card=$(cat /proc/asound/cards | grep sgtl5000audio | awk '{ print $1}') # unmute output amixer -c $card sset Lineout on # set output level to max amixer -c $card sset PCM 100% }}} * Input (Line in) {{{#!bash # get card number for sgtl5000audio device card=$(cat /proc/asound/cards | grep sgtl5000audio | awk '{ print $1}') # set capture mux amixer -c $card sset "Capture Mux" LINE_IN amixer -c $card sset "Line In Function" on # set capture gain amixer -c $card sset "Capture" 8 # enable it amixer -c $card sset "Capture" cap }}} [=#amixer-sgtl5000-hpout] ==== Headphone Level Audio Output ==== If you've ordered a board with HP level audio the following specifications apply: * sgtl5000 can drive 45mW max into a 16ohm load at 3.3V (53mA) common {{{amixer}}} settings for headphone level audio: {{{#!bash # get card number for sgtl5000audio device card=$(cat /proc/asound/cards | grep sgtl5000audio | awk '{ print $1}') # Set zero cross detect gain amixer -c $card sset Headphone Playback ZC 60% # unmute output amixer -c $card sset Headphone on # set output level to max amixer -c $card sset PCM 100% }}} In addition, you will also have to make a change to your device tree file in the kernel. Below is a sample patch of what you will have to do (filename depends on product you've ordered) {{{ #!diff diff --git a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi index ed71beb..1c0b229 100644 --- a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi +++ b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi @@ -109,7 +109,7 @@ audio-codec = <&codec>; audio-routing = "LINE_IN", "Line In Jack", - "Line Out Jack", "LINE_OUT"; + "Headphone Jack", "HP_OUT"; mux-int-port = <1>; mux-ext-port = <4>; }; }}} The defaults for the analog audio (which are found by running 'amixer' with no args) are: * Output Level (PCM) (0 - 192) * Front Left: Playback 192 [100%] * Front Right: Playback 192 [100%] * disabled * Capture Mux (MIC_IN or LINE_IN) * MIC_IN * Capture Gain (0-15): * Front Left: Capture 5 [33%] * Front Right: Capture 6 [40%] * disabled [=#amixer-hdmi-out] === HDMI (digital audio) === The '''imxhdmisoc''' audio (output only) device can be used to send digital audio to a connected (and unblanked) HDMI monitor that has speakers. The '''tda1997xaudio''' audio (input only) device (on GW5400 models) can be used to capture digital audio from a connected (and unblanked) HDMI source that streams audio. Note that HDMI audio supports multiple sample-rates and the sample-rate available to capture depends on the incoming source stream. The source stream's audio sample rate can be found via sysfs /sys/bus/i2c/drivers/tda1997x/2-0048/audmode [=#alsa-utils] == ALSA utility (alsa-utils package) examples (arecord/aplay) == The alsa-utils package contains the arecord, aplay, amixer applications aplay: * playback pre-recorded sound to analog audio device (GW54xx/GW53xx/GW52xx) {{{ aplay -D sysdefault:CARD=sgtl5000audio /usr/share/sounds/alsa/Front_Center.wav }}} * playback pre-recorded sound to HDMI audio output device {{{ aplay -D sysdefault:CARD=imxhdmisoc /usr/share/sounds/alsa/Front_Center.wav }}} arecord: * record 10 seconds of CD quality audio (16bit, 44.1KHz, stereo) from analog audio device to /tmp/foo.wav {{{ arecord -D sysdefault:CARD=sgtl5000audio -f cd -d 10 -t wav /tmp/foo.wav }}} * make sure you have specified the capture gain and input device (see above) == Codecs == For Codec support (Encoder / Decoder) details please see: * [wiki:ventana/codec Ventana Codecs] [=#gstreamer] == Gstreamer examples == For GStreamer information and examples please see: * [wiki:Yocto/gstreamer/audio GStreamer Audio Wiki Page]