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
 
The important part is which pcm device is selected. Command "mixer" by itself should show you that. If nothing is selected, try "mixer -d 3". If that works add the sysctl entry as shown about by blackbird9 or me. Scouring the web will confuse you!
 
Here's what I got:

$ mixer pcm=1.00
mixer: (null): no such mixer
You appear not to have a default sound device selected. Your usb card has definitely been recognised and a device created, since you have pcm3 listed in /dev/sndstat.

It looks like you're using one of these https://support.yealink.com/docs/uh...34-specsheet/165ec2930419467f8dc9c592a5e690b8

Can you try a different usb sound device for a sanity check? I wonder if the usb interface on the UH34 isn't supported by the freebsd uaudio driver. But try setting the default device up first.

What can you see in dmesg? Search for the lines that show pcm3 being set up.
For example on my system which has an smsl usb soundcard I get the device configured on pcm4:-

uaudio0 on uhub3
uaudio0: <SMSL SMSL USB AUDIO, class 239/2, rev 2.00/3.84, addr 3> on usbus1
uaudio0: Play[0]: 384000 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer. (selected)
uaudio0: Play[0]: 352800 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 192000 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 176400 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 96000 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 88200 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 48000 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 44100 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: No recording.
uaudio0: No MIDI sequencer.
pcm4 on uaudio0
uaudio0: No HID volume keys found.
uhid0 on uhub3
uhid0: <SMSL SMSL USB AUDIO, class 239/2, rev 2.00/3.84, addr 3> on usbus1

And the mixer command by itself outputs
# mixer
pcm4:mixer: <SMSL SMSL USB AUDIO> on uaudio0 (play) (default)
vol = 0.75:0.75 pbk
pcm = 0.75:0.75 pbk

Do you have something similar in dmesg on your machine, for the UH34?

What output do you get from 'mixer -d pcm3' ?
 
If you are still having issues, I got Claude to help fix my audio problems. It can analyze the output of many cli commands and work out what's going on.
 
You appear not to have a default sound device selected. Your usb card has definitely been recognised and a device created, since you have pcm3 listed in /dev/sndstat.

It looks like you're using one of these https://support.yealink.com/docs/uh...34-specsheet/165ec2930419467f8dc9c592a5e690b8

Can you try a different usb sound device for a sanity check? I wonder if the usb interface on the UH34 isn't supported by the freebsd uaudio driver. But try setting the default device up first.

What can you see in dmesg? Search for the lines that show pcm3 being set up.
For example on my system which has an smsl usb soundcard I get the device configured on pcm4:-

uaudio0 on uhub3
uaudio0: <SMSL SMSL USB AUDIO, class 239/2, rev 2.00/3.84, addr 3> on usbus1
uaudio0: Play[0]: 384000 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer. (selected)
uaudio0: Play[0]: 352800 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 192000 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 176400 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 96000 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 88200 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 48000 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 44100 Hz, 2 ch, 32-bit S-LE PCM format, 2x4ms buffer.
uaudio0: No recording.
uaudio0: No MIDI sequencer.
pcm4 on uaudio0
uaudio0: No HID volume keys found.
uhid0 on uhub3
uhid0: <SMSL SMSL USB AUDIO, class 239/2, rev 2.00/3.84, addr 3> on usbus1

And the mixer command by itself outputs
# mixer
pcm4:mixer: <SMSL SMSL USB AUDIO> on uaudio0 (play) (default)
vol = 0.75:0.75 pbk
pcm = 0.75:0.75 pbk

Do you have something similar in dmesg on your machine, for the UH34?

What output do you get from 'mixer -d pcm3' ?
Yes, I think you're correct, i.e. that looks like the type of headset we're talking about.

I have tried a different USB headset/microphone and I get the same result, i.e., FBSD still doesn't seem to acknowledge that it's there and direct the sound to it! Odd. I've even tried plugging it into different USB ports on the front or the back and I get the same result. Nada.

Here's what dmesg shows (if I've done the command correctly):

# dmesg | grep uaudio0
uaudio0 on uhub0
uaudio0: <Yealink Yealink UH34, class 0/0, rev 2.00/0.00, addr 6> on usbus0
uaudio0: Play[0]: 48000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer. (selected)
uaudio0: Play[0]: 32000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 16000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Record[0]: 32000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer. (selected)
uaudio0: Record[0]: 16000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer.
uaudio0: No MIDI sequencer.
pcm3 on uaudio0
uaudio0: No HID volume keys found.

and the mixer command:

# mixer
pcm0:mixer: <Realtek ALC256 (Analog 2.0+HP/2.0)> on hdaa0 (play/rec) (default)
vol = 0.85:0.85 pbk
bass = 0.50:0.50 pbk
treble = 0.50:0.50 pbk
pcm = 1.00:1.00 pbk
speaker = 1.00:1.00 rec
mic = 0.67:0.67 rec src
rec = 0.37:0.37 pbk
ogain = 1.00:1.00 pbk

I'm not, physically, at my office today, so I can't test the headset in person but I can runs commands via SSH.

If I didn't mention, the "beep" command works over the onboard speaker or the headset if I set it as the default output. The whole situation just seems really odd to me that the system clearly sees the device but refuses to direct the audio to it. Since the GUI and pavucontrol doesn't see anything attached, that makes sense.

Thank you for your help on this perplexing problem!

Ed
 
What software are you using to play music? Can you try something basic on the command line like mpg123 with an mp3 file, or mpv? I wonder if something is misconfigured higher up in the stack...
 
Yes, I think you're correct, i.e. that looks like the type of headset we're talking about.

I have tried a different USB headset/microphone and I get the same result, i.e., FBSD still doesn't seem to acknowledge that it's there and direct the sound to it! Odd. I've even tried plugging it into different USB ports on the front or the back and I get the same result. Nada.

Here's what dmesg shows (if I've done the command correctly):

# dmesg | grep uaudio0
uaudio0 on uhub0
uaudio0: <Yealink Yealink UH34, class 0/0, rev 2.00/0.00, addr 6> on usbus0
uaudio0: Play[0]: 48000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer. (selected)
uaudio0: Play[0]: 32000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 16000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Record[0]: 32000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer. (selected)
uaudio0: Record[0]: 16000 Hz, 2 ch, 16-bit S-LE PCM format, 2x4ms buffer.
uaudio0: No MIDI sequencer.
pcm3 on uaudio0
uaudio0: No HID volume keys found.

and the mixer command:

# mixer
pcm0:mixer: <Realtek ALC256 (Analog 2.0+HP/2.0)> on hdaa0 (play/rec) (default)
vol = 0.85:0.85 pbk
bass = 0.50:0.50 pbk
treble = 0.50:0.50 pbk
pcm = 1.00:1.00 pbk
speaker = 1.00:1.00 rec
mic = 0.67:0.67 rec src
rec = 0.37:0.37 pbk
ogain = 1.00:1.00 pbk

I'm not, physically, at my office today, so I can't test the headset in person but I can runs commands via SSH.

If I didn't mention, the "beep" command works over the onboard speaker or the headset if I set it as the default output. The whole situation just seems really odd to me that the system clearly sees the device but refuses to direct the audio to it. Since the GUI and pavucontrol doesn't see anything attached, that makes sense.

Thank you for your help on this perplexing problem!

Ed
So that's saying the default sound card is set to the onboard realtek sound chip, not the usb yealink headset...
 
What software are you using to play music? Can you try something basic on the command line like mpg123 with an mp3 file, or mpv? I wonder if something is misconfigured higher up in the stack...
I tried three different ways.

1.) I downloaded a sample .wav file and used Audacity.

2.) I went to YouTube and tried listening to a video.

3.) I went to a URL from a radio station I listen to that broadcasts online.

I'm batting a no-hitter.

:-)

Ed
 
I think you need to
# sysctl hw.snd.default_unit=3
so that 'mixer' tells you the default is pcm3, not pcm0. It looks to me like it's playing music to the onboard sound card, not to your usb headset.
 
So that's saying the default sound card is set to the onboard realtek sound chip, not the usb yealink headset...
I did try your suggestion: # echo "hw.snd.default_unit=3" >> /etc/sysctl.conf and then rebooted, but it still didn't work. I will try that again when I'm physically there tomorrow, but I'm 99% sure I've already tried that and I still getting get any sound.

I don't mean to sound like I'm beating a dead horse, but why doesn't the GUI for pavucontrol "see" that the headset even exists? I also tried making a test call with Microsoft Teams, like I do on my other PC, and it's a similar result. It won't make a call because it clearly shows there isn't any headset/microphone available on the system to make a phone call with.

???

As always, thank you.

Ed
 
No idea about pavucontrol, I don't have pulseaudio (or pipewire) installed, I run on bare OSS.

The output of 'mixer' should tell you pcm3 is the default though, not pcm0. So maybe you got a typo in your sysctl.conf, that should have worked. Try setting it manually on the command line, so that
'mixer' tells you pcm3 is the default. Then you should be able to play sound. Although who knows what pulseaudio is doing.
 

I think you need to
# sysctl hw.snd.default_unit=3
so that 'mixer' tells you the default is pcm3, not pcm0. It looks to me like it's playing music to the onboard sound card, not to your usb headset.
I am happy to try your suggestion again when I'm back tomorrow.

Should I try your suggestion you made earlier: hw.snd.default_auto=2 or sysctl hw.snd.default_unit=3 ? I can make the change remotely. Is there any way to test for success remotely, i.e., is there any way to "pipe" the sound back to myself over SSH?

Ed
 
You can't test it remotely, you have to be there in person to listen to that physical device. Just try the sysctl on the command line, that should work enough for a test.
 
You can't test it remotely, you have to be there in person to listen to that physical device. Just try the sysctl on the command line, that should work enough for a test.
Does this strike you odd (https://docs.freebsd.org/en/books/handbook/multimedia/#sound-setup)?

# dmesg | grep pcm
pcm0: <Realtek ALC256 (Analog 2.0+HP/2.0)> at nid 20,33 and 25 on hdaa0
pcm1: <Realtek ALC256 (Rear Analog Line-out)> at nid 27 on hdaa0
pcm2: <Intel Alder Lake (HDMI/DP 8ch)> at nid 4 on hdaa1
pcm3 on uaudio0

while this shows something a little more detailed?

# 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)

Ed
 
Back
Top