You are not logged in.
The problem:
I recently bought myself an B550 AORUS Elite AX V2 motherboard. In it, it uses the Starship/Maltisse Audio Controller. My audio is plugged in via the analog ports (Front, Center/Sub, Rear). I also use PipeWire as my media framework.
Unfortuantely, the options only offered me the Digital Audio Output. The output of "pactl list cards" shows, that they are unavailabe. So they are there but, for some reason, can't be used by Pipewire's Pulseaudio.
Card #47
Name: alsa_card.pci-0000_07_00.4
Driver: alsa
Owner Module: n/a
Properties:
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "1"
api.alsa.card.longname = "HD-Audio Generic at 0xfc400000 irq 76"
api.alsa.card.name = "HD-Audio Generic"
api.alsa.path = "hw:1"
api.alsa.use-acp = "true"
device.api = "alsa"
device.bus = "pci"
device.bus_path = "pci-0000:07:00.4"
device.description = "Starship/Matisse HD Audio Controller"
device.enum.api = "udev"
device.icon_name = "audio-card-analog-pci"
device.name = "alsa_card.pci-0000_07_00.4"
device.nick = "HD-Audio Generic"
device.plugged.usec = "5868693"
device.product.id = "0x1487"
device.product.name = "Starship/Matisse HD Audio Controller"
device.subsystem = "sound"
sysfs.path = "/sys/devices/pci0000:00/0000:00:08.1/0000:07:00.4/sound/card1"
device.vendor.id = "0x1022"
device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
media.class = "Audio/Device"
factory.id = "14"
client.id = "33"
object.id = "43"
object.serial = "47"
object.path = "alsa:pcm:1"
alsa.card = "1"
alsa.card_name = "HD-Audio Generic"
alsa.long_card_name = "HD-Audio Generic at 0xfc400000 irq 76"
alsa.driver_name = "snd_hda_intel"
device.string = "1"
Profiles:
off: Aus (sinks: 0, sources: 0, priority: 0, available: yes)
output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority: 6565, available: no)
output:analog-stereo: Analog Stereo-Ausgabe (sinks: 1, sources: 0, priority: 6500, available: no)
output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958)-Ausgabe + Analog Stereo-Eingabe (sinks: 1, sources: 1, priority: 5565, available: yes)
output:iec958-stereo: Digital Stereo (IEC958)-Ausgabe (sinks: 1, sources: 0, priority: 5500, available: yes)
output:analog-surround-21+input:analog-stereo: Analog Surround 2.1-Ausgabe + Analog Stereo-Eingabe (sinks: 1, sources: 1, priority: 1365, available: no)
output:analog-surround-41+input:analog-stereo: Analog Surround 4.1-Ausgabe + Analog Stereo-Eingabe (sinks: 1, sources: 1, priority: 1365, available: no)
output:analog-surround-51+input:analog-stereo: Analog Surround 5.1-Ausgabe + Analog Stereo-Eingabe (sinks: 1, sources: 1, priority: 1365, available: no)
output:analog-surround-21: Analog Surround 2.1-Ausgabe (sinks: 1, sources: 0, priority: 1300, available: no)
output:analog-surround-41: Analog Surround 4.1-Ausgabe (sinks: 1, sources: 0, priority: 1300, available: no)
output:analog-surround-51: Analog Surround 5.1-Ausgabe (sinks: 1, sources: 0, priority: 1300, available: no)
output:analog-surround-40+input:analog-stereo: Analog Surround 4.0-Ausgabe + Analog Stereo-Eingabe (sinks: 1, sources: 1, priority: 1265, available: no)
output:analog-surround-50+input:analog-stereo: Analog Surround 5.0-Ausgabe + Analog Stereo-Eingabe (sinks: 1, sources: 1, priority: 1265, available: no)
output:analog-surround-40: Analog Surround 4.0-Ausgabe (sinks: 1, sources: 0, priority: 1200, available: no)
output:analog-surround-50: Analog Surround 5.0-Ausgabe (sinks: 1, sources: 0, priority: 1200, available: no)
output:iec958-ac3-surround-51+input:analog-stereo: Digital Surround 5.1 (IEC958/AC3)-Ausgabe + Analog Stereo-Eingabe (sinks: 1, sources: 1, priority: 365, available: yes)
output:iec958-ac3-surround-51: Digital Surround 5.1 (IEC958/AC3)-Ausgabe (sinks: 1, sources: 0, priority: 300, available: yes)
input:analog-stereo: Analog Stereo-Eingabe (sinks: 0, sources: 1, priority: 65, available: yes)
pro-audio: Pro Audio (sinks: 2, sources: 2, priority: 1, available: yes)
Active Profile: output:iec958-ac3-surround-51
Ports:
analog-input-front-mic: Vorderes Mikrofon (type: Mic, priority: 8500, latency offset: 0 usec, availability group: Legacy 1, not available)
Properties:
port.type = "mic"
port.availability-group = "Legacy 1"
device.icon_name = "audio-input-microphone"
card.profile.port = "0"
Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:analog-surround-21+input:analog-stereo, output:analog-surround-40+input:analog-stereo, output:analog-surround-41+input:analog-stereo, output:analog-surround-50+input:analog-stereo, output:analog-surround-51+input:analog-stereo, output:iec958-stereo+input:analog-stereo, output:iec958-ac3-surround-51+input:analog-stereo
analog-input-rear-mic: Rückwärtiges Mikrofon (type: Mic, priority: 8200, latency offset: 0 usec, availability group: Legacy 2, not available)
Properties:
port.type = "mic"
port.availability-group = "Legacy 2"
device.icon_name = "audio-input-microphone"
card.profile.port = "1"
Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:analog-surround-21+input:analog-stereo, output:analog-surround-40+input:analog-stereo, output:analog-surround-41+input:analog-stereo, output:analog-surround-50+input:analog-stereo, output:analog-surround-51+input:analog-stereo, output:iec958-stereo+input:analog-stereo, output:iec958-ac3-surround-51+input:analog-stereo
analog-input-linein: Line-Eingang (type: Line, priority: 8100, latency offset: 0 usec, availability group: Legacy 3, available)
Properties:
port.type = "line"
port.availability-group = "Legacy 3"
card.profile.port = "2"
Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:analog-surround-21+input:analog-stereo, output:analog-surround-40+input:analog-stereo, output:analog-surround-41+input:analog-stereo, output:analog-surround-50+input:analog-stereo, output:analog-surround-51+input:analog-stereo, output:iec958-stereo+input:analog-stereo, output:iec958-ac3-surround-51+input:analog-stereo
analog-output-lineout: Line-Ausgang (type: Line, priority: 9000, latency offset: 0 usec, availability group: Legacy 4, not available)
Properties:
port.type = "line"
port.availability-group = "Legacy 4"
card.profile.port = "3"
Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo, output:analog-surround-21, output:analog-surround-21+input:analog-stereo, output:analog-surround-40, output:analog-surround-40+input:analog-stereo, output:analog-surround-41, output:analog-surround-41+input:analog-stereo, output:analog-surround-50, output:analog-surround-50+input:analog-stereo, output:analog-surround-51, output:analog-surround-51+input:analog-stereo
analog-output-headphones: Kopfhörer (type: Headphones, priority: 9900, latency offset: 0 usec, availability group: Legacy 5, not available)
Properties:
port.type = "headphones"
port.availability-group = "Legacy 5"
device.icon_name = "audio-headphones"
card.profile.port = "4"
Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo
iec958-stereo-output: Digitalausgang (S/PDIF) (type: SPDIF, priority: 0, latency offset: 0 usec, availability unknown)
Properties:
port.type = "spdif"
card.profile.port = "5"
Part of profile(s): output:iec958-stereo, output:iec958-stereo+input:analog-stereo
However, aplay -l offered me these results
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: NVidia [HDA NVidia], Gerät 3: HDMI 0 [HDMI 0]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 7: HDMI 1 [SAMSUNG ]
Sub-Geräte: 0/1
Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 8: HDMI 2 [HDMI 2]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 9: HDMI 3 [HDMI 3]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 10: HDMI 4 [HDMI 4]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 11: HDMI 5 [HDMI 5]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 12: HDMI 6 [HDMI 6]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 1: Generic [HD-Audio Generic], Gerät 0: ALCS1200A Analog [ALCS1200A Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 1: Generic [HD-Audio Generic], Gerät 1: ALCS1200A Digital [ALCS1200A Digital]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 2: TKHS001 [TK-HS001], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
As you can see, the card 1 offers both Analog and Digital output. Indeed when I do
aplay -D plughw:1,0 /usr/share/sounds/alsa/Front_Right.wav
I get working sound out my right speaker.
So obviously, this particular output couldn't get its way over to Pipewire so my question here would be: How can I make pipewire "see" that there is actually an Analog output.
I found various solutions that apparently worked for Pulseaudio, however, mostly because of dependency issues, I cannot get rid of pipewire and test it out with pulseaudio so I would need a solution that works with Pipewire specifically.
What I've tried so far:
This solution came closest, to what I encountered. However, this setting is for pulseaudio specifically and since the default.pa is not used in PipeWire, it yieled no results. I did try to add the following to my pipewire.conf (as shown here) but it resulted in no audio deviced showing up.
context.objects = {
adapter = {
args = {
factory.name = api.alsa.pcm.sink
node.name = line_analog_output
node.description = "Line Analog Output"
media.class = Audio/Sink
api.alsa.path = "hw:1,0"
}
}
}
I also tried to make a PulseAudio config that tries to implement the function like this, according to the documentation
context.exec = [
{ path = "pactl" args = "load-module module-alsa-sink device=hw:1,0" }
{ path = "pactl" args = "load-module module-alsa-source device=hw:1,0" }
]
However, the module "module-alsa-sink" is not even present, so that might be why this also doesn't work.
Output of pactl list modules
pactl list modules
Module #1
Name: libpipewire-module-rt
Argument: {
nice.level = -11
#rt.prio = 88
#rt.time.soft = -1
#rt.time.hard = -1
}
Usage counter: n/a
Properties:
module.name = "libpipewire-module-rt"
object.id = "1"
object.serial = "1"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Use realtime thread scheduling, falling back to RTKit"
module.usage = "[nice.level=<priority: default 20(don't change)>] [rt.prio=<priority: default 88>] [rt.time.soft=<in usec: default -1] [rt.time.hard=<in usec: default -1] "
module.version = "0.3.56"
nice.level = "-11"
Module #2
Name: libpipewire-module-protocol-native
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-protocol-native"
object.id = "2"
object.serial = "2"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Native protocol using unix sockets"
module.version = "0.3.56"
Module #3
Name: libpipewire-module-profiler
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-profiler"
object.id = "3"
object.serial = "3"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Generate Profiling data"
module.version = "0.3.56"
Module #5
Name: libpipewire-module-metadata
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-metadata"
object.id = "5"
object.serial = "5"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Allow clients to create metadata store"
module.version = "0.3.56"
Module #7
Name: libpipewire-module-spa-device-factory
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-spa-device-factory"
object.id = "7"
object.serial = "7"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Provide a factory to make SPA devices"
module.version = "0.3.56"
Module #9
Name: libpipewire-module-spa-node-factory
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-spa-node-factory"
object.id = "9"
object.serial = "9"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Provide a factory to make SPA nodes"
module.version = "0.3.56"
Module #11
Name: libpipewire-module-client-node
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-client-node"
object.id = "11"
object.serial = "11"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Allow clients to create and control remote nodes"
module.version = "0.3.56"
Module #13
Name: libpipewire-module-client-device
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-client-device"
object.id = "13"
object.serial = "13"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Allow clients to create and control remote devices"
module.version = "0.3.56"
Module #15
Name: libpipewire-module-portal
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-portal"
object.id = "15"
object.serial = "15"
Module #16
Name: libpipewire-module-access
Argument: {
# access.allowed to list an array of paths of allowed
# apps.
#access.allowed = [
# /usr/bin/pipewire-media-session
#]
# An array of rejected paths.
#access.rejected = [ ]
# An array of paths with restricted access.
#access.restricted = [ ]
# Anything not in the above lists gets assigned the
# access.force permission.
#access.force = flatpak
}
Usage counter: n/a
Properties:
module.name = "libpipewire-module-access"
object.id = "16"
object.serial = "16"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Perform access check"
module.usage = "[ access.force=flatpak ] [ access.allowed=<cmd-line> ] [ access.rejected=<cmd-line> ] [ access.restricted=<cmd-line> ] "
module.version = "0.3.56"
Module #17
Name: libpipewire-module-adapter
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-adapter"
object.id = "17"
object.serial = "17"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Manage adapter nodes"
module.version = "0.3.56"
Module #19
Name: libpipewire-module-link-factory
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-link-factory"
object.id = "19"
object.serial = "19"
module.author = "Wim Taymans <wim.taymans@gmail.com>"
module.description = "Allow clients to create links"
module.version = "0.3.56"
Module #21
Name: libpipewire-module-session-manager
Argument:
Usage counter: n/a
Properties:
module.name = "libpipewire-module-session-manager"
object.id = "21"
object.serial = "21"
module.author = "George Kiagiadakis <george.kiagiadakis@collabora.com>"
module.description = "Implements objects for session management"
module.version = "0.3.56"
Module #536870912
Name: module-always-sink
Argument:
Usage counter: n/a
Properties:
module.author = "Pauli Virtanen <pav@iki.fi>"
module.description = "Always keeps at least one sink loaded even if it's a null one"
module.usage = "sink_name=<name of sink>"
module.version = "0.3.56"
I've also naturally do a "pacman -Syu" this morning, to make sure I'm on the latest packages.
Mind you, this audio stuff is still quite new to me so I'm still discovering things as I go (My main frustration lies with finding out where pulseaudio ends and where pipewire begins). I also can't imagine that the solution can be that difficult, just that I'm missing something basic and I'll appreciate any help that is offered.
While I wait for answers, I'll trying to work myself through the documentation and similar problems and will post updates if I found out something useful.
Last edited by DDGrayfox (2022-08-18 13:32:20)
Offline
Okay, turns out I'm an idiot. Pavucontrol gave the final hint.
The Analog Output was marked as "unplugged" and I thought "why does it show as unplugged when I have it plugged in."
Then it occured to me. I mistakenly plugged my Front cable into the "Line In" Port. Once I plugged it into the "Line Out"-Port, it showed up fine.
At least the post made me organize my thoughts and I learned a lot about the whole media stack in the process. :')
Offline