usb Audio unter FreeBSD 10.x top - unter 11.0 zickig

H

holgerw

Guest
Hallo,

ich befürchte, mit FreeBSD 11 hat sich in Puncto Sound-Unterstützung einiges in Richtung Automagie verschlimmbessert.

Meine USB Soundkarte von Terratec, die an meinem Desktop-Rechner unter FreeBSD 10 bestens einzurichten war und dann auch lief, mag an meinem Notebook mit FreeBSD 11.0 überhaupt nicht.

Sie wird bei einem
Code:
cat /dev/sndstat
als pcm5 Device aufgelistet.

Ein
Code:
kldstat | grep snd
listet mir auch schön das Modul snd_uaudio.ko auf. Das Eigenartige ist:
Der Soundchip von Realtek (pcm0) wird durch gar kein Modul geladen, ich musste unter FreeBSD 11 am Notebook gar keinen Sound manuell konfigurieren, der lief einfach so (ich ahne da nichts Gutes).

Die Hinweise im Handbuch fruchten gar nichts: Ein Eintrag in die /etc/sysctl.conf
Code:
hw.snd.default_unit=5
wird ignoriert, nach einem Reboot ist nach wie vor der Billigsoundchip von Realtek das Default-Device pcm0 und die gute USB Terratec bleibt auf pcm5.

Auch der zusätzliche Eintrag
Code:
hw.snd.default_auto=0
der ein zusätzliches Laden weiterer Sounddevices unterbinden soll (laut Nicoles Howto zu FreeBSD), bringt nichts.

VLC weigert sich auch beim Auswählen sämtlicher dsp Devices auf der USB Karte Sound auszugeben, nur auf dem Realtek-Chip habe ich Sound.

Weiß da jemand noch Rat? Irgendein Automatismus bindet den Realtek-Chip des Notebooks ohne mein Zutun einfach so ein, ein Umkonfigurieren wird vom System ignoriert. Das ist schon ärgerlich.

Achso: Ich habe weder oss, alsa, pulseaudio sonst noch etwas in der Art eingerichtet, was sich mit den Soundmodulen des FreeBSD-Kernels beißen könnte.

Viele Grüße,
Holger
 
Hallo,

ein Teilerfolg:
Bei vlc habe ich Soundausgabe bei der USB Terratec, wenn ich das Audiodevice pcm5:virtual:dsp5.vp0 auswähle.

Nun wüsste ich noch gerne, wie ich USB Terratec als primäres Sounddevice konfigurieren kann.

Viele Grüße,
Holger
 
Was sagt denn nun "cat /dev/sndstat" genau?
Hatte vorhin unter meinem Notebook kein Internet, daher habe ich den Ausgangspost unter Win verfasst und von den Notebookausgaben abgeschrieben.

Hier nun die kompletten Ausgaben:
Code:
cat /dev/sndstat
Installed devices:
pcm0: <Realtek ALC269 (Analog 2.0+HP/2.0)> (play/rec)
pcm1: <Realtek ALC269 (Left Analog)> (play/rec)
pcm2: <Realtek ALC269 (Left Digital)> (play)
pcm3: <Intel Ibex Peak (HDMI/DP 8ch)> (play)
pcm4: <Intel Ibex Peak (HDMI/DP 8ch)> (play)
pcm5: <USB audio> (play/rec) default
No devices installed from userspace

Code:
less /boot/loader.conf
zfs_load="YES"
vfs.root.mountfrom="zfs:zeichhorn/ROOT/default"
fuse_load="YES"
kern.vt.fb.modes.LVDS-1="800x450"
vboxdrv_load="YES"
snd_uaudio_load="YES"
snd_hda_load="NO"

Code:
less /etc/sysctl.conf|grep hw
hw.snd.default_unit=5
hw.snd.default_auto=0

Code:
dmesg|grep audio
uaudio0: <vendor 0x0ccd Aureon 7.1 USB, class 0/0, rev 1.10/0.10, addr 4> on usbus0
uaudio0: Play: 48000 Hz, 4 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio0: Play: 44100 Hz, 4 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio0: Record: 48000 Hz, 2 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio0: Record: 44100 Hz, 2 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio0: No MIDI sequencer.
pcm5: <USB audio> on uaudio0
uaudio0: HID volume keys found.

Viele Grüße,
Holger
 
"hw.snd.default_auto=0" besagt übrigens nur, dass neue Sound Devices, die im Betrieb angeschlossen werden, nicht als default gesetzt werden. Das wäre bei einer USB-Soundkarte ein Anwendungsfall.

Und was sagen die ganzen Mixer (nur "mixer" auf der Konsole eingeben)? Denn eigentlich sieht alles gut aus...

Setz mal ein "cat irgendeineDatei > /dev/dsp" ab - die Datei muss natürlich existieren! Es sollten irgendwelche Geräusche aus dem Lautsprecher kommen.
 
Hallo @zuglufttier

hier die Ausgaben:
Code:
mixer
Mixer vol      is currently set to  74:74
Mixer pcm      is currently set to  76:76
Mixer line     is currently set to  75:75
Mixer mic      is currently set to   0:0
Recording source: vol

Aber auf welche Audioquelle bezieht sich das?

Ein cat dateiname > /dev/dsp5 bringt wie zu erwarten ist, Geräusche auf meiner USB Terratec. Über dsp5 kann ich ja auch unter VLC Musik auf der USB Soundkarte hören.

Nur wie die als primäres Sounddevice einrichten?
 
Und ein "cat datei > /dev/dsp" geht nicht? Die Dinger unter /dev/ werden auch nur bei Gebrauch angelegt, glaube ich.

Laut der man-Page von sound (https://www.freebsd.org/cgi/man.cgi?query=sound&manpath=FreeBSD+11.0-RELEASE+and+Ports) gilt folgendes:

hw.snd.default_unit
Default sound card for systems with multiple sound cards. When
using devfs(5), the default device for /dev/dsp. Equivalent to a
symlink from /dev/dsp to /dev/dsp${hw.snd.default_unit}.

Soll heißen, eigentlich müsste es da eine Datei /dev/dsp geben, welche auf /dev/dsp5 gelinkt ist.
 
Hallo zusammen,

werde morgen die Infos liefern, habe mein Notebook gerade nicht zur Hand und arbeite noch an meinem Desktop-Rechner ein weiteres Konzert ab.

Danke Euch für Euer Interesse, viele Grüße,
Holger
 
Hier einige Infos:
Code:
ls -1 /dev/dsp*
/dev/dsp1.0
/dev/dsp2.0
/dev/dsp3.0
/dev/dsp4.0
/dev/dsp5.0

Code:
ls -la /dev/dsp
crw-rw-rw 1 root wheel 0xaa 2 Nov. 13.30 /dev/dsp

Code:
ls -la /dev/dsp5
crw-rw-rw 1 root wheel 0xab 2 Nov. 13.30 /dev/dsp5

Viele Grüße,
Holger

P.S.: Kann es sein, dass die Soundchipunterstützung für den Realtek Chip in den Kernel kompiliert wurde und ich den Kram loswerde, wenn ich einen Kernel neu kompiliere ohne diesen Treiber?
 
Nanu, wie geht denn das?
Du machst ein ls -1 /dev/dsp* und /dev/dsp oder /dev/dsp5 werden nicht mit aufgelistet? Warum erscheinen Sie dann beim zweiten und dritten ls?
Wie dem auch sei, eventuell hilft es einfach nur
Code:
hw.snd.default_auto=2
In der /etc/sysctl.conf zu setzen:
2 Use the most recently attached device.

Rob
 
Nanu, wie geht denn das?
Du machst ein ls -1 /dev/dsp* und /dev/dsp oder /dev/dsp5 werden nicht mit aufgelistet? Warum erscheinen Sie dann beim zweiten und dritten ls?
Das gefällt mir nicht. Ich bin mal direkt ins Verzeichnis /dev gegangen. Dort gibt es dsp0.0 bis dsp0.5 und kein dsp. Wenn ich aber in diesem Verzeichnis ein
Code:
ls dsp
absetze, zeigt mir das System dsp.

Ähm, kann da eventuell was mit der Hardware nicht stimmen? Da ist eine schon mehrere Jahre alte ssd mit 60 GB verbaut, ich nutze diese Platte mit einem zfs Pool.

Viele Grüße,
Holger
 
Robert, wie würdest Du denn da weiter vorgehen? Eigenartig ist das ja schon.
 
Ich würde hw.snd.default_unit auskommentieren, hw.snd.default_auto=2 setzen und mal neu booten.

Rob
Keine Veränderung, ein
Code:
cat /dev/sndstat
zeigt weiterhin Realtek mit pcm0 als primäres Sounddevice, die USB Terratec ist pcm5.


Ein
Code:
cat .xinitrc > /dev/dsp
gibt Geräusche auf den Notebook Lautsprechern, ein
Code:
cat .xinitrc > /dev/dsp5
gibt ein Geräusch aus den Kopfhörern, die an der USB-Terratec angeschlossen sind.

Die ganzen Tipps - auch aus dem FreeBSD-Handbuch - greifen hier nicht.

Läuft das auf Kernelbau hinaus?

Viele Grüße,
Holger
 
Was passiert, wenn du dann ohne neuzubooten
Code:
$ sysctl hw.snd.default_unit=5
ausführst und nochmal /dev/dsp bespielst?

Kernelbau ist IMHO überflüssig, da kein Treiber fehlt.

Rob
 
Die Devices unter /dev/dsp werden dynamisch erzeugt! Habe ich auch in der man-Page gelesen aber nicht richtig verstanden was es heißt... Es ist also richtig, wenn man nicht alles in dem Ordner sieht, wenn man "ls" eingibt.
Wenn du Ton über deine internen Lautsprecher bekommst und auch über den Kopfhörer, wenn du die entsprechenden Devices ansprichst, ist doch alles in bester Ordnung und es funktioniert genauso wie seit den letzten Versionen von FreeBSD.

Es fehlte die gesamte Zeit nur die automatische Zuweisung des Standardgerätes. Da würde ich doch glatt darüber nachdenken, ob man den Titel des Threads nicht wieder abändern sollte...
 
Wenn du Ton über deine internen Lautsprecher bekommst und auch über den Kopfhörer, wenn du die entsprechenden Devices ansprichst, ist doch alles in bester Ordnung und es funktioniert genauso wie seit den letzten Versionen von FreeBSD.

Hallo @zuglufttier
was die Unterstützung beider Sound-Devices angeht, bin ich ja zufrieden.

Aber in bester Ordnung wäre es meines Erachtens, wenn die Handbuchhinweise und Eure Tipps hier greifen würden, aus der USB-Terratek das primäre Audio-Device zu machen.

Klar, ich kann nun bei VLC und Audacity explizit dsp5 auswählen für Audiowiedergabe über die Terratec. Aber bei Multimediainhalten über Firefox - z.B. html5 - geht das nicht so einfach.

Viele Grüße,
Holger
 
Habe ich auch in der man-Page gelesen aber nicht richtig verstanden was es heißt...
Das ist "Device Cloning". Die Anwendung macht ein open("/dev/dsp0", ...) um auf der ersten Soundkarte ausgeben zu können. Der Kernel sieht, dass das Device geöffnet wird und erzeugt im Hintergrund ein /dev/dsp0.X. Also /dev/dsp0.0 für die erste Anwendung, /dev/dsp0.1 für die zweite und so weiter. Der Anwendung wird dann ein File Descriptor auf das gerade erzeugte Device zurückgegeben. Damit denkt die Anwendung, dass sie auf /dev/dsp0 schreiben würde, in Wirklichkeit schreibt sie aber auf /dev/dsp0.X. Das hat zwei Vorteile:
  • Traditionell ist OSS exklusiv gewesen, es kann also nur eine Anwendung ausgeben. Das hat sich schon vor vielen Jahren geändert. Dirch das Device Cloning kann man der Anwendung weiter vorgaukeln, dass sie die Soundkarte alleine nutzt, obwohl es in Wirklichkeit nicht der Fall ist. Vor allem muss die Anwendung nicht angepasst werden.
  • Der Kernel hat jede Anwendung auf einem Device, erhält also von jedem Device einen Datenstrom. Er kann dann alle Datenströme in seinen Mixer werfen, zusammenfassen und das Ergebnis auf die Soundkarte schreiben.
 
Hallo @Yamagi,

danke für die die Erklärung, dann ist mit der Hardware und auch dem System soweit alles im grünen Bereich.

Kernelbau ist IMHO überflüssig, da kein Treiber fehlt.
Robert, ich möchte in diesem Fall ja nichts hinzukompilieren, sondern die Realteksound-Unterstützung heraus nehmen, dann gibt es für den Kernel nur noch die USB-Terratek als Sounddevice.

Davon abgesehen macht es mir vielleicht auch Spaß, unter FreeBSD einen Kernel zu bauen - mein letzter Kernel-Bau unter GNU/Linux ist vermutlich schon 10 Jahre her.

Viele Grüße,
Holger
 
Zurück
Oben