From 2b269c317aec5b46ee7caeab8764b867b538be11 Mon Sep 17 00:00:00 2001
From: j1nx
Date: Thu, 19 Aug 2021 12:43:48 +0200
Subject: [PATCH 1/3] Fix weather skill
---
.../package/mycroft-skill-weather/mycroft-skill-weather.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/buildroot-external/package/mycroft-skill-weather/mycroft-skill-weather.mk b/buildroot-external/package/mycroft-skill-weather/mycroft-skill-weather.mk
index 9751fe01..d3f7d1b4 100644
--- a/buildroot-external/package/mycroft-skill-weather/mycroft-skill-weather.mk
+++ b/buildroot-external/package/mycroft-skill-weather/mycroft-skill-weather.mk
@@ -4,7 +4,7 @@
#
################################################################################
-MYCROFT_SKILL_WEATHER_VERSION = 250574761a866a9bc97c8579aaa29637df8d7bdf
+MYCROFT_SKILL_WEATHER_VERSION = 57af09f795993d7ee65670087a75b051a534ecdc
MYCROFT_SKILL_WEATHER_SITE = git://github.com/OpenVoiceOS/skill-weather
MYCROFT_SKILL_WEATHER_SITE_METHOD = git
MYCROFT_SKILL_WEATHER_DIRLOCATION = home/mycroft/.local/share/mycroft/skills
From cb8dd71412d200f169e7c622a1ab4d26b504f7e6 Mon Sep 17 00:00:00 2001
From: j1nx
Date: Thu, 26 Aug 2021 21:03:58 +0200
Subject: [PATCH 2/3] Bump packages and skills
---
.../package/mycroft-embedded-shell/mycroft-embedded-shell.hash | 2 +-
.../package/mycroft-embedded-shell/mycroft-embedded-shell.mk | 2 +-
.../mycroft-skill-ovos-common-play.mk | 2 +-
.../mycroft-skill-ovos-mycroftgui.mk | 2 +-
.../package/python-ovos-workshop/python-ovos-workshop.hash | 2 +-
.../package/python-ovos-workshop/python-ovos-workshop.mk | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/buildroot-external/package/mycroft-embedded-shell/mycroft-embedded-shell.hash b/buildroot-external/package/mycroft-embedded-shell/mycroft-embedded-shell.hash
index 9da7c9d4..37ebf85a 100644
--- a/buildroot-external/package/mycroft-embedded-shell/mycroft-embedded-shell.hash
+++ b/buildroot-external/package/mycroft-embedded-shell/mycroft-embedded-shell.hash
@@ -1,2 +1,2 @@
# Locally computed
-sha256 c7345620d9ffd840a817021a4c85d00817f293ca0ff4c318f6f2e29bc94e7e5d mycroft-embedded-shell-b7f47eac025f4aeec4bb640745457faa74c1861d.tar.gz
+sha256 1a2bbd14271b9f16ed8dbde599f1c21530fe76d4e93ea790b0890ecc071e3b4d mycroft-embedded-shell-905cb4b61104eaa390e692c73bfc9a50cecde50f.tar.gz
diff --git a/buildroot-external/package/mycroft-embedded-shell/mycroft-embedded-shell.mk b/buildroot-external/package/mycroft-embedded-shell/mycroft-embedded-shell.mk
index e0b97f82..2a4e82e3 100644
--- a/buildroot-external/package/mycroft-embedded-shell/mycroft-embedded-shell.mk
+++ b/buildroot-external/package/mycroft-embedded-shell/mycroft-embedded-shell.mk
@@ -4,7 +4,7 @@
#
################################################################################
-MYCROFT_EMBEDDED_SHELL_VERSION = b7f47eac025f4aeec4bb640745457faa74c1861d
+MYCROFT_EMBEDDED_SHELL_VERSION = 905cb4b61104eaa390e692c73bfc9a50cecde50f
MYCROFT_EMBEDDED_SHELL_SITE = $(call github,OpenVoiceOS,mycroft-embedded-shell,$(MYCROFT_EMBEDDED_SHELL_VERSION))
MYCROFT_EMBEDDED_SHELL_LICENSE = Apache License 2.0
diff --git a/buildroot-external/package/mycroft-skill-ovos-common-play/mycroft-skill-ovos-common-play.mk b/buildroot-external/package/mycroft-skill-ovos-common-play/mycroft-skill-ovos-common-play.mk
index 1ad89481..b40323ba 100644
--- a/buildroot-external/package/mycroft-skill-ovos-common-play/mycroft-skill-ovos-common-play.mk
+++ b/buildroot-external/package/mycroft-skill-ovos-common-play/mycroft-skill-ovos-common-play.mk
@@ -4,7 +4,7 @@
#
################################################################################
-MYCROFT_SKILL_OVOS_COMMON_PLAY_VERSION = 17a1093b9b7d9d3e518e03a7d87bdac242879cbd
+MYCROFT_SKILL_OVOS_COMMON_PLAY_VERSION = dd439f5353b0a8c181df6a051c3f865e8491d1e9
MYCROFT_SKILL_OVOS_COMMON_PLAY_SITE = git://github.com/OpenVoiceOS/skill-ovos-common-play
MYCROFT_SKILL_OVOS_COMMON_PLAY_SITE_METHOD = git
MYCROFT_SKILL_OVOS_COMMON_PLAY_DIRLOCATION = home/mycroft/.local/share/mycroft/skills
diff --git a/buildroot-external/package/mycroft-skill-ovos-mycroftgui/mycroft-skill-ovos-mycroftgui.mk b/buildroot-external/package/mycroft-skill-ovos-mycroftgui/mycroft-skill-ovos-mycroftgui.mk
index 793bc0fe..a90c1059 100644
--- a/buildroot-external/package/mycroft-skill-ovos-mycroftgui/mycroft-skill-ovos-mycroftgui.mk
+++ b/buildroot-external/package/mycroft-skill-ovos-mycroftgui/mycroft-skill-ovos-mycroftgui.mk
@@ -4,7 +4,7 @@
#
################################################################################
-MYCROFT_SKILL_OVOS_MYCROFTGUI_VERSION = a0e0dadc4955b57ce9d6e9e98ff25f6f952402e5
+MYCROFT_SKILL_OVOS_MYCROFTGUI_VERSION = a09280c4117fb60243675abf338e7bdf41ae5e3f
MYCROFT_SKILL_OVOS_MYCROFTGUI_SITE = git://github.com/OpenVoiceOS/skill-ovos-mycroftgui
MYCROFT_SKILL_OVOS_MYCROFTGUI_SITE_METHOD = git
MYCROFT_SKILL_OVOS_MYCROFTGUI_DIRLOCATION = home/mycroft/.local/share/mycroft/skills
diff --git a/buildroot-external/package/python-ovos-workshop/python-ovos-workshop.hash b/buildroot-external/package/python-ovos-workshop/python-ovos-workshop.hash
index 60e65d22..96429568 100644
--- a/buildroot-external/package/python-ovos-workshop/python-ovos-workshop.hash
+++ b/buildroot-external/package/python-ovos-workshop/python-ovos-workshop.hash
@@ -1 +1 @@
-sha256 bd6fcc7f82dd5310ca26b5a7574fb903b2ff8295bf2d548e1f55d251bc835266 python-ovos-workshop-eb8e4081a789144c702cc4cffe9c881379c2f3a8.tar.gz
+sha256 fbce0f03c117d2bba2d1e8aaf6616b13debedaec5c577fb110d467aade536259 python-ovos-workshop-f3791ffb38835f36b1fb525bf38981982a27a79e.tar.gz
diff --git a/buildroot-external/package/python-ovos-workshop/python-ovos-workshop.mk b/buildroot-external/package/python-ovos-workshop/python-ovos-workshop.mk
index 90c9e635..c981b462 100644
--- a/buildroot-external/package/python-ovos-workshop/python-ovos-workshop.mk
+++ b/buildroot-external/package/python-ovos-workshop/python-ovos-workshop.mk
@@ -4,7 +4,7 @@
#
################################################################################
-PYTHON_OVOS_WORKSHOP_VERSION = eb8e4081a789144c702cc4cffe9c881379c2f3a8
+PYTHON_OVOS_WORKSHOP_VERSION = f3791ffb38835f36b1fb525bf38981982a27a79e
PYTHON_OVOS_WORKSHOP_SITE = $(call github,OpenVoiceOS,OVOS-workshop,$(PYTHON_OVOS_WORKSHOP_VERSION))
PYTHON_OVOS_WORKSHOP_SETUP_TYPE = setuptools
PYTHON_OVOS_WORKSHOP_LICENSE_FILES = LICENSE
From 88cdea8b0de1e89378f15e576796d46c489a1fe1 Mon Sep 17 00:00:00 2001
From: j1nx
Date: Thu, 26 Aug 2021 21:04:22 +0200
Subject: [PATCH 3/3] Addition of USB GeneralPlus pulse and udev support (wip)
---
.../rules.d/91-pulseadio-GeneralPlus.rules | 2 +
.../alsa-mixer/profile-sets/GeneralPlus.conf | 484 ++++++++++++++++++
2 files changed, 486 insertions(+)
create mode 100644 buildroot-external/rootfs-overlay/etc/udev/rules.d/91-pulseadio-GeneralPlus.rules
create mode 100644 buildroot-external/rootfs-overlay/usr/share/pulseaudio/alsa-mixer/profile-sets/GeneralPlus.conf
diff --git a/buildroot-external/rootfs-overlay/etc/udev/rules.d/91-pulseadio-GeneralPlus.rules b/buildroot-external/rootfs-overlay/etc/udev/rules.d/91-pulseadio-GeneralPlus.rules
new file mode 100644
index 00000000..2ae22d4b
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/etc/udev/rules.d/91-pulseadio-GeneralPlus.rules
@@ -0,0 +1,2 @@
+ACTION=="change", SUBSYSTEM=="sound", KERNEL=="card*", \
+ATTRS{subsystem_vendor}=="0x1b3f", ATTRS{subsystem_device}=="0x2008", ENV{PULSE_PROFILE_SET}="GeneralPlus.conf"
diff --git a/buildroot-external/rootfs-overlay/usr/share/pulseaudio/alsa-mixer/profile-sets/GeneralPlus.conf b/buildroot-external/rootfs-overlay/usr/share/pulseaudio/alsa-mixer/profile-sets/GeneralPlus.conf
new file mode 100644
index 00000000..e203b3db
--- /dev/null
+++ b/buildroot-external/rootfs-overlay/usr/share/pulseaudio/alsa-mixer/profile-sets/GeneralPlus.conf
@@ -0,0 +1,484 @@
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of the
+# License, or (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, see .
+
+; Default profile definitions for the ALSA backend of PulseAudio. This
+; is used as fallback for all cards that have no special mapping
+; assigned (and should be good enough for the vast majority of
+; cards). If you want to assign a different profile set than this one
+; to a device, either set the udev property PULSE_PROFILE_SET for the
+; card, or use the "profile_set" module argument when loading
+; module-alsa-card.
+;
+; So what is this about? Simply, what we do here is map ALSA devices
+; to how they are exposed in PA. We say which ALSA device string to
+; use to open a device, which channel mapping to use then, and which
+; mixer path to use. This is encoded in a 'mapping'. Multiple of these
+; mappings can be bound together in a 'profile' which is then directly
+; exposed in the UI as a card profile. Each mapping assigned to a
+; profile will result in one sink/source to be created if the profile
+; is selected for the card.
+;
+; Additionally, the path set configuration files can describe the
+; decibel values assigned to the steps of the volume elements. This
+; can be used to work around situations when the alsa driver doesn't
+; provide any decibel information, or when the information is
+; incorrect.
+
+
+; [General]
+; auto-profiles = no | yes # Instead of defining all profiles manually, autogenerate
+; # them by combining every input mapping with every output mapping.
+;
+; [Mapping id]
+; device-strings = ... # ALSA device string. %f will be replaced by the card identifier.
+; channel-map = ... # Channel mapping to use for this device
+; description = ... # Description for the mapping. Note that it's better to set the description
+; # in the well_known_descriptions table in alsa-mixer.c than with this
+; # option, because the descriptions in alsa-mixer.c are translatable.
+; description-key = ... # A custom key for the well_known_descriptions table (by default the mapping
+; # name is used).
+; paths-input = ... # A list of mixer paths to use. Every path in this list will be probed.
+; # If multiple are found to be working they will be available as device ports
+; paths-output = ...
+; element-input = ... # Instead of configuring a full mixer path simply configure a single
+; # mixer element for volume/mute handling. The value can be an element
+; # name, or name and index separated by a comma.
+; element-output = ...
+; priority = ...
+; direction = any | input | output # Only useful for?
+;
+; exact-channels = yes | no # If no, and the exact number of channels is not supported,
+; # allow device to be opened with another channel count
+; fallback = no | yes # This mapping will only be considered if all non-fallback mappings fail
+; intended-roles = ... # Set the device.intended_roles property for the sink/source.
+;
+; [Profile id]
+; input-mappings = ... # Lists mappings for sources on this profile, those mapping must be
+; # defined in this file too
+; output-mappings = ... # Lists mappings for sinks on this profile, those mappings must be
+; # defined in this file too
+; description = ...
+; priority = ... # Numeric value to deduce priority for this profile
+; skip-probe = no | yes # Skip probing for availability? If this is yes then this profile
+; # will be assumed as working without probing. Makes initialization
+; # a bit faster but only works if the card is really known well.
+;
+; fallback = no | yes # This profile will only be considered if all non-fallback profiles fail
+; [DecibelFix element] # Decibel fixes can be used to work around missing or incorrect dB
+; # information from alsa. A decibel fix is a table that maps volume steps
+; # to decibel values for one volume element. The "element" part in the
+; # section title is the name of the volume element (or name and index
+; # separated by a comma).
+; #
+; # NOTE: This feature is meant just as a help for figuring out the correct
+; # decibel values. PulseAudio is not the correct place to maintain the
+; # decibel mappings!
+; #
+; # If you need this feature, then you should make sure that when you have
+; # the correct values figured out, the alsa driver developers get informed
+; # too, so that they can fix the driver.
+;
+; db-values = ... # The option value consists of pairs of step numbers and decibel values.
+; # The pairs are separated with whitespace, and steps are separated from
+; # the corresponding decibel values with a colon. The values must be in an
+; # increasing order. Here's an example of a valid string:
+; #
+; # "0:-40.50 1:-38.70 3:-33.00 11:0"
+; #
+; # The lowest step imposes a lower limit for hardware volume and the
+; # highest step correspondingly imposes a higher limit. That means that
+; # that the mixer will never be set outside those values - the rest of the
+; # volume scale is done using software volume.
+; #
+; # As can be seen in the example, you don't need to specify a dB value for
+; # each step. The dB values for skipped steps will be linearly interpolated
+; # using the nearest steps that are given.
+
+[General]
+auto-profiles = yes
+
+[Mapping analog-stereo]
+device-strings = front:%f
+channel-map = left,right
+paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2
+paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
+priority = 15
+
+# If everything else fails, try to use hw:0 as a stereo device...
+[Mapping stereo-fallback]
+device-strings = hw:%f
+fallback = yes
+channel-map = front-left,front-right
+paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2
+paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
+priority = 1
+
+# ...and if even that fails, try to use hw:0 as a mono device.
+[Mapping mono-fallback]
+device-strings = hw:%f
+fallback = yes
+channel-map = mono
+paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2 analog-output-mono
+paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headset-mic
+priority = 1
+
+[Mapping analog-surround-21]
+device-strings = surround21:%f
+channel-map = front-left,front-right,lfe
+paths-output = analog-output analog-output-lineout analog-output-speaker
+priority = 13
+direction = output
+
+[Mapping analog-surround-40]
+device-strings = surround40:%f
+channel-map = front-left,front-right,rear-left,rear-right
+paths-output = analog-output analog-output-lineout analog-output-speaker
+priority = 12
+direction = output
+
+[Mapping analog-surround-41]
+device-strings = surround41:%f
+channel-map = front-left,front-right,rear-left,rear-right,lfe
+paths-output = analog-output analog-output-lineout analog-output-speaker
+priority = 13
+direction = output
+
+[Mapping analog-surround-50]
+device-strings = surround50:%f
+channel-map = front-left,front-right,rear-left,rear-right,front-center
+paths-output = analog-output analog-output-lineout analog-output-speaker
+priority = 12
+direction = output
+
+[Mapping analog-surround-51]
+device-strings = surround51:%f
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+paths-output = analog-output analog-output-lineout analog-output-speaker
+priority = 13
+direction = output
+
+[Mapping analog-surround-71]
+device-strings = surround71:%f
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+description = Analog Surround 7.1
+paths-output = analog-output analog-output-lineout analog-output-speaker
+priority = 12
+direction = output
+
+[Mapping iec958-stereo]
+device-strings = iec958:%f
+channel-map = left,right
+paths-input = iec958-stereo-input
+paths-output = iec958-stereo-output
+priority = 5
+
+[Mapping iec958-ac3-surround-40]
+device-strings = a52:%f
+channel-map = front-left,front-right,rear-left,rear-right
+paths-output = iec958-stereo-output
+priority = 2
+direction = output
+
+[Mapping iec958-ac3-surround-51]
+device-strings = a52:%f
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+paths-output = iec958-stereo-output
+priority = 3
+direction = output
+
+[Mapping iec958-dts-surround-51]
+device-strings = dca:%f
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+paths-output = iec958-stereo-output
+priority = 3
+direction = output
+
+[Mapping hdmi-stereo]
+description = Digital Stereo (HDMI)
+device-strings = hdmi:%f
+paths-output = hdmi-output-0
+channel-map = left,right
+priority = 9
+direction = output
+
+[Mapping hdmi-surround]
+description = Digital Surround 5.1 (HDMI)
+device-strings = hdmi:%f
+paths-output = hdmi-output-0
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 8
+direction = output
+
+[Mapping hdmi-surround71]
+description = Digital Surround 7.1 (HDMI)
+device-strings = hdmi:%f
+paths-output = hdmi-output-0
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+priority = 8
+direction = output
+
+[Mapping hdmi-dts-surround]
+description = Digital Surround 5.1 (HDMI/DTS)
+device-strings = dcahdmi:%f
+paths-output = hdmi-output-0
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-stereo-extra1]
+description = Digital Stereo (HDMI 2)
+device-strings = hdmi:%f,1
+paths-output = hdmi-output-1
+channel-map = left,right
+priority = 7
+direction = output
+
+[Mapping hdmi-surround-extra1]
+description = Digital Surround 5.1 (HDMI 2)
+device-strings = hdmi:%f,1
+paths-output = hdmi-output-1
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-surround71-extra1]
+description = Digital Surround 7.1 (HDMI 2)
+device-strings = hdmi:%f,1
+paths-output = hdmi-output-1
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+priority = 6
+direction = output
+
+[Mapping hdmi-dts-surround-extra1]
+description = Digital Surround 5.1 (HDMI 2/DTS)
+device-strings = dcahdmi:%f,1
+paths-output = hdmi-output-1
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-stereo-extra2]
+description = Digital Stereo (HDMI 3)
+device-strings = hdmi:%f,2
+paths-output = hdmi-output-2
+channel-map = left,right
+priority = 7
+direction = output
+
+[Mapping hdmi-surround-extra2]
+description = Digital Surround 5.1 (HDMI 3)
+device-strings = hdmi:%f,2
+paths-output = hdmi-output-2
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-surround71-extra2]
+description = Digital Surround 7.1 (HDMI 3)
+device-strings = hdmi:%f,2
+paths-output = hdmi-output-2
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+priority = 6
+direction = output
+
+[Mapping hdmi-dts-surround-extra2]
+description = Digital Surround 5.1 (HDMI 3/DTS)
+device-strings = dcahdmi:%f,2
+paths-output = hdmi-output-2
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-stereo-extra3]
+description = Digital Stereo (HDMI 4)
+device-strings = hdmi:%f,3
+paths-output = hdmi-output-3
+channel-map = left,right
+priority = 7
+direction = output
+
+[Mapping hdmi-surround-extra3]
+description = Digital Surround 5.1 (HDMI 4)
+device-strings = hdmi:%f,3
+paths-output = hdmi-output-3
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-surround71-extra3]
+description = Digital Surround 7.1 (HDMI 4)
+device-strings = hdmi:%f,3
+paths-output = hdmi-output-3
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+priority = 6
+direction = output
+
+[Mapping hdmi-dts-surround-extra3]
+description = Digital Surround 5.1 (HDMI 4/DTS)
+device-strings = dcahdmi:%f,3
+paths-output = hdmi-output-3
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-stereo-extra4]
+description = Digital Stereo (HDMI 5)
+device-strings = hdmi:%f,4
+paths-output = hdmi-output-4
+channel-map = left,right
+priority = 7
+direction = output
+
+[Mapping hdmi-surround-extra4]
+description = Digital Surround 5.1 (HDMI 5)
+device-strings = hdmi:%f,4
+paths-output = hdmi-output-4
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-surround71-extra4]
+description = Digital Surround 7.1 (HDMI 5)
+device-strings = hdmi:%f,4
+paths-output = hdmi-output-4
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+priority = 6
+direction = output
+
+[Mapping hdmi-dts-surround-extra4]
+description = Digital Surround 5.1 (HDMI 5/DTS)
+device-strings = dcahdmi:%f,4
+paths-output = hdmi-output-4
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-stereo-extra5]
+description = Digital Stereo (HDMI 6)
+device-strings = hdmi:%f,5
+paths-output = hdmi-output-5
+channel-map = left,right
+priority = 7
+direction = output
+
+[Mapping hdmi-surround-extra5]
+description = Digital Surround 5.1 (HDMI 6)
+device-strings = hdmi:%f,5
+paths-output = hdmi-output-5
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-surround71-extra5]
+description = Digital Surround 7.1 (HDMI 6)
+device-strings = hdmi:%f,5
+paths-output = hdmi-output-5
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+priority = 6
+direction = output
+
+[Mapping hdmi-dts-surround-extra5]
+description = Digital Surround 5.1 (HDMI 6/DTS)
+device-strings = dcahdmi:%f,5
+paths-output = hdmi-output-5
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-stereo-extra6]
+description = Digital Stereo (HDMI 7)
+device-strings = hdmi:%f,6
+paths-output = hdmi-output-6
+channel-map = left,right
+priority = 7
+direction = output
+
+[Mapping hdmi-surround-extra6]
+description = Digital Surround 5.1 (HDMI 7)
+device-strings = hdmi:%f,6
+paths-output = hdmi-output-6
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-surround71-extra6]
+description = Digital Surround 7.1 (HDMI 7)
+device-strings = hdmi:%f,6
+paths-output = hdmi-output-6
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+priority = 6
+direction = output
+
+[Mapping hdmi-dts-surround-extra6]
+description = Digital Surround 5.1 (HDMI 7/DTS)
+device-strings = dcahdmi:%f,6
+paths-output = hdmi-output-6
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-stereo-extra7]
+description = Digital Stereo (HDMI 8)
+device-strings = hdmi:%f,7
+paths-output = hdmi-output-7
+channel-map = left,right
+priority = 7
+direction = output
+
+[Mapping hdmi-surround-extra7]
+description = Digital Surround 5.1 (HDMI 8)
+device-strings = hdmi:%f,7
+paths-output = hdmi-output-7
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping hdmi-surround71-extra7]
+description = Digital Surround 7.1 (HDMI 8)
+device-strings = hdmi:%f,7
+paths-output = hdmi-output-7
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+priority = 6
+direction = output
+
+[Mapping hdmi-dts-surround-extra7]
+description = Digital Surround 5.1 (HDMI 8/DTS)
+device-strings = dcahdmi:%f,7
+paths-output = hdmi-output-7
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
+priority = 6
+direction = output
+
+[Mapping multichannel-output]
+device-strings = hw:%f
+channel-map = left,right,rear-left,rear-right
+exact-channels = false
+fallback = yes
+priority = 1
+direction = output
+
+[Mapping multichannel-input]
+device-strings = hw:%f
+channel-map = left,right,rear-left,rear-right
+exact-channels = false
+fallback = yes
+priority = 1
+direction = input
+
+[Profile analog-stereo+iec958-stereo]
+description = Analog Stereo Duplex + Digital Stereo Output
+input-mappings = analog-stereo
+output-mappings = analog-stereo iec958-stereo
+skip-probe = yes