No sound from USB headset but it IS recognized by system

I have a USB-C Jabra headset/microphone combination that isn't outputting any sound. I can see the system recognizes it by the output:

# cat /dev/sndstat
Installed devices:
pcm0: <Realtek ALC256 (Analog 2.0+HP/2.0)> (play/rec) default
pcm1: <Realtek ALC256 (Rear Analog Line-out)> (play)
pcm2: <Intel Alder Lake (HDMI/DP 8ch)> (play)
pcm3: <GN Netcom A/S Jabra EVOLVE LINK> (play/rec)
Installed devices from userspace:
dsp: <virtual_oss device> (play/rec)
dsp.loop: <virtual_oss device> (play/rec)

I issue this command:

# cat /dev/sndstat
Installed devices:
pcm0: <Realtek ALC256 (Analog 2.0+HP/2.0)> (play/rec)
pcm1: <Realtek ALC256 (Rear Analog Line-out)> (play)
pcm2: <Intel Alder Lake (HDMI/DP 8ch)> (play)
pcm3: <GN Netcom A/S Jabra EVOLVE LINK> (play/rec) default
Installed devices from userspace:
dsp: <virtual_oss device> (play/rec)
dsp.loop: <virtual_oss device> (play/rec)

I then issue this command:

# sysctl -w hw.snd.default_unit=3

and the command executes fine, but after reboot, it goes right back to

# sysctl hw.snd.default_unit
hw.snd.default_unit: 0

I have installed both pavucontrol pulseaudio packages, and they don't seem to see the headset. The system tray icon only says "Dummy" output.

What am I missing?

Thank you,
Ed
 
Any change you make with sysctl will go back to its default after a reboot, you can put it in /etc/sysctl.conf to make it permanent, you can also set it up to automatically change whenever you connect the usb.
 
Thank you.

I guess I don't know what the command in the sysctl.conf file should be.

I added: sysctl -w hw.snd.default_unit=3 to the bottom of the file, but it reverts back to:

sysctl hw.snd.default_unit
hw.snd.default_unit: 0

Suggestions?

Ed
 
I figured out that I just needed to add: hw.snd.default_unit=3 to the bottom of the file, but the system still doesn't seem use the headset. My systray volume control still says "Dummy" output and nothing more.

Suggestions?

Ed
 
If you add
Code:
hw.snd.default_auto=2
to /etc/sysctl.conf, it will cause the sound driver to use the most recently plugged in sound device. So if you usb card isn't plugged in it will use the onboard sound card, but if it's plugged in it will use the usb soundcard. That's the best way I've found, then you don't need to hardwire the default unit to any particular card. It's documented in the 'sound' manpage, it takes a bit of searching for. Of course you can also run that sysctl manually.

If you still haven't got any sound, you need to check the mixer volume and check it's not muted. Just running 'mixer' by itself should let you set volume etc for the current default card.

Try
$ mixer pcm=1.00
and
$ mixer vol=1.00

Or if you want a nice curses type front end, try 'mixertui' which does the same thing.

And for some easy test data, there is a handy set of 'lofi' scripts here https://forums.freebsd.org/threads/useful-scripts.737/page-19#post-773836 that lets you steam the yt lofi channels from the terminal . You need mpv and yt-dlp installed to use them, I always get the latest yt-dlp from github https://github.com/yt-dlp/yt-dlp and install it manually .
 
Thank you all for your suggestions! I'm not at my PC today, but I'll try your suggestions tomorrow, when I am back, and let you know how I do!

Ed
 
If you add
Code:
hw.snd.default_auto=2
to /etc/sysctl.conf, it will cause the sound driver to use the most recently plugged in sound device. So if you usb card isn't plugged in it will use the onboard sound card, but if it's plugged in it will use the usb soundcard. That's the best way I've found, then you don't need to hardwire the default unit to any particular card. It's documented in the 'sound' manpage, it takes a bit of searching for. Of course you can also run that sysctl manually.

If you still haven't got any sound, you need to check the mixer volume and check it's not muted. Just running 'mixer' by itself should let you set volume etc for the current default card.

Try
$ mixer pcm=1.00
and
$ mixer vol=1.00

Or if you want a nice curses type front end, try 'mixertui' which does the same thing.

And for some easy test data, there is a handy set of 'lofi' scripts here https://forums.freebsd.org/threads/useful-scripts.737/page-19#post-773836 that lets you steam the yt lofi channels from the terminal . You need mpv and yt-dlp installed to use them, I always get the latest yt-dlp from github https://github.com/yt-dlp/yt-dlp and install it manually .
Here's what I got:

$ mixer pcm=1.00
mixer: (null): no such mixer

# cat /dev/sndstat
Installed devices:
pcm0: <Realtek ALC256 (Analog 2.0+HP/2.0)> (play/rec) default
pcm1: <Realtek ALC256 (Rear Analog Line-out)> (play)
pcm2: <Intel Alder Lake (HDMI/DP 8ch)> (play)
pcm3: <Yealink Yealink UH34> (play/rec)
Installed devices from userspace:
dsp: <virtual_oss device> (play/rec)
dsp.loop: <virtual_oss device> (play/rec)

What's off about this whole issue is that while the kernel and the system, clearly, "see" the Yealink headset, the pavucontrol does not see the headset/microphone at all! If you hover over the speaker icon in the bottom right, you'll see "Dummy Output: 100%". When you look at the pavucontrol gui while watching, for example, a YouTube video, you can SEE the sound is active...but there's no device(s) to send the audio signal to!

I've been scouring the web for answers and this "Dummy Output: 100%" seems to be pretty common. I just don't know how to make FBSD recognize that the headset/microphone is plugged in and that's where to send the output.

This is a real "head-scratcher".

Ed
 
Back
Top