From c6bdde171e1532f7b37333a5a746b6e662f12c53 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Wed, 28 Dec 2016 15:58:51 +0100
Subject: [PATCH 1/4] alsaucm: Add alsaucm.rst to EXTRA_DIST
Otherwise it's missing in the tarball.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
alsaucm/Makefile.am | 2 ++
1 file changed, 2 insertions(+)
diff --git a/alsaucm/Makefile.am b/alsaucm/Makefile.am
index 7047215..ee0391e 100644
--- a/alsaucm/Makefile.am
+++ b/alsaucm/Makefile.am
@@ -14,3 +14,5 @@ alsaucm_LDADD = -lasound
%.1: %.rst
rst2man $< > $@
+
+EXTRA_DIST = alsaucm.rst
--
2.9.3
From e9a6d425b5f183fe1dc0829782a9ca506aeb6263 Mon Sep 17 00:00:00 2001
From: Paul Menzel <paulepanter@users.sourceforge.net>
Date: Tue, 8 Jul 2014 07:23:06 +0000
Subject: [PATCH 2/4] alsactl: Remove standard output definition in systemd
unit
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
`/lib/systemd/system/alsa-restore.service` specifies
`StandardOutput=syslog`. This overrides the `DefaultStandardOutput`
setting from `/etc/systemd/system.conf`, which the system administrator
can use to specify how output gets logged. In particular, the sysadmin
may want output to go to the journal, or to syslog, or nowhere at all [1].
This patch removes the definition entirely, so the units can use the
system default.
Upstream the patch from the Debian package [2].
[1] https://bugs.debian.org/741123
"systemd services should not use StandardOutput=syslog; should rely
on DefaultStandardOutput"
[2] https://sources.debian.net/src/alsa-utils/1.1.2-1/debian/patches/systemd_standardoutput.patch/
Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
CC: Jordi Mallach <jordi@debian.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
alsactl/alsa-restore.service.in | 1 -
1 file changed, 1 deletion(-)
diff --git a/alsactl/alsa-restore.service.in b/alsactl/alsa-restore.service.in
index 2884098..2583d4c 100644
--- a/alsactl/alsa-restore.service.in
+++ b/alsactl/alsa-restore.service.in
@@ -14,4 +14,3 @@ Type=oneshot
RemainAfterExit=true
ExecStart=-@sbindir@/alsactl restore
ExecStop=-@sbindir@/alsactl store
-StandardOutput=syslog
--
2.9.3
From 541c7a6460835d6fa982253caf06bc971e2b9279 Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Mon, 9 Jan 2017 18:32:23 -0600
Subject: [PATCH 3/4] alsa-info: provide more DMI information
Some manufacturers don't provide useful information for Manufacturer
and Product Name but instead use Board Vendor and Board Name fields,
add them to alsa-info log
Example on Intel NUC:
!!DMI Information
!!---------------
Manufacturer:
Product Name:
Product Version:
Firmware Version: KYSKLi70.86A.0042.2016.0929.1933
Board Vendor: Intel Corporation
Board Name: NUC6i7KYB
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
alsa-info/alsa-info.sh | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/alsa-info/alsa-info.sh b/alsa-info/alsa-info.sh
index 0bc4cd0..9684c6f 100755
--- a/alsa-info/alsa-info.sh
+++ b/alsa-info/alsa-info.sh
@@ -430,11 +430,15 @@ if [ -d /sys/class/dmi/id ]; then
DMI_SYSTEM_PRODUCT_NAME=$(cat /sys/class/dmi/id/product_name 2>/dev/null)
DMI_SYSTEM_PRODUCT_VERSION=$(cat /sys/class/dmi/id/product_version 2>/dev/null)
DMI_SYSTEM_FIRMWARE_VERSION=$(cat /sys/class/dmi/id/bios_version 2>/dev/null)
+ DMI_BOARD_VENDOR=$(cat /sys/class/dmi/id/board_vendor 2>/dev/null)
+ DMI_BOARD_NAME=$(cat /sys/class/dmi/id/board_name 2>/dev/null)
elif [ -x $DMIDECODE ]; then
DMI_SYSTEM_MANUFACTURER=$($DMIDECODE -s system-manufacturer 2>/dev/null)
DMI_SYSTEM_PRODUCT_NAME=$($DMIDECODE -s system-product-name 2>/dev/null)
DMI_SYSTEM_PRODUCT_VERSION=$($DMIDECODE -s system-version 2>/dev/null)
DMI_SYSTEM_FIRMWARE_VERSION=$($DMIDECODE -s bios-version 2>/dev/null)
+ DMI_BOARD_VENDOR=$($DMIDECODE -s baseboard-manufacturer 2>/dev/null)
+ DMI_BOARD_NAME=$($DMIDECODE -s baseboard-product-name 2>/dev/null)
fi
cat /proc/asound/modules 2>/dev/null|awk {'print $2'}>$TEMPDIR/alsamodules.tmp
@@ -479,6 +483,8 @@ echo "Manufacturer: $DMI_SYSTEM_MANUFACTURER" >> $FILE
echo "Product Name: $DMI_SYSTEM_PRODUCT_NAME" >> $FILE
echo "Product Version: $DMI_SYSTEM_PRODUCT_VERSION" >> $FILE
echo "Firmware Version: $DMI_SYSTEM_FIRMWARE_VERSION" >> $FILE
+echo "Board Vendor: $DMI_BOARD_VENDOR" >> $FILE
+echo "Board Name: $DMI_BOARD_NAME" >> $FILE
echo "" >> $FILE
echo "" >> $FILE
echo "!!Kernel Information" >> $FILE
--
2.9.3
From 1fefc1440276f3a91649650d1dd9bcbb28bab7bd Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date: Mon, 9 Jan 2017 18:32:24 -0600
Subject: [PATCH 4/4] alsa-info: add ACPI device status
BIOS vendors typically reuse the same definitions between different
platforms and expose the relevant hardware by changing the value of
the _STA method.
For example on the Asus T100HA, there are 3 HID values for audio
codecs in the DSDT table but two have a zero status and will be
ignored by the ACPI subsystem.
$ more /sys/bus/acpi/devices/10EC*/status
::::::::::::::
/sys/bus/acpi/devices/10EC3270:00/status
::::::::::::::
15
::::::::::::::
/sys/bus/acpi/devices/10EC5640:00/status
::::::::::::::
0
::::::::::::::
/sys/bus/acpi/devices/10EC5648:00/status
::::::::::::::
0
This information is very useful to figure out which HIDs/quirks need
to be supported. Add log to alsa-info.sh to only expose non-zero
results of the ACPI _STA method, e.g.
!!ACPI Device Status Information
!!---------------
/sys/bus/acpi/devices/10EC3270:00/status 15
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
alsa-info/alsa-info.sh | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/alsa-info/alsa-info.sh b/alsa-info/alsa-info.sh
index 9684c6f..cda4125 100755
--- a/alsa-info/alsa-info.sh
+++ b/alsa-info/alsa-info.sh
@@ -441,6 +441,16 @@ elif [ -x $DMIDECODE ]; then
DMI_BOARD_NAME=$($DMIDECODE -s baseboard-product-name 2>/dev/null)
fi
+# Check for ACPI device status
+if [ -d /sys/bus/acpi/devices ]; then
+ for f in /sys/bus/acpi/devices/*/status; do
+ ACPI_STATUS=$(cat $f 2>/dev/null);
+ if [[ "$ACPI_STATUS" -ne 0 ]]; then
+ echo $f $'\t' $ACPI_STATUS >>$TEMPDIR/acpidevicestatus.tmp;
+ fi
+ done
+fi
+
cat /proc/asound/modules 2>/dev/null|awk {'print $2'}>$TEMPDIR/alsamodules.tmp
cat /proc/asound/cards >$TEMPDIR/alsacards.tmp
if [[ ! -z "$LSPCI" ]]; then
@@ -487,6 +497,12 @@ echo "Board Vendor: $DMI_BOARD_VENDOR" >> $FILE
echo "Board Name: $DMI_BOARD_NAME" >> $FILE
echo "" >> $FILE
echo "" >> $FILE
+echo "!!ACPI Device Status Information" >> $FILE
+echo "!!---------------" >> $FILE
+echo "" >> $FILE
+cat $TEMPDIR/acpidevicestatus.tmp >> $FILE
+echo "" >> $FILE
+echo "" >> $FILE
echo "!!Kernel Information" >> $FILE
echo "!!------------------" >> $FILE
echo "" >> $FILE
--
2.9.3
--- alsa-utils-1.1.3/alsaucm/alsaucm.rst 1970-01-01 01:00:00.000000000 +0100
+++ /home/perex/alsa/alsa-utils/alsaucm/alsaucm.rst 2016-12-20 10:11:00.822592170 +0100
@@ -0,0 +1,235 @@
+=========
+ alsaucm
+=========
+
+---------------------
+ALSA Use Case Manager
+---------------------
+
+:Author: Antonio Ospite <ao2@ao2.it>
+:Date: 2016-09-22
+:Copyright: GPLv2+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+*alsaucm* <options> [command]
+
+DESCRIPTION
+===========
+
+alsaucm (ALSA Use Case Manager) is a program to use the ALSA `Use Case
+Interface`_ from the command line.
+
+On complex sound cards, setting up audio routes is not trivial and mixer
+settings can conflict one another preventing the audio card to work at all.
+
+The ALSA Use Case Manager is a mechanism for controlling complex audio
+hardware establishing a relationship between hardware configurations and
+meaningful use cases that the end-user can relate with.
+
+The use case manager can also be used to switch between use cases when
+necessary, in a consistent way.
+
+At a lower level, the use case manager works by configuring the sound card
+ALSA kcontrols to change the hardware digital and analog audio routing to
+match the requested device use case.
+
+The use case manager kcontrol configurations are stored in easy to modify text
+files. An audio use case can be defined by a **verb** and **device** parameter.
+
+The verb describes the use case action i.e. a phone call, listening to music,
+recording a conversation etc. The device describes the physical audio capture
+and playback hardware i.e. headphones, phone handset, bluetooth headset, etc.
+
+
+OPTIONS
+=======
+
+Available options:
+
+ **-h**, **--help**
+ this help
+
+ **-c**, **--card** `NAME`
+ open card NAME
+
+ **-i**, **--interactive**
+ interactive mode
+
+ **-b**, **--batch** `FILE`
+ batch mode (use ``'-'`` for the stdin input)
+
+ **-n**, **--no-open**
+ do not open first card found
+
+
+Available commands:
+
+ ``open`` `NAME`
+ open card NAME.
+
+ valid names are sound card names as listed in ``/usr/share/alsa/ucm``.
+
+ ``reset``
+ reset sound card to default state.
+
+ ``reload``
+ reload configuration.
+
+ ``listcards``
+ list available cards.
+
+ ``list`` `IDENTIFIER`
+ list command, for items returning two entries (value+comment).
+
+ the value of the `IDENTIFIER` argument can can be:
+
+ - ``_verbs`` - get verb list (in pair verb+comment)
+ - ``_devices[/{verb}]`` - get list of supported devices (in pair device+comment)
+ - ``_modifiers[/{verb}]`` - get list of supported modifiers (in pair modifier+comment)
+
+ The forms without the trailing ``/{verb}`` are valid only after a specific
+ verb has been set.
+
+ ``list1`` `IDENTIFIER`
+ list command, for lists returning one item per entry.
+
+ the value of the `IDENTIFIER` argument can vary depending on the context,
+ it can be:
+
+ - ``TQ[/{verb}]`` - get list of Tone Quality identifiers
+ - ``_enadevs`` - get list of enabled devices
+ - ``_enamods`` - get list of enabled modifiers
+ - ``_supporteddevs/{modifier}|{device}[/{verb}]`` - list of supported devices
+ - ``_conflictingdevs/{modifier}|{device}[/{verb}]`` - list of conflicting devices
+
+ ``get`` `IDENTIFIER`
+ get string value.
+
+ the value of the `IDENTIFIER` argument can can be:
+
+ - ``_verb`` - return current verb
+ - ``[=]{NAME}[/[{modifier}|{/device}][/{verb}]]`` (For valid NAMEs look at the
+ ALSA `Use Case Interface`_)
+
+
+ ``geti`` `IDENTIFIER`
+ get integer value.
+
+ the value of the `IDENTIFIER` argument can can be:
+
+ - ``_devstatus/{device}``
+ - ``_modtstaus/{device}``
+
+ ``set`` `IDENTIFIER` `VALUE`
+ set string value
+
+ The value of the `IDENTIFIER` argument can can be:
+
+ - ``_verb`` - set the verb to `VALUE`
+ - ``_enadev`` - enable the device specified by `VALUE`
+ - ``_disdev`` - disable the device specified by `VALUE`
+ - ``_swdev/{old_device}`` - switche device:
+
+ - disable `old_device` and then enable the device specified by
+ `VALUE`
+ - if no device was enabled just return
+
+ - ``_enamod`` - enable the modifier specified by `VALUE`
+ - ``_dismod`` - disable the modifier specified by `VALUE`
+ - ``_swmod/{old_modifier}`` - switch modifier:
+
+ - disable `old_modifier` and then enable the modifier specified by
+ `VALUE`
+ - if no modifier was enabled just return
+
+ Note that the identifiers referring to devices and modifiers are valid
+ only after setting a verb.
+
+ ``h``, ``help``
+ help
+
+ ``q``, ``quit``
+ quit
+
+
+FILES
+=====
+
+The master use case files for each supported sound card are in ``/usr/share/alsa/ucm``.
+
+For example, the master use case file for the `Pandaboard` card is in
+``/usr/share/alsa/ucm/PandaBoard/PandaBoard.conf``, this file lists all the
+supported use cases, e.g.
+
+::
+
+ SectionUseCase."HiFi" {
+ File "hifi"
+ Comment "Play HiFi quality Music."
+ }
+ ...
+
+
+Each use case defines a _verb, which is described in the file specified in
+the ``File`` directive, like above.
+
+The ``HiFi`` verb above is described in
+``/usr/share/alsa/ucm/PandaBoard/hifi``.
+
+For more details on the syntax of UCM files, see the alsa-lib source code:
+http://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=src/ucm/parser.c
+
+
+EXAMPLES OF USE
+===============
+
+Some commands, like for instance ``list _devices``,
+can only work after setting a ``_verb`` in the **same execution**, for
+instance this sequence doesn't work:
+
+::
+
+ # alsaucm -c bytcr-rt5640 set _verb HiFi
+ # alsaucm -c bytcr-rt5640 list _devices
+
+
+However this command does:
+
+::
+
+ # alsaucm -n -b - <<EOM
+ open bytcr-rt5640
+ set _verb HiFi
+ list _devices
+ EOM
+
+
+An example of setting the `Speaker` device for the `HiFi` verb of the
+`bytcr-rt5640` card:
+
+::
+
+ # alsaucm -n -b - <<EOM
+ open bytcr-rt5640
+ reset
+ set _verb HiFi
+ set _enadev Speaker
+ EOM
+
+
+
+SEE ALSO
+========
+
+* Use Case Interface: http://www.alsa-project.org/alsa-doc/alsa-lib/group__ucm.html
+
+.. _Use Case Interface: http://www.alsa-project.org/alsa-doc/alsa-lib/group__ucm.html
+
+BUGS
+====
+
+None known.