PDA

View Full Version : New ALC861-VD AppleHDA driver


andyvand
04-28-2009, 02:18 PM
I was so annoyed by the fact that hdapatcher couldn't make a driver mod out of my codec dump that I created a custom one myself...
The new driver supports:
- Internal (built-in) microphone
- External microphone
- Internal (built-in) speakers
- External speakers
It should work for all ALC861-VD cards... (matches to class rather than vendor...)
You can get the new driver from:
http://rapidshare.com/files/226718637/AnV_ALC861VD_Leo.zip

I've also devised a solution which doesn't require HDAEnabler for allow AppleHDA to attach properly...
It involves modding the DSDT (renaming "AZLA" or "AZAL" to "HDEF" for enabling it to be shown in System Profiler) and a little EFI string...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PciRoot(0x1)/Pci(0x14,0x2)</key>
<dict>
<key>PinConfigurations</key>
<string></string>
<key>built-in</key>
<string>0x01</string>
<key>layout-id</key>
<string>0x0000000c</string>
</dict>
</dict>
</plist>

Replace Pci(0x14,0x2) with the numbers listed in IORegistryExplorer behind the device name (@X).
If it is on a bridge, change it like this: Pci(0x2,0x0)/Pci(0x1,0x2)...
If there is only one number listed, the second is 0x0.

andyvand
04-28-2009, 02:25 PM
http://andy.infinitemac.com/pics/voodoo001.png

ouija
04-29-2009, 01:11 AM
Does this work with just the regular old ALC861 in my Toshiba laptop?

I tried installing the AppleHDA.kext file, and my sound still works (which is a plus) but it's no different that what I had before (basic sound out without any volume control or inputs)

However, I am a bit of a newb (and chicken shit) when it comes to messing around with my OSX setup, and I had no idea what you meant by:
I've also devised a solution which doesn't require HDAEnabler for allow AppleHDA to attach properly...
It involves modding the DSDT (renaming "AZLA" or "AZAL" to "HDEF" for enabling it to be shown in System Profiler) and a little EFI string.

So I haven't done this -- How do I do that exactly? Would this solve my issue (of not having any volume control and/or inputs?) or is that because I have the ALC861 (and not the ALC861-VD)?

Because I didn't know how to do the above, I tried using a copy of an HDAEnabler.kext file that I found but it failed to load any sound driver when present, so I deleted it and am now back to square one.

If you could please elaborate on how to do the second step of the instructions quoted above it would be greatly appreciated. As in how to I mod the DSDT? (no idea what your reffering to) and how do I add the EFI string? (using EFIStudio or something?)

Thanks for your help!! :)

josefka
04-29-2009, 04:40 PM
hello andyvand and thank you for the driver.

I've tested in my Asus F3JC and doesn't work.

regards

andyvand
04-30-2009, 12:15 AM
Does this work with just the regular old ALC861 in my Toshiba laptop?

I tried installing the AppleHDA.kext file, and my sound still works (which is a plus) but it's no different that what I had before (basic sound out without any volume control or inputs)

However, I am a bit of a newb (and chicken shit) when it comes to messing around with my OSX setup, and I had no idea what you meant by:


So I haven't done this -- How do I do that exactly? Would this solve my issue (of not having any volume control and/or inputs?) or is that because I have the ALC861 (and not the ALC861-VD)?

Because I didn't know how to do the above, I tried using a copy of an HDAEnabler.kext file that I found but it failed to load any sound driver when present, so I deleted it and am now back to square one.

If you could please elaborate on how to do the second step of the instructions quoted above it would be greatly appreciated. As in how to I mod the DSDT? (no idea what your reffering to) and how do I add the EFI string? (using EFIStudio or something?)

Thanks for your help!! :)
A Linux codec dump should show you which kind of HDEF audio controller it is...
If you have DSDT patcher just use it and next edit the device AZAL or AZLA to HDEF in the dsdt_fixed.txt and run ./Tools/iasl -tc dsdt_fixed.txt and install the .aml file to /DSDT.aml (Cham V1 with DSDT override or Cham V2 needed)
Next use IORegistryExplorer to look up PCI paths (or use EFI studio / OSX86Tools) after reboot for the EFI patch... add the options as shown in the codebox and write it to com.apple.Boot.plist
after reboot the AppleHDA device should be attached to the HDEF device and the sound should work...

ouija
04-30-2009, 03:14 PM
A Linux codec dump should show you which kind of HDEF audio controller it is...
Do you mean runninng something like the "lspci" command? How do you get a "codec dump" under linux? :-/ sorry to be a pain, just not quite sure what you are referring to..

If you have DSDT patcher just use it and next edit the device AZAL or AZLA to HDEF in the dsdt_fixed.txt and run ./Tools/iasl -tc dsdt_fixed.txt and install the .aml file to /DSDT.aml (Cham V1 with DSDT override or Cham V2 needed)


I've only ran the DSDT patcher once or twice before on another laptop I was installing OSX to and am not too familiar with it, but will it generate this "dsdt_fixed.txt" file that you mention?

I will try out this solution tonight and see how I fair. Thanks for all your help!

andyvand
04-30-2009, 06:56 PM
Do you mean runninng something like the "lspci" command? How do you get a "codec dump" under linux? :-/ sorry to be a pain, just not quite sure what you are referring to..



I've only ran the DSDT patcher once or twice before on another laptop I was installing OSX to and am not too familiar with it, but will it generate this "dsdt_fixed.txt" file that you mention?

I will try out this solution tonight and see how I fair. Thanks for all your help!
under /proc/asound/.../codec...
do a cat /proc/asound/.../codec... > codecdump.txt
upload me that...

ouija
05-29-2009, 07:33 AM
Okay, attached is the linux codec dump.

I also ran DSDT Patcher, then edited the dsdt_fixed.txt file, however there was no "ALZA" or "AZLA" entry, but rather an "HDEF" one instead. So I'm a little stuck on what I should do next. Therefore, I have also attached the dsdt_patched.txt file.

Let me know if you can aid me with this, I'd love to get it working!

I also loaded up IORegistryExplorer but have no idea what I am looking for. Which thing is it under? "IOService", "ACIPIPlane", "IODeviceTree" or something else? Which entry is it that I am looking for? HDEF@1B? No clue what the hell I am doing here :p

Thanks again for your help, and sorry for my delayed response.

andyvand
07-03-2009, 01:10 AM
Thus Pci values are 0x1B,0x0
Greetz,
Andy

m28ew
05-22-2010, 06:50 AM
Replace Pci(0x14,0x2) with the numbers listed in IORegistryExplorer behind the device name (@X).
If it is on a bridge, change it like this: Pci(0x2,0x0)/Pci(0x1,0x2)...
If there is only one number listed, the second is 0x0.

How about the number (0x1) of <key>PciRoot (0x1) / Pci(0x14,0x2)</key>
Could you please tell us how did you get it ?

Fyi, my soundcard (alc888 | pci1002,4383 | codec: 0x10ec0888 | Address: 0) has these settings :
| | |
| | +-o SBAZ@14,2 <class IOPCIDevice, id 0x0, registered, matched, activ$
| | | {
| | | "built-in" = <00>
| | | "IODeviceMemory" = (({"address"=18446744073639231488,"length"=1$
| | | "acpi-pmcap-offset" = 80
| | | "layout-id" = <79030000>
| | | "PinConfigurations" = <>
| | | "device-id" = <83430000>
| | | "name" = "pci1002,4383"
| | | "acpi-path" = "IOACPIPlane:/_SB/PCI0@180000/SBAZ@140002"
| | | "IOName" = "pci1002,4383"
| | | "vendor-id" = <02100000>
| | | "revision-id" = <00000000>
| | | "IOPCIResourced" = Yes
| | | "acpi-device" = "IOACPIPlatformDevice is not serializable"
| | | "subsystem-vendor-id" = <65150000>
| | | "IOInterruptControllers" = ("io-apic-0")
| | | "IOPowerManagement" = {"CurrentPowerState"=2}
| | | "class-code" = <00030400>
| | | "compatible" = <"pci1565,821b","pci1002,4383","pciclass,040300"$
| | | "subsystem-id" = <1b820000>
| | | "assigned-addresses" = <10a20082000000000000cffb000000000040000$
| | | "reg" = <00a200000000000000000000000000000000000010a2000200 0000$
| | | "IOInterruptSpecifiers" = (<1000000007000000>)
| | | }
| | | Thanks in advance :)



UPDATE :

LOL... what a stupid question :D

I've found the answer :
Next use IORegistryExplorer to look up PCI paths (or use EFI studio / OSX86Tools) after reboot for the EFI patch... add the options as shown in the codebox and write it to com.apple.Boot.plist