# only 1 sound output after upgrading to 8.1



## Pluribootent (Aug 4, 2010)

Hi, Im new to FreeBSD, installed 8.0 and upgraded yesterday using the freebsd-update method. I hope everything went successfully.
at least 
	
	



```
# uname -a
FreeBSD freebsd.box.org 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:36:49 UTC 2010     root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
```
looks fine.

After thh upgrade everything seems to work, but theres one thing:

I use 2 audio outputs from my onboard soundcard feeding 2 speaker sets. Before the update both were playing music out of the box. But now only 1 output is active

```
$ mixer
Mixer vol      is currently set to 100:100
Mixer pcm      is currently set to 100:100
Mixer speaker  is currently set to 100:100
Mixer line     is currently set to  74:72
Mixer mic      is currently set to  75:75
Mixer mix      is currently set to   0:0
Mixer rec      is currently set to  75:75
Mixer igain    is currently set to  87:87
Recording source: mic
```

Im afmiliar with linux and there I can activate channels by alsamixer. I looked around and installed ermixer but the channel that is now dead doesnt seem to exist.

Maybe someone could suggest a solution? or a direction to look for or google?

My soundcard is ALC888
	
	



```
snd_hda_load="YES"
```
from /boot/loader.conf

Thank you for your suggestions.


----------



## Nukama (Aug 4, 2010)

I'm also using ALC888, but experienced no analog sound output after upgrading to 8.1.

[CMD=""]cat /dev/sndstat[/CMD] showed default pcm() was set to digital (maybe the order changed). 
So I've changed my previously set default output in /etc/sysctl.conf() back to analog pcm (hw.snd.default_unit=0 for pcm0). 

With a 5.1 Surround Test File and dev.pcm.0.play.vchanformat=s16le:5.1 set in /etc/sysctl.conf my FL/CENTER/FR/RL/RR speakers are working (thanks to your post I've noticed it). 

See sound()/snd_hda() for further documentation and adjusting settings to your needs.

With `# [man]sysctl[/man] dev.hdac.0.pindump=1` you could dig further into your problem. See /var/log/messages for the pindump

What does your output look like (/dev/sndstat, sysctl dev.pcm, sysctl dev.hdac, pindump)?


----------



## Pluribootent (Aug 10, 2010)

thanks for your post and sorry for my late reply.


```
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <HDA Realtek ALC888 PCM #0 Analog> (play/rec) default
pcm1: <HDA Realtek ALC888 PCM #1 Analog> (play/rec)
pcm2: <HDA Realtek ALC888 PCM #2 Digital> (play/rec)
```


```
# sysctl dev.pcm
dev.pcm.0.%desc: HDA Realtek ALC888 PCM #0 Analog
dev.pcm.0.%driver: pcm
dev.pcm.0.%parent: hdac0
dev.pcm.0.play.vchans: 1
dev.pcm.0.play.vchanmode: fixed
dev.pcm.0.play.vchanrate: 48000
dev.pcm.0.play.vchanformat: s16le:2.0
dev.pcm.0.rec.vchans: 1
dev.pcm.0.rec.vchanmode: fixed
dev.pcm.0.rec.vchanrate: 48000
dev.pcm.0.rec.vchanformat: s16le:2.0
dev.pcm.0.buffersize: 16384
dev.pcm.0.bitperfect: 0
dev.pcm.1.%desc: HDA Realtek ALC888 PCM #1 Analog
dev.pcm.1.%driver: pcm
dev.pcm.1.%parent: hdac0
dev.pcm.1.play.vchans: 1
dev.pcm.1.play.vchanmode: fixed
dev.pcm.1.play.vchanrate: 48000
dev.pcm.1.play.vchanformat: s16le:2.0
dev.pcm.1.rec.vchans: 1
dev.pcm.1.rec.vchanmode: fixed
dev.pcm.1.rec.vchanrate: 48000
dev.pcm.1.rec.vchanformat: s16le:2.0
dev.pcm.1.buffersize: 16384
dev.pcm.1.bitperfect: 0
dev.pcm.2.%desc: HDA Realtek ALC888 PCM #2 Digital
dev.pcm.2.%driver: pcm
dev.pcm.2.%parent: hdac0
dev.pcm.2.play.vchans: 1
dev.pcm.2.play.vchanmode: passthrough
dev.pcm.2.play.vchanrate: 48000
dev.pcm.2.play.vchanformat: s16le:2.0
dev.pcm.2.rec.vchans: 1
dev.pcm.2.rec.vchanmode: passthrough
dev.pcm.2.rec.vchanrate: 48000
dev.pcm.2.rec.vchanformat: s16le:2.0
dev.pcm.2.buffersize: 16384
dev.pcm.2.bitperfect: 0
```


```
# sysctl dev.hdac
dev.hdac.0.%desc: ATI SB600 High Definition Audio Controller
dev.hdac.0.%driver: hdac
dev.hdac.0.%location: slot=20 function=2 handle=\_SB_.PCI0.SBAZ
dev.hdac.0.%pnpinfo: vendor=0x1002 device=0x4383 subvendor=0x1458 subdevice=0xa002 class=0x040300
dev.hdac.0.%parent: pci0
dev.hdac.0.wake: 0
dev.hdac.0.polling: 0
dev.hdac.0.polling_interval: 250
dev.hdac.0.pindump: 0
```


```
# sysctl dev.hdac.0.pindump=1
dev.hdac.0.pindump: 0 -> 0
```
I had difficulty interpreting the output, because I havent a clue. Hope this helps someone to figure it ou.
Thanks!


----------



## mav@ (Aug 10, 2010)

Since 8.1 FreeBSD's snd_hda got real multichannel support. So stereo duplication is no longer used. To use it you should: make sound(4) use 4.0, 5.1 or 7.1 output, respecting your speakers configuration (see above message); and make your media player to playback multichannel content using all these channels (for mplayer see `-channels X` option). Note that mp3 is by definition is stereo-only, so unless you are using some post-processing in your player - it will be played to the front speaker's part only.


----------



## Pluribootent (Aug 10, 2010)

First one more output:

```
# grep hdac /var/log/messages
Aug 10 06:25:23 freebsd kernel: hdac0: Dumping AFG cad=0 nid=1 pins:
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 20 0x01014410 as  1 seq  0      Line-out  Jack jack  1 loc  1 color   Green misc 4
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN OUT HP           Sense: 0x80000000
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 21 0x01011412 as  1 seq  2      Line-out  Jack jack  1 loc  1 color   Black misc 4
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN OUT HP           Sense: 0x80000000
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 22 0x01016411 as  1 seq  1      Line-out  Jack jack  1 loc  1 color  Orange misc 4
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN OUT              Sense: 0x00000000
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 23 0x01012414 as  1 seq  4      Line-out  Jack jack  1 loc  1 color    Grey misc 4
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN OUT              Sense: 0x00000000
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 24 0x01a19c40 as  4 seq  0           Mic  Jack jack  1 loc  1 color    Pink misc 12
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN OUT HP      VREF Sense: 0x80000000
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 25 0x02a19c50 as  5 seq  0           Mic  Jack jack  1 loc  2 color    Pink misc 12
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN OUT HP      VREF Sense: 0x00000000
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 26 0x0181344f as  4 seq 15       Line-in  Jack jack  1 loc  1 color    Blue misc 4
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN OUT HP      VREF Sense: 0x00000000
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 27 0x02214c20 as  2 seq  0    Headphones  Jack jack  1 loc  2 color   Green misc 12
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN OUT HP      VREF Sense: 0x00000000
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 28 0x593301f0 as 15 seq  0            CD  None jack  3 loc 25 color Unknown misc 1 [DISABLED]
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN                 
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 30 0x014b6130 as  3 seq  0     SPDIF-out  Jack jack 11 loc  1 color  Orange misc 1
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps:    OUT             
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 31 0x01cb7160 as  6 seq  0      SPDIF-in  Jack jack 11 loc  1 color  Yellow misc 1
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN                 
Aug 10 06:25:23 freebsd kernel: hdac0: NumGPIO=3 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1
Aug 10 06:25:23 freebsd kernel: hdac0: GPIO: data=0x00000000 enable=0x00000000 direction=0x00000000
Aug 10 06:25:23 freebsd kernel: hdac0:       wake=0x00000000  unsol=0x00000000    sticky=0x00000000
Aug 10 06:33:19 freebsd kernel: hdac0: <ATI SB600 High Definition Audio Controller> mem 0xfe024000-0xfe027fff irq 16 at device 20.2 on pci0
Aug 10 06:33:19 freebsd kernel: hdac0: HDA Driver Revision: 20100226_0142
Aug 10 06:33:19 freebsd kernel: hdac0: [ITHREAD]
Aug 10 06:33:19 freebsd kernel: hdac0: HDA Codec #0: Realtek ALC888
Aug 10 06:33:19 freebsd kernel: pcm0: <HDA Realtek ALC888 PCM #0 Analog> at cad 0 nid 1 on hdac0
Aug 10 06:33:19 freebsd kernel: pcm1: <HDA Realtek ALC888 PCM #1 Analog> at cad 0 nid 1 on hdac0
Aug 10 06:33:19 freebsd kernel: pcm2: <HDA Realtek ALC888 PCM #2 Digital> at cad 0 nid 1 on hdac0
Aug 10 16:08:36 freebsd kernel: hdac0: <ATI SB600 High Definition Audio Controller> mem 0xfe024000-0xfe027fff irq 16 at device 20.2 on pci0
Aug 10 16:08:36 freebsd kernel: hdac0: HDA Driver Revision: 20100226_0142
Aug 10 16:08:36 freebsd kernel: hdac0: [ITHREAD]
Aug 10 16:08:36 freebsd kernel: hdac0: HDA Codec #0: Realtek ALC888
Aug 10 16:08:36 freebsd kernel: pcm0: <HDA Realtek ALC888 PCM #0 Analog> at cad 0 nid 1 on hdac0
Aug 10 16:08:36 freebsd kernel: pcm1: <HDA Realtek ALC888 PCM #1 Analog> at cad 0 nid 1 on hdac0
Aug 10 16:08:36 freebsd kernel: pcm2: <HDA Realtek ALC888 PCM #2 Digital> at cad 0 nid 1 on hdac0
```
I will now try and figure that out ...
Thank you very much for your help!


----------



## Pluribootent (Aug 10, 2010)

/etc/sysctl.conf is empty 

```
# cat /etc/sysctl.conf
# $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1.4.1 2010/06/14 02:09:06 kensmith Exp $
#
#  This file is read when going to multi-user and its contents piped thru
#  ``sysctl'' to adjust kernel values.  ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
```

Ok, now I found smth:

```
Aug 10 06:25:23 freebsd kernel: hdac0:  nid 21 0x01011412 as  1 seq  2      Line-out  Jack jack  1 loc  1 color   Black misc 4
Aug 10 06:25:23 freebsd kernel: hdac0:        Caps: IN OUT HP           Sense: 0x80000000
```
This is the jack that I want to play sound. so its nid21? what would I do with it?


----------



## Pluribootent (Aug 11, 2010)

I spent hours on this now - no luck.
My aim: I want to have 2 jacks playing the same sound, I dont know how you call that, but I dont need 5.1, 7.1, Quadro or anything like that. Just simple same sound coming out of 2 jacks to feed 2 sets of speakers with the same sound. It works on windows, it works on my slackware distro and it used to work on my freebsd install, before upgrading to 8.1 ...


```
# ls /dev/dsp*
/dev/dsp0.0	/dev/dsp1.0	/dev/dsp2.0	/dev/dsp2.1
```

What I did:

```
cat /etc/sysctl.conf
# $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1.4.1 2010/06/14 02:09:06 kensmith Exp $
#
#  This file is read when going to multi-user and its contents piped thru
#  ``sysctl'' to adjust kernel values.  ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
dev.pcm.0.play.vchanformat=s16le:5.1
```
played around with 2.0, 4.0 and 7.1
only my Green jack gives me audio.

```
# cat /boot/loader.conf 
autoboot_delay="1"
nvidia_load="YES"
snd_hda_load="YES"
vboxdrv_load="YES"
vboxnet_enable="YES"
hint.hdac.0.cad0.nid20.config="as=1 seq=0"
hint.hdac.0.cad0.nid21.config="as=1 seq=4"
hint.hdac.0.cad0.nid22.config="as=1 seq=2"
hint.hdac.0.cad0.nid23.config="as=1 seq=1"
hint.hdac.0.cad0.nid24.config="as=4 seq=0"
hint.hdac.0.cad0.nid25.config="as=5 seq=0"
hint.hdac.0.cad0.nid26.config="as=4 seq=15"
hint.hdac.0.cad0.nid27.config="as=2 seq=0"
hint.hdac.0.cad0.nid28.config="as=15 seq=0"
hint.hdac.0.cad0.nid30.config="as=3 seq=0"
hint.hdac.0.cad0.nid31.config="as=6 seq=0"
```
I also played around with the as and seq. Took me ages to find out the differences between "as" and "seq". Im still not sure about what Im doing. 
I want the nid20 (Green) and the nid21 (Black) to play the same thing, so thats pcm0. 
nid20 and nid21 have to be in the same as? And then I give them different seq? and set dev.pcm.0.play.vchanformat to s16le:2.0. didnt work. Tried it with 4.0 and set the nid20 to "as=1 seq=0" and the nid21 to "as=1 seq=4" and then to "as=1 seq=2", no luck. 

It says in SND_HDA(4):
For output assotiations sequence numbers encode speaker pairs positions: 0 - Front, 1 - Center/LFE, 2 - Back, 3 - Front Wide Center, 4 - Side.  Standard combinations are: (0) - Stereo; (0, 2), (0, 4) - Quadro; (0, 1, 2), (0, 1, 4) - 5.1; (0, 1, 2, 4) - 7.1.

Is Quadro what I want? but how do I set up (0,2) and (0,4). thats four numbers. Is quadro for 8 Speakers? I dont think, Quadro is what I want.

Im too stupid to handle this myself, but Im sure plenty of users have 2 sets of speakers connected to their machine.

Im sorry, if this all sounds dumb, I am dumb. Thanks for answers to this.

edit: I forgot smth:
I also did this:
http://forums.freebsd.org/showpost.php?p=75362&postcount=5


----------



## spry (Aug 25, 2010)

I may have a similar problem. W/ 8.0, the 'fix' used to be that in /etc/sysctl.conf


```
hw.snd.default_unit=1
```

would fix it but I found out I could no longer do it in 8.1.

My 'fix' was to just load snd_hda late in /etc/rc.local, and just hw.snd.default_unit=0 (default).

I am using a 780G mobo. I am not using 5.1 sound tho, just 2.1 so I can't go into the details as for the different channels.


----------

