No Sound on Dell 7659 laptop

Hey folks. I’ve been working on this for several days now. No joy from solutions on the web. I’m getting no sound.

I am running NomadBSD on a 256G USB3.1 Sanyo thumb drive on a Dell 2-in-1 7659 laptop with windows10 on it. BIOS have been updated to current. It has the ALC225 device as well as a Intel Skylake device (for HDMI) , snd_hda driver is active:

nomad@NomadBSD$ cat /dev/sndstat
FreeBSD Audio Driver (64bit 2009061500/amd64)
Installed devices:
pcm0: <Realtek ALC225 (Analog)> on hdaa0  (1p:1v/1r:1v) default
	snddev flags=0xee2<AUTOVCHAN,BUSY,MPSAFE,REGISTERED,VPC,EQ,EQ_ENABLED>
	[pcm0:play:dsp0.p0]: spd 48000, fmt 0x00200010, flags 0x00002100, 0x00000014
	interrupts 986, underruns 0, feed 986, ready 0 [b:2048/1024/2|bs:2048/1024/2]
	channel flags=0x2100<BUSY,HAS_VCHAN>
	{userland} -> feeder_mixer(0x00200010) -> feeder_eq(0x00200010) -> {hardware}
	pcm0:play:dsp0.p0[pcm0:virtual:dsp0.vp0]: spd 44100/48000, fmt 0x00200010, flags 0x10000000, 0x00000029
	interrupts 0, underruns 0, feed 0, ready 0 [b:0/0/0|bs:8192/1024/8]
	channel flags=0x10000000<VIRTUAL>
	{userland} -> feeder_root(0x00200010) -> feeder_volume(0x00200010) -> feeder_rate(0x00200010 q:3 44100 -> 48000) -> {hardware}
	[pcm0:record:dsp0.r0]: spd 48000, fmt 0x00200010, flags 0x00002100, 0x00000005
	interrupts 3742, overruns 0, feed 7452, hfree 512, sfree 512 [b:512/256/2|bs:512/256/2]
	channel flags=0x2100<BUSY,HAS_VCHAN>
	{hardware} -> feeder_root(0x00200010) -> feeder_mixer(0x00200010) -> {userland}
	pcm0:record:dsp0.r0[pcm0:virtual:dsp0.vr0]: spd 44100/48000, fmt 0x00200010, flags 0x10000000, 0x00000029
	interrupts 0, overruns 0, feed 0, hfree 0, sfree 32768 [b:0/0/0|bs:32768/256/128]
	channel flags=0x10000000<VIRTUAL>
	{hardware} -> feeder_root(0x00200010) -> feeder_rate(0x00200010 q:3 48000 -> 44100) -> feeder_volume(0x00200010) -> {userland}
pcm1: <Intel Skylake (HDMI/DP 8ch)> on hdaa1  (1p:1v/0r:0v)
	snddev flags=0xee7<SIMPLEX,AUTOVCHAN,SOFTPCMVOL,BUSY,MPSAFE,REGISTERED,VPC,EQ,EQ_ENABLED>
	[pcm1:play:dsp1.p0]: spd 48000, fmt 0x00200010, flags 0x00006100, 0x00000014
	interrupts 962, underruns 0, feed 962, ready 0 [b:2048/1024/2|bs:2048/1024/2]
	channel flags=0x6100<BUSY,HAS_VCHAN,VCHAN_PASSTHROUGH>
	{userland} -> feeder_mixer(0x00200010) -> feeder_eq(0x00200010) -> {hardware}
	pcm1:play:dsp1.p0[pcm1:virtual:dsp1.vp0]: spd 44100/48000, fmt 0x00200010, flags 0x10000000, 0x00000029
	interrupts 0, underruns 0, feed 0, ready 0 [b:0/0/0|bs:8192/1024/8]
	channel flags=0x10000000<VIRTUAL>
	{userland} -> feeder_root(0x00200010) -> feeder_volume(0x00200010) -> feeder_rate(0x00200010 q:3 44100 -> 48000) -> {hardware}
No devices installed from userspace.

File Versions:
$FreeBSD$
$FreeBSD$

............................................................



/etc/sysctl.conf:

# Set default sound device
hw.snd.default_unit=0

# Good sound sampling quality
hw.snd.feeder_rate_quality=3

# Max. number of virtual channels
dev.pcm.0.play.vchans=4
dev.pcm.0.rec.vchans=4
hw.snd.maxautovchans=32

# Set level of sndstat reporting
hw.snd.verbose=4

dmesg:

hdacc0: <Realtek ALC225 HDA CODEC> at cad 0 on hdac0
hdaa0: <Realtek ALC225 Audio Function Group> at nid 1 on hdacc0
pcm0: <Realtek ALC225 (Analog)> at nid 33 and 18 on hdaa0
hdacc1: <Intel Skylake HDA CODEC> at cad 2 on hdac0
hdaa1: <Intel Skylake Audio Function Group> at nid 1 on hdacc1
pcm1: <Intel Skylake (HDMI/DP 8ch)> at nid 3 on hdaa1

Loader.conf:

snd_hda_load="YES"

I opened Simple Recorder and recorded a short video/audio test and got no sound. I cat’d the file to /dev/dsp and got no sound. Nor do I get sound on YouTube through Firefox.

As I said, everything works perfectly on my Arch Linux box, so it’s something particular to this model laptop. The snd_hda driver should have taken care of the sound card. I don’t know enough to start messing with GPIO settings and such, as mentioned in some of the documentation, without some coaching.

I have gone over every solution I could find that came anywhere close to applicable to my situation. I know it’s particular to this laptop, because I get sound with this same configuration on my linux desktop. While I am familiar with FreeBSD, I’m not particularly adept at trouble-shooting where it goes beyond the handbook. Any suggestions?

UPDATE: I just got another hint. Don’t know why I didn’t try it before, but I get sound through headphones. I’m pretty sure it’s just a simple setting I don’t know about.

pin dump dmesg (pertinent lines):

hdaa0: Setting amplifier nid=33 index=0 out mute=0/0 vol=0/0
hdaa0: Setting amplifier nid=2 index=0 out mute=0/0 vol=52/52
hdaa0: Setting amplifier nid=7 index=0 in mute=1/1 vol=0/0
hdaa0: Setting amplifier nid=18 index=0 in mute=1/1 vol=0/0

hdaa0: Dumping AFG pins:
hdaa0: nid   0x    as seq device       conn  jack    loc        color   misc
hdaa0: 18 b7a60150 5  0  Mic           Fixed Digital Lid-In     Unknown 1
hdaa0:     Caps: IN                 
hdaa0: 19 40000000 0  0  Line-out      None  Unknown 0x00       Unknown 0 DISA
hdaa0:     Caps: IN                 
hdaa0: 20 901701b0 11 0  Speaker       Fixed Analog  Internal   Unknown 1 DISA
hdaa0:     Caps:    OUT    EAPD      Sense: 0x00000000 (disconnected)
hdaa0: 22 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0:     Caps:    OUT HP           Sense: 0x80000000 (connected)
hdaa0: 23 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0:     Caps:    OUT HP           Sense: 0x00000000 (disconnected)
hdaa0: 24 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0:     Caps: IN                  Sense: 0x00000000 (disconnected)
hdaa0: 25 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0:     Caps: IN             VREF Sense: 0x00000000 (disconnected)
hdaa0: 26 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0:     Caps: IN             VREF Sense: 0x00000000 (disconnected)
hdaa0: 27 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0:     Caps: IN OUT    EAPD VREF Sense: 0x80000000 (connected)
hdaa0: 30 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0:     Caps:    OUT             
hdaa0: 33 04211020 2  0  Headphones    Jack  1/8     Right      Black   0
hdaa0:     Caps:    OUT HP EAPD      Sense: 0x00000000 (disconnected)
hdaa0: NumGPIO=3 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1
hdaa0:  GPIO0: disabled
hdaa0:  GPIO1: disabled
hdaa0:  GPIO2: disabled

I’m guessing the “1” under the misc column indicates “muted”, since nid33 is the headphones and shows “0”. Can anybody tell me how to reset that to unmute the internal speakers on nid20?

Still working on it. This seems to be the pertinent few lines. I wish I knew how to turn that [DISABLED] into [ENABLED].

sysctl -a | grep -i hda:

dev.hdaa.0.nid20_original: 0x901701b0 as=11 seq=0 device=Speaker conn=Fixed ctype=Analog loc=Internal color=Unknown misc=1
dev.hdaa.0.nid20_config: 0x901701b0 as=11 seq=0 device=Speaker conn=Fixed ctype=Analog loc=Internal color=Unknown misc=1
dev.hdaa.0.nid20: pin: Speaker (Fixed) [DISABLED]

This is the headphones. They work.

dmesg | grep -i hda:

dev.hdaa.0.nid33_original: 0x04211020 as=2 seq=0 device=Headphones conn=Jack ctype=1/8 loc=Right color=Black misc=0
dev.hdaa.0.nid33_config: 0x04211020 as=2 seq=0 device=Headphones conn=Jack ctype=1/8 loc=Right color=Black misc=0
dev.hdaa.0.nid33: pin: Headphones (Black Jack)
     Widget cap: 0x0040058d PWR UNSOL STEREO
    Association: 0 (0x0001)
        Pin cap: 0x0001001c PDC HP OUT EAPD
     Pin config: 0x04211020 as=2 seq=0 device=Headphones conn=Jack ctype=1/8 loc=Right color=Black misc=0
    Pin control: 0x000000c0 HP OUT
           EAPD: 0x00000002 EAPD
     Output amp: 0x80000000 mute=1 step=0 size=0 offset=0 (0/0dB)
    Connections: 2
          + <- nid=2 [audio output] (selected)
          + [DISABLED] <- nid=3 [audio output] [DISABLED]

This is the internal speakers. They don’t work.

dmesg | grep -i hda:

dev.hdaa.0.nid20_original: 0x901701b0 as=11 seq=0 device=Speaker conn=Fixed ctype=Analog loc=Internal color=Unknown misc=1
dev.hdaa.0.nid20_config: 0x901701b0 as=11 seq=0 device=Speaker conn=Fixed ctype=Analog loc=Internal color=Unknown misc=1
dev.hdaa.0.nid20: pin: Speaker (Fixed) [DISABLED]
     Widget cap: 0x0040058d PWR UNSOL STEREO
        Pin cap: 0x00010014 PDC OUT EAPD
     Pin config: 0x901701b0 as=11 seq=0 device=Speaker conn=Fixed ctype=Analog loc=Internal color=Unknown misc=1
    Pin control: 0x00000000
           EAPD: 0x00000002 EAPD
     Output amp: 0x80000000 mute=1 step=0 size=0 offset=0 (0/0dB)
    Connections: 1
          + [DISABLED] <- nid=2 [audio output]

Studying now to try to learn how to configure gpio pins and use device hints.

It appears a patch was submitted and made part of freebsd src about 4 years ago for various alcxxx sound cards. The alc225 my computer has was not listed. # [6228b19e0ef0] It appears the patch did not work for my sound card…sigh.

OK. I think I see what the problem is, but don’t know how to fix it.

pcm0: <Realtek ALC225 (Analog)> at nid 33 and 18 on hdaa0

On hdaa0, my headphone output is on nid 33. The internal mic is on nid 18. My internal speakers are on nid 20. How do I associate hdaa0 nid 20 with pcm0?

[SOLVED]

I figured it out! It took a ton of reading and searching, but I began to understand more of what I was reading as I went along. In the end it came down to two lines in /boot/device.hints.

hint.hdaa.0.nid33.config="as=2 seq=15"
hint.hdaa.0.nid20.config="as=2 seq=0"

I finally understood what things mean in those lines after studying the snd_hda, loader.conf(5), and sysctl(8) pages in the FreeBSD.org documentation.

You will recall that my headphones (nid 33) were working. The hints above associated the two devices into one device group (as=2) and added a code (seq=15) to instruct the headphones to duplicate the function of the internal speakers (seq=0 indicates stereo). The grouping (as=2) associated the internal speakers (nid 20) with the headphones (nid 33) and activated them on pcm0 and !viola! they worked! The headphones still function properly and the internal speakers mute automatically when the headphones are connected.

nomad@NomadBSD$ dmesg | grep -i pcm
pcm0: <Realtek ALC225 (Analog 2.0+HP/2.0)> at nid 20,33 and 18 on hdaa0
pcm1: <Intel Skylake (HDMI/DP 8ch)> at nid 3 on hdaa1

This was for the ALC225 sound device on a Dell 2-in-1 7659 laptop computer. Maybe this info will help somebody else.

Whew! What an ordeal! Very satisfying to have figured it out. Now on to the next task…getting this OS talking to my other computers and sharing data!

1 Like