diff --git a/.alsa-utils.metadata b/.alsa-utils.metadata index 1a39e85..58c5985 100644 --- a/.alsa-utils.metadata +++ b/.alsa-utils.metadata @@ -1 +1 @@ -a5fb61b41685001c9a2a41a38e61cdaf7e60ef2e SOURCES/alsa-utils-1.1.1.tar.bz2 +98569a82deeb492e728a4d2d77bdba2e1f9f36dd SOURCES/alsa-utils-1.1.3.tar.bz2 diff --git a/.gitignore b/.gitignore index 1667f88..57b582a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/alsa-utils-1.1.1.tar.bz2 +SOURCES/alsa-utils-1.1.3.tar.bz2 diff --git a/SOURCES/alsa-utils-1.1.1-post.patch b/SOURCES/alsa-utils-1.1.1-post.patch deleted file mode 100644 index d8991df..0000000 --- a/SOURCES/alsa-utils-1.1.1-post.patch +++ /dev/null @@ -1,377 +0,0 @@ -From 85827fbb642463ab724a9471a7a88f93fa2a217d Mon Sep 17 00:00:00 2001 -From: David Fries -Date: Wed, 13 Apr 2016 23:32:46 -0500 -Subject: [PATCH 1/4] aplay: fix lurking capture file overwrite bug - -If -d was given to arecord while commit -8aa13eec80eac312e4b99423909387660fb99b8f (now reverted) was in effect, -the last read would be shorter than the chunk size, but pcm_read would -read and return the chunk size, the samples were discarded, and -capture() continued in a loop because count never reached 0. arecord -opens a new file each loop iteration, if arecord is dynamically naming -files, --use-strftime option or beyond the wave 2GB limit, this will -generate a series of header only wave files. If the file is unique -the originally recorded data is lost and it will continue overwriting -the same file with a header only wave file. - -While the current pcm_read can't fail (it can exit), it is better to -just fix this lurking bug in case it is "fixed" again. - -Signed-off-by: Takashi Iwai ---- - aplay/aplay.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/aplay/aplay.c b/aplay/aplay.c -index 7acaa83..2da7dda 100644 ---- a/aplay/aplay.c -+++ b/aplay/aplay.c -@@ -3067,11 +3067,14 @@ static void capture(char *orig_name) - size_t c = (rest <= (off64_t)chunk_bytes) ? - (size_t)rest : chunk_bytes; - size_t f = c * 8 / bits_per_frame; -- if (pcm_read(audiobuf, f) != f) -+ if (pcm_read(audiobuf, f) != f) { -+ in_aborting = 1; - break; -+ } - if (write(fd, audiobuf, c) != c) { - perror(name); -- prg_exit(EXIT_FAILURE); -+ in_aborting = 1; -+ break; - } - count -= c; - rest -= c; -@@ -3091,7 +3094,7 @@ static void capture(char *orig_name) - } - - if (in_aborting) -- break; -+ prg_exit(EXIT_FAILURE); - - /* repeat the loop when format is raw without timelimit or - * requested counts of data are recorded --- -2.5.5 - - -From 569f2c116ee30de8a16fef0822e13dd33a41f33e Mon Sep 17 00:00:00 2001 -From: "Lu, Han" -Date: Sun, 17 Apr 2016 09:26:45 +0800 -Subject: [PATCH 2/4] alsabat: add terminate status check for capture thread - -In loopback test, alsabat use pthread_join(pthread_t thread, **retval) -to wait for the capture thread to terminate. If the capture thread was -canceled, PTHREAD_CANCELED is placed in *retval, and the access to the -**retval will fail. Add status check to prevent illegal access to the -**retval. - -Signed-off-by: Lu, Han -Signed-off-by: Takashi Iwai ---- - bat/bat.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/bat/bat.c b/bat/bat.c -index e824065..1afdcb4 100644 ---- a/bat/bat.c -+++ b/bat/bat.c -@@ -192,6 +192,12 @@ static void test_loopback(struct bat *bat) - exit(EXIT_FAILURE); - } - -+ /* check if capture thread is canceled or not */ -+ if (thread_result_capture == PTHREAD_CANCELED) { -+ fprintf(bat->log, _("Capture canceled.\n")); -+ return; -+ } -+ - /* check capture status */ - if (*thread_result_capture != 0) { - fprintf(bat->err, _("Exit capture thread fail: %d\n"), --- -2.5.5 - - -From 9e196efda4463452db51e295cd57bbf0bdaa4715 Mon Sep 17 00:00:00 2001 -From: "vivian,zhang" -Date: Tue, 31 May 2016 15:31:32 +0800 -Subject: [PATCH 3/4] alsabat: add buffer size and period size settings - -Add buffer size and period size settings in alsabat. -With -E and -B options, alsabat performs the test with -specified buffer size and period size - -Signed-off-by: Zhang Vivian -Acked-by: Liam Girdwood -Signed-off-by: Takashi Iwai ---- - bat/alsa.c | 95 ++++++++++++++++++++++++++++++++++++++++------------------ - bat/bat.c | 18 +++++++++-- - bat/common.h | 8 +++++ - bat/tinyalsa.c | 5 +++- - 4 files changed, 94 insertions(+), 32 deletions(-) - -diff --git a/bat/alsa.c b/bat/alsa.c -index 75158cb..0a37714 100644 ---- a/bat/alsa.c -+++ b/bat/alsa.c -@@ -74,6 +74,8 @@ static int set_snd_pcm_params(struct bat *bat, struct pcm_container *sndpcm) - snd_pcm_format_t format; - unsigned int buffer_time = 0; - unsigned int period_time = 0; -+ snd_pcm_uframes_t buffer_size = 0; -+ snd_pcm_uframes_t period_size = 0; - unsigned int rate; - int err; - const char *device_name = snd_pcm_name(sndpcm->handle); -@@ -145,39 +147,71 @@ static int set_snd_pcm_params(struct bat *bat, struct pcm_container *sndpcm) - return -EINVAL; - } - -- if (snd_pcm_hw_params_get_buffer_time_max(params, -- &buffer_time, 0) < 0) { -- fprintf(bat->err, _("Get parameter from device error: ")); -- fprintf(bat->err, _("buffer time: %d %s: %s(%d)\n"), -- buffer_time, -- device_name, snd_strerror(err), err); -- return -EINVAL; -- } -+ if (bat->buffer_size > 0 && bat->period_size == 0) -+ bat->period_size = bat->buffer_size / DIV_BUFFERTIME; - -- if (buffer_time > MAX_BUFFERTIME) -- buffer_time = MAX_BUFFERTIME; -+ if (bat->buffer_size > 0) { -+ buffer_size = bat->buffer_size; -+ period_size = bat->period_size; - -- period_time = buffer_time / DIV_BUFFERTIME; -+ fprintf(bat->log, _("Set period size: %d buffer size: %d\n"), -+ (int) period_size, (int) buffer_size); - -- /* Set buffer time and period time */ -- err = snd_pcm_hw_params_set_buffer_time_near(sndpcm->handle, params, -- &buffer_time, 0); -- if (err < 0) { -- fprintf(bat->err, _("Set parameter to device error: ")); -- fprintf(bat->err, _("buffer time: %d %s: %s(%d)\n"), -- buffer_time, -- device_name, snd_strerror(err), err); -- return err; -- } -+ err = snd_pcm_hw_params_set_buffer_size_near(sndpcm->handle, -+ params, &buffer_size); -+ if (err < 0) { -+ fprintf(bat->err, _("Set parameter to device error: ")); -+ fprintf(bat->err, _("buffer size: %d %s: %s(%d)\n"), -+ (int) buffer_size, -+ device_name, snd_strerror(err), err); -+ return err; -+ } - -- err = snd_pcm_hw_params_set_period_time_near(sndpcm->handle, params, -- &period_time, 0); -- if (err < 0) { -- fprintf(bat->err, _("Set parameter to device error: ")); -- fprintf(bat->err, _("period time: %d %s: %s(%d)\n"), -- period_time, -- device_name, snd_strerror(err), err); -- return err; -+ err = snd_pcm_hw_params_set_period_size_near(sndpcm->handle, -+ params, &period_size, 0); -+ if (err < 0) { -+ fprintf(bat->err, _("Set parameter to device error: ")); -+ fprintf(bat->err, _("period size: %d %s: %s(%d)\n"), -+ (int) period_size, -+ device_name, snd_strerror(err), err); -+ return err; -+ } -+ } else { -+ if (snd_pcm_hw_params_get_buffer_time_max(params, -+ &buffer_time, 0) < 0) { -+ fprintf(bat->err, -+ _("Get parameter from device error: ")); -+ fprintf(bat->err, _("buffer time: %d %s: %s(%d)\n"), -+ buffer_time, -+ device_name, snd_strerror(err), err); -+ return -EINVAL; -+ } -+ -+ if (buffer_time > MAX_BUFFERTIME) -+ buffer_time = MAX_BUFFERTIME; -+ -+ period_time = buffer_time / DIV_BUFFERTIME; -+ -+ /* Set buffer time and period time */ -+ err = snd_pcm_hw_params_set_buffer_time_near(sndpcm->handle, -+ params, &buffer_time, 0); -+ if (err < 0) { -+ fprintf(bat->err, _("Set parameter to device error: ")); -+ fprintf(bat->err, _("buffer time: %d %s: %s(%d)\n"), -+ buffer_time, -+ device_name, snd_strerror(err), err); -+ return err; -+ } -+ -+ err = snd_pcm_hw_params_set_period_time_near(sndpcm->handle, -+ params, &period_time, 0); -+ if (err < 0) { -+ fprintf(bat->err, _("Set parameter to device error: ")); -+ fprintf(bat->err, _("period time: %d %s: %s(%d)\n"), -+ period_time, -+ device_name, snd_strerror(err), err); -+ return err; -+ } - } - - /* Write the parameters to the driver */ -@@ -214,6 +248,9 @@ static int set_snd_pcm_params(struct bat *bat, struct pcm_container *sndpcm) - return -EINVAL; - } - -+ fprintf(bat->log, _("Get period size: %d buffer size: %d\n"), -+ (int) sndpcm->period_size, (int) sndpcm->buffer_size); -+ - err = snd_pcm_format_physical_width(format); - if (err < 0) { - fprintf(bat->err, _("Invalid parameters: ")); -diff --git a/bat/bat.c b/bat/bat.c -index 1afdcb4..cd4ea2d 100644 ---- a/bat/bat.c -+++ b/bat/bat.c -@@ -292,6 +292,8 @@ _("Usage: alsabat [-options]...\n" - " -k parameter for frequency detecting threshold\n" - " -F target frequency\n" - " -p total number of periods to play/capture\n" -+" -B buffer size in frames\n" -+" -E period size in frames\n" - " --log=# file that both stdout and strerr redirecting to\n" - " --file=# file for playback\n" - " --saveplay=# file that storing playback content, for debug\n" -@@ -324,6 +326,8 @@ static void set_defaults(struct bat *bat) - bat->capture.device = NULL; - bat->buf = NULL; - bat->local = false; -+ bat->buffer_size = 0; -+ bat->period_size = 0; - #ifdef HAVE_LIBTINYALSA - bat->channels = 2; - bat->playback.fct = &playback_tinyalsa; -@@ -342,8 +346,8 @@ static void set_defaults(struct bat *bat) - - static void parse_arguments(struct bat *bat, int argc, char *argv[]) - { -- int c, option_index; -- static const char short_options[] = "D:P:C:f:n:F:c:r:s:k:p:lth"; -+ int c, option_index, err; -+ static const char short_options[] = "D:P:C:f:n:F:c:r:s:k:p:B:E:lth"; - static const struct option long_options[] = { - {"help", 0, 0, 'h'}, - {"log", 1, 0, OPT_LOG}, -@@ -414,6 +418,16 @@ static void parse_arguments(struct bat *bat, int argc, char *argv[]) - bat->periods_total = atoi(optarg); - bat->period_is_limited = true; - break; -+ case 'B': -+ err = atoi(optarg); -+ bat->buffer_size = err >= MIN_BUFFERSIZE -+ && err < MAX_BUFFERSIZE ? err : 0; -+ break; -+ case 'E': -+ err = atoi(optarg); -+ bat->period_size = err >= MIN_PERIODSIZE -+ && err < MAX_PERIODSIZE ? err : 0; -+ break; - case 'h': - default: - usage(bat); -diff --git a/bat/common.h b/bat/common.h -index b789af5..ad02a5a 100644 ---- a/bat/common.h -+++ b/bat/common.h -@@ -46,6 +46,12 @@ - #define DIV_BUFFERTIME 8 - /* margin to avoid sign inversion when generate sine wav */ - #define RANGE_FACTOR 0.95 -+#define MAX_BUFFERSIZE 200000 -+#define MIN_BUFFERSIZE 32 -+#define MAX_PERIODSIZE 200000 -+#define MIN_PERIODSIZE 32 -+/* default period size for tinyalsa */ -+#define TINYALSA_PERIODSIZE 1024 - - #define EBATBASE 1000 - #define ENOPEAK (EBATBASE + 1) -@@ -152,6 +158,8 @@ struct bat { - int frame_size; /* size of frame */ - int sample_size; /* size of sample */ - enum _bat_pcm_format format; /* PCM format */ -+ int buffer_size; /* buffer size in frames */ -+ int period_size; /* period size in frames */ - - float sigma_k; /* threshold for peak detection */ - float target_freq[MAX_CHANNELS]; -diff --git a/bat/tinyalsa.c b/bat/tinyalsa.c -index ea5f848..a19dd90 100644 ---- a/bat/tinyalsa.c -+++ b/bat/tinyalsa.c -@@ -57,7 +57,10 @@ static int init_config(struct bat *bat, struct pcm_config *config) - { - config->channels = bat->channels; - config->rate = bat->rate; -- config->period_size = 1024; -+ if (bat->period_size > 0) -+ config->period_size = bat->period_size; -+ else -+ config->period_size = TINYALSA_PERIODSIZE; - config->period_count = 4; - config->start_threshold = 0; - config->stop_threshold = 0; --- -2.5.5 - - -From 2b3adf8668ab4e0e57168725f2562006bb5472ef Mon Sep 17 00:00:00 2001 -From: "Lu, Han" -Date: Wed, 1 Jun 2016 16:54:28 +0800 -Subject: [PATCH 4/4] alsabat: fix a possible memory leak - -Fix a possible memory leak in generate_sine_wave(). Memory free was -ignored when the function return an error. - -Signed-off-by: Lu, Han -Signed-off-by: Takashi Iwai ---- - bat/signal.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/bat/signal.c b/bat/signal.c -index a47ba97..61d2824 100644 ---- a/bat/signal.c -+++ b/bat/signal.c -@@ -168,16 +168,17 @@ int generate_sine_wave(struct bat *bat, int frames, void *buf) - /* reorder samples to interleaved mode */ - err = reorder(bat, sinus_f, frames); - if (err != 0) -- return err; -+ goto exit; - - /* adjust amplitude and offset of waveform */ - err = adjust_waveform(bat, sinus_f, frames); - if (err != 0) -- return err; -+ goto exit; - - bat->convert_float_to_sample(sinus_f, buf, frames, bat->channels); - -+exit: - free(sinus_f); - -- return 0; -+ return err; - } --- -2.5.5 - diff --git a/SOURCES/alsa-utils-1.1.3-post.patch b/SOURCES/alsa-utils-1.1.3-post.patch new file mode 100644 index 0000000..89dfbc1 --- /dev/null +++ b/SOURCES/alsa-utils-1.1.3-post.patch @@ -0,0 +1,448 @@ +From c6bdde171e1532f7b37333a5a746b6e662f12c53 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +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 +--- + 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 +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 +CC: Jordi Mallach +Signed-off-by: Takashi Iwai +--- + 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 +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 +Signed-off-by: Takashi Iwai +--- + 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 +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 +Signed-off-by: Takashi Iwai +--- + 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 ++:Date: 2016-09-22 ++:Copyright: GPLv2+ ++:Manual section: 1 ++:Manual group: General Commands Manual ++ ++SYNOPSIS ++======== ++ ++*alsaucm* [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 - <= %{baseversion} BuildRequires: libsamplerate-devel BuildRequires: ncurses-devel BuildRequires: gettext-devel -BuildRequires: xmlto +BuildRequires: xmlto python-docutils BuildRequires: systemd-units >= 39-2 Conflicts: udev <= 179-2 # use latest alsa-lib - the executables in this package requires latest API @@ -121,6 +121,10 @@ if [ -s /etc/asound.state -a ! -s /var/lib/alsa/asound.state ] ; then fi %changelog +* Fri Mar 24 2017 Jaroslav Kysela - 1.1.3-2 +- Updated to 1.1.3 +- Resolves: rhbz#1399509 + * Mon Jun 6 2016 Jaroslav Kysela - 1.1.1-1 - Updated to 1.1.1 - Add alsa-delay man page