summaryrefslogtreecommitdiffstats
path: root/meta-pipewire/recipes-multimedia/wireplumber
diff options
context:
space:
mode:
Diffstat (limited to 'meta-pipewire/recipes-multimedia/wireplumber')
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint10
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint10
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link7
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link7
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint9
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint9
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint13
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-imx8mq-audio-sink.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-sink.endpoint13
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-source.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint13
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint12
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link11
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link11
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams3
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams31
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf30
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl_git.bb58
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/00-functions.lua27
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/alsa-suspend.lua45
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.conf74
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.lua.d/30-bluez-monitor.lua110
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-alsa-monitor.lua151
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-v4l2-monitor.lua48
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/40-device-defaults.lua26
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/90-enable-all.lua20
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber-bluetooth.conf13
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf115
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb61
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua27
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf73
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua137
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb41
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Build-cpptoml-without-a-cmake-subproject.patch28
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb81
43 files changed, 1028 insertions, 416 deletions
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint
deleted file mode 100644
index 4bc435742..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint
+++ /dev/null
@@ -1,10 +0,0 @@
-[match-node]
-priority = 0
-properties = [
- { name = "media.class", value = "Audio/Sink" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint
deleted file mode 100644
index 7657f6f40..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint
+++ /dev/null
@@ -1,10 +0,0 @@
-[match-node]
-priority = 0
-properties = [
- { name = "media.class", value = "Audio/Source" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link
deleted file mode 100644
index 4b70dc89f..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link
+++ /dev/null
@@ -1,7 +0,0 @@
-[match-endpoint]
-priority = 0
-direction = "sink"
-media_class = "Stream/Input/Audio"
-
-[endpoint-link]
-keep = false
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link
deleted file mode 100644
index 5d6428f94..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link
+++ /dev/null
@@ -1,7 +0,0 @@
-[match-endpoint]
-priority = 0
-direction = "source"
-media_class = "Stream/Output/Audio"
-
-[endpoint-link]
-keep = false
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint
deleted file mode 100644
index 2993f3e44..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint
+++ /dev/null
@@ -1,9 +0,0 @@
-[match-node]
-priority = 0
-properties = [
- { name = "media.class", value = "Stream/Input/Audio" },
-]
-
-[endpoint]
-direction = "sink"
-type = "pw-audio-softdsp-endpoint"
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint
deleted file mode 100644
index 1cf82ea02..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint
+++ /dev/null
@@ -1,9 +0,0 @@
-[match-node]
-priority = 0
-properties = [
- { name = "media.class", value = "Stream/Output/Audio" },
-]
-
-[endpoint]
-direction = "source"
-type = "pw-audio-softdsp-endpoint"
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint
deleted file mode 100644
index 85a9b5117..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 1
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.path", value = "hw:0,0" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 1
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint
deleted file mode 100644
index c77701c0d..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 1
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.path", value = "hw:0,0" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 1
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint
deleted file mode 100644
index 4405f7b7a..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint
+++ /dev/null
@@ -1,13 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.id", value = "ak4613" },
- { name = "api.alsa.pcm.device", value = "0" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 30
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint
deleted file mode 100644
index ad5680592..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.card.id", value = "ak4613" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 30
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint
deleted file mode 100644
index becd21e2e..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.id", value = "DRA7xx-EVM" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 30
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint
deleted file mode 100644
index 72ef46770..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.card.id", value = "DRA7xx-EVM" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 30
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-imx8mq-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-imx8mq-audio-sink.endpoint
deleted file mode 100644
index 538d31376..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-imx8mq-audio-sink.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.id", value = "wm8524audio" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 30
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-sink.endpoint
deleted file mode 100644
index 0c7b20805..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-sink.endpoint
+++ /dev/null
@@ -1,13 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.id", value = "rcarsound" },
- { name = "api.alsa.pcm.device", value = "0" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 30
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-source.endpoint
deleted file mode 100644
index d72d7e31c..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-source.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.card.id", value = "rcarsound" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 30
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint
deleted file mode 100644
index 74e4d62e6..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint
+++ /dev/null
@@ -1,13 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.name", value = "bcm2835 ALSA" },
- { name = "api.alsa.pcm.name", value = "bcm2835 ALSA" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 30
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint
deleted file mode 100644
index 807ad4688..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 40
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.id", value = "ep016ch" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 40
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint
deleted file mode 100644
index bbfcd43a5..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 40
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.card.id", value = "ep811ch" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 40
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint
deleted file mode 100644
index 62e279090..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 70
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.driver", value = "USB-Audio" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 70
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint
deleted file mode 100644
index 505ae8d81..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 70
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.card.driver", value = "USB-Audio" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 70
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link
deleted file mode 100644
index b5753a102..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link
+++ /dev/null
@@ -1,11 +0,0 @@
-[match-endpoint]
-priority = 75
-direction = "sink"
-name = "bluealsa*"
-media_class = "Stream/Input/Audio"
-properties = [
- { name = "bluealsa.profile", value = "sco" },
-]
-
-[endpoint-link]
-keep = true
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link
deleted file mode 100644
index d1b3cec07..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link
+++ /dev/null
@@ -1,11 +0,0 @@
-[match-endpoint]
-priority = 75
-direction = "source"
-name = "bluealsa*"
-media_class = "Stream/Output/Audio"
-properties = [
- { name = "bluealsa.profile", value = "sco" },
-]
-
-[endpoint-link]
-keep = true
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams
deleted file mode 100644
index e7ce36f6a..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams
+++ /dev/null
@@ -1,3 +0,0 @@
-[[streams]]
-name = "Default"
-priority = 25
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams
deleted file mode 100644
index c645416ad..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams
+++ /dev/null
@@ -1,31 +0,0 @@
-[[streams]]
-name = "Multimedia"
-priority = 25
-
-[[streams]]
-name = "Speech-Low"
-priority = 30
-
-[[streams]]
-name = "Custom-Low"
-priority = 35
-
-[[streams]]
-name = "Navigation"
-priority = 50
-
-[[streams]]
-name = "Speech-High"
-priority = 60
-
-[[streams]]
-name = "Custom-High"
-priority = 65
-
-[[streams]]
-name = "Communication"
-priority = 75
-
-[[streams]]
-name = "Emergency"
-priority = 99
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf
deleted file mode 100644
index e0975a81f..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf
+++ /dev/null
@@ -1,30 +0,0 @@
-# Register well-known SPA factories
-# These do not need to exist on the system to be registered
-add-spa-lib audio.convert* audioconvert/libspa-audioconvert
-add-spa-lib api.alsa.* alsa/libspa-alsa
-add-spa-lib api.v4l2.* v4l2/libspa-v4l2
-add-spa-lib api.bluez5.* bluez5/libspa-bluez5
-
-# the client-device pipewire module is needed for libwireplumber-module-monitor
-load-pipewire-module libpipewire-module-client-device
-
-# Session object implementation
-# This keeps track of the default input & output device endpoint
-load-module C libwireplumber-module-session
-
-# Basic pipewire integration - do not remove
-load-module C libwireplumber-module-pipewire
-
-# Grants access to security confined clients
-load-module C libwireplumber-module-client-permissions
-
-load-module C libwireplumber-module-monitor {
- "factory": <"api.alsa.enum.udev">,
- "flags": <["use-adapter", "activate-devices"]>
-}
-
-# Implements endpoint creation based on TOML configuration files
-load-module C libwireplumber-module-config-endpoint
-
-# Implements linking clients to devices based on TOML configuration files
-load-module C libwireplumber-module-config-policy
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl_git.bb
deleted file mode 100644
index 8b9a64594..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl_git.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "AGL configuration file for wireplumber"
-HOMEPAGE = "https://gitlab.freedesktop.org/gkiagia/wireplumber"
-BUGTRACKER = "https://jira.automotivelinux.org"
-AUTHOR = "George Kiagiadakis <george.kiagiadakis@collabora.com>"
-SECTION = "multimedia"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-SRC_URI = "\
- file://wireplumber.conf \
- file://00-audio-sink.endpoint \
- file://00-audio-source.endpoint \
- file://00-default-input-audio.endpoint-link \
- file://00-default-output-audio.endpoint-link \
- file://00-stream-input-audio.endpoint \
- file://00-stream-output-audio.endpoint \
- file://01-hw00-audio-sink.endpoint \
- file://01-hw00-audio-source.endpoint \
- file://30-ak4613-audio-sink.endpoint \
- file://30-ak4613-audio-source.endpoint \
- file://30-rcarsound-audio-sink.endpoint \
- file://30-rcarsound-audio-source.endpoint \
- file://30-dra7xx-audio-sink.endpoint \
- file://30-dra7xx-audio-source.endpoint \
- file://30-rpi3-audio-sink.endpoint \
- file://30-imx8mq-audio-sink.endpoint \
- file://40-fiberdyne-amp.endpoint \
- file://40-microchip-mic.endpoint \
- file://70-usb-audio-sink.endpoint \
- file://70-usb-audio-source.endpoint \
- file://bluealsa-input-audio.endpoint-link \
- file://bluealsa-output-audio.endpoint-link \
- file://capture.streams \
- file://playback.streams \
-"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install_append() {
- install -d ${D}/${sysconfdir}/wireplumber/
- install -m 644 ${WORKDIR}/wireplumber.conf ${D}/${sysconfdir}/wireplumber/wireplumber.conf
- install -m 644 ${WORKDIR}/*.endpoint ${D}/${sysconfdir}/wireplumber/
- install -m 644 ${WORKDIR}/*.endpoint-link ${D}/${sysconfdir}/wireplumber/
- install -m 644 ${WORKDIR}/*.streams ${D}/${sysconfdir}/wireplumber/
-}
-
-FILES_${PN} += "\
- ${sysconfdir}/wireplumber/* \
-"
-CONFFILES_${PN} += "\
- ${sysconfdir}/wireplumber/* \
-"
-
-RPROVIDES_${PN} += "virtual/wireplumber-config"
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/00-functions.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/00-functions.lua
new file mode 100644
index 000000000..7e1794df0
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/00-functions.lua
@@ -0,0 +1,27 @@
+components = {}
+
+function load_module(m)
+ if not components[m] then
+ components[m] = { "libwireplumber-module-" .. m, type = "module" }
+ end
+end
+
+function load_pw_module(m)
+ if not components[m] then
+ components[m] = { "libpipewire-module-" .. m, type = "pw_module" }
+ end
+end
+
+function load_script(s, a)
+ if not components[s] then
+ components[s] = { s, type = "script/lua", args = a }
+ end
+end
+
+function load_monitor(s, a)
+ load_script("monitors/" .. s .. ".lua", a)
+end
+
+function load_access(s, a)
+ load_script("access/access-" .. s .. ".lua", a)
+end
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/alsa-suspend.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/alsa-suspend.lua
new file mode 100644
index 000000000..55edd12cf
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/alsa-suspend.lua
@@ -0,0 +1,45 @@
+-- WirePlumber
+--
+-- This script mutes all ALSA sinks when the "suspend.playback" metadata
+-- key is set to 1; compliments pipewire-ic-ipc and the respective support
+-- for handling "suspend.playback" in the policy scripts
+--
+-- Copyright © 2021 Collabora Ltd.
+-- @author George Kiagiadakis <george.kiagiadakis@collabora.com>
+--
+-- SPDX-License-Identifier: MIT
+
+mixer_api = Plugin.find("mixer-api")
+
+nodes_om = ObjectManager {
+ Interest { type = "node",
+ Constraint { "media.class", "matches", "Audio/Sink" },
+ Constraint { "object.path", "matches", "alsa:pcm:*" },
+ },
+}
+
+metadata_om = ObjectManager {
+ Interest { type = "metadata",
+ Constraint { "metadata.name", "=", "default" },
+ }
+}
+
+metadata_om:connect("object-added", function (om, metadata)
+ metadata:connect("changed", function (m, subject, key, t, value)
+ if key == "suspend.playback" then
+ local suspended = (value == "1")
+
+ Log.info(string.format("%s ALSA nodes for IC sound",
+ suspended and "muting" or "unmuting"))
+
+ for n in nodes_om:iterate() do
+ mixer_api:call("set-volume", n["bound-id"], {
+ ["mute"] = suspended,
+ })
+ end
+ end
+ end)
+end)
+
+nodes_om:activate()
+metadata_om:activate()
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.conf
new file mode 100644
index 000000000..9077e3f45
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.conf
@@ -0,0 +1,74 @@
+# WirePlumber daemon context configuration #
+
+context.properties = {
+ ## Properties to configure the PipeWire context and some modules
+
+ application.name = "WirePlumber Bluetooth"
+ log.level = 2
+ wireplumber.script-engine = lua-scripting
+ wireplumber.export-core = true
+
+ #mem.mlock-all = false
+ #support.dbus = true
+}
+
+context.spa-libs = {
+ #<factory-name regex> = <library-name>
+ #
+ # Used to find spa factory names. It maps an spa factory name
+ # regular expression to a library name that should contain
+ # that factory.
+ #
+ api.bluez5.* = bluez5/libspa-bluez5
+ audio.convert.* = audioconvert/libspa-audioconvert
+ support.* = support/libspa-support
+}
+
+context.modules = [
+ #{ name = <module-name>
+ # [ args = { <key> = <value> ... } ]
+ # [ flags = [ [ ifexists ] [ nofail ] ]
+ #}
+ #
+ # PipeWire modules to load.
+ # If ifexists is given, the module is ignored when it is not found.
+ # If nofail is given, module initialization failures are ignored.
+ #
+
+ # The native communication protocol.
+ { name = libpipewire-module-protocol-native }
+
+ # Allows creating nodes that run in the context of the
+ # client. Is used by all clients that want to provide
+ # data to PipeWire.
+ { name = libpipewire-module-client-node }
+
+ # Allows creating devices that run in the context of the
+ # client. Is used by the session manager.
+ { name = libpipewire-module-client-device }
+
+ # Makes a factory for wrapping nodes in an adapter with a
+ # converter and resampler.
+ { name = libpipewire-module-adapter }
+
+ # Allows applications to create metadata objects. It creates
+ # a factory for Metadata objects.
+ { name = libpipewire-module-metadata }
+
+ # Provides factories to make session manager objects.
+ { name = libpipewire-module-session-manager }
+]
+
+wireplumber.components = [
+ #{ name = <component-name>, type = <component-type> }
+ #
+ # WirePlumber components to load
+ #
+
+ # The lua scripting engine
+ { name = libwireplumber-module-lua-scripting, type = module }
+
+ # The lua configuration file
+ # Other components are loaded from there
+ { name = bluetooth.lua, type = config/lua }
+]
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.lua.d/30-bluez-monitor.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.lua.d/30-bluez-monitor.lua
new file mode 100644
index 000000000..530f4cc62
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.lua.d/30-bluez-monitor.lua
@@ -0,0 +1,110 @@
+-- Bluez monitor config file --
+
+bluez_monitor = {}
+
+bluez_monitor.properties = {
+ -- These features do not work on all headsets, so they are enabled
+ -- by default based on the hardware database. They can also be
+ -- forced on/off for all devices by the following options:
+
+ --["bluez5.enable-sbc-xq"] = true,
+ --["bluez5.enable-msbc"] = true,
+ --["bluez5.enable-hw-volume"] = true,
+
+ -- See bluez-hardware.conf for the hardware database.
+
+ -- Enabled headset roles (default: [ hsp_hs hfp_ag ]), this
+ -- property only applies to native backend. Currently some headsets
+ -- (Sony WH-1000XM3) are not working with both hsp_ag and hfp_ag
+ -- enabled, disable either hsp_ag or hfp_ag to work around it.
+ --
+ -- Supported headset roles: hsp_hs (HSP Headset),
+ -- hsp_ag (HSP Audio Gateway),
+ -- hfp_hf (HFP Hands-Free),
+ -- hfp_ag (HFP Audio Gateway)
+ ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]",
+
+ -- Enabled A2DP codecs (default: all).
+ --["bluez5.codecs"] = "[ sbc sbc_xq aac ldac aptx aptx_hd aptx_ll aptx_ll_duplex faststream faststream_duplex ]",
+
+ -- HFP/HSP backend (default: native).
+ -- Available values: any, none, hsphfpd, ofono, native
+ ["bluez5.hfphsp-backend"] = "ofono",
+
+ -- Properties for the A2DP codec configuration
+ --["bluez5.default.rate"] = 48000,
+ --["bluez5.default.channels"] = 2,
+}
+
+bluez_monitor.rules = {
+ -- An array of matches/actions to evaluate.
+ {
+ -- Rules for matching a device or node. It is an array of
+ -- properties that all need to match the regexp. If any of the
+ -- matches work, the actions are executed for the object.
+ matches = {
+ {
+ -- This matches all cards.
+ { "device.name", "matches", "bluez_card.*" },
+ },
+ },
+ -- Apply properties on the matched object.
+ apply_properties = {
+ -- Auto-connect device profiles on start up or when only partial
+ -- profiles have connected. Disabled by default if the property
+ -- is not specified.
+ --["bluez5.auto-connect"] = "[ hfp_hf hsp_hs a2dp_sink hfp_ag hsp_ag a2dp_source ]",
+ ["bluez5.auto-connect"] = "[ hfp_hf hsp_hs a2dp_sink ]",
+
+ -- Hardware volume control (default: [ hfp_ag hsp_ag a2dp_source ])
+ --["bluez5.hw-volume"] = "[ hfp_hf hsp_hs a2dp_sink hfp_ag hsp_ag a2dp_source ]",
+
+ -- LDAC encoding quality
+ -- Available values: auto (Adaptive Bitrate, default)
+ -- hq (High Quality, 990/909kbps)
+ -- sq (Standard Quality, 660/606kbps)
+ -- mq (Mobile use Quality, 330/303kbps)
+ --["bluez5.a2dp.ldac.quality"] = "auto",
+
+ -- AAC variable bitrate mode
+ -- Available values: 0 (cbr, default), 1-5 (quality level)
+ --["bluez5.a2dp.aac.bitratemode"] = 0,
+
+ -- Profile connected first
+ -- Available values: a2dp-sink (default), headset-head-unit
+ --["device.profile"] = "a2dp-sink",
+ },
+ },
+ {
+ -- Make output hsp/hfp stream nodes go through the Communication endpoint
+ -- Unfortunately we cannot match on "media.class" because this property
+ -- is not known before the node is created
+ matches = {
+ {
+ { "api.bluez5.profile", "equals", "headset-audio-gateway" },
+ { "factory.name", "matches", "*source*" },
+ },
+ },
+ apply_properties = {
+ ["media.role"] = "Communication",
+ },
+ },
+ {
+ -- Make output a2dp stream nodes go through the Multimedia endpoint
+ -- Unfortunately we cannot match on "media.class" because this property
+ -- is not known before the node is created
+ matches = {
+ {
+ { "api.bluez5.profile", "equals", "a2dp-source" },
+ },
+ },
+ apply_properties = {
+ ["media.role"] = "Multimedia",
+ },
+ },
+}
+
+load_monitor("bluez", {
+ properties = bluez_monitor.properties,
+ rules = bluez_monitor.rules,
+})
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-alsa-monitor.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-alsa-monitor.lua
new file mode 100644
index 000000000..d07f7ab85
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-alsa-monitor.lua
@@ -0,0 +1,151 @@
+-- ALSA monitor config file --
+
+alsa_monitor = {}
+
+alsa_monitor.properties = {
+ ["alsa.jack-device"] = false,
+ ["alsa.reserve"] = false,
+}
+
+alsa_monitor.rules = {
+ -- enable ACP (PulseAudio-like profiles)
+ {
+ matches = {
+ {
+ { "device.name", "matches", "alsa_card.*" },
+ },
+ },
+ apply_properties = {
+ ["api.alsa.use-acp"] = true,
+ },
+ },
+
+ --
+ -- Bump priority of well-known output devices
+ -- Higher priority means it gets selected as the default if it's present
+ --
+
+ -- USB card
+ {
+ matches = {
+ {
+ { "node.name", "matches", "alsa_output.*" },
+ { "api.alsa.card.driver", "=", "USB-Audio" },
+ },
+ },
+ apply_properties = {
+ ["priority.driver"] = 1300,
+ ["priority.session"] = 1300,
+ }
+ },
+
+ -- fiberdyne amp
+ {
+ matches = {
+ {
+ { "node.name", "matches", "alsa_output.*" },
+ { "api.alsa.card.id", "=", "ep016ch" },
+ },
+ },
+ apply_properties = {
+ ["priority.driver"] = 1200,
+ ["priority.session"] = 1200,
+ }
+ },
+
+ -- well-known internal devices
+ {
+ matches = {
+ {
+ -- ak4613
+ { "node.name", "matches", "alsa_output.*" },
+ { "api.alsa.card.id", "=", "ak4613" },
+ { "api.alsa.pcm.device", "=", "0" },
+ },
+ {
+ -- imx8mq
+ { "node.name", "matches", "alsa_output.*" },
+ { "api.alsa.card.id", "=", "wm8524audio" },
+ },
+ {
+ -- rcarsound
+ { "node.name", "matches", "alsa_output.*" },
+ { "api.alsa.card.id", "=", "rcarsound" },
+ { "api.alsa.pcm.device", "=", "0" },
+ },
+ {
+ -- rpi3
+ { "node.name", "matches", "alsa_output.*" },
+ { "api.alsa.pcm.name", "=", "bcm2835 ALSA" },
+ },
+ },
+ apply_properties = {
+ ["priority.driver"] = 1100,
+ ["priority.session"] = 1100,
+ }
+ },
+
+ --
+ -- Same for input devices
+ --
+
+ -- USB card
+ {
+ matches = {
+ {
+ { "node.name", "matches", "alsa_input.*" },
+ { "api.alsa.card.driver", "=", "USB-Audio" },
+ },
+ },
+ apply_properties = {
+ ["priority.driver"] = 2300,
+ ["priority.session"] = 2300,
+ }
+ },
+
+ -- microchip mic
+ {
+ matches = {
+ {
+ { "node.name", "matches", "alsa_input.*" },
+ { "api.alsa.card.id", "=", "ep811ch" },
+ },
+ },
+ apply_properties = {
+ ["priority.driver"] = 2200,
+ ["priority.session"] = 2200,
+ }
+ },
+
+ -- well-known internal devices
+ {
+ matches = {
+ {
+ -- ak4613
+ { "node.name", "matches", "alsa_input.*" },
+ { "api.alsa.card.id", "=", "ak4613" },
+ },
+ {
+ -- imx8mq
+ { "node.name", "matches", "alsa_input.*" },
+ { "api.alsa.card.id", "=", "wm8524audio" },
+ },
+ {
+ -- rcarsound
+ { "node.name", "matches", "alsa_input.*" },
+ { "api.alsa.card.id", "=", "rcarsound" },
+ },
+ },
+ apply_properties = {
+ ["priority.driver"] = 2100,
+ ["priority.session"] = 2100,
+ }
+ },
+}
+
+function alsa_monitor.enable()
+ load_monitor("alsa", {
+ properties = alsa_monitor.properties,
+ rules = alsa_monitor.rules,
+ })
+end
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-v4l2-monitor.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-v4l2-monitor.lua
new file mode 100644
index 000000000..a4eb58ac8
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-v4l2-monitor.lua
@@ -0,0 +1,48 @@
+-- V4L2 monitor config file --
+
+v4l2_monitor = {}
+v4l2_monitor.properties = {}
+
+v4l2_monitor.rules = {
+ -- An array of matches/actions to evaluate.
+ {
+ -- Rules for matching a device or node. It is an array of
+ -- properties that all need to match the regexp. If any of the
+ -- matches work, the actions are executed for the object.
+ matches = {
+ {
+ -- This matches all cards.
+ { "device.name", "matches", "v4l2_device.*" },
+ },
+ },
+ -- Apply properties on the matched object.
+ apply_properties = {
+ -- ["device.nick"] = "My Device",
+ },
+ },
+ {
+ matches = {
+ {
+ -- Matches all sources.
+ { "node.name", "matches", "v4l2_input.*" },
+ },
+ {
+ -- Matches all sinks.
+ { "node.name", "matches", "v4l2_output.*" },
+ },
+ },
+ apply_properties = {
+ --["node.nick"] = "My Node",
+ --["priority.driver"] = 100,
+ --["priority.session"] = 100,
+ --["node.pause-on-idle"] = false,
+ },
+ },
+}
+
+function v4l2_monitor.enable()
+ load_monitor("v4l2", {
+ properties = v4l2_monitor.properties,
+ rules = v4l2_monitor.rules,
+ })
+end
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/40-device-defaults.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/40-device-defaults.lua
new file mode 100644
index 000000000..e0d332422
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/40-device-defaults.lua
@@ -0,0 +1,26 @@
+device_defaults = {}
+
+device_defaults.properties = {
+ -- store preferences to the file system and restore them at startup;
+ -- when set to false, default nodes and routes are selected based on
+ -- their priorities and any runtime changes do not persist after restart
+ ["use-persistent-storage"] = false,
+}
+
+function device_defaults.enable()
+ -- Selects appropriate default nodes and enables saving and restoring them
+ load_module("default-nodes", device_defaults.properties)
+
+ -- Selects appropriate default routes ("ports" in pulseaudio terminology)
+ -- and enables saving and restoring them together with
+ -- their properties (per-route/port volume levels, channel maps, etc)
+ load_script("policy-device-routes.lua", device_defaults.properties)
+
+ if device_defaults.properties["use-persistent-storage"] then
+ -- Enables functionality to save and restore default device profiles
+ load_module("default-profile")
+
+ -- Save and restore stream-specific properties
+ load_script("restore-stream.lua")
+ end
+end
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/90-enable-all.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/90-enable-all.lua
new file mode 100644
index 000000000..ecb7da476
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/90-enable-all.lua
@@ -0,0 +1,20 @@
+-- Provide the "default" pw_metadata, which stores
+-- dynamic properties of pipewire objects in RAM
+load_module("metadata")
+
+-- Load devices
+alsa_monitor.enable()
+v4l2_monitor.enable()
+
+-- Track/store/restore user choices about devices
+device_defaults.enable()
+
+-- Automatically suspends idle nodes after 3 seconds
+load_script("suspend-node.lua")
+
+-- Automatically sets device profiles to 'On'
+load_script("policy-device-profile.lua")
+
+-- Mute ALSA sinks when requested by pipewire-ic-ipc
+load_module("mixer-api")
+load_script("alsa-suspend.lua")
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber-bluetooth.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber-bluetooth.conf
new file mode 100644
index 000000000..950e6a5d2
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber-bluetooth.conf
@@ -0,0 +1,13 @@
+<!-- This configuration file specifies the required security policies
+ for wireplumber to talk to system bluetooth-related services. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+ <policy user="pipewire">
+ <allow send_destination="org.bluez"/>
+ <allow send_destination="org.ofono"/>
+ </policy>
+
+</busconfig>
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf
new file mode 100644
index 000000000..46ad11302
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf
@@ -0,0 +1,115 @@
+# WirePlumber daemon context configuration #
+
+context.properties = {
+ ## Properties to configure the PipeWire context and some modules
+
+ # 1=error/critical/warning, 2=message, 3=info, 4=debug, 5=trace
+ log.level = 2
+
+ wireplumber.script-engine = lua-scripting
+}
+
+context.spa-libs = {
+ #<factory-name regex> = <library-name>
+ #
+ # Used to find spa factory names. It maps an spa factory name
+ # regular expression to a library name that should contain
+ # that factory.
+ #
+ api.alsa.* = alsa/libspa-alsa
+ api.bluez5.* = bluez5/libspa-bluez5
+ api.v4l2.* = v4l2/libspa-v4l2
+ api.libcamera.* = libcamera/libspa-libcamera
+ audio.convert.* = audioconvert/libspa-audioconvert
+ support.* = support/libspa-support
+}
+
+context.modules = [
+ #{ name = <module-name>
+ # [ args = { <key> = <value> ... } ]
+ # [ flags = [ [ ifexists ] [ nofail ] ]
+ #}
+ #
+ # PipeWire modules to load.
+ # If ifexists is given, the module is ignored when it is not found.
+ # If nofail is given, module initialization failures are ignored.
+ #
+
+ # The native communication protocol.
+ { name = libpipewire-module-protocol-native }
+
+ # Allows creating nodes that run in the context of the
+ # client. Is used by all clients that want to provide
+ # data to PipeWire.
+ { name = libpipewire-module-client-node }
+
+ # Allows creating devices that run in the context of the
+ # client. Is used by the session manager.
+ { name = libpipewire-module-client-device }
+
+ # Makes a factory for wrapping nodes in an adapter with a
+ # converter and resampler.
+ { name = libpipewire-module-adapter }
+
+ # Allows applications to create metadata objects. It creates
+ # a factory for Metadata objects.
+ { name = libpipewire-module-metadata }
+
+ # Provides factories to make session manager objects.
+ { name = libpipewire-module-session-manager }
+
+ { name = libpipewire-module-filter-chain
+ args = {
+ node.description = "Equalizer Sink"
+ media.name = "Equalizer Sink"
+ filter.graph = {
+ nodes = [
+ {
+ type = builtin
+ name = bass
+ label = bq_lowshelf
+ # the cut off freq of the bass filter can be adjusted here.
+ control = { "Freq" = 250.0 "Q" = 1.0 "Gain" = 0.0 }
+ }
+ {
+ type = builtin
+ name = treble
+ label = bq_peaking
+ # the cut off freq of the treble filter can be adjusted here.
+ control = { "Freq" = 6000.0 "Q" = 1.0 "Gain" = 0.0 }
+ }
+ ]
+ links = [
+ { output = "bass:Out" input = "treble:In" }
+ ]
+ }
+ audio.channels = 2
+ audio.position = [ FL FR ]
+ capture.props = {
+ node.name = "eq-sink"
+ media.class = Audio/Sink
+ # select the endpoint to which the node is attached
+ target.endpoint = "endpoint.multimedia"
+ node.passive = true
+ }
+ playback.props = {
+ node.name = "eq-output-stream"
+ node.passive = true
+ }
+ }
+ }
+]
+
+wireplumber.components = [
+ #{ name = <component-name>, type = <component-type> }
+ #
+ # WirePlumber components to load
+ #
+
+ # The lua scripting engine
+ { name = libwireplumber-module-lua-scripting, type = module }
+
+ # The lua configuration file(s)
+ # Other components are loaded from there
+ { name = host.lua, type = config/lua }
+]
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb
new file mode 100644
index 000000000..22ffe5bf3
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb
@@ -0,0 +1,61 @@
+SUMMARY = "AGL configuration file for wireplumber"
+HOMEPAGE = "https://gitlab.freedesktop.org/gkiagia/wireplumber"
+BUGTRACKER = "https://jira.automotivelinux.org"
+AUTHOR = "George Kiagiadakis <george.kiagiadakis@collabora.com>"
+SECTION = "multimedia"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+SRC_URI = "\
+ file://bluetooth.lua.d/ \
+ file://host.lua.d/ \
+ file://00-functions.lua \
+ file://alsa-suspend.lua \
+ file://bluetooth.conf \
+ file://wireplumber.conf \
+ file://wireplumber-bluetooth.conf \
+"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+do_install:append() {
+ config_dir="${D}${sysconfdir}/wireplumber/"
+ scripts_dir="${D}${datadir}/wireplumber/scripts/"
+ dbus_config_dir="${D}${sysconfdir}/dbus-1/system.d/"
+ systemd_dir="${D}${sysconfdir}/systemd/system/pipewire.service.wants/"
+
+ install -d ${config_dir}
+ install -m 0644 ${WORKDIR}/00-functions.lua ${config_dir}
+
+ # config of the main (host) instance
+ install -d ${config_dir}/host.lua.d/
+ ln -s ../00-functions.lua ${config_dir}/host.lua.d/00-functions.lua
+ install -m 0644 ${WORKDIR}/host.lua.d/*.lua ${config_dir}/host.lua.d/
+ install -m 0644 ${WORKDIR}/wireplumber.conf ${config_dir}
+
+ # config of the bluetooth instance
+ install -d ${config_dir}/bluetooth.lua.d/
+ ln -s ../00-functions.lua ${config_dir}/bluetooth.lua.d/00-functions.lua
+ install -m 0644 ${WORKDIR}/bluetooth.lua.d/*.lua ${config_dir}/bluetooth.lua.d/
+ install -m 0644 ${WORKDIR}/bluetooth.conf ${config_dir}
+
+ # install the alsa-suspend script, loaded by the main instance
+ install -d ${scripts_dir}
+ install -m 0644 ${WORKDIR}/alsa-suspend.lua ${scripts_dir}
+
+ # install dbus daemon configuration
+ install -d ${dbus_config_dir}
+ install -m 0644 ${WORKDIR}/wireplumber-bluetooth.conf ${dbus_config_dir}
+
+ # enable additional systemd services
+ install -d ${systemd_dir}
+ ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@bluetooth.service
+}
+
+FILES:${PN} += "\
+ ${sysconfdir}/* \
+ ${datadir}/wireplumber/* \
+"
+CONFFILES:${PN} += "\
+ ${sysconfdir}/* \
+"
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua
new file mode 100644
index 000000000..7e1794df0
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua
@@ -0,0 +1,27 @@
+components = {}
+
+function load_module(m)
+ if not components[m] then
+ components[m] = { "libwireplumber-module-" .. m, type = "module" }
+ end
+end
+
+function load_pw_module(m)
+ if not components[m] then
+ components[m] = { "libpipewire-module-" .. m, type = "pw_module" }
+ end
+end
+
+function load_script(s, a)
+ if not components[s] then
+ components[s] = { s, type = "script/lua", args = a }
+ end
+end
+
+function load_monitor(s, a)
+ load_script("monitors/" .. s .. ".lua", a)
+end
+
+function load_access(s, a)
+ load_script("access/access-" .. s .. ".lua", a)
+end
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf
new file mode 100644
index 000000000..42f714849
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf
@@ -0,0 +1,73 @@
+# WirePlumber daemon context configuration #
+
+context.properties = {
+ ## Properties to configure the PipeWire context and some modules
+
+ application.name = "WirePlumber Policy"
+ log.level = 2
+ wireplumber.script-engine = lua-scripting
+ wireplumber.export-core = false
+
+ #mem.mlock-all = false
+ #support.dbus = true
+}
+
+context.spa-libs = {
+ #<factory-name regex> = <library-name>
+ #
+ # Used to find spa factory names. It maps an spa factory name
+ # regular expression to a library name that should contain
+ # that factory.
+ #
+ audio.convert.* = audioconvert/libspa-audioconvert
+ support.* = support/libspa-support
+}
+
+context.modules = [
+ #{ name = <module-name>
+ # [ args = { <key> = <value> ... } ]
+ # [ flags = [ [ ifexists ] [ nofail ] ]
+ #}
+ #
+ # PipeWire modules to load.
+ # If ifexists is given, the module is ignored when it is not found.
+ # If nofail is given, module initialization failures are ignored.
+ #
+
+ # The native communication protocol.
+ { name = libpipewire-module-protocol-native }
+
+ # Allows creating nodes that run in the context of the
+ # client. Is used by all clients that want to provide
+ # data to PipeWire.
+ { name = libpipewire-module-client-node }
+
+ # Allows creating devices that run in the context of the
+ # client. Is used by the session manager.
+ { name = libpipewire-module-client-device }
+
+ # Makes a factory for wrapping nodes in an adapter with a
+ # converter and resampler.
+ { name = libpipewire-module-adapter }
+
+ # Allows applications to create metadata objects. It creates
+ # a factory for Metadata objects.
+ { name = libpipewire-module-metadata }
+
+ # Provides factories to make session manager objects.
+ { name = libpipewire-module-session-manager }
+]
+
+wireplumber.components = [
+ #{ name = <component-name>, type = <component-type> }
+ #
+ # WirePlumber components to load
+ #
+
+ # The lua scripting engine
+ { name = libwireplumber-module-lua-scripting, type = module }
+
+ # The lua configuration file
+ # Other components are loaded from there
+ { name = policy.lua, type = config/lua }
+]
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua
new file mode 100644
index 000000000..6814fce4d
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua
@@ -0,0 +1,137 @@
+-- Policy config file --
+
+policy_config = {}
+
+policy_config.endpoints = {
+ -- [endpoint name] = { endpoint properties }
+ ["endpoint.capture"] = {
+ ["media.class"] = "Audio/Source",
+ ["role"] = "Capture",
+ },
+ ["endpoint.multimedia"] = {
+ ["media.class"] = "Audio/Sink",
+ ["role"] = "Multimedia",
+ },
+ ["endpoint.speech_low"] = {
+ ["media.class"] = "Audio/Sink",
+ ["role"] = "Speech-Low",
+ },
+ ["endpoint.custom_low"] = {
+ ["media.class"] = "Audio/Sink",
+ ["role"] = "Custom-Low",
+ },
+ ["endpoint.navigation"] = {
+ ["media.class"] = "Audio/Sink",
+ ["role"] = "Navigation",
+ },
+ ["endpoint.speech_high"] = {
+ ["media.class"] = "Audio/Sink",
+ ["role"] = "Speech-High",
+ },
+ ["endpoint.custom_high"] = {
+ ["media.class"] = "Audio/Sink",
+ ["role"] = "Custom-High",
+ },
+ ["endpoint.communication"] = {
+ ["media.class"] = "Audio/Sink",
+ ["role"] = "Communication",
+ },
+ ["endpoint.emergency"] = {
+ ["media.class"] = "Audio/Sink",
+ ["role"] = "Emergency",
+ },
+}
+
+policy_config.policy = {
+ ["move"] = false, -- moves session items when metadata target.node changes
+ ["follow"] = true, -- moves session items to the default device when it has changed
+
+ -- Set to 'true' to disable channel splitting & merging on nodes and enable
+ -- passthrough of audio in the same format as the format of the device.
+ -- Note that this breaks JACK support; it is generally not recommended
+ ["audio.no-dsp"] = false,
+
+ -- how much to lower the volume of lower priority streams when ducking
+ -- note that this is a linear volume modifier (not cubic as in pulseaudio)
+ ["duck.level"] = 0.2,
+
+ ["roles"] = {
+ ["Capture"] = {
+ ["alias"] = { "Multimedia", "Music", "Voice", "Capture" },
+ ["priority"] = 25,
+ ["action.default"] = "cork",
+ ["action.Capture"] = "mix",
+ ["media.class"] = "Audio/Source",
+ },
+ ["Multimedia"] = {
+ ["alias"] = { "Movie", "Music", "Game" },
+ ["priority"] = 25,
+ ["action.default"] = "mix",
+ },
+ ["Speech-Low"] = {
+ ["priority"] = 30,
+ ["action.default"] = "cork",
+ ["action.Speech-Low"] = "mix",
+ },
+ ["Custom-Low"] = {
+ ["priority"] = 35,
+ ["action.default"] = "cork",
+ ["action.Custom-Low"] = "mix",
+ },
+ ["Navigation"] = {
+ ["priority"] = 50,
+ ["action.default"] = "duck",
+ ["action.Navigation"] = "mix",
+ },
+ ["Speech-High"] = {
+ ["priority"] = 60,
+ ["action.default"] = "cork",
+ ["action.Speech-High"] = "mix",
+ },
+ ["Custom-High"] = {
+ ["priority"] = 65,
+ ["action.default"] = "cork",
+ ["action.Custom-High"] = "mix",
+ },
+ ["Communication"] = {
+ ["priority"] = 75,
+ ["action.default"] = "cork",
+ ["action.Communication"] = "mix",
+ },
+ ["Emergency"] = {
+ ["alias"] = { "Alert" },
+ ["priority"] = 99,
+ ["action.default"] = "cork",
+ ["action.Emergency"] = "mix",
+ },
+ },
+}
+
+-- Session item factories, building blocks for the session management graph
+-- Do not disable these unless you really know what you are doing
+load_module("si-node")
+load_module("si-audio-adapter")
+load_module("si-standard-link")
+load_module("si-audio-endpoint")
+
+-- API to access default nodes from scripts
+load_module("default-nodes-api")
+
+-- API to access mixer controls, needed for volume ducking
+load_module("mixer-api")
+
+-- Create endpoints statically at startup
+load_script("static-endpoints.lua", policy_config.endpoints)
+
+-- Create session items for nodes that appear in the graph
+load_script("create-item.lua", policy_config.policy)
+
+-- Link nodes to each other to make media flow in the graph
+load_script("policy-node.lua", policy_config.policy)
+
+-- Link client nodes with endpoints to make media flow in the graph
+load_script("policy-endpoint-client.lua", policy_config.policy)
+load_script("policy-endpoint-client-links.lua", policy_config.policy)
+
+-- Link endpoints with device nodes to make media flow in the graph
+load_script("policy-endpoint-device.lua", policy_config.policy)
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb
new file mode 100644
index 000000000..1a031160e
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb
@@ -0,0 +1,41 @@
+SUMMARY = "AGL configuration file for wireplumber policy"
+HOMEPAGE = "https://gitlab.freedesktop.org/gkiagia/wireplumber"
+BUGTRACKER = "https://jira.automotivelinux.org"
+AUTHOR = "Ashok Sidipotu <ashok.sidipotu@collabora.com>"
+SECTION = "multimedia"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+SRC_URI = "\
+ file://policy.lua.d \
+ file://00-functions.lua \
+ file://policy.conf \
+"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+do_install:append() {
+ config_dir="${D}${sysconfdir}/wireplumber/"
+ systemd_dir="${D}${sysconfdir}/systemd/system/pipewire.service.wants"
+
+ install -d ${config_dir}
+ install -m 0644 ${WORKDIR}/00-functions.lua ${config_dir}
+
+ # config of the policy instance
+ install -d ${config_dir}/policy.lua.d/
+ ln -s ../00-functions.lua ${config_dir}/policy.lua.d/00-functions.lua
+ install -m 0644 ${WORKDIR}/policy.lua.d/*.lua ${config_dir}/policy.lua.d/
+ install -m 0644 ${WORKDIR}/policy.conf ${config_dir}
+
+ # enable additional systemd services
+ install -d ${systemd_dir}
+ ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@policy.service
+}
+
+FILES:${PN} += "\
+ ${sysconfdir}/* \
+ ${datadir}/wireplumber/* \
+"
+CONFFILES:${PN} += "\
+ ${sysconfdir}/* \
+"
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Build-cpptoml-without-a-cmake-subproject.patch b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Build-cpptoml-without-a-cmake-subproject.patch
deleted file mode 100644
index 726b35e74..000000000
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Build-cpptoml-without-a-cmake-subproject.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e5efe3d4f0abc28251dac245ce0cf4124e7e2a12 Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Thu, 5 Dec 2019 17:59:44 +0200
-Subject: [PATCH] Build cpptoml without a cmake subproject
-
-Upstream-Status: Inappropriate
----
- meson.build | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index 5a75d96..0b21377 100644
---- a/meson.build
-+++ b/meson.build
-@@ -24,9 +24,7 @@ else
- wireplumber_config_dir = join_paths(get_option('prefix'), get_option('sysconfdir'), 'wireplumber')
- endif
-
--cmake = import('cmake')
--cpptoml = cmake.subproject('cpptoml')
--cpptoml_dep = cpptoml.dependency('cpptoml')
-+cpptoml_dep = declare_dependency(include_directories: include_directories('subprojects/cpptoml'))
-
- gobject_dep = dependency('gobject-2.0')
- gmodule_dep = dependency('gmodule-2.0')
---
-2.24.0
-
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb
index 0e810b375..a04f115c3 100644
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb
@@ -7,40 +7,79 @@ SECTION = "multimedia"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;beginline=3;md5=e8ad01a5182f2c1b3a2640e9ea268264"
-inherit meson pkgconfig gobject-introspection
+inherit meson pkgconfig systemd
-DEPENDS = "glib-2.0 glib-2.0-native pipewire"
+DEPENDS = "glib-2.0 glib-2.0-native pipewire lua"
SRC_URI = "\
git://gitlab.freedesktop.org/pipewire/wireplumber.git;protocol=https;branch=master \
- https://raw.githubusercontent.com/skystrife/cpptoml/fededad7169e538ca47e11a9ee9251bc361a9a65/include/cpptoml.h \
- file://0001-Build-cpptoml-without-a-cmake-subproject.patch \
"
-SRCREV = "0e98e4150b73d0bed9b72bf8d3eba49671962991"
-SRC_URI[sha256sum] = "3e4e1d315fa1229921c7a4297ead08775b5bb1220c18a7eac62db9ca7e79df0d"
+# v0.4.17
+SRCREV = "d3eb77b292655cef333a8f4cab4e861415bc37c2"
-PV = "0.1.90+git${SRCPV}"
+# patches to be able to compile with lower version of meson that is available in AGL.
+SRC_URI += "\
+"
+
+PV = "0.4.17"
S = "${WORKDIR}/git"
-do_configure_prepend() {
- mkdir -p ${WORKDIR}/git/subprojects/cpptoml/include
- cp -f ${WORKDIR}/cpptoml.h ${WORKDIR}/git/subprojects/cpptoml/include/
-}
+WPAPI="0.4"
+
+# use shared lua from the system instead of the static bundled one
+EXTRA_OEMESON += "-Dsystem-lua=true"
-PACKAGES =+ "${PN}-config"
+# introspection in practice is only used for generating API docs
+# API docs are available on the website and we don't need to build them
+# (plus they depend on hotdoc which is not available here)
+EXTRA_OEMESON += "-Dintrospection=disabled -Ddoc=disabled"
-FILES_${PN} += "\
- ${libdir}/wireplumber-*/* \
+PACKAGECONFIG = "\
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
"
-RPROVIDES_${PN} += "virtual/pipewire-sessionmanager"
-RDEPENDS_${PN} += "virtual/wireplumber-config"
+PACKAGECONFIG[systemd] = "-Dsystemd=enabled -Dsystemd-system-service=true -Dsystemd-user-service=false,-Dsystemd=disabled -Dsystemd-system-service=false -Dsystemd-user-service=false,systemd"
-FILES_${PN}-config += "\
- ${sysconfdir}/wireplumber/* \
+do_configure:prepend() {
+ # relax meson version requirement
+ # we only need 0.54 when building with -Dsystem-lua=false
+ sed "s/meson_version : '>= 0.56.0'/meson_version : '>= 0.53.2'/" ${S}/meson.build > ${S}/tmp.build
+ mv -f ${S}/tmp.build ${S}/meson.build
+}
+
+PACKAGES =+ "\
+ lib${PN}-${WPAPI} \
+ ${PN}-config \
"
-CONFFILES_${PN}-config += "\
- ${sysconfdir}/wireplumber/* \
+
+SYSTEMD_SERVICE:${PN} = "wireplumber.service"
+FILES:${PN} = "\
+ ${bindir}/wireplumber \
+ ${bindir}/wpctl \
+ ${bindir}/wpexec \
+ ${libdir}/wireplumber-${WPAPI}/* \
+ ${datadir}/wireplumber/scripts/* \
+ ${datadir}/zsh/* \
+ ${systemd_system_unitdir}/* \
+"
+
+FILES:lib${PN}-${WPAPI} = "\
+ ${libdir}/libwireplumber-${WPAPI}.so.* \
"
-RPROVIDES_${PN}-config += "virtual/wireplumber-config"
+FILES:${PN}-config += "\
+ ${sysconfdir}/wireplumber/* \
+ ${datadir}/wireplumber/*conf \
+ ${datadir}/wireplumber/common/* \
+ ${datadir}/wireplumber/main.lua.d/* \
+ ${datadir}/wireplumber/bluetooth.lua.d/* \
+ ${datadir}/wireplumber/policy.lua.d/* \
+"
+do_install:append() {
+ rm -rf ${D}${sysconfdir}/wireplumber/
+ rm -f ${D}${datadir}/wireplumber/*conf
+ rm -rf ${D}${datadir}/wireplumber/common
+ rm -rf ${D}${datadir}/wireplumber/main.lua.d
+ rm -rf ${D}${datadir}/wireplumber/bluetooth.lua.d
+ rm -rf ${D}${datadir}/wireplumber/policy.lua.d
+}