2 baugleiche Soundkarten und PulseAudio

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
tokiox
Beiträge: 7
Registriert: 26.08.2021 22:44:58

2 baugleiche Soundkarten und PulseAudio

Beitrag von tokiox » 26.08.2021 23:53:07

Moin,
ich habe mir vor kurzen mehrere USB-Soundkarten gekauft. Trotz des Preises funktionieren die recht gut und scheinen mit ihrem Metallgehäuse auch recht wertig.

Lt. lsusb werden sie mit

Code: Alles auswählen

Bus 001 Device 004: ID 1b3f:2008 Generalplus Technology Inc. 
Bus 001 Device 003: ID 1b3f:2008 Generalplus Technology Inc.
ins System eingebunden.
sudo lshw -short gibt auch nur wenig an:

Code: Alles auswählen

/0/100/1.2/0/0/c                       multimedia  USB Audio Device
/0/100/1.2/0/0/d                       multimedia  USB Audio Device
In pavucontrol werden beide nur als USB Audio Device Analog Stereo angezeigt und es ist nur mit einigen Tricks möglich eine Quelle auf die 2. Karte zu leiten. Direkte Auswahl der Karte funktioniert nicht. Nur die interne und 1. USB-Karte lassen sich normal anwählen. Ich vermute nun, dass die 2. USB-Karte aufgrund des gleichen Namens intern nicht richtig angesprochen werden kann.

Gibt es eine Möglichkeit die verwendeten Namen/Bezeichner der USB-Karten zu ändern?

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: 2 baugleiche Soundkarten und PulseAudio

Beitrag von debianoli » 27.08.2021 09:56:40

Das könnte über statische Zuweisungen unter anderem Namen klappen, was wie das https://msadowski.github.io/linux-static-port/

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: 2 baugleiche Soundkarten und PulseAudio

Beitrag von smutbert » 27.08.2021 11:46:03

Also rein prinzipiell sollten 2 gleiche Soundkarten kein Problem und unter Pulseaudio sogar leichter zu handhaben sein als nur mit Alsa, weil Pulseaudio die Soundkarten (auch) anhand des Anschlusses identifiziert und der bleibt gleich solange du nichts umsteckst. Vielleicht ist hier aber pavucontrol etwas unpraktisch oder sogar ungeeignet.

Mit

Code: Alles auswählen

pactl list sinks short
könntest du einmal eine Liste der Audioausgabegeräte ausgeben lassen.

Willst du die Audioausgaben öfter zwischen den beiden Soundkarten umschalten oder willst du nur bestimmte Anwendungen auf einer Soundkarte und alle anderen auf der anderen ausgeben lassen oder noch einmal etwas anderes?
Je nach den Wünschen, hätte ich nämlich unterschiedliche Ideen.

tokiox
Beiträge: 7
Registriert: 26.08.2021 22:44:58

Re: 2 baugleiche Soundkarten und PulseAudio

Beitrag von tokiox » 27.08.2021 18:35:12

Danke für die rasche Antwort. Hier die gewünschte Ausgabe:

Code: Alles auswählen

0	alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo	module-alsa-card.c	s16le 2ch 44100Hz	SUSPENDED
1	alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.2	module-alsa-card.c	s16le 2ch 44100Hz	SUSPENDED
2	alsa_output.pci-0000_38_00.6.analog-stereo	module-alsa-card.c	s16le 2ch 44100Hz	SUSPENDED
Es ist ja nicht so, dass es nicht funktioniert. Es ist nur die Auswahl störrisch. Um eine Quelle auf die 2. Karte zu bekommen muss ich als Ausweichoption die 2. Karte setzen. Dann werden neue Anwendungen direkt auf diese gesetzt und dann entsprechend umverteilen. Hätte ich PulseEffects nicht drauf, würde der Line-Eingang völlig übersteuern. Aber das ist eine andere Geschichte. Eigentlich soll ja sogar noch eine 3. Baugleiche USB-Karte hinzukommen und dann wird es wohl richtig chaotisch bei den Zuweisungen.

tokiox
Beiträge: 7
Registriert: 26.08.2021 22:44:58

Re: 2 baugleiche Soundkarten und PulseAudio

Beitrag von tokiox » 27.08.2021 18:44:17

debianoli hat geschrieben: ↑ zum Beitrag ↑
27.08.2021 09:56:40
Das könnte über statische Zuweisungen unter anderem Namen klappen, was wie das https://msadowski.github.io/linux-static-port/
Danke, sieht interessant aus. dann müsste ich nur herausfinden was die /dev/..-Bezeichnung ist. Vor allem stellt sich dann wieder die Frage ob dies bei Verwendung eines Hubs noch genauso funktioniert. Das Beide Karten identische Daten haben und sich nur durch den gerade verwendeten USB-Port unterscheiden scheint sicher.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: 2 baugleiche Soundkarten und PulseAudio

Beitrag von smutbert » 27.08.2021 20:28:32

Die Gerätedateien unter »/dev« werden dir bei Soundkarten leider nicht weiterhelfen glaube ich. Sollte es hart auf hart kommen müssten wir uns da etwas anderes überlegen, aber ich hoffe nach wie vor, dass das nicht notwendig ist.

Grundsätzlich solltest du in pavucontrol auch Ausgaben auf die 2. (oder 3., 4.,...) Karte verschieben können indem du (während die Wiedergabe bereits läuft) in pavucontrol unter „Wiedergabe“ bei der Anwendung die/eine andere Soundkarte wählst.

Wenn es dir darum geht bereits beim Start der Anwendung eine bestimmte Soundkarte auszuwählen, kannst du das auf der Kommandozeile, indem du das Programm mit

Code: Alles auswählen

PULSE_SINK="alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.2" firefox
startest (firefox musst du natürlich durch die gewünschte Anwendung ersetzen). Der Name der zweiten Soundkarte stammt aus der zweiten Spalte deiner Ausgabe.

tokiox
Beiträge: 7
Registriert: 26.08.2021 22:44:58

Re: 2 baugleiche Soundkarten und PulseAudio

Beitrag von tokiox » 27.08.2021 23:41:32

Wenn dies dann in einem Script über die Startprogramme automatisiert würde, sollte es zumindest komfortabel sein. Natürlich wäre ein Umstellen im Betrieb dann wohl auch nicht einfach möglich. Wenn doch, könnte ich ein Script mit grafischer Oberfläche erstellen.

Quasi:

Code: Alles auswählen

      Sound1  Sound2  Sound3
App1  on      off     off
App2  off     on      off
App3  on      off     off
App4  off     off     on
oder ein Auswahlfeld oder so. Aber das wäre wohl zu einfach gedacht.

Habe gerade https://wiki.archlinux.org/title/PulseAudio/Examples gefunden, ggf. ist Abschnitt 24 interessant.

Noch interessanter ist allerdings https://qastack.com.de/ubuntu/71863/how ... g-playback.

pacmd list-sinks | grep -e 'name:' -e 'index:'

Code: Alles auswählen

  * index: 0
	name: <alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo>
    index: 1
	name: <alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.2>
    index: 2
	name: <alsa_output.pci-0000_38_00.6.analog-stereo>
pacmd list-sink-inputs

Code: Alles auswählen

1 sink input(s) available.
    index: 1
	driver: <protocol-native.c>
	flags: START_CORKED 
	state: RUNNING
	sink: 1 <alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.2>
	volume: front-left: 39976 /  61% / -12,88 dB,   front-right: 39976 /  61% / -12,88 dB
	        balance 0,00
	muted: no
	current latency: 101,61 ms
	requested latency: 90,00 ms
	sample spec: s16le 2ch 44100Hz
	channel map: front-left,front-right
	             Stereo
	resample method: (null)
	module: 12
	client: 12 <Rhythmbox>
	properties:
		media.name = "»Hold Down« durch »Lish Grooves«"
		application.name = "Rhythmbox"
		native-protocol.peer = "UNIX socket client"
		native-protocol.version = "32"
		media.role = "music"
		application.process.id = "27507"
		application.process.user = "raymon"
		application.process.host = "workstation"
		application.process.binary = "rhythmbox"
		application.icon_name = "rhythmbox"
		application.language = "de_DE.UTF-8"
		window.x11.display = ":0"
		application.process.machine_id = "ef1fcfd8109b4e57896dad5bfa40cd1c"
		application.process.session_id = "2"
		module-stream-restore.id = "sink-input-by-media-role:music"
		media.title = "Hold Down"
		media.artist = "Lish Grooves"
Nun kann ich mit den nachfolgenden Befehlen die Soundkarte wechseln.

Code: Alles auswählen

pacmd move-sink-input 1 0
pacmd move-sink-input 1 1
pacmd move-sink-input 1 2
Da tun sich Möglichkeiten auf.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: 2 baugleiche Soundkarten und PulseAudio

Beitrag von smutbert » 28.08.2021 15:48:39

Genau so etwas in der Art hätte ich auch vorgeschlagen. Auch ganz praktisch wäre vielleicht eine Übersicht welche Ausgabe zu welchem Programm gehört:

Code: Alles auswählen

pacmd list-sink-inputs | awk '$1 == "index:" { printf "%s ", $2 }; $1 == "application.process.binary" { gsub(/"/, " ", $3); print $3 }'
(wobei man das bestimmt auch schöner schreiben könnte)

tokiox
Beiträge: 7
Registriert: 26.08.2021 22:44:58

Re: 2 baugleiche Soundkarten und PulseAudio

Beitrag von tokiox » 29.08.2021 20:18:02

Auf jeden Fall.

Habe nun eine .config/pulse/default.pa erstellt. Das Ganze sieht so aus:

Code: Alles auswählen

#!/usr/bin/pulseaudio -nF

## Include defaults
.include /etc/pulse/default.pa

## Rename devices
update-source-proplist alsa_output.pci-0000_38_00.6.analog-stereo.monitor device.description="Intern Monitor"
update-source-proplist alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.monitor device.description="USB Musik Monitor"
update-source-proplist alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.2.monitor device.description="USB Spiel Monitor"
update-source-proplist alsa_input.pci-0000_38_00.6.analog-stereo device.description="Intern Eingang"
update-source-proplist alsa_input.usb-Nintendo_WUP-021-0_0002-01.analog-mono device.description="USB Mikro"

## Rename sinks
update-sink-proplist alsa_output.pci-0000_38_00.6.analog-stereo device.description="Intern"
update-sink-proplist alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo device.description="USB Musik"
update-sink-proplist alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.2 device.description="USB Spiel"
pacmd list-sinks | grep name: | cut -d: -f2

Code: Alles auswählen

 <alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo>
 <alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.2>
 <alsa_output.pci-0000_38_00.6.analog-stereo> 
und pacmd list-sources | grep name: | cut -d: -f2

Code: Alles auswählen

 <alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.monitor>
 <alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo.2.monitor>
 <alsa_input.usb-Nintendo_WUP-021-0_0002-01.analog-mono>
 <alsa_output.pci-0000_38_00.6.analog-stereo.monitor>
 <alsa_input.pci-0000_38_00.6.analog-stereo>
Die Angaben in pavucontrol Konfiguration entsprechen weiter den ursprünglichen Namen, jedoch sind die Bezeichnungen in den anderen Reitern nun angepasst.

Und das Umschalten funktioniert dennoch nur für das erste Programm.

Sprich, das beschriebene Problem scheint mit den Device-Namen und nicht mit der Beschreibung zusammenzuhängen. Sind diese gleich, kommt pavucontrol etwas durcheinander.

Cool wäre natürlich ein System (Script/Programm) welches anhand von Profilen verschiedene Voreinstellungen auswählbar macht. So was wie:
  • Konfiguration 1: default
    Alle Sounds laufen über die interne Karte.
  • Konfiguration 2: gaming
    Spiel über USB-Karte 1,
    Musik über interne Karte.
  • Konfiguration 3: Streaming
    Spiel über USB-Karte 1,
    Musik über USB-Karte 2.
  • Konfiguration 4: OBS
    Wenn OBS aktiv wie Konfiguration 3,
    sonst wie Konfiguration 1.
  • usw.
Hab zwar schon eine Idee für ein Bash-Script, aber dialog ist da wohl nicht das richtige und curses wohl zu komplex. Schau mir jetzt mal yad an.

... und geht schon in die richtige Richtung:

Code: Alles auswählen

VAR='Profil 1,Profil 2,Profil 3'

Code: Alles auswählen

yad \
--title="Pulseaudio Profile Switcher" \
--mouse \
--no-buttons \
--item-separator=, \
--separator=" " \
--form \
--columns=5 \
--output-by-row \
--field="Profil:CBE" "$VAR" \
--field=":LBL" \
--field="Rhythmbox:LBL" \
--field=":LBL" \
--field="Karte 1:LBL" \
--field="1:CHK" \
--field=":LBL" \
--field="Karte 2:LBL" \
--field="2:CHK" \
--field=":LBL" \
--field="Karte 3:LBL" \
--field="3:CHK" \
--field="Einstellungen:FBTN" \
--field=":LBL" \
--field=":NUM"

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: 2 baugleiche Soundkarten und PulseAudio

Beitrag von smutbert » 31.08.2021 23:13:41

So weit wie du bist, kommst du wohl gut ohne Hilfe zurecht.

Mit irgendwelchen grafischen Dialogen habe ich mich übrigens nie herumgeschlagen. Unter Gnome habe ich mich einfach nach einer Extension umgesehen , die das Aufrufen von Skripten aus der grafischen Oberfläche ermöglicht – zuletzt Handy Scripts 2.

Statt Auswahllisten und Menüs habe ich Debianfzf für mich entdeckt. Das läuft im Terminal und kann u.a. über die Standardeingabe eine Liste (Zeilen) entgegennehmen, zur Wahl anbieten und liefert dann auf der Standardausgabe das ausgewählte Listenelement (die Zeile).

Ein kurzes Beispiel, das ich in etwas abgewandelter Form sehr oft verwende um alle laufenden Audioausgaben auf ein bestimmtes Ausgabegerät umzuleiten:

Code: Alles auswählen

sink="$(pactl list sinks short | cut -f 2 | fzf)"

for audio-output in $(pacmd list-sink-inputs | awk '$1 == "index:" {print $2}') ; do
    pacmd move-sink-input ${audio-output} "${sink}" >/dev/null 2>&1
done

Antworten