Changes between Initial Version and Version 1 of ventana/audio


Ignore:
Timestamp:
10/22/2017 05:28:45 AM (5 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ventana/audio

    v1 v1  
     1[[PageOutline]]
     2
     3= Ventana Audio =
     4The Advanced Linux Sound Architecture (ALSA) system is the current audio driver subsystem in Linux.
     5
     6The hardware that is used:
     7 * [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)
     8 headphone level output (custom board configuration) - 45mW max into 16ohme@3.3V load, and mic input
     9 * tda1997x (HDMI Audio in)(i.MX6)
     10 * imxhdmisoc (HDMI Audio out)(i.MX6)
     11
     12For information regarding Audio / Video breakout adapters for Ventana see:
     13 * [wiki:ventana/breakoutadapters Audio / Video breakout Adapters]
     14
     15Note 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.
     16
     17
     18== Devices ==
     19The following commands are useful when dealing with multiple audio devices (These commands are done on a GW5400 which has multiple sources of audio in/out - different boards will have different devices at varied locations):
     20 * see a list of all audio cards:
     21{{{
     22$ cat /proc/asound/cards
     23 0 [sgtl5000audio  ]: sgtl5000-audio - sgtl5000-audio
     24                      sgtl5000-audio
     25 1 [tda1997xaudio  ]: tda1997x-audio - tda1997x-audio
     26                      tda1997x-audio
     27 2 [imxhdmisoc     ]: imx-hdmi-soc - imx-hdmi-soc
     28                      imx-hdmi-soc
     29}}}
     30  * There are 3 audio cards in the system:
     31   * 0: sgtl5000audio (Analog Audio in/out)
     32   * 1: tda1997xaudio (HDMI Audio in)
     33   * 2: imxhdmisoc (HDMI Audio out)
     34    * Note that this is only available for playback if the framebuffer is not blanked
     35 * see a list of all playback devices:
     36{{{
     37$ aplay -l
     38**** List of PLAYBACK Hardware Devices ****
     39card 0: sgtl5000audio [sgtl5000-audio], device 0: HiFi sgtl5000-0 []
     40  Subdevices: 1/1
     41  Subdevice #0: subdevice #0
     42card 2: imxhdmisoc [imx-hdmi-soc], device 0: IMX HDMI TX mxc-hdmi-soc-0 []
     43  Subdevices: 1/1
     44  Subdevice #0: subdevice #0
     45}}}
     46  * the above shows 2 playback capable devices:
     47   * card 0: the sgtl5000audio device which has one subdevice (0) - this can be represented as 'hw:0,0'
     48   * card 2: the imxhdmisoc device which has one subdevice (0) - this can be represented as 'hw:2,0'
     49   * Note that card 1 is not listed as it is an HDMI Audio input only and not capable of playback
     50 * see a list of all playback device 'names'
     51{{{
     52$ aplay -L
     53null
     54    Discard all samples (playback) or generate zero samples (capture)
     55sysdefault:CARD=sgtl5000audio
     56    sgtl5000-audio,
     57    Default Audio Device
     58sysdefault:CARD=imxhdmisoc
     59    imx-hdmi-soc,
     60    Default Audio Device
     61}}}
     62  * the above shows 3 playback devices shown by name (Note that this is the name what can be used with 'aplay -D <devicename>' to specify playback device):
     63   * null - a null device
     64   * sysdefault:CARD=sgtl5000audio - Analog audio out
     65   * sysdefault:CARD=imxhdmisoc - HDMI audio out
     66 * see a list of all capture devices:
     67{{{
     68root@ventana:~# arecord -l
     69**** List of CAPTURE Hardware Devices ****
     70card 0: sgtl5000audio [sgtl5000-audio], device 0: HiFi sgtl5000-0 []
     71  Subdevices: 1/1
     72  Subdevice #0: subdevice #0
     73card 1: tda1997xaudio [tda1997x-audio], device 0: IMX HDMI RX tda1997x-0 []
     74  Subdevices: 1/1
     75  Subdevice #0: subdevice #0
     76}}}
     77  * the above shows 2 capture capable devices:
     78   * card 0: the sgtl5000audio device which has one subdevice (0) - this can be represented as 'hw:0,0'
     79   * card 1: the tda1997xaudio device which has one subdevice (0) - this can be represented as 'hw:1,0'
     80   * Note that card 2 is not listed as it is an HDMI Audio output only and not capable of capture
     81 * see a list of all record device 'names':
     82{{{
     83$ arecord -L
     84null
     85    Discard all samples (playback) or generate zero samples (capture)
     86sysdefault:CARD=sgtl5000audio
     87    sgtl5000-audio,
     88    Default Audio Device
     89sysdefault:CARD=tda1997xaudio
     90    tda1997x-audio,
     91    Default Audio Device
     92}}}
     93  * the above shows 3 capture devices shown by name (Note that this is the name what can be used with 'arecord -D <devicename>' to specify capture device):
     94   * 'null' - a null device
     95   * 'sysdefault:CARD=sgtl5000audio' - Analog audio in
     96   * 'sysdefault:CARD=tda1997xaudio' - HDMI audio in
     97 * display audio controls:
     98{{{
     99amixer
     100}}}
     101  * you can use the '-c <cardno>' parameter to amixer to specify a specific card (card number for /proc/asound/cards such as 'amixer -c 0' for the first card)
     102  * see 'amixer -h' for details on setting/getting various controls
     103
     104
     105[=#amixer]
     106== Mixer (mux/gain/volume) ==
     107The ALSA mixer controls the muxing of inputs to outputs, capture gains, and volume levels.  The settings vary per card.
     108
     109You can use the amixer command to get/set/list available controls per card:
     110 * list controls for card0:
     111{{{
     112amixer -c0
     113}}}
     114
     115
     116[=#amixer-sgtl5000]
     117=== sgtl5000 (analog audio) ===
     118Note 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).
     119
     120However, 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.
     121
     122
     123[=#amixer-sgtl5000-lineout]
     124==== Line Level Audio Output ====
     125common amixer settings for line level audio:
     126{{{
     127# set output level to max
     128amixer -c 0 -q sset "PCM" 100%
     129# set capture mux
     130amixer -c 0 -q sset "Capture Mux" LINE_IN
     131amixer -c 0 -q sset "Line In Function" on
     132# set capture gain
     133amixer -c 0 -q sset "Capture" 8
     134}}}
     135
     136
     137[=#amixer-sgtl5000-hpout]
     138==== Headphone Level Audio Output ====
     139If you've ordered a board with HP level audio the following specifications apply:
     140 * sgtl5000 can drive 45mW max into a 16ohm load at 3.3V (53mA)
     141
     142common amixer settings for headphone level audio:
     143{{{
     144# Set zero cross detect gain
     145amixer -c 0 sset Headphone Playback ZC 60%
     146}}}
     147
     148In 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)
     149{{{
     150#!diff
     151diff --git a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
     152index ed71beb..1c0b229 100644
     153--- a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
     154+++ b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
     155@@ -109,7 +109,7 @@
     156                audio-codec = <&codec>;
     157                audio-routing =
     158                        "LINE_IN", "Line In Jack",
     159-                       "Line Out Jack", "LINE_OUT";
     160+                       "Headphone Jack", "HP_OUT";
     161                mux-int-port = <1>;
     162                mux-ext-port = <4>;
     163        };
     164}}}
     165
     166The defaults for the analog audio (which are found by running 'amixer' with no args) are:
     167 * Output Level (PCM) (0 - 192)
     168  * Front Left: Playback 192 [100%]
     169  * Front Right: Playback 192 [100%]
     170 * Capture Mux (MIC_IN or LINE_IN)
     171  * MIC_IN
     172 * Capture Gain (0-15):
     173  * Front Left: Capture 5 [33%]
     174  * Front Right: Capture 6 [40%]
     175
     176
     177
     178[=#amixer-hdmi-out]
     179=== HDMI (digital audio) ===
     180
     181The '''imxhdmisoc''' audio (output only) device can be used to send digital audio to a connected (and unblanked) HDMI monitor that has speakers.
     182
     183The '''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
     184
     185
     186[=#alsa-utils]
     187== ALSA utility (alsa-utils package) examples (arecord/aplay) ==
     188The alsa-utils package contains the arecord, aplay, amixer applications
     189
     190aplay:
     191 * playback pre-recorded sound to analog audio device (GW54xx/GW53xx/GW52xx)
     192{{{
     193aplay -D sysdefault:CARD=sgtl5000audio /usr/share/sounds/alsa/Front_Center.wav
     194}}}
     195 * playback pre-recorded sound to HDMI audio output device
     196{{{
     197aplay -D sysdefault:CARD=imxhdmisoc /usr/share/sounds/alsa/Front_Center.wav
     198}}}
     199
     200arecord:
     201 * record 10 seconds of CD quality audio (16bit, 44.1KHz, stereo) from analog audio device to /tmp/foo.wav
     202{{{
     203arecord -D sysdefault:CARD=sgtl5000audio -f cd -d 10 -t wav /tmp/foo.wav
     204}}}
     205  * make sure you have specified the capture gain and input device (see above)
     206
     207
     208== Codecs ==
     209For Codec support (Encoder / Decoder) details please see:
     210 * [wiki:ventana/codec Ventana Codecs]
     211
     212
     213
     214[=#gstreamer]
     215== Gstreamer examples ==
     216For GStreamer information and examples please see:
     217 * [wiki:Yocto/gstreamer/audio GStreamer Audio Wiki Page]