Mehrere Soundkarten benutzen

zuglufttier

Well-Known Member
Ahoi,

auf meinem System habe ich zwei USB-Soundkarten, die ich auch beide gerne benutzen würde. Die eine befeuert meine Lautsprecher und die andere meine Kopfhörer.

Nun kann man ja immer mittels "sysctl hw.snd.default_unit" die Soundkarte auswählen, die benutzt werden soll. Das funktioniert soweit auch gut, leider ist das immer mit einem Neustart verbunden.

Habt ihr eine Idee, wie ich die Ausgabe des Systems zur Laufzeit auf eine andere Soundkarte umbiegen kann?
 
Geht das nicht im Mixer? Da kann ich doch zwischen den vorhandenen Sound Devices umschalten, und bestimme damit auch die Ausgabe.
 
Ein paar Fragen: Wie ist Dein Setup - beide USB-Soundkarten sind stets angeschlossen oder wechselst Du? Falls letzteres solltest Du es mal mit hw.snd.default_auto versuchen. Man pcm sagt dazu unter 9.3:
Code:
hw.snd.default_auto
         Enable to automatically assign default sound unit to the most
         recent attached device.
Und unter 10:
Code:
     hw.snd.default_auto
         Automatically assign the default sound unit.  The following val-
         ues are supported (default    is 1):

         0     Do not    assign the default sound unit automatically.

         1     Use the best available    sound device based on playing and
         recording capabilities    of the device.

         2     Use the most recently attached    device.

Andernfalls: Wenn Du mit "Neustart" einen kompletten Reboot meinst, sollte es auch ohne gehen. Allerdings musst Du meiner Erfahrung nach immer die Sound-Application neu starten. Manchmal gab's bei mir auch Probleme, die nur mit einem Neustart von Pulseaudio zu beseitigen waren - aber immer noch ohne System-Neustart.
 
Eine ist immer angeschlossen (Kopfhörer), die andere nur von Zeit zu Zeit (Lautsprecher). In der Theorie müsste es mit hw.snd.default_auto=2 klappen; habe 10 installiert.

Aber scheinbar gibt's noch ein paar andere Probleme bei mir, wenn ich die zweite Soundkarte aktiviere, kommt folgende Fehlermeldung:
Code:
usb_alloc_device: set address 6 failed (USB_ERR_STALLED, ignored)
usbd_setup_device_desc: getting device descriptor at addr 6 failed, USB_ERR_STALLED
usbd_req_re_enumerate: addr=6, set address failed! (USB_ERR_STALLED, ignored)
usbd_setup_device_desc: getting device descriptor at addr 6 failed, USB_ERR_STALLED
usbd_req_re_enumerate: addr=6, set address failed! (USB_ERR_STALLED, ignored)
usbd_setup_device_desc: getting device descriptor at addr 6 failed, USB_ERR_STALLED
usbd_req_re_enumerate: addr=6, set address failed! (USB_ERR_STALLED, ignored)
usbd_setup_device_desc: getting device descriptor at addr 6 failed, USB_ERR_STALLED
usbd_req_re_enumerate: addr=6, set address failed! (USB_ERR_STALLED, ignored)
usbd_setup_device_desc: getting device descriptor at addr 6 failed, USB_ERR_STALLED
ugen2.6: <Unknown> at usbus2 (disconnected)
uhub_reattach_port: could not allocate new device
Vielleicht ein Problem des Geräts (Hypex AS2.100D)...
 
Ah, falscher Alarm!

Also das zweite Gerät ist eine Endstufe mit ein bisschen DSP-Spielerei an Bord. Die Geschichte funktioniert, wenn ich das Kabel abziehe und wieder reinstecke. Schalte ich das Gerät per Fernbedienung aus und lasse das UBS-Kabel drin, kommt die besagte Fehlermeldung oben. Auch wenn ich es dann wieder einschalte bleibt die Fehlermeldung.

Gibt's eine Möglichkeit alle USB-Geräte neu zu initialisieren? Also ein Einstecken der Kabel zu simulieren?
 
Habe gerade mal geguckt... Hier die Ausgabe von usbconfig, wenn das Kabel neu eingesteckt wurde:
Code:
ugen1.1: <XHCI root HUB 0x1b6f> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)
ugen0.1: <EHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen2.1: <EHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen1.2: <PS2 to USB Converter CHESEN> at usbus1, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA)
ugen0.2: <product 0x0024 vendor 0x8087> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen2.2: <product 0x0024 vendor 0x8087> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen2.3: <USB2.0-Print vendor 0x1a86> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (96mA)
ugen2.5: <product 0x0001 Cherry GmbH> at usbus2, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA)
ugen2.4: <USB Audio CODEC Burr-Brown from TI> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
ugen1.3: <General Purpose USB Hub vendor 0x0451> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA)
ugen1.4: <USB Audio DAC Burr-Brown from TI> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (20mA)
ugen1.5: <AS2.100 Hypex BV> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (50mA)
Und wenn das Gerät aus- und wieder eingeschaltet wurde (Kabel immer noch dran):
Code:
ugen1.1: <XHCI root HUB 0x1b6f> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)
ugen0.1: <EHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen2.1: <EHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen1.2: <PS2 to USB Converter CHESEN> at usbus1, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA)
ugen0.2: <product 0x0024 vendor 0x8087> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen2.2: <product 0x0024 vendor 0x8087> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen2.3: <USB2.0-Print vendor 0x1a86> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (96mA)
ugen2.5: <product 0x0001 Cherry GmbH> at usbus2, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA)
ugen2.4: <USB Audio CODEC Burr-Brown from TI> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
ugen1.3: <General Purpose USB Hub vendor 0x0451> at usbus1, cfg=255 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA)

Die Lösung ist es dann "usbconfig -d 1.3 reset" abzusetzen! Ich hatte erst probiert ugen1.4 anzusprechen, was natürlich nicht mehr da ist... Vielen Dank!

Da werde ich mir ein kleines Skript schreiben und dann ist die Sache gegessen ;)
 
Welcher Mixer? Du meinst den auf der Konsole? Damit kann ich nur die Lautstärken einstellen...
Ja, Du hast natürlich recht, Du hast ja keinen Alsamixer, der auch auf der Konsole funktioniert. Da ist das Schreiben eines Scriptes wohl eine gute Idee und die richtige Lösung.
 
Zurück
Oben