# eMachine er1401 HDMI audio not working



## andyzammy (Dec 21, 2011)

I'm unable to get the eMachine to output sound through the HDMI cable. It works fine out of the 3.5mm jack.

```
FreeBSD Audio Driver (newpcm: 32bit 2009061500/i386)
Installed devices:
pcm0: <HDA Realtek ALC662 PCM #0 Analog> (play/rec) default
pcm1: <HDA Realtek ALC662 PCM #1 Digital> (play)
pcm2: <HDA NVidia MCP78 HDMI PCM #0 Digital> (play)
```

After I type
`# sysctl hw.snd.default_unit=2`
switches pcm2 to default but still no sound.

Looking at pciconf I think that a driver might not be recognised:

```
hdac0@pci0:0:7:0:       class=0x040300 card=0x04481025 chip=0x077410de rev=0xa1 hdr=0x00
    vendor     = 'NVIDIA Corporation'
    class      = multimedia
    subclass   = HDA
```

snd_driver_load is set in rc.conf. AFAIK this loads all available audio drivers. Does this mean that FreeBSD doesn't currently support HDMI sound for this graphics card (GeForce 9200)? x11/nvidia-driver is installed, I'm not sure if that is what supports the HDMI audio though.

I have seen similar threads on here sending the users to nvidia support so I will do the same if there haven't been any revelations since the other threads. Is there anything I haven't checked yet?


----------



## SirDice (Dec 21, 2011)

The hardware is recognized. If it wasn't it wouldn't show up in /dev/sndstat.

Instead of loading everything, only load snd_hda(4). You may need to fiddle with the outputs.


----------



## andyzammy (Dec 21, 2011)

SirDice said:
			
		

> The hardware is recognized. If it wasn't it wouldn't show up in /dev/sndstat.
> 
> Instead of loading everything, only load snd_hda(4). You may need to fiddle with the outputs.



When you say outputs do you mean the gpio? The only thing I can think of doing would be to set hint.hdac.gpio0-7.config all to 'Digital-out' in device hints.


----------



## andyzammy (Dec 21, 2011)

Okay, ignore last post. I need to see current configuration but i can't seem to capture the pindump.

`# sysctl dev.hdac.0.pindump=1 >& file`

Results in a file with only one line:


```
Dev.hdac.0.pin dump: 0 -> 0
```

I take it I am not capturing stderr properly?


----------



## andyzammy (Dec 22, 2011)

I'm still not sure how to capture the pindump. It looks to be a kernel message that is printed to tty0 but I thought they still came out of stdout or stderr Not sure where the log file is that syslog makes. The part of the pindump I could see told me that nid7 nid9 nid11 and nid13 are Digital-out pins, which I took to be the HDMI audio. They were marked [DISABLED], so I added the following device hints:

```
hint.hdac.0.cad3.nid7.config="conn=Jack"
hint.hdac.0.cad3.nid9.config="conn=Jack"
hint.hdac.0.cad3.nid11.config="conn=Jack"
hint.hdac.0.cad3.nid13.config="conn=Jack"
```

This didn't work, but changed the dmesg from this:
`# dmesg | grep hdac`

```
hdac0: <NVidia MCP78 High Definition Audio Controller> mem 0xfbf78000-0xfbf7bfff irq 22 at device 7.0 on pci0
hdac0: HDA Driver Revision: 20100226_0142
hdac0: [ITHREAD]
hdac0: HDA Codec #0: Realtek ALC662
hdac0: HDA Codec #3: NVidia MCP78 HDMI
pcm0: <HDA Realtek ALC662 PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Realtek ALC662 PCM #1 Digital> at cad 0 nid 1 on hdac0
pcm2: <HDA NVidia MCP78 HDMI PCM #0 Digital> at cad 3 nid 1 on hdac0
```

into this:
`# dmesg | grep hdac`

```
hdac0: <NVidia MCP78 High Definition Audio Controller> mem 0xfbf78000-0xfbf7bfff irq 22 at device 7.0 on pci0
hdac0: HDA Driver Revision: 20100226_0142
hdac0: [ITHREAD]
hdac0: HDA Codec #0: Realtek ALC662
hdac0: HDA Codec #3: NVidia MCP78 HDMI
pcm0: <HDA Realtek ALC662 PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Realtek ALC662 PCM #1 Digital> at cad 0 nid 1 on hdac0
pcm2: <HDA NVidia MCP78 HDMI PCM #0 Digital> at cad 3 nid 1 on hdac0
hdac0: Dumping AFG cad=0 nid=1 pins:
hdac0:  nid 20 0x411111f0 as 15 seq  0       Speaker  None jack  1 loc  1 color   Black misc 1 [DISABLED]
hdac0:        Caps: IN OUT HP EAPD      Sense: 0x00000000
hdac0:  nid 21 0x411111f0 as 15 seq  0       Speaker  None jack  1 loc  1 color   Black misc 1 [DISABLED]
hdac0:        Caps: IN OUT    EAPD      Sense: 0x00000000
hdac0:  nid 22 0x411111f0 as 15 seq  0       Speaker  None jack  1 loc  1 color   Black misc 1 [DISABLED]
hdac0:        Caps: IN OUT              Sense: 0x00000000
hdac0:  nid 24 0x411111f0 as 15 seq  0       Speaker  None jack  1 loc  1 color   Black misc 1 [DISABLED]
hdac0:        Caps: IN OUT         VREF Sense: 0x00000000
hdac0:  nid 25 0x02a19830 as  3 seq  0           Mic  Jack jack  1 loc  2 color    Pink misc 8
hdac0:        Caps: IN OUT HP      VREF Sense: 0x00000000
hdac0:  nid 26 0x411111f0 as 15 seq  0       Speaker  None jack  1 loc  1 color   Black misc 1 [DISABLED]
hdac0:        Caps: IN OUT              Sense: 0x00000000
hdac0:  nid 27 0x02214010 as  1 seq  0    Headphones  Jack jack  1 loc  2 color   Green misc 0
hdac0:        Caps: IN OUT HP      VREF Sense: 0x00000000
hdac0:  nid 28 0x411111f0 as 15 seq  0       Speaker  None jack  1 loc  1 color   Black misc 1 [DISABLED]
hdac0:        Caps: IN                 
hdac0:  nid 29 0x4014c019 as  1 seq  9       Speaker  None jack  4 loc  0 color   Res.C misc 0 [DISABLED]
hdac0:        Caps: IN                 
hdac0:  nid 30 0x01451120 as  2 seq  0     SPDIF-out  Jack jack  5 loc  1 color   Black misc 1
hdac0:        Caps:    OUT             
hdac0: NumGPIO=2 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1
hdac0: GPIO: data=0x00000001 enable=0x00000001 direction=0x00000001
hdac0:       wake=0x00000000  unsol=0x00000000    sticky=0x00000000
hdac0: Dumping AFG cad=3 nid=1 pins:
hdac0:  nid 5 0x18560110 as  1 seq  0   Digital-out  Jack jack  6 loc 24 color Unknown misc 1
hdac0:        Caps:    OUT              Sense: 0x00000000
hdac0:  nid 7 0x58560121 as  2 seq  1   Digital-out  None jack  6 loc 24 color Unknown misc 1 [DISABLED]
hdac0:        Caps:    OUT              Sense: 0x00000000
hdac0:  nid 9 0x58560122 as  2 seq  2   Digital-out  None jack  6 loc 24 color Unknown misc 1 [DISABLED]
hdac0:        Caps:    OUT              Sense: 0x00000000
hdac0:  nid 11 0x58560123 as  2 seq  3   Digital-out  None jack  6 loc 24 color Unknown misc 1 [DISABLED]
hdac0:        Caps:    OUT              Sense: 0x00000000
hdac0:  nid 13 0x58560124 as  2 seq  4   Digital-out  None jack  6 loc 24 color Unknown misc 1 [DISABLED]
hdac0:        Caps:    OUT              Sense: 0x00000000
hdac0: NumGPIO=0 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=0
hdac0: <NVidia MCP78 High Definition Audio Controller> mem 0xfbf78000-0xfbf7bfff irq 22 at device 7.0 on pci0
hdac0: HDA Driver Revision: 20100226_0142
hdac0: [ITHREAD]
hdac0: HDA Codec #0: Realtek ALC662
hdac0: HDA Codec #3: NVidia MCP78 HDMI
pcm0: <HDA Realtek ALC662 PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Realtek ALC662 PCM #1 Digital> at cad 0 nid 1 on hdac0
pcm2: <HDA NVidia MCP78 HDMI PCM #0 Digital> at cad 3 nid 1 on hdac0
```

According to the device description under boot-time configuration, assigning a connection type other than "None" should leave the pins in an "enabled" state. I'm not sure what I'm doing wrong. Am I on the right track?


----------



## taliz (Dec 22, 2011)

andyzammy said:
			
		

> I'm unable to get the eMachine to output sound through the HDMI cable. It works fine out of the 3.5mm jack.
> 
> ```
> FreeBSD Audio Driver (newpcm: 32bit 2009061500/i386)
> ...



I think you're experiencing the same problem as myself and many other nvidia users. HDMI audio just doesn't seem to work unfortunately.

I tried the nvidia forums and got this rather sad reply:


			
				D1llw33d said:
			
		

> Is there a reason you cannot use a more stable BSD distro like PC BSD or Debian BSD or a true Unix like Solaris? You are using an unsupported niche FOSS OS, and without the massive community of Debian or the financial backers behind PCBSD --FreeBSD is highly unstable IMO. I personally view Free BSD as an OS only fit for entirely FOSS drivers (which Nvidia no longer provides) b/c you will likely need to modify the subsystem for your specific hardware and software needs.
> 
> I wouldn't even classify FreeBSD as free b/c you have to buy so much beer to get a working system that you could have bought a copy of Windows. --I jest, but in all seriousness you are going to be in for headaches with FreeBSD and Nvidia drivers.
> 
> ...


----------



## andyzammy (Dec 23, 2011)

Hi taliz, thanks for your reply! I'm not really sure what to make of this guys post. It's a very mixed signal, he knocks the OS, offers some assistance then suggests rebuild from base? I guess the rebuild is being suggested in case the issue is fixed in CURRENT/STABLE branches?


----------



## mav@ (Dec 24, 2011)

The funny side in the quotation above is that PCBSD mentioned there uses unmodified FreeBSD kernel and only difference is in configuration. So everything that works on PCBSD should also work on vanilla FreeBSD. As soon as there are both positive and negative feedback about NVIDIA HDMI, I suppose that problem cause is somewhere in cards or in connected HDMI devices.


----------



## taliz (Dec 24, 2011)

mav@ said:
			
		

> The funny side in the quotation above is that PCBSD mentioned there uses unmodified FreeBSD kernel and only difference is in configuration. So everything that works on PCBSD should also work on vanilla FreeBSD. As soon as there are both positive and negative feedback about NVIDIA HDMI, I suppose that problem cause is somewhere in cards or in connected HDMI devices.



Well, the problem is not with the cards/devices as it works fine in Linux. Also the issue might not be with the kernel, but with how the sound system works(but I'm just guessing here).


----------



## brianc (Dec 27, 2011)

Wondering if anyone has gotten any further with this? Also if this problem is with both i386, amd64 on 8.2 and 9.0? I am having the same issue with an ION board with 8.2 amd64.


----------



## andyzammy (Jan 10, 2012)

Just a small bump, I installed Windows for xmas just to be able to view something and am now interested in fixing this again (if it's possible).



			
				taliz said:
			
		

> Well, the problem is not with the cards/devices as it works fine in Linux. Also the issue might not be with the kernel, but with how the sound system works(but I'm just guessing here).



I recently noticed that the eMachine which I'm having trouble with has the same NVidia audio device as my laptop (MCP78), and this has definitely worked in the past (on FreeBSD). I know that this spurious problem crosses operating systems (ie, works in Windows/Linux, but for whatever reason not on FreeBSD), but does the fact that if it works on my laptop mean that it should also work on the eMachine?


----------



## mav@ (Jan 12, 2012)

andyzammy said:
			
		

> I recently noticed that the eMachine which I'm having trouble with has the same NVidia audio device as my laptop (MCP78)


MCP78 is a HDA controller, while the main question is to HDA CODEC. And HDMI CODEC is much bigger question.

I don't wish to promise anything, as I am not sure that my receiver supports HDMI audio at all, but I'll get some NVidia card and try to experiment with it.


----------

