Difference between revisions of "NVidia GT220 HDMI sound"
(Added notes on the GT220) |
(Passthrough actually works after a moment of inspiration) |
||
Line 1: | Line 1: | ||
== Summary == | == Summary == | ||
The nVidia GT220 (together with the other GT2xx cards) no longer has a S/PDIF input plug on it. Instead, it comes with a built-in sound card that isn't supported by ALSA yet. | The nVidia GT220 (together with the other GT2xx cards) no longer has a S/PDIF input plug on it. Instead, it comes with a built-in sound card that isn't supported by ALSA yet. | ||
+ | |||
+ | There's a patch, which works find so far, but it's a bit hacky and I don't see any traces of it in ALSA's SVN. [[User:Uplink|Uplink]] 21:50, 18 February 2010 (CET) | ||
== Status == | == Status == | ||
Line 7: | Line 9: | ||
The people at XMBC have a page in that Wiki which points to a [http://wiki.xbmc.org/index.php?title=HOW-TO_set_up_HDMI_audio_on_nVidia_GeForce_G210,_GT220,_or_GT240 patch that makes sound work through the HDMI connector of the GT220 and GT240]. | The people at XMBC have a page in that Wiki which points to a [http://wiki.xbmc.org/index.php?title=HOW-TO_set_up_HDMI_audio_on_nVidia_GeForce_G210,_GT220,_or_GT240 patch that makes sound work through the HDMI connector of the GT220 and GT240]. | ||
− | * PCM sound: | + | * PCM sound: <b>WORKS</b> |
− | * Passthrough for AC3 and DTS: | + | * Passthrough for AC3 and DTS: <b>WORKS</b> |
− | * GT240s have some issues with PCM | + | * GT240s have some issues with PCM (not confirmed, as I only have a GT220) |
The patch from the XBMC wiki creates four sound devices for some reason (3, 7, 8, 9), but only one of them plays any sound: device 7. You need to unmute it with alsamixer. | The patch from the XBMC wiki creates four sound devices for some reason (3, 7, 8, 9), but only one of them plays any sound: device 7. You need to unmute it with alsamixer. | ||
− | == | + | == The hacky part == |
Because the "hdmi" device is no longer valid with a GT220, I took the liberty of making the following changes, in order to maintain maximum software compatibility: | Because the "hdmi" device is no longer valid with a GT220, I took the liberty of making the following changes, in order to maintain maximum software compatibility: | ||
Line 19: | Line 21: | ||
options snd-hda-intel enable_msi=0 index=1 | options snd-hda-intel enable_msi=0 index=1 | ||
− | * File: /etc/asound.conf | + | * File: /etc/asound.conf (add this to your existing file) |
pcm.!hdmi { | pcm.!hdmi { | ||
− | type | + | @args [ AES0 AES1 AES2 AES3 ] |
− | + | @args.AES0 { | |
− | + | type integer | |
− | + | # consumer, not-copyright, emphasis-none, mode=0 | |
− | + | default 0x04 | |
− | + | } | |
− | type | + | @args.AES1 { |
− | card 1 | + | type integer |
− | + | # original, PCM coder | |
+ | default 0x82 | ||
+ | } | ||
+ | @args.AES2 { | ||
+ | type integer | ||
+ | # source and channel | ||
+ | default 0x00 | ||
+ | } | ||
+ | @args.AES3 { | ||
+ | type integer | ||
+ | # fs=48000Hz, clock accuracy=1000ppm | ||
+ | default 0x02 | ||
+ | } | ||
+ | type hooks | ||
+ | slave.pcm { | ||
+ | type hw | ||
+ | card 1 | ||
+ | device 7 | ||
+ | } | ||
+ | hooks.0 { | ||
+ | type ctl_elems | ||
+ | hook_args [ | ||
+ | { | ||
+ | name "IEC958 Playback Default" | ||
+ | lock true | ||
+ | preserve true | ||
+ | value [ $AES0 $AES1 $AES2 $AES3 ] | ||
+ | } | ||
+ | { | ||
+ | name "IEC958 Playback Switch" | ||
+ | lock true | ||
+ | preserve true | ||
+ | value true | ||
+ | } | ||
+ | ] | ||
+ | } | ||
} | } | ||
+ | |||
+ | I took my inspiration from these files: /usr/share/alsa/pcm/hdmi.conf and /usr/share/alsa/cards/HDA-Intel.conf | ||
Notice that because of parameter "index=1" for snd-hda-intel, the card will always have index 1, even if you disable or remove your real sound card (either on-board or removing it from its PCI slot) so asound.conf doesn't need to track it. | Notice that because of parameter "index=1" for snd-hda-intel, the card will always have index 1, even if you disable or remove your real sound card (either on-board or removing it from its PCI slot) so asound.conf doesn't need to track it. | ||
Also notice that if your real sound card is driven by snd-hda-intel you may get unexpected results and you are expected to update this wiki page if you find a solution. | Also notice that if your real sound card is driven by snd-hda-intel you may get unexpected results and you are expected to update this wiki page if you find a solution. | ||
+ | |||
+ | == How this affects LinuxMCE == | ||
+ | No changes needed in any of DCE applications. You select "HDMI" in the AVWizard as you'd normally do and LinuxMCE wouldn't really care that the "hdmi" pcm has been altered, as it works exactly the same through the "asym_hdmi" pcm as it ever did. | ||
+ | |||
+ | Some code may be needed to detect the GT220 and make the modifications accordinly. |
Revision as of 21:50, 18 February 2010
Summary
The nVidia GT220 (together with the other GT2xx cards) no longer has a S/PDIF input plug on it. Instead, it comes with a built-in sound card that isn't supported by ALSA yet.
There's a patch, which works find so far, but it's a bit hacky and I don't see any traces of it in ALSA's SVN. Uplink 21:50, 18 February 2010 (CET)
Status
Experimental
The people at XMBC have a page in that Wiki which points to a patch that makes sound work through the HDMI connector of the GT220 and GT240.
- PCM sound: WORKS
- Passthrough for AC3 and DTS: WORKS
- GT240s have some issues with PCM (not confirmed, as I only have a GT220)
The patch from the XBMC wiki creates four sound devices for some reason (3, 7, 8, 9), but only one of them plays any sound: device 7. You need to unmute it with alsamixer.
The hacky part
Because the "hdmi" device is no longer valid with a GT220, I took the liberty of making the following changes, in order to maintain maximum software compatibility:
- File: /etc/modprobe.d/gt220.conf
options snd-hda-intel enable_msi=0 index=1
- File: /etc/asound.conf (add this to your existing file)
pcm.!hdmi { @args [ AES0 AES1 AES2 AES3 ] @args.AES0 { type integer # consumer, not-copyright, emphasis-none, mode=0 default 0x04 } @args.AES1 { type integer # original, PCM coder default 0x82 } @args.AES2 { type integer # source and channel default 0x00 } @args.AES3 { type integer # fs=48000Hz, clock accuracy=1000ppm default 0x02 } type hooks slave.pcm { type hw card 1 device 7 } hooks.0 { type ctl_elems hook_args [ { name "IEC958 Playback Default" lock true preserve true value [ $AES0 $AES1 $AES2 $AES3 ] } { name "IEC958 Playback Switch" lock true preserve true value true } ] } }
I took my inspiration from these files: /usr/share/alsa/pcm/hdmi.conf and /usr/share/alsa/cards/HDA-Intel.conf
Notice that because of parameter "index=1" for snd-hda-intel, the card will always have index 1, even if you disable or remove your real sound card (either on-board or removing it from its PCI slot) so asound.conf doesn't need to track it.
Also notice that if your real sound card is driven by snd-hda-intel you may get unexpected results and you are expected to update this wiki page if you find a solution.
How this affects LinuxMCE
No changes needed in any of DCE applications. You select "HDMI" in the AVWizard as you'd normally do and LinuxMCE wouldn't really care that the "hdmi" pcm has been altered, as it works exactly the same through the "asym_hdmi" pcm as it ever did.
Some code may be needed to detect the GT220 and make the modifications accordinly.