AppleHDA.kext progress
Forum » Development / Sound » AppleHDA.kext progress
Started by: snickersmdsnickersmd
On: 1222911474|%e %b %Y, %H:%M %Z|agohover
Number of posts: 254
rss icon RSS: New posts
AppleHDA.kext progress
snickersmdsnickersmd 1222911474|%e %b %Y, %H:%M %Z|agohover

Hello all,

I have good news and bad news. Bad news first: Audio still isn't working. Good news is that we are closer. I have played with the kexts until we can now display the same audio devices displayed in Windows Vista, where audio on the 1000H does work flawlessly. Internal Speakers shows up, and switches to Headphones when they are plugged in; and two Microphones are shown in the input device list.

Our hint is that the layout file is incomplete; specifically, it seems to be missing config data on Signal Processing. Without it, the devices load, but curiously, you can't move the volume slider and it says that there are no options for the device. If you copy the Signal Processing data from other layouts, however, the driver no longer loads at all. We may have to get these settings right before we can put this to bed.

I also see that parallel progress is being made using the Azalia kexts. Perhaps the research from either camp can be combined to get working sound with one kext or the other.

Please post significant testing and dev notes in this thread. Refer to the wiki page for a summary of my existing research, and if anything needs clarification, ask here. Thanks!

unfold AppleHDA.kext progress by snickersmdsnickersmd, 1222911474|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1222912909|%e %b %Y, %H:%M %Z|agohover

Snickers,
I haven't played with your modified kext yet but I think the set up that comatron has may be important. I have been able to get sound out fleetingly with the azalia kexts but lose it on sleep or restart, suggesting some sort of race condition. This however does not happen with comatrons set up (my install disk is IAtkos his is ideneb and I suspect there must be difference in the power managment kexts or ?).
This makes it difficult to work out if HDA kext is still faulty or whether its a "powering up" issue on my setup. I will first attempt to get azalia working full time before I play further with HDA because I suspect this may be a critical issue. What do you think?

unfold Re: AppleHDA.kext progress by codeyecodeye, 1222912909|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1222917942|%e %b %Y, %H:%M %Z|agohover

I haven't played at all with the Azalia kext, so I don't know anything about it. Isn't it a third party kext? Is it actively developed? Is it open source? Where can we find documentation on it? Perhaps it is just waiting for the right settings to be plugged in?

Personally, I just want audio working, and I don't care whether it comes from AppleHDA or Azalia. If Azalia is looking more promising, then by all means, work with it. My preference is to continue working with AppleHDA, because determining the right settings would mean that we could simply patch each new version from a pure vanilla install rather than waiting for a third party kext that may or may not cause future conflicts. Power management is also an issue, and working with AppleHDA would probably ensure that sound would move along with any changes to power management kexts as Leopard is updated.

Azalia testing should have a separate thread though. My suggestion would be for the community to play with both until the problem is solved.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1222917942|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
comatroncomatron 1223022405|%e %b %Y, %H:%M %Z|agohover

aight guys. over on insanelymac forums i am testing 269 kexts done by madtux. he´s the guy with the "manual AppleHDA.kext patching" tutorial which is the ultimative way to get sound (in my opinion). the sad thing is, that progress iss slow. he did about 12-13 versions of the kext and spent a lot of time for this. stickersmd - maybe you should talk to him with your progress and share knowledge - i dont think he will enter here cause he is not eeepc/269 specific.

my progress with azalia is bad too. line out works … BUT … i get 100% cpu when plaaying flashvideos in firefox - it slows everything down. i absolutely dont think that azalia is the way / or should be combined to get this workin. asfar as i know intel dropped that codename "azalia" years ago when the hd-codec thing started. the kext is kinda "universal testing realtek/soundmax/adi etc. output" nothing more. it was dropped to the first release of osx intel (or beta) and just for testing outputs on the "new codecs" in this time. long ago and no development was goin in that direction.

like i said - thats what I know - if it´s not this way, let me know. so stickersmd - can you sent me the testing kext and please contact madtux over there on insanely? would be nice to hear sth. more …

unfold Re: AppleHDA.kext progress by comatroncomatron, 1223022405|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223032137|%e %b %Y, %H:%M %Z|agohover

I agree that azalia is not the way to go, but I'm concerned that even if I get the correct info plugged into the AppleHDA.kext that a race-condition may stop it powering up the speakers. This is was I thought I would try at least to get azalia working first as it seems from my reading on insanelymac that most people who get apple HDA working seem to be able to get this working on their machines as well. Which at present I cannot.

unfold Re: AppleHDA.kext progress by codeyecodeye, 1223032137|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223032935|%e %b %Y, %H:%M %Z|agohover

I have already provided the testing kext on the wiki. It is attached to the page. You should be able to download it using the "files" link at the bottom of the wiki page.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223032935|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223034865|%e %b %Y, %H:%M %Z|agohover

Comatron,
The AppleHDA kexts that you were trialling, presumably 10.5.5 based, did they load at all, were there any errors in dmesg/sys.log?

last edited on 1223034922|%e %b %Y, %H:%M %Z|agohover by codeye + show more
unfold Re: AppleHDA.kext progress by codeyecodeye, 1223034865|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
AgentMcMillanAgentMcMillan 1223059352|%e %b %Y, %H:%M %Z|agohover

With the creation of the dell mini 9 they now have a working kext that supports sound. so how close is the eee 1000 to the chip in the mini 9?

Link

unfold Re: AppleHDA.kext progress by AgentMcMillanAgentMcMillan, 1223059352|%e %b %Y, %H:%M %Z|agohover
Progress Update
snickersmdsnickersmd 1223109469|%e %b %Y, %H:%M %Z|agohover

@AgentMcMillan:
The Dell Mini 9 appears to use ALC268, not ALC269. There is significant difference in the way these chips are recognized and handled, in spite of the fact that the model numbers are only one apart.

I am getting even closer to cracking the way the codec works. Both Microsoft and Apple feed codec information to their respective drivers in the same format, since it is after all standardized. The problem is that Apple stores it differently in the plist. Understanding the right way to give it the data is the key.

For instance, we do have the correct pin config data courtesy of the Windows Vista Registry dumps that people have been making. It *looks* like it is in the same format as the config data in the AppleHDAController plist file, but there is one difference that I have found.

The clues to this is that after plugging in what looks to be the right pin config data, the driver still fails to load with system.log errors of "32 < fNumProcessingCoefficients" failed among others. A decompilation I made of the AppleHDA Driver shows this error message is part of a function called AppleHDAWidget_forNodeID, and the Intel HD Audio Spec does list that every widget has a configuration to describe the processing coefficients. What this all boils down to is that we are feeding the wrong pin config data to the driver, and the config data we pass does not match the pins in the same order that the driver wants.

For instance, the pin data supplied by the Windows Vista reg dumps for ALC269 is in sequential order: 0x11,12,14,15,16,18,19,1a,1b,1d,1e.

The pin data for the ALC885 in the AppleHDAController plist is not in sequential order, however:
0x18,1a,19,15,1f,1e,14,16,17,1b,1c,1d

We need to find out why Apple doesn't put their pin config data in the sequential order, so then we can rearrange the pin config data that we have for the ALC269 in the right order.

One thing I would like to have for comparison would be Windows Vista dumps for actual Mac hardware, so I can compare the formats used by Windows for known plist data. Does anyone here have a working Vista installation on a MacBook Pro or such?

unfold Progress Update by snickersmdsnickersmd, 1223109469|%e %b %Y, %H:%M %Z|agohover
Re: Progress Update
comatroncomatron 1223112620|%e %b %Y, %H:%M %Z|agohover

this sounds very logic to me - i hope we will progress that way … heres some dump from a macbook 2007 - dont know i he had xp or vista runnin …

http://pastebin.com/f418cc013

unfold Re: Progress Update by comatroncomatron, 1223112620|%e %b %Y, %H:%M %Z|agohover
Re: Progress Update
snickersmdsnickersmd 1223117758|%e %b %Y, %H:%M %Z|agohover

@comatron
Thanks for the quick reply. Unfortunately, I don't think this dump was made with Windows Vista. Only dumps made under Windows Vista, using the Microsoft UAA Class Driver will be of any use.

Working more on the problem, I tried removing all pin config data completely to see if the AppleHDA driver could pull the right values by itself, but no dice. Same error messages. So perhaps the pin config data is not behind the problem I'm seeing, but it is still critical.

Also, there are two default pin config sets for ALC885. One does not have the pins in sequence, the other does. Furthermore, the pin configs are different in each set. Two different configs for the same codec chip? This means we need the Vista dump more than ever in order to determine how Apple's plist works.

unfold Re: Progress Update by snickersmdsnickersmd, 1223117758|%e %b %Y, %H:%M %Z|agohover
Breakthrough!
snickersmdsnickersmd 1223125659|%e %b %Y, %H:%M %Z|agohover

Up until this point, no amount of patching or plist manipulation would allow the latest 10.5.5 AppleHDA.kext to load. The prior closest came from a modded kext from codeye (which he in turn had adapted from a Taruga patch). The difference is that the newer kexts have separate internal plugin kexts like the AppleHDAPlatformDriver.

The newer AppleHDA kext has much greater potential to work correctly. The constant evolution of the kexts included under AppleHDA show that Apple's driver is coming closer and closer to being truly universal, like the Microsoft UAA class driver. However, Apple of course has no need to provide universal codec support — only support for codec chips in official Apple hardware — thus they hard code the config data and do not bother to implement the same level of auto configuration found in the Microsoft UAA driver. This is all speculation on my part, but I feel they are relevant and reasonable assumptions.

So what was keeping the latest 10.5.5 kext from loading? It didn't seem to matter that we were patching the codec ID or the plist, it would always crash in the system log with "32 < fNumProcessingCoefficients" failed. The answer was staring us in the face the whole time, with the linux codec dump.

Node 0x20 [Vendor Defined Widget] wcaps 0xf00040: Mono
Processing caps: benign=0, ncoeff=33

The AppleHDA.kext doesn't want to process more than 32 coefficients, but a vendor configuration insists on 33! (Don't know if this is Realtek's or Asus' doing). So I patched the AppleHDA binary to pass on 33 instead of 32, and now the latest 10.5.5 kext is loading with the speakers and proper device listing, but still no sound.

Although there is no sound, now my system.log is full of other less cryptic messages about lacking the proper configuration. So now it's really about tinkering with the plist until this works, hopefully.

I will be setting up a clean kext to work with, so we can try to figure out configuration together.

unfold Breakthrough! by snickersmdsnickersmd, 1223125659|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223125965|%e %b %Y, %H:%M %Z|agohover

Hi guys,
Nice debugging! One quick option would be if comatron still has his macbook (and it uses ALC885 l wasn't sure when he provided that dump earlier on insanelymac) is to rearrange the pin configurations to match the vista order and see if that screws up the codec loading in the same way the alc269 is failing.
I have installed ideneb now instead of iatkos that I was using, so i think i'm on the same page as you guys, but are we trying to get the old kext working or moving onto 10.5.5? Oops didn't see the above post! I might have access to a macbook and macbook pro in a week or so - i can install vista at that stage and have a look at the registers.

last edited on 1223128396|%e %b %Y, %H:%M %Z|agohover by codeye + show more
unfold Re: AppleHDA.kext progress by codeyecodeye, 1223125965|%e %b %Y, %H:%M %Z|agohover
Call for testers/devs
snickersmdsnickersmd 1223188225|%e %b %Y, %H:%M %Z|agohover

Here I am posting a 10.5.5 kext testing pack. We need as many people as possible to test different parameters until we find a working pattern. This is a significant landmark, because this kext properly loads the Internal Speakers/Headphones devices, as well recognizing both the Internal and External microphones and distinguishing them apart by proper text labels (Previous kexts listed two Internal microphones instead).

Where we are

This kext file is a direct patch of the 10.5.5 AppleHDA.kext. It has been patched to load ALC269 on the ipis with three binary patches:

Replacing 0x6202ec10 with 0x6902ec10 (x2) and a single byte patch of 0x20 to 0x21.

The AppleHDAController plist file, together with the HDAEnabler.kext, have been changed to load the pin configurations we got from Windows Vista, and points towards using Layout 12, Pathmap 16 in the AppleHDAPlatformDriver plist.

The Pathmap has been arranged in a 1,1,2 setup with Mic, Mic, Group (Int Speakers & Headphones) with the nodes as described in the wiki.

The Layout is pretty much blank. It lists the 4 audio devices, and the input/output groupings, with no other parameters defined. This is where we need help.

Also in the archive: the stock plist from a 10.5.5 AppleHDAPlatformDriver.kext, and alias/shortcuts have been setup to take you straight to the Contents folder and to directly edit the Controller and PlatformDriver plists.

Things you need

The AppleHDA.kext testing pack (zip file)
Property List Editor and/or a good text editor (TextWrangler is a good choice)
kext helper

What to do

First, you need to remove any previous audio testing files that you may have been playing with, including AppleAzaliaAudio.kext, AppleHDA.kext, ALCinject.kext, and HDAEnabler.kext. Note that HDAEnabler is already provided in this AppleHDA.kext bundle, and no longer needs to be a separate kext.

Next install the provided AppleHDA.kext and reboot. You will see the new devices in System Preferences, and you can put the speaker icon in the menu bar.

Pull up the console and filter the messages to see only those that mention HDA. You will see a series of messages from missing configurations. This is where community effort comes into play.

Use the stock PlatformDriver plist as a reference, and copy configuration values from similar items in stock layouts to the items in our layout. I suggest you do this one value at a time, hence the need for a community effort. Copy a value from a stock Mic item into its corresponding position on our kext, and save the file. Install and reboot.

On reboot, open the console again and take notes on how the error messages changed. Note what you changed and the results, then post them here.

Warning: if you make a bad change, your boot will stall at a blue screen. This is because if the change is not correct, the ACPI service can't load the correct device identifier. Do not panic, leave for a while (can take 5 to 10 minutes) and you will be allowed to login. Be sure to take note of the error messages again. Common culprits that I have found are MuteGPIO and SignalProcessing keys. However, we can't avoid those keys, they are the critical ones we need. So what we are doing is both a community brute-force-trial-and-error effort as well as an effort to perhaps intelligently derive the pattern for correct keys. Clues to the correct values can often be found by scanning over the Intel HD Audio Specification; download the pdf from the Intel website.

Reporting back to the forum with your findings is critical

Repeat until a working configuration is found.

Good luck!

unfold Call for testers/devs by snickersmdsnickersmd, 1223188225|%e %b %Y, %H:%M %Z|agohover
Re: Call for testers/devs
YEEEEABOYYEEEYEEEEABOYYEEE 1223200506|%e %b %Y, %H:%M %Z|agohover

I'd love to help, but I can't find that zip-file anywhere?

unfold Re: Call for testers/devs by YEEEEABOYYEEEYEEEEABOYYEEE, 1223200506|%e %b %Y, %H:%M %Z|agohover
Re: Call for testers/devs
snickersmdsnickersmd 1223205625|%e %b %Y, %H:%M %Z|agohover

There is a 'files' link at the bottom of every page in this forum and wiki, where attachments are stored.

unfold Re: Call for testers/devs by snickersmdsnickersmd, 1223205625|%e %b %Y, %H:%M %Z|agohover
Re: Call for testers/devs
YEEEEABOYYEEEYEEEEABOYYEEE 1223206746|%e %b %Y, %H:%M %Z|agohover

I can see the files link on wiki pages but not in this forum.
asdasdasdmg3.jpg

Can you UL it to the wiki page maybe?

unfold Re: Call for testers/devs by YEEEEABOYYEEEYEEEEABOYYEEE, 1223206746|%e %b %Y, %H:%M %Z|agohover
Re: Call for testers/devs
comatroncomatron 1223210152|%e %b %Y, %H:%M %Z|agohover

same here … just found the one on wiki/internal sound and on bottom "files" but i guess its the "old one" right? please upload :)

unfold Re: Call for testers/devs by comatroncomatron, 1223210152|%e %b %Y, %H:%M %Z|agohover
Re: Call for testers/devs
strongesthylianstrongesthylian 1223246912|%e %b %Y, %H:%M %Z|agohover

I'll begin working on this as soon as you post the file.
Upload the file on the wiki page. :D

unfold Re: Call for testers/devs by strongesthylianstrongesthylian, 1223246912|%e %b %Y, %H:%M %Z|agohover
Re: Call for testers/devs
nhirtnhirt 1223283694|%e %b %Y, %H:%M %Z|agohover

Hi,

You did indeed upload the file "hdatestpack.zip" (see here: http://www.wikidot.com/user:info/snickersmd under recent conrtibutions).
But somehow it is not attached to any tread.
Please post it again (as fast as possible) so that we can start testing…

Thanks,

Nik

unfold Re: Call for testers/devs by nhirtnhirt, 1223283694|%e %b %Y, %H:%M %Z|agohover
Re: Call for testers/devs
comatroncomatron 1223297086|%e %b %Y, %H:%M %Z|agohover

true. cant access the file that way … please provided asap for you so we can start the hunt …

unfold Re: Call for testers/devs by comatroncomatron, 1223297086|%e %b %Y, %H:%M %Z|agohover
Re: Call for testers/devs
DiamondswDiamondsw 1223312599|%e %b %Y, %H:%M %Z|agohover

Like most (all?) others, there's no "files" link on this page. Safari on OS X 10.5.5 - about as vanilla as you can get.

unfold Re: Call for testers/devs by DiamondswDiamondsw, 1223312599|%e %b %Y, %H:%M %Z|agohover
Re: Call for testers/devs
elroyelroy 1223392415|%e %b %Y, %H:%M %Z|agohover
Use the stock PlatformDriver plist as a reference, and copy configuration values from similar items in stock layouts to the items in our layout. I suggest you do this one value at a time, hence the need for a community effort. Copy a value from a stock Mic item into its corresponding position on our kext, and save the file. Install and reboot.

I'm sorry, but I don't follow this part: "copy configuration values from similar items in stock layouts to the items in our layout" - copy from where… to where? Am I suppose to install the PlatformDriver.plist into my preferences folder? Or are we just suppose to use its layout as a guide?

Also, I've installed the AppleHDA.kext bundle and I can't add the sound icon to my menu bar - nor are there any sound devices detected.

Sorry if I'm being thick.

unfold Re: Call for testers/devs by elroyelroy, 1223392415|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223315721|%e %b %Y, %H:%M %Z|agohover

Hmmm… I didn't know you guys couldn't see a files link. It may just be an admin feature then. Sorry about that.

Try this link:
hdatestpack.zip

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223315721|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
nhirtnhirt 1223362717|%e %b %Y, %H:%M %Z|agohover

Yes that did it.
Downloading now, thanks.

Nik

unfold Re: AppleHDA.kext progress by nhirtnhirt, 1223362717|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
akrylicakrylic 1223315902|%e %b %Y, %H:%M %Z|agohover

So am i, i can't access to files. I haven't an eeepc but an lenovo s10, it's the same card, alc269 :)

(Sry for my english, i am french)

unfold Re: AppleHDA.kext progress by akrylicakrylic, 1223315902|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
comatroncomatron 1223390527|%e %b %Y, %H:%M %Z|agohover

maybe this worx for you to download akrylic:

http://ipis-osx.wikidot.com/local--files/forum:thread/hdatestpack.zip

unfold Re: AppleHDA.kext progress by comatroncomatron, 1223390527|%e %b %Y, %H:%M %Z|agohover
AppleHDA Newbie Notes
snickersmdsnickersmd 1223415011|%e %b %Y, %H:%M %Z|agohover

@elroy
No problem. I'm afraid I wrote the intro with the assumption that community members willing to tinker with this already had a working understanding of how the AppleHDA.kext is configured.

The AppleHDA.kext has several nested kext plugin components and each carries some part of the configuration. The correct configuration consists of a working pin configuration, pathmap and layout. The pathmap has been figured out already (presumably), and so have the pin configurations and basic layout, so you shouldn't need to touch these unless you find some reason that they should be modified as well. The pin configurations are loaded from AppleHDAController's plist, and the layout and pathmap are loaded from AppleHDAPlatformDriver's plist.

Under each audio device in the layout, there are specific configuration parameters that must be filled out. We don't have this information yet, so we start by testing different values we already have in Apple's stock configuration. If you open the stock plist, you will find some 20 or so different layouts each with different devices and their respective configuration values. Your job as a tester would be to copy values from this file into our layout file and note the effect. So, yes, the stock configuration is offered as a reference. If all you had to do was copy the whole thing, then there would be no need to distribute the files separately.

Also note that Apple's stock configuration supports a number of different codec chipsets, but since we will likely get the best results from settings for another Realtek codec, then it is reasonable to test only those default values taken from layouts intended for Realtek codecs. These can be identified by the codec ID field in each layout.

***

If you aren't getting sound devices, then the kext hasn't been installed properly. Did you use kext helper to install? Did you have any prior instance of sound driver attempts installed? Did you try flushing (deleting) your extensions cache, to make sure you were loading the new kext instead of a stock AppleHDA.kext? What does your console/system log say?

last edited on 1223415148|%e %b %Y, %H:%M %Z|agohover by snickersmd + show more
unfold AppleHDA Newbie Notes by snickersmdsnickersmd, 1223415011|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA Newbie Notes
baza210baza210 1223422451|%e %b %Y, %H:%M %Z|agohover

Hi

I'm running Ubuntu on an Eee 1000H, and if there's anything [simple] that I can do to help, I'd like to. Mainly because I'm sick of my Linux/XP dualboot and miss my old iMac. Sound works perfectly in Ubuntu.

unfold Re: AppleHDA Newbie Notes by baza210baza210, 1223422451|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA Newbie Notes
strongesthylianstrongesthylian 1223431992|%e %b %Y, %H:%M %Z|agohover

I believe by Extensions Cache, you mean to delete /System/Library/Extensions.mkext, correct?

unfold Re: AppleHDA Newbie Notes by strongesthylianstrongesthylian, 1223431992|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA Newbie Notes
snickersmdsnickersmd 1223439140|%e %b %Y, %H:%M %Z|agohover

That would be it… Sometimes just to be safe I delete all the cache files.

sudo rm /System/Library/Extensions.mkext*

unfold Re: AppleHDA Newbie Notes by snickersmdsnickersmd, 1223439140|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA Newbie Notes
luthianluthian 1223481485|%e %b %Y, %H:%M %Z|agohover

I'm not sure if it is helpful but since Ubuntu supports this chipset natively, might someone be able to pull the right values out of the Ubuntu sources? A quick Googling brought up this diff for adding support to Ubuntu for the ALC269 in the EEE PC 901: Diff file

unfold Re: AppleHDA Newbie Notes by luthianluthian, 1223481485|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA Newbie Notes
comatroncomatron 1223484416|%e %b %Y, %H:%M %Z|agohover

^^ stickersmd - does luthian´s intension go into the right direction? im still hunting for someone with a macbook/pro running vista and giving me his regkeys - this mission seems to be impossible - never thought that …

unfold Re: AppleHDA Newbie Notes by comatroncomatron, 1223484416|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223517878|%e %b %Y, %H:%M %Z|agohover

@luthian & comatron
No, I recommend to stop looking for regkeys and support from other operating systems for now. The data from there has already been put into the kext. The trial-and-error process is specific to the Apple platform. The thing is, in both Windows Vista's UAA Class Driver, as well as the Linux ALSA modules, the drivers are setup to autoconfigure based on detection, since they are meant to be universal drivers. Remember that Apple only writes drivers for hardware that they themselves use, so they didn't bother with autoconfiguration. Why should they? They know exactly what chips they use and just hardcode the configuration data for just those chips. It makes it easier for them to support. It's one reason Apple systems are robust and trouble-free, because they don't have to worry about supporting all hardware, just the hardware that they make. The HDA specification itself is universal, and the fact that the AppleHDA.kext can be hacked shows that it can be adapted for chips other than those used in Apple hardware. It is simply up to us to find the right Apple-style configuration.

It is just our luck that the ALC269 is significantly different from other ALC chips, such that simple drop in hacks don't work. We need specific config data. As I have said before, it will either be found by trial-and-error, or by seriously studying the Intel HD Audio specification and finding out what exactly the numbers in the stock configuration represent, so that we can find the correct numbers for the ALC269.

Has anyone here actually started doing the trial and error process?

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223517878|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
comatroncomatron 1223530319|%e %b %Y, %H:%M %Z|agohover

me not :( i´m too noobish - event tho i got a damn great motivation …

unfold Re: AppleHDA.kext progress by comatroncomatron, 1223530319|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223592556|%e %b %Y, %H:%M %Z|agohover

Hi, I just got my 1000H today but have been following your progress for the last week in anticipation. One thing I notice when looking at the linux source is that the 901 is handled differently from the auto and basic ALC269 driver. The 901 is an 8.9" version of the 1000 series and uses an Atom processor instead of the Celeron. From the hardware specs at asus, it's identical to the 1000HA except for the screen size (No BT and 802.11G only). That makes me think that perhaps the ALC269 in our 1000H probably needs those same differences and why it may not be working with the stock configuration of the apple drivers. I am attempting to read through and figure out what the actual differences in the linux driver are but I'm no programmer so it's slow going. Anyways, I think the differences in the linux driver may be of significance to us if we can figure out what the specific differences are.

I am still waiting for my USB slot load DVD-RW drive to get here so I can join in on the fun and testing!

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223592556|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223593155|%e %b %Y, %H:%M %Z|agohover

Actually, I just confirmed it. The 901/1000/100H have some peculiarities that required patches to the stock ALSA drivers specifically for these eee models. See http://forum.eeeuser.com/viewtopic.php?id=38030&p=1

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223593155|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223602547|%e %b %Y, %H:%M %Z|agohover

Everyone: I realize that everyone is doing their best to help out by looking for solutions elsewhere, but I'm really waiting on those trial-and-error results. I'd do it myself but it would simply take forever having to wait and reboot for each entry, hence I brought it forward for the community to help out on. Figuring out how Apple encodes their configuration is the key. Yes, I am fully aware that ALSA required special patching for the driver to work on the ipis, but it doesn't really help us on OSX because we don't have driver source code to patch. We can only change configuration. Changing configuration is all the Taruga patcher does to get sound working on other models, so it is the only way. Vista and Linux can only give us hints, but please start experimenting with the configuration presented in AppleHDAPlatformDriver plist.

Not trying to be an ass and shoot other community members down, it is just frustrating to check the thread daily only to see people are posting things they researched that have already been researched — we are moving in circles. (The wiki details how I already loaded the latest correctly patched ALSA with ALC269 support and used it to generate a codec map with the complete configuration data as Linux uses it) Somebody please try my approach with the plist unless a better one can be suggested. (Because frankly, I'm not excited about trial-and-error substitution, reboot, test and log and repeat myself)

@comatron: Do you still have your working Azalia setup with headphone out only? Unfortunately, the Azalia kext does not seem to have any configuration in the plists, but it just occurred to me that the configuration from there may be loaded by the driver directly into the IO registry. Please obtain IORegistryExplorer and dump the whole AZAL or HDEF tree.

@Toonces: Welcome, I'm looking forward to you getting your drive and jumping right in. If you have Linux with working sound, you could generate a codec dump and map and see if it's any different or tells us anything different than the work I have already done with ALSA 1.0.18rc3.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223602547|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
elroyelroy 1223608986|%e %b %Y, %H:%M %Z|agohover

Not to be an ass either snickersmd, but there's little point in complaining about people not helping when you've not made it easy for *noobs* to get on board and help.

I'm currently recovering from operations on both of my eyes, but was able to do enough research and trial and error to get most things running on my new eeepc (admittedly most of my problems initially were the result of me trying to get OS X running on the 1000HD without patched bios)… but I digress. My point is that even under these conditions I was able to work a lot of stuff out and follow the instructions on how to set up an EFI partition and boot from a vanilla install of leopard… but I can't make heads nor tails of the *instructions* that you've posted above.

I really want to help, and perhaps I'm just a moron… or perhaps I'm the only one prepared to point out that I don't really understand what you're asking people to do… but maybe you could write a detailed tutorial on what people need to do (please include ALL file locations and names).

I understand that you're frustrated by the lack of help. But by spelling out to people what it is that you need done will surely help get people on board.

I don't want to waste your or my time, but if I can't be sure that I'm doing exactly what you're asking for, then that's exactly what I'd be doing.

unfold Re: AppleHDA.kext progress by elroyelroy, 1223608986|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223617557|%e %b %Y, %H:%M %Z|agohover

Hi snickersmd, I am looking forward to being able to try to assist with solving the problem. My reasoning for looking into the linux source changes are exactly because we don't have source to work with. I can only assume that what we have to work with using Apple's drivers is the equivalent of ALC269_Basic. Now if the changes to make sound work on the 901/1000/1000H are significant enough that the sound did not work with the ALC269_Basic driver in linux, I don't see how any amount of remapping pins is going to help. Unless of course, that is what the changes to the ALSA source do. If that is the case, then the answer to what configuration is correct should also lie within those changes. Unfortunately, at this point, all I have on my 12 hour old 1000H is XP. I received everything I ordered last week except my DVD drive. The seller I bought it from sent it and it seems like it's being carried by bicycle from Northern California to me here in Southern Arizona. I hope I get it tomorrow or maybe Saturday at the latest so I can spend some time over the weekend getting ready to test. Until then, I have written the author of the linux patches to see if he can shed some light on the subject. Hopefully he is willing.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223617557|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223621907|%e %b %Y, %H:%M %Z|agohover

@Elroy
Fair enough. I started these forums so that we could work together. Granted, not everything is going to be clear, but yours is the first post actually asking for clarification — I do want to build a "newbie" friendly environment but I also want people to ask informed questions by reading what's on this thread, other threads, the wiki, other forums. That's why I left maceee.com, since people would ask the same questions over and over without carefully reading the previous posts.

If you can't make "heads or tails" of the instructions, I don't think it's moronic — this sh*t is confusing for anyone, myself included and I'm facilitating — but have you tried opening one of the plists in Property List Editor? Do you have the Property List Editor already? If you're interested in helping but don't know where to start, I need to know where you're stuck. I think that if you open the plists in Property List Editor, the instructions on what to do become rather evident, but if the majority of the people passing through this thread don't know what a plist is or where to find it, then forgive me for not starting at the *very* beginning — it's been a long journey getting to this point with the pure lack of documentation that there is.

As much as I would like to write a detailed tutorial with screenshots, I simply don't have the time. But I can walk you through if you ask the right questions. Where are you in the process? Have you opened the plist and don't know how to edit it, or are you at the point where I have to explain what makes up a kext? Before I sit and make a post, please ask me specific questions and I'll be happy to help you out.

Sorry to hear about your surgery, I hope your recovery is swift and uncomplicated. I myself am preparing for upcoming medical board exams, which is the primary reason I can't be glued to the computer screwing around.

@Toonces
Actually, AppleHDA.kext isn't even at the level of ALC269 basic. The entire point of the Intel HDA specification is to facilitate a system where only one driver works for all implementations. Microsoft's UAA Driver is the template and of course works flawlessly. It's not a question of specifically supporting each chip through driver code, but rather, to derive configuration data to let the universal driver hook into the codec chip.

Remapping pins should no longer be the issue. That has been solved, and is already included in the testing kext. If the pins and maps were not correct, then the devices would not load at all. What we need is further configurations, let's call them layout settings, and this is different from the pin configurations that everyone has been looking at.

Let me see if I can simplify this, since it took me a while to figure this out, and heaven forbid you should have to endure reading the whole Intel HD Audio spec plus the Microsoft UAA Pin configuration docs (but you ultimately may need to in order to help :()

Intel made HDA such that any manufacturer could design a codec chip that would simply plug into its chipset, which in turn provides a standard interface for a universal driver to access the sound system without having to program a separate driver for each kind of codec chip.

The codecs are comprised of pins or widgets. A widget or group of widgets make up a node, and several nodes are grouped together to form a function group. A function group can be an audio device on its own, or can be grouped together with other function groups to make a device complex.

As far as I have found, each pin has a register with default configuration. We also need the node addresses for each pin so that we can group the right pins together. After that, each device has its own settings in order to work. When a universal driver like the Microsoft UAA Class Driver in Vista plugs in, it queries the codec chip and gets the configuration automatically and loads it. Since everything is perfect there, all chips automatically work in Vista. In ALSA, they don't have the luxury of actually knowing the exact way that Microsoft's driver pulls this data out, so their driver is less than perfect. Still, when it works, it knows to pull this configuration out and use it.

Apple's driver is different. It doesn't autoconfigure in the same way. The configuration data is written in xml-based property lists by Apple, who know all the parameters that are needed. If we supply it other correct configuration data, Apple's driver works fine, which is what people have been doing all this time with the Taruga patcher. But Apple's driver won't ask for the configuration the way that the UAA Class Driver or ALSA will. Therefore, knowing how ALSA works may not really help us.

Apple stores the configuration in plist files inside the kext bundle. These are plain-text xml based files that store the correct values of nodes and pin configurations and audio function groups. A Pathmap tells what nodes make up what groups and how they are arranged. This is where you say, I have an audio input device with nodes x, y, and z, meaning that audio comes in and passes through nodes x, y, and z; or a compound audio output device with nodes a, b, and c leading to internal speakers; and nodes d, e, and f leading to the headphone jack. The Taruga Patcher takes the node structure from an ALSA Linux codec dump, and then plugs the data into the correct format in the plist. In the case of the ipis, this has been done already, the pathmap is complete.

Another place where Apple stores configuration is in the plist of the AppleHDAController, where it stores default pin configuration registers. The same data is present in the Vista registry dumps and the Linux codec dumps. In our case, this has also been taken care of.

Both the Pathmap and the Default Config point to the Layout. The Layout is just a listing of the audio devices present for a given audio codec. For the ipis, we have Internal Speakers, Headphones, Internal Microphone, and External Microphone. Under each device, there are special settings which configure other properties they need to work, like the MuteGPIO and Signal Processing settings. This is what you need to look at changing I don't know much about what those settings are, but it is my hope that by plugging stuff in trial and error, we can find out what works and what doesn't.

So look at a stock Apple configuration and find the Layout section, you will see these lists of audio devices and each one will have some settings there. Then look at our Layout section and see that there are none. Try putting settings from the stock config in the testing config and see what happens. That's it.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223621907|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
MacLovinMacLovin 1223639420|%e %b %Y, %H:%M %Z|agohover

@snickersmd

I understand your frustration and I'm hearing you out. You've done a great job with what you've done so far. I feel like I can be a big help. I've created successfully working ATi drivers for non-supported cards, modified bios's, and have been working somewhat with AppleHDA to get familiar with it. Even though my 1000H is on the truck for delivery, I just want to chime in and let you know that I will be looking forward in helping you complete your fantastic project. Last thing I want you to do is give up on the community and abandon it, so hang in there, once I get the 1000H in my possession (October 13th ::crossing fingers::) I will try to make headway with what you've done. Again, keep up the great work!

unfold Re: AppleHDA.kext progress by MacLovinMacLovin, 1223639420|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
Gregory CohenGregory Cohen 1223641773|%e %b %Y, %H:%M %Z|agohover

I'll help too, once I get my desktop back to life. At the moment the eee is my only working box.

-GReg

unfold Re: AppleHDA.kext progress by Gregory CohenGregory Cohen, 1223641773|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223663884|%e %b %Y, %H:%M %Z|agohover

snickersmd, Thank You for the further explanation. I spent a couple of hours going over the various threads on patching AppleHDA and going over the linux patch source. One thing I noted is that the ALC269 shares a lot of the same outputs with the ALC880. It looks like in some parts of the linux source that where the outputs are defined, they alias them to the ALC880 definitions. Where it's really different is the mic inputs and the headphone out jack. That seems to be what the 901/1000 specific patches address. Our 1000H's have 2 built in mics and the 901 patches fix it so they both work.

I also looked at the stock 10.5.5 AppleHDA kext and the modified layout and pathmap files provided by MadTux. First, the stock AppleHDA kext does not appear to have all of the codecs listed in the codecs.rtf doc provided by MadTux. I searched through the entire layout and couldn't find where the ALC262 was defined at all. Only the ALC885 and Stac9220 seems to be defined in the stock plist files. I am of course, assuming the file MadTux identifies as an unmodified AppleHDA 10.5.5 kext is indeed, unmodified. Next I took a look at the modified layout and pathmap files he provided as a guide and compared them to the unmodified. He deleted all but 1 layout which when looking at it, may be a mistake since the layouts vary so much. Specifically, The DSP settings were very different from the modified to stock version. It seems to me that these definitions are most likely pretty darn important to get right and that his layout may not be the best one to use at this point. Of course I could be completely wrong and his might be the correct one to start with. Anyways, I am starting to sort things out enough that I think there may be an easy way to find out some things to get basic sound going and go from there until we have it all.

Here's what I am thinking. I can't test this out but perhaps you can. Since the ALC269 & ALC880 seem to share common outputs, If we start with an already known good working ALC880 patched AppleHDA kext like the one MadTux provides as the end result of his tutorial http://forum.insanelymac.com/index.php?act=attach&type=post&id=34431 and modified it with just the ALC269 edits to the CodecID that we should get audio out without having to change anything else. The mic & headphone jacks are sure not to work but I think speakers should. Unfortunately this is something I cannot yet test but should be a quick edit and check for you. If the audio out does work then we know that the particular layout (including the DSP definitions) and pathmap for the working functions would be correct and we can go from there to fix the ones that are not correct. If it doesn't work, the next thing to check would be the pin mappings to make sure they match what we have for the ALC269. If it's just the pin mappings that are wrong, I would think the DSP related stuff would at least be correct. Again, I may be way off in my understanding of what I am looking at but it seems to me that it may be the easiest path to working audio. Trying to figure out which layout is the correct one to start off with in the 30 layouts in the stock AppleHDA seems like a much longer and more tedious task, though that may very well be what we have to do.

Let me know what you think and if you can, please try the simple test of modifying the already working AppleHDA kext for the ALC880 and see what you get. Hopefully I will be able to join in on the fun with some real testing this weekend.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223663884|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223675767|%e %b %Y, %H:%M %Z|agohover

@Toonces,

I've actually been through several "known working" ALC880 kexts and that is what brought the current kext to where it is now. As a matter of fact, codeye's earlier work was based on working ALC880 kexts, and I picked up where he left off by modifying his work and putting it onto a patched 10.5.5 kext. I don't think the ALC269 can be compared to the ALC880 because the ALC269 is a 2 channel codec and the ALC880 is a 6 channel codec.

The testing kext that I released has what I believe to be the correct layout, pathmap, and pin mappings. This is supported by all the evidence in the ALC269 datasheet, Linux codec dumps, maps, and Vista registry dumps. If it didn't, then the audio devices would not load at all. I didn't take the layout from a stock layout, I custom built it based on how Windows Vista sees the devices.

At this point, I don't think substituting whole layouts from the stock config are going to do anything because they simply do not match up with what is in the ipis. I assume my layout is correct because it loads, but it does not process sound because of lack of DSP settings. The whole trial-and-error push is to get us the right DSP settings, and nothing else. My contention is that since the ALC269 is different, we need special DSP settings. As you put it, you assume that the pin mappings are wrong and the DSP settings are correct. My findings are that we already have the right pin mappings, and it is the DSP settings that need fixing. So far, we are in uncharted waters, because no one else has had to change DSP settings, just us lucky folks with an ALC269.

The MadTux tutorial is simply a manual reverse engineering and explanation of what the Taruga Patcher automates. Getting the AppleHDA kext to work for the ALC880 when it originally supported the ALC885 is a matter of changing the pin mappings, pathmap and layout, but the DSP settings stored in the layout are never touched. They seem to carry over just fine from the ALC885 to the ALC880.

On the other hand, I tried moving DSP settings from the ALC880/ALC885 into the layout I made for the ALC269 and it simply failed to load. That is the reason that I believe the problem has to do with the DSP settings, but I don't know which one. They have to be tested one by one until we find out which ones work and which ones don't, then we can look at the ones that don't and see what needs to be changed.

last edited on 1223778937|%e %b %Y, %H:%M %Z|agohover by snickersmd + show more
unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223675767|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223687050|%e %b %Y, %H:%M %Z|agohover

Thanks for the explanations regarding what you've done so far in answer to my research. It looks as though we're drawing a lot of the same conclusions and at least on the same track. My drive still hasn't shown up so it's going to be another night of reading and just working through it in my head. One thing, are the DSP definitions in your testing codec the same as they would be for the same function on another HDA chip? This was the biggest difference I noticed in MadTux's modified plists vs. the stock ones. here's what I mean, in the stock info.plist, layout item 1, signal processing, softwaredsp, dspfunction0, function info, the first dspfuncname is DspGainStage. In MadTux's modified platform.plis, the same DspFuncName is DspNoiseReduction. So which is the correct one? With the ALC269, what functions should we expect to see? I don't think you know either but that is where all the different layouts come into play. They all have different functions associated with the particular pieces and I guess we need to figure out which ones the chip is expecting to use and in which order. I am sure you have the pins, etc mapped out but the dsp functions associated with those mappings are the next step. Yes, I realize that is what you've been saying but I had to catch up to be of any use :D

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223687050|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
strongesthylianstrongesthylian 1223677665|%e %b %Y, %H:%M %Z|agohover

Like elroy, the sound devices don't install when I install the HDA kext. I've taken out any related Audio Kexts, fixed the permissions, flushed the Extensions cache, and even touched the extension folder.

One thing worth noting is that the audio devices are recognized in System Profiler, but the devices aren't there in the Sound preferences.

Rather than fill the screen with my screenshot, here's a link to it:
http://img381.imageshack.us/img381/8472/audioup3.png

unfold Re: AppleHDA.kext progress by strongesthylianstrongesthylian, 1223677665|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223678240|%e %b %Y, %H:%M %Z|agohover

That's really odd. I have the same system profiler report, but the devices show up in my sound preferences as well.

What does your system log say? What about the IORegistry?

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223678240|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
strongesthylianstrongesthylian 1223679433|%e %b %Y, %H:%M %Z|agohover

Sorry not very savvy on checking the logs. I open up the Console and search HDA and find:

Oct 10 15:06:07 localhost kernel[0]: HDAEnabler: Copyright (c) 2008 by Kabyl
Oct 10 15:06:07 localhost kernel[0]: HDAEnabler: 05/05/2008 Added SPAudio support:Taruga
unfold Re: AppleHDA.kext progress by strongesthylianstrongesthylian, 1223679433|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223713229|%e %b %Y, %H:%M %Z|agohover

Ok, My head hurts from going through this stuff so I posted a thread over at insanelymac for some help. http://forum.insanelymac.com/index.php?showtopic=130616 maybe a little incentive will help move things on.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223713229|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223715335|%e %b %Y, %H:%M %Z|agohover

Hahahaha you've just had a taste of the headache I got from learning AppleHDA hacking, I feel your pain. ;)

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223715335|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
strongesthylianstrongesthylian 1223756005|%e %b %Y, %H:%M %Z|agohover

I tried uninstalling and reinstalling the AppleHDA.kext file. The sound devices weren't there, but this time I got some more console information:

Oct 11 13:06:46 RondeeeMac kernel[0]: HDAEnabler: Copyright (c) 2008 by Kabyl
Oct 11 13:06:46 RondeeeMac kernel[0]: HDAEnabler: 05/05/2008 Added SPAudio support:Taruga
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAPath.cpp" at line 1168 goto Exit
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 != pathSet->getWidgetAmplifierGainRange ( &zeroValue, &minValue, &maxValue, &minDB, &maxDB, kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 248 goto handler
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAPath.cpp" at line 1168 goto Exit
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 != pathSet->getWidgetAmplifierGainRange ( &zeroValue, &minValue, &maxValue, &minDB, &maxDB, kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 248 goto handler
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "false == pathSet->isAmplifierGainAdjustable ( kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3572 goto Exit
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3527 goto Exit
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 != widget->setUnsolicited ( true )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDACodecGeneric.cpp" at line 830 goto handler
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit
Oct 11 13:06:46 RondeeeMac kernel[0]: Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit
Oct 11 13:06:48 RondeeeMac kernel[0]: Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit
Oct 11 13:07:46 localhost kernel[0]: HDAEnabler: Copyright (c) 2008 by Kabyl
Oct 11 13:07:46 localhost kernel[0]: HDAEnabler: 05/05/2008 Added SPAudio support:Taruga
unfold Re: AppleHDA.kext progress by strongesthylianstrongesthylian, 1223756005|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223778886|%e %b %Y, %H:%M %Z|agohover

@strongesthylian
That's some progress. I found it curious that you didn't have those log errors before. Right now, those are the exact same log errors I get, but the devices do show up on my side. The log errors start to change once I start mucking around with different DSP settings.

Is it just you and elroy that don't have the devices present on installing this kext, or is this everyone who installs the new kext? I wish I knew what the difference in the configuration was.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223778886|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
strongesthylianstrongesthylian 1223781958|%e %b %Y, %H:%M %Z|agohover

Might be a good idea to note that I'm on an ASUS EEE PC 1000H 160GB version. Running iDeneb v1.3 OS X 10.5.5. I also installed the kext from a clean install.

unfold Re: AppleHDA.kext progress by strongesthylianstrongesthylian, 1223781958|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
elroyelroy 1223785116|%e %b %Y, %H:%M %Z|agohover

I've tried a number of times now to install this kext, but I get nothing - no errors, no devices.

I'm running a clean leopard install with a generic efi boot partition (with all maceee kext's installed except the audio related ones listed in an earlier post).

unfold Re: AppleHDA.kext progress by elroyelroy, 1223785116|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223796039|%e %b %Y, %H:%M %Z|agohover

@elroy:
That explains a lot… you wouldn't happen to be trying to install the AppleHDA.kext from your EFI partition, would you? I read from the InsanelyMac forum that audio kexts would still have to be loaded from /System/Library/Extensions, not from the EFI partition.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223796039|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
elroyelroy 1223805765|%e %b %Y, %H:%M %Z|agohover

No mate… for one, installing it onto the EFI is more work than just moving it into the extensions folder using the helper. I wasn't aware that there were issues with installing audio kexts on the efi though, thanks for the heads up. Personally, I'm using the efi as a safety net really, meaning that I can feel safe in running official updates and the worst that will happen is that I have to reinstall a few kexts, not a big deal at all.

unfold Re: AppleHDA.kext progress by elroyelroy, 1223805765|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223825132|%e %b %Y, %H:%M %Z|agohover

Snickers,
Have a read of this http://forum.insanelymac.com/index.php?showtopic=127819
It suggests the config verb order and other useful bits.

last edited on 1223828387|%e %b %Y, %H:%M %Z|agohover by codeye + show more
unfold Re: AppleHDA.kext progress by codeyecodeye, 1223825132|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223839703|%e %b %Y, %H:%M %Z|agohover

Hi, I finally got my drive and installed ideneb 1.3 following the maceee guide and installed most of the needed kexts with the exception of using AppleSMBIOSEFI instead of the hacked AppleSMBIOS kext. I also grabbed the 10.5.5 GMA950 kexts which supposedly do not need natit for external display. After I got everything configured to my liking I turned to sound and like strongesthylian, I didn't get any errors on first install. I removed and reinstalled the testing kext again and am now at the same place. I get the same errors :) I also have no devices listed in the sound preferences though I can check the box to show volume in the menu bar and checking it causes a space to be inserted in the menu bar where the sound control should be but no icon or control.

snickersmd, do you have the kext that had all the devices show up but no sound? From looking at the realtek docs, the only major difference with the ALC269 vs a chip like the ALC268 is that the 269 is the only one with a built in amp. I wonder if it's the lack of control for the built in amp that is making that kext not work. i.e. the devices are correctly defined but basically muted because there are no definitions to turn on the built in amp? Didn't you say you had external via the HP jack?

Anyways, I can now do some testing and will keep messing with this testing codec and other definitions and see if I can get anywhere. Do you think maybe it would be best to follow a single line from start to finish? Say take just trying to get the speakers working. You have the pin definitions and can follow that line from start to finish or am I heading off in the wrong direction?

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223839703|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223840012|%e %b %Y, %H:%M %Z|agohover

BTW, here are the errors I get:

10/12/08 1:35:44 AM kernel HDAEnabler: Copyright (c) 2008 by Kabyl 
10/12/08 1:35:44 AM kernel HDAEnabler: 05/05/2008 Added SPAudio support:Taruga 
10/12/08 1:35:45 AM kernel Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAPath.cpp" at line 1168 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 != pathSet->getWidgetAmplifierGainRange ( &zeroValue, &minValue, &maxValue, &minDB, &maxDB, kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 248 goto handler 
10/12/08 1:35:45 AM kernel Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAPath.cpp" at line 1168 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 != pathSet->getWidgetAmplifierGainRange ( &zeroValue, &minValue, &maxValue, &minDB, &maxDB, kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 248 goto handler 
10/12/08 1:35:45 AM kernel Sound assertion "false == pathSet->isAmplifierGainAdjustable ( kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3572 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3527 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 != widget->setUnsolicited ( true )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDACodecGeneric.cpp" at line 830 goto handler 
10/12/08 1:35:45 AM kernel Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit 
10/12/08 1:35:45 AM kernel Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit
unfold Re: AppleHDA.kext progress by TooncesToonces, 1223840012|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223844982|%e %b %Y, %H:%M %Z|agohover

@codeye: excellent find. I thought I had covered all the bases, but someone finally wrote a guide that goes beyond the original Taruga patch. I will read through and try to see if their process alone doesn't get us a better kext. May I advise you do the same using the codec dump and graph provided in the wiki.

@Toonces: It wasn't me with external out, it was comatron using the older AppleAzalia kext. You're on the right track, sans the display of devices. I'm still at a loss to describe why I have the audio devices showing up while now you, strongesthylian, and elroy don't. You can see from the error log why I believe it has a lot to do with the DSP settings and amp control, aren't the error messages highly suggestive?

One thing that's odd: You have the fcontrolarray message 5 times but I only have it 4 times per boot. I had always assumed that this corresponded with a missing control array (DSP settings) per each of the 4 audio devices/function groups that were there. I believe our problem areas are the speakers and internal mic, and I think that's where the DSP needs to be fixed first and what is causing the majority of the error messages.

Keep hacking at it. I will be reviewing this new guide that was published and see if it has anything that I haven't already done.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223844982|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
joebloughjoeblough 1223852161|%e %b %Y, %H:%M %Z|agohover

this might be a dumb question because i know very little about these kinds of chips. would it make sense to try to do a full PCI config space dump of this chip when running under windows or linux and compare that to what we have on osx after the kext is loaded? or is it the case that you already know exactly what every single register should be programmed to and its a question of trying to coax the kext into doing this for us?

unfold Re: AppleHDA.kext progress by joebloughjoeblough, 1223852161|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223852665|%e %b %Y, %H:%M %Z|agohover

It's not a dumb question, but unfortunately the answer is no, it won't work. This is primarily due to the the unique driver architecture in MacOS X. I have read in many places how it is definitely superior to many driver interfaces there are, but it is significantly different enough that we cannot even take plain BSD drivers and hack them into the kernel. (That would have fixed our Ethernet problem right away). All the drivers go through Apple's IOKit framework, so looking at how other operating system's drivers work is of limited value.

That having been said, we do assume that the AppleHDA kext already does what drivers on the other platforms do. Otherwise, why would they use the same nodes and pin config verbs as found in Linux and Win Vista? So yes, you are correct in saying that it is merely a question of "coaxing" the AppleHDA.kext to work.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223852665|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
joebloughjoeblough 1223856591|%e %b %Y, %H:%M %Z|agohover

well but what i mean is that if you had the full register dump from a working chip, and one from the current state of the art kext, you should then be able to see what registers differ and how, and what needs to happen to make it work. i'm not talking about trying to copy driver source code from linux but just to see exactly what the state of the chip is when its working properly. i guess if you have the linux source then you can tell what registers its writing anyway and to what value, but its a heck of a lot more direct to just look at the dump and see what differs. of course you'll see all kinds of differences depending on what outputs/inputs happen to be enabled but by dumping a few times on windows/linux after twiddling knobs you can isolate those differences.

having said all that, i guess that you do have the datasheet for the part, so in theory you should already know exactly how this thing should be programmed, right?

unfold Re: AppleHDA.kext progress by joebloughjoeblough, 1223856591|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223858353|%e %b %Y, %H:%M %Z|agohover

I get what you're trying to say, but it really isn't that simple either. The registers have already been determined, as well as what gets put into them. But we aren't dealing directly with the codec chip itself — from what I understand, we go through a standard interface through the Intel chipset to get audio. It's also too low level, the Intel HD Audio Specification tells us that the codecs are controlled by verbs, not by directly working with registers. Seeing the result will not likely tell us what verbs to use, at least not readily.

So we're not trying to determine a particular state that the chip needs to be in. We had to first determine the proper connections (which we now have), and then the commands that must be sent (i.e. our DSP settings and others). This is crudely analagous to hooking up a monitor to a computer. We are sure the video card is working, and we are sure the monitor is working, but is our cable any good, and are the drivers sending the correct signals down the line? Only in this case, we are dealing with a digital "cable" and a bunch of initialization settings that have to be hashed out.

There is one solution I have considered; the Microsoft UAA configuration documentations state that the driver can be queried through a standard API to determine the correct configuration of the chip. I'm a little rusty with my C++ but I can probably hack a program together that will call that API. However, I don't really have time to do this, and if anybody out there feels like writing such a program I will do what I can to help.

last edited on 1223858559|%e %b %Y, %H:%M %Z|agohover by snickersmd + show more
unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223858353|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
joebloughjoeblough 1223860282|%e %b %Y, %H:%M %Z|agohover

okay, i see what you mean. "verbs" must mean that there's a register window where you poke commands into. in that case the state would have to be dumped out one register at a time by reading a single register over and over again while changing some kind of pointer. but how you got to that state would still be a mystery. in the case of a direct-mapped register interface, it would be obvious how to get there - you just write whatever values you read back into those locations. you'd need to have a logic/bus analyzer on the PCI bus and watch the driver configuring the chip to find the magic sequence. but still that wouldnt tell you too much about how to make the kext do the same thing.

unfold Re: AppleHDA.kext progress by joebloughjoeblough, 1223860282|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223846042|%e %b %Y, %H:%M %Z|agohover

Well after a quick read, it would seem that they aren't much further than we already are. I did use codecgraph to derive the pin mappings and devices, in combination with the linux dump. Our config verbs are also done correctly based on the Vista registry dump and the Linux codec dump.

What is interesting is that they are starting research into the Post Construction Initialization and other DSP settings, which is exactly where we seem to be stuck. I would follow this thread closely and even apply some of the Mic and DSP settings from the tutorial to our kext.

Still very curious as to why the devices show up on my side but not with elroy, strongesthylian, or now toonces. Did anyone here actually get the devices to show up? Perhaps there is something wrong with the kext I uploaded?

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223846042|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223875673|%e %b %Y, %H:%M %Z|agohover

snickers, maybe just to be sure you can grab the AppleHDA.kext that you have loaded on your machine that is showing the devices and upload it as a different filename for us to grab and try? I have tried the testingcodec several times today along with trying different DSP settings and all I've managed to do is make my system crash a few times. Of course it's easy enough to revert back to the testing file so it's not a big deal. I also played around with patching AppleHDA and using ALCInject and also with AppleAziliaAudio.kext. I do get sound on the headphones using the Azilia kext but that is it. Azilia also shows up as HD Audio device in sound pref pane but not a peep from the speakers. Beyond just changing the VendorID in Azalia, I don't know of any way to remap that driver so there's no way to get anything other than headphones. I know you don't want to waste time going through that but 1. It's frustrating not making any progress though I have spent a lot of time, I don't feel like I am any closer and 2. I would shove a quarter in the SD slot if I thought I could get audio out of the speakers :D

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223875673|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
mikeweissmikeweiss 1223846281|%e %b %Y, %H:%M %Z|agohover

I am sorry I cannot be of more help. But I have been watching this thread closely. I installed the Kexts that you put here and I can confirm I do not get any devices. I will be ready to test and report on anything you guys upload.

Its all I can contribute, you are way over my head.

Thank you for your hard work.

unfold Re: AppleHDA.kext progress by mikeweissmikeweiss, 1223846281|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223852122|%e %b %Y, %H:%M %Z|agohover

@elroy,

Just noticed from one of your posts in the other parts of this forum, are you using a 1000HD or a 1000H?

Also, what models is everyone trying this kext on?

Is it possible that Asus is screwing around with us by configuring the codec differently per model? Or even using a completely different codec chip that everyone just assumes is correct? One reason that this kext wouldn't load on a given ipis would be if the codec chip was completely different…

I suppose we should have a "sound off" (pun unintended, but ironic) as to models, distros, and any additional specs.

I myself am using a 1000H with 2gb of RAM and a 320GB HDD. I used iDeneb 1.1 as per MacEee.com. I have the 1005 modified BIOS installed. I have updated to 10.5.5. The kexts I am using include all those suggested by MacEee.com, with the exception of the battery and smbios kext changes offered in the wiki.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223852122|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
elroyelroy 1223861576|%e %b %Y, %H:%M %Z|agohover

Oh snickersmd, you've got to stay up to date with these things! :P

I got fed up with not being able to get OS X running on the 1000HD so I got rid of it and bought a 1000H and had Leopard running on it in no time.

I've installed a broadcom card in it and picked up a MacBook Air USB to ethernet adapter just yesterday.

I'm still on the stock 1gb ram chip, but plan to grab a 2gb stick shortly.

I'm running 10.5.5 from the vanilla 10.5.4 dvd and updated to 10.5.5 with the apple combo update.

unfold Re: AppleHDA.kext progress by elroyelroy, 1223861576|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223876127|%e %b %Y, %H:%M %Z|agohover

18/M/Cali…Oh, wrong window…. 1000H, 1103 Modified, ideneb 1.3 all kext from maceee except Air SMBIOSEFI from IM forum and ACPIBattery from superhai.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223876127|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
mikeweissmikeweiss 1223852809|%e %b %Y, %H:%M %Z|agohover

1000h, ideneb 1.1, updated to 10.5.5, kexts from Maceee.com with the exception of the Air SMBIOSEFI (battery meter still isnt right doesnt give me percent just calculating) and an updated 950 kext. using DisplayConfigX to get it to 1024x600. Tried to install the kext from this thread but no output devices. i did notice in the system profiler I get Intel High Definition Audio: Device ID: 0x1043831A

I am using the latest modded bios from the usual place.

upgraded ram

is there an IRC room we should meet in to work on this more realtime?

unfold Re: AppleHDA.kext progress by mikeweissmikeweiss, 1223852809|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223854784|%e %b %Y, %H:%M %Z|agohover

I'm using a 901 and the test kexts show devices which autosense here. Now that I have a better understanding of the pinconfig, it may be that we need to do something like what is required for some codecs under linux - ie power up the external amp, this could be done via "config verbs". Also some of the errors we are getting fit with the verb names under the relatek data sheets - this is pretty cool.

last edited on 1223855290|%e %b %Y, %H:%M %Z|agohover by codeye + show more
unfold Re: AppleHDA.kext progress by codeyecodeye, 1223854784|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1223863632|%e %b %Y, %H:%M %Z|agohover

I am starting to think that you're close to the answer codeye. The one major difference with the ALC269 is that it has an internal amp instead of an external one though. I wonder if the reason we have no sound when people are getting the devices showing up in the sound pref pane is because the amp isn't defined or controlled properly. All of the other ALC chips so far have an external amp. The ALC269 does not.

Just for shits and giggles, I tried an older approach using HDPatcher 1.20 and ALCInject. I took the 1000H's linux dump and set the device is to the ALC262 and ran it on a stock 10.5.5 AppleHDA.kext. I then grabbed the patched AppleHDA.kext and modified all of the instances of 0x10ec0262 back to 0x10ec0269 (I also changed the deviceid's in the plist files to match) effectively making the patcher work on a file it shouldn't have. After I rebooted with the new AppleHDA.kext and ALCInject.kext, I get controls shown in the sound pref pane but no sound and no way to actually move the volume slider. When I highlight Internal Speakers or Headphones as output devices, I get The selected device has no output controls. Of course, with this method you don't get anything in System Profiler either or than the DeviceID and AudioID 12. Nothing shows as an available device but I don't think it does when the sound works either. I normally use HDAEnabler since it shows up then but thought I'd try an older approach and see what I got.

Between that and the errors we get on the testing kext, it sure looks like it wants to work but doesn't know or doesn't have an amp to control….

unfold Re: AppleHDA.kext progress by TooncesToonces, 1223863632|%e %b %Y, %H:%M %Z|agohover
kext re-upload
snickersmdsnickersmd 1223896630|%e %b %Y, %H:%M %Z|agohover

As per Toonces request and in light of the overwhelming amount of people loading the kext without any devices showing up, here is a re-upload of my AppleHDA.kext, straight from my extensions folder so there's no chance for mixup. If this still fails, then something else must be the problem.

http://ipis-osx.wikidot.com/local--files/forum:thread/AppleHDA.kext.zip

Oh, and Toonces, don't lose heart — if you think you're frustrated after playing with it for a couple of hours, just wait till it's been days of fruitless hacking like me and codeye. ;)

unfold kext re-upload by snickersmdsnickersmd, 1223896630|%e %b %Y, %H:%M %Z|agohover
Re: kext re-upload
nhirtnhirt 1223912531|%e %b %Y, %H:%M %Z|agohover

@snickersmd: I had the problem with the devices not showing on my 1000h. So I installed a "virgin" iDeneb 1.5
with only the GMA950 kexts and SwitchResX.
Then I loaded your latest AppleHDA.kext and nothing showed up.

After toying aroung a bit (for one I repaired the permissions and reloaded the kexts) suddenly the devices showed up
("Internal-" and "External microphone" and "Internal Speakers" that switch correctly to "Headphones" when plugging them in)…
Strange, could it be a file permission problem (though I don't think so)….?
Below my HDA-related error messages.

Nik

Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: HDAEnabler: Copyright (c) 2008 by Kabyl
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: HDAEnabler: 05/05/2008 Added SPAudio support:Taruga
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAPath.cpp" at line 1168 goto Exit
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 != pathSet->getWidgetAmplifierGainRange ( &zeroValue, &minValue, &maxValue, &minDB, &maxDB, kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 248 goto handler
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAPath.cpp" at line 1168 goto Exit
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 != pathSet->getWidgetAmplifierGainRange ( &zeroValue, &minValue, &maxValue, &minDB, &maxDB, kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 248 goto handler
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "false == pathSet->isAmplifierGainAdjustable ( kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3572 goto Exit
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3527 goto Exit
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 != widget->setUnsolicited ( true )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDACodecGeneric.cpp" at line 830 goto handler
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit
Oct 13 17:26:22 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit
Oct 13 17:26:24 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit
Oct 13 17:28:01 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit
Oct 13 17:28:52 niklaus-hirts-macpro31 kernel[0]: Sound assertion "false == pathSet->isAmplifierGainAdjustable ( kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3572 goto Exit
Oct 13 17:28:52 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3527 goto Exit
Oct 13 17:28:52 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit
Oct 13 17:28:54 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit
Oct 13 17:28:54 niklaus-hirts-macpro31 kernel[0]: Sound assertion "false == pathSet->isAmplifierGainAdjustable ( kPATH_CONTROL_SPATIAL_CHANNELID_Master )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3572 goto Exit
Oct 13 17:28:54 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 != result" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAEngine.cpp" at line 3527 goto Exit
Oct 13 17:28:54 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit
Oct 13 17:30:42 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == fExternalControlArray" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroup.cpp" at line 736 goto Exit
Oct 13 17:30:42 niklaus-hirts-macpro31 kernel[0]: Sound assertion "0 == controlRange" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/DspFuncLib/Functions/DspFuncVolume.cpp" at line 512 goto Exit
unfold Re: kext re-upload by nhirtnhirt, 1223912531|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223897302|%e %b %Y, %H:%M %Z|agohover

tell me about it!

unfold Re: AppleHDA.kext progress by codeyecodeye, 1223897302|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223912227|%e %b %Y, %H:%M %Z|agohover

Just playing with Snickers kexts on the 901 and a MacBook Pro with alc885. If I reduce the number of devices in platform info.plist then the number of fexternalcontrolarray errors decreases by the same number, the kext of course still loads but with less devices available. If I compare the IORegistryExplorer outputs on the 901 and the Macbook, our kext loads all the PinConfigurations in sequential order regardless of what is placed in pinconfiguration under HDAEnabler. On the Macbook (layout 56) only the pinconfigurations corresponding to the pin complexes that are identified under the various devices on the pathmap (pathmapid 16) are displayed. I think this suggests these errors are occurring because the incorrect pinconfigurations are being parsed (or at least blocked/corrupted by inactive pin complex data), funny thing is layoutid 56 has no representation in controller plist, so I'm not usre how the configdata is being passed on the macbook pro?

unfold Re: AppleHDA.kext progress by codeyecodeye, 1223912227|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223925170|%e %b %Y, %H:%M %Z|agohover

@codeye
Some notes on my observations regarding the pin config verbs loaded to the IO registry:

I tried working with just our pin config verbs in HDA Enabler, but it would be overridden with what was in the controller plist. So then, I tried clearing the pin config verbs in HDA Enabler and putting them just in controller plist; the result was a blank IO registry. Therefore, I concluded that the pin config verbs should be loaded in both controller plist and in HDA Enabler in order to take effect.

I've also played around with why we arbitrarily use Layout 12 as a starting point for our hacking. Early on, I wanted to make a "minimal change" kext where I wouldn't delete stuff that wasn't used, find a set of layout and pathmap already in the stock plist that closely matched what I wanted and change just that, then change the enabler to point at this new layout instead of 12. It doesn't work - I think it's a limitation of the programming of the injector. The reason is that I wanted to use layout #56, which in turn has a hex value of 0x38. If you load hex value 38 into the injector, it calls layout #8 instead — because 0x38 is the character "8" in ASCII. So you can plug certain numbers into the injector, but they don't always behave right; best to use it as originally set up.

Earlier I did think that the pin config verbs should have a particular order and should only be loaded in a particular way so as to correspond with the devices, but I discarded the idea. Firstly, each set of config verbs is address-locked to their corresponding pin, so it shouldn't matter what order you load them in. Secondly, about half of the 11 config verbs in our setup are actually verbs that inform that a particular pin is not connected within a given configuration. Are these safe to leave out, or is it mandatory to declare which pins are not connected? From what I have seen of the other config verbs listed in controller plist, they also have non connected pins in the mix, so I decided to leave them. I have also tried playing directly with the verb values, but that didn't go anywhere. Honestly, since those came from a Vista system, where sound is working perfectly, I have little doubt that the pin configs are correct.

You've also brought up some more of the mystery surrounding the Apple plist config system. What the f* is the deal with several entries for the same codec, and pointing to layouts that don't seem to connect to anything else? (Also I thought the MBP uses a Sigmatel codec, not an ALC885, which is supposedly in the Mac Pro (desktop)) My guess is that certain layouts are aliased or linked to other layouts somehow, like they jump internally from one to the other during the init/config phase. On the MBP check to see where those verbs are coming from, might be from a totally different entry in the controller plist.

However, I'm not exactly sure that pin config verbs are even the problem area for us. Firstly, the default config verbs do nothing for the amps, and all the error messages are pointing to amps. My guess is that it really will boil down to finding out what the correct settings to deal with the ALC269 internal amp are. Seems that each device needs a "control group" and only two of those devices really seems to crap out on the amp.

@nhirt
Nice find with the permissions fix. I wouldn't be surprised if that was it, especially since the AppleHDA.kext is actually several kexts that have been poked and prodded rolled into one.

@everyone else
Now that we're all getting to the same page, let's try random plugging some amp values into the layout and see how the error messages change. Please remember to post what values you change here on the thread, so that other testers don't waste time with values that you've already tried unsuccessfully.

last edited on 1223925794|%e %b %Y, %H:%M %Z|agohover by snickersmd + show more
unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223925170|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
comatroncomatron 1223929180|%e %b %Y, %H:%M %Z|agohover

im reading all this thread now for a long time. im a real noob in this stuff. i just wonder, if you cant take any advantages for the developing from my runnin azalia audio on the eee1000h. anywhere there in the kexts is the working stuff for the audio output … or am i totally wrong now? if i can help you by providing some infos from the running system - let me know …

unfold Re: AppleHDA.kext progress by comatroncomatron, 1223929180|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
strongesthylianstrongesthylian 1223929557|%e %b %Y, %H:%M %Z|agohover

The new kext you uploaded worked. The devices appeared and says headphones when you plug in a pair.

I will begin testing when I go to work today. Thank god for so much downtime there.

unfold Re: AppleHDA.kext progress by strongesthylianstrongesthylian, 1223929557|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223942480|%e %b %Y, %H:%M %Z|agohover

Snickers,
I found a second copy of HDAenabler sitting in the AppleHDA kext and that was loading my configdata! I actually removed the ALC269 from controller plist and it still loads if HDAEnabler has the correct pinconfiguration - so does this mean for some codecs controller isnt used? I cannot run Vista on the MBP (not mine dammit) but here is the derived values that should load in vista, and they dont match any of the published list in controller plist - perhaps its hard coded in the controller binary?
01471c40 01471d01 01471e10 01471f90
01571c50 01571d40 01571e2b 01571f01
01671cf0 01671d00 01671e00 01671f40
01771cf0 01771d00 01771e00 01771f40
01871c10 01871d01 01871ea0 01871f90
01971cf0 01971d00 01971e00 01971f40
01a71c20 01a71d30 01a71e8b 01a71f01
01b71cf0 01b71d00 01b71e00 01b71f40
01c71cf0 01c71d00 01c71e00 01c71f40
01d71cf0 01d71d00 01d71e00 01d71f40
01e71c60 01e71de0 01e71e4b 01e71f01
01f71c30 01f71de0 01f71ecb 01f71f01
I wonder if we can get hold of the code for HDAEnabler that may be helpful.

unfold Re: AppleHDA.kext progress by codeyecodeye, 1223942480|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223957162|%e %b %Y, %H:%M %Z|agohover

codeye,

You have me a bit confused by this post.

Firstly, that's not a "second" copy of HDAEnabler. You were supposed to delete any external ALC injectors or HDA enabler kexts. The best place for the HDAEnabler is where I put it, along with the patched AppleHDA.kext.

Secondly, I don't get what you mean that you removed ALC269 from the controller plist and still HDA enabler is loading correct configuration? The controller technically isn't used with any non-Apple codec, that's why we use HDA enabler to inject values and trick the controller into thinking we have a valid codec.

Thirdly, what are these values you posted? Are these from an ipis or MBP? From the stock plist, from a Vista registry dump found on another forum, or from IO registry?

Vista pin config verbs won't match config verbs found in Apple plists because they are byte-flipped in Apple.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223957162|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223942615|%e %b %Y, %H:%M %Z|agohover

Comatron,
could you dump the pinconfiguration from ioregistryexplorer - that would be helpful!

unfold Re: AppleHDA.kext progress by codeyecodeye, 1223942615|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
strongesthylianstrongesthylian 1223958109|%e %b %Y, %H:%M %Z|agohover

@ people who were having trouble getting sound devices to appear:

Have you tried snicker's new test kext? Did it work? If not, I believe I've come up with the solution: I think some of the plugin kexts aren't being read. So I took those plugin kexts that don't begin with "AppleHDA" and installed them into the /System/Library/Extensions folder. After restarting, the sound devices appeared!

To make it easier, I've recreated the zip file for you to just open up and install the kexts. Let me know how it goes.

EDIT:
Totally screwed up the Contents alias. I think I got it right this time by making a symbolic link.
http://www.mediafire.com/file/gn3zydmzn04/hdatestpack.zip

last edited on 1223961089|%e %b %Y, %H:%M %Z|agohover by strongesthylian + show more
unfold Re: AppleHDA.kext progress by strongesthylianstrongesthylian, 1223958109|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
strongesthylianstrongesthylian 1223960262|%e %b %Y, %H:%M %Z|agohover

As far as testing goes, this thread is huge enough as it is. I think it would be a good idea to post results in a completely new thread.

unfold Re: AppleHDA.kext progress by strongesthylianstrongesthylian, 1223960262|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223978697|%e %b %Y, %H:%M %Z|agohover

There's no need to separate the bundled kexts. As nhirt found, it is most likely a permissions error. You have only verified this by installing the kexts separately, as the kext helper changes the permissions on each kext as you install it. Apparently, the kext helper does not change permissions of the respective bundled kexts as well.

I will look into the permissions on my file, fix, and reupload if necessary.

EDIT: Looked into it and found, as suspected, entire kext had ownership as snickers:staff. Updated ownership to root:wheel, rezipped and reuploaded.

http://ipis-osx.wikidot.com/local--files/forum:thread/AppleHDA.kext.zip

last edited on 1223979343|%e %b %Y, %H:%M %Z|agohover by snickersmd + show more
unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223978697|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
strongesthylianstrongesthylian 1224006142|%e %b %Y, %H:%M %Z|agohover

Ah! Well I'm glad I could be of some help.

I left my laptop at work accidently and I'll try the new kext and also post the results from the console in the results thread.

unfold Re: AppleHDA.kext progress by strongesthylianstrongesthylian, 1224006142|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1223988896|%e %b %Y, %H:%M %Z|agohover

snickers,
I removed any reference to alc269 (283902569) from controller plist and the IOregistry only fills with what you put in HDAEnabler, and the kext still loads (is this obvious?). The MBP only loads half of the "pin default" values from the "pin complexes" seen on a ubuntu dump of the codec#0 (definitely ALC855) on the mbp when I fired ioregistryexplorer - so I've mimicked this with HDAEnabler. The pin defaults that load are those attached to active pin complex nodes.
I'm not sure what went screwy with my install but as you noted it doesn't matter what is in the PinConfigurations under HDAEnabler to load the HDAkext - so I wasn't on the right track there - drat! However it seems with the 10.5.5 kexts the configdata under controller plist now loads up the IOregister. The config verb list is already in "Apple format" - I guess I'm still miffed that the MBP loads all the right info without seeming to refer to the configdata list of any of the codecID 283904133 present in the controller plist - If I can mess around with the AppleHDA kext on the mbp I'll see if it is referencing HDAConfigDefault 20 which doesnt have a configdata entry and I might try screwing around with other parts of the controller and platform plists for the MBP and to see if it stops the kext from working and generates the same error messages.
I was away all last week and I was attempting to catch up quickly and didn't bother to look in the plugins section of your modified kext ;-) hence 2 HDAEnablers!

unfold Re: AppleHDA.kext progress by codeyecodeye, 1223988896|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1223995718|%e %b %Y, %H:%M %Z|agohover

What's really odd about the whole pin config verb thing is the fact that they're written down at all in the Apple plist. These don't come preprogrammed in Linux or Vista. A codec dump shows us that the pin configs are pulled from the codec chip itself. Also, Vista didn't just magically have every single pin config loaded in its registry, the UAA class driver pulled these from the codec chip and stored them there.

So if this information can simply be queried from the chip, why store it in a config file at all? I'm thinking, while default configs are offered in the plist, perhaps the kext is ultimately querying the codec on a MBP for the correct values which are then loaded into the IORegistry. Furthermore, since the driver looks for Mac hardware and doesn't find it, we have to do this ourselves and put only the right values in.

Could you provide me with the codec dump and IORegistry dump from your MBP? Perhaps we can find some correlation between actual default pin configs as provided by the codec, default pin configs as given in the stock plist, and default pin configs that actually get loaded in the IORegistry.

I'll also muck around with the pin configs on my Intel Mac Mini.

As a member of the wiki site you should have upload privileges to this thread.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1223995718|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1224001370|%e %b %Y, %H:%M %Z|agohover

The other thing is we hack AppleHDA binary for ALC262, but of course none of the config file data is related to this codec. Which apple hardware has this chip? I tried to alter the plist files (short of deleting them!) and the MBP sound doesn't skip a beat.
A disassembly of AppleHDA shows a whole lot of verbs being called querying the codec info and alc262 subroutines. I wonder if we should compare the ALC262 and the ALC269 codec dumps to see if there are similarities and differences that we may need to address.
Still quite stumped…
I've uploaded all the files to the audio wiki page.

last edited on 1224002016|%e %b %Y, %H:%M %Z|agohover by codeye + show more
unfold Re: AppleHDA.kext progress by codeyecodeye, 1224001370|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1224004214|%e %b %Y, %H:%M %Z|agohover

My thoughts exactly… Most AppleHDA hacks out there try to force recognition of an 885, but when I saw in the disassembly that the kext supports the 262 I decided to go that route instead, since at least the 269 is in the same family. However, nothing in the plist seems to reference a 262, and I am unaware of any Apple hardware using the 262.

I don't know what we'd gain by looking at a codec dump of the 262, since there is nothing in the plist to match it to. After all, we are trying to find out what the plist does. The stock plist is given, the codec dumps for a stock codec are available, and what we have is the codec dump of our codec. Just by logical equivalence, we should be able to reverse engineer the stock plist given the stock codec dump, and apply that knowledge to our codec dump.

I did however, start looking at the 262 datasheet as soon as I had made my kext hacks.

Although it is logical to assume that the 262 is closer to the 269, what if I'm wrong? What if there is some initialization routine called by the 885 path that we need, given the correct path and layout? I don't know why I didn't think of it earlier, but could you (or anyone else) take the time to try using the plists we have now together with a kext patched for 885 instead of 262?

last edited on 1224004564|%e %b %Y, %H:%M %Z|agohover by snickersmd + show more
unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1224004214|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224011385|%e %b %Y, %H:%M %Z|agohover

I don't know why but even after repairing permissions and trying every one of the posted kexts, I cannot get any devices to show up and there are no errors in the logs. Just that HDAEnabler loaded. Could it be because of the version of SMBIOSEFI I am loading? What about using EFI Strings to load the config files rather than HDAEnabler? Or should that be something to try later?

unfold Re: AppleHDA.kext progress by TooncesToonces, 1224011385|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1224040778|%e %b %Y, %H:%M %Z|agohover

You fixed permissions but did you also change ownership? The kext (and every kext inside, and everything inside those) must belong to root:wheel.

sudo chown -R root:wheel /System/Library/Extensions/AppleHDA.kext

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1224040778|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224047351|%e %b %Y, %H:%M %Z|agohover

ok, I changed ownership and verified permissions again and still nothing shows in the sound pref pane. I do get items in System Profiler for speakers, mic & hp jack though. I also changed the kext to use the ALC885 codec instead of the ALC262 using the last codec you uploaded. I did remove HDAEnabler from the AppleHDA.kext and am loading that separately. Here are the new errors:

10/14/08 9:57:58 PM kernel HDAEnabler: Copyright (c) 2008 by Kabyl 
10/14/08 9:57:58 PM kernel HDAEnabler: 05/05/2008 Added SPAudio support:Taruga 
10/14/08 9:58:01 PM kernel Sound assertion "0 == converterWidget" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroupALC885.cpp" at line 178 goto Exit 
10/14/08 9:58:01 PM kernel Sound assertion "0 != err" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDACodecGeneric.cpp" at line 154 goto ExitError 
10/14/08 9:58:04 PM kernel Sound assertion "0 == converterWidget" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDAFunctionGroupALC885.cpp" at line 178 goto Exit 
10/14/08 9:58:04 PM kernel Sound assertion "0 != err" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDACodecGeneric.cpp" at line 154 goto ExitError
unfold Re: AppleHDA.kext progress by TooncesToonces, 1224047351|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
comatroncomatron 1224012998|%e %b %Y, %H:%M %Z|agohover

here the ioreg of my workin 1000h azalia audio line out:

http://www.mediafire.com/?sharekey=0d7f0c4797378ca4d2db6fb9a8902bda

unfold Re: AppleHDA.kext progress by comatroncomatron, 1224012998|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1224072432|%e %b %Y, %H:%M %Z|agohover

Just had a quick look at the new AppleHDA.kext update for the new macbooks and it looks like even more layouts in the plists and some of the previous layouts that appeared hardcoded into the AppleHDA binary - I think this suggests Apple are trying to make the kext more generic - this may well be good for us!

unfold Re: AppleHDA.kext progress by codeyecodeye, 1224072432|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1224078892|%e %b %Y, %H:%M %Z|agohover

comatron,
thanks for the ioreg data. The one interesting thing that I can see is that the ioreg we are using has a different IODeviceMemory 0xf9db8000 (vs 0xfffffffff7eb8000 in yours) - maybe the errors are occuring because the HDA binary is not accessing the realtek chip? When I get a sec I'll see what numbers pop up when I try to load the azalia kext.

unfold Re: AppleHDA.kext progress by codeyecodeye, 1224078892|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224093894|%e %b %Y, %H:%M %Z|agohover

codeye, I get the same 0xf7eb8000 for the memory address on my 1000H using the testing and other AppleHDA.kext that I have tried.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1224093894|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1224087407|%e %b %Y, %H:%M %Z|agohover

Yep tried Azalia kext and my ioregister is giving the same address as hdakext 0xF9db8000. The only other differences are IOInterruptspecifiers one byte different and some hdaenabler info. I will try loading a different version of HDAEnabler and see if this changes.

unfold Re: AppleHDA.kext progress by codeyecodeye, 1224087407|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224106288|%e %b %Y, %H:%M %Z|agohover

Just a few questions for you guys. HDAEnabler took the place of ALCInject as the preferred way to get config data injected. I assume that is because the AppleHDA.kext would not need to be edited so heavily as the config data appears to be injected by HDAEnabler. Am I correct? I grabbed a stock AppleHDA.kext off my macbook and before I did any edits at all it showed up exactly as all of the hacked ones did. No devices in Sound pref pane but shown in System Info and IOReg. Would it be better to blank out HDAEnabler or use ALCInject to see if the modded AppleHDA.kext changes are taking effect? I don't think any of the changes I have been making are actually getting done as it is.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1224106288|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1224151799|%e %b %Y, %H:%M %Z|agohover

Toonces,
Yep I think wishful tthinking on my part I used Reggie SE from xcode to look at the memory addresses for the eeepc901 and the MBP and they look similar suggesting that the device memory is correct and just varies depending on the machine - oh well. HDAEnabler will fill IOReg and Sys Info, but it seems with the 10.5.5 kexts that if the controller plist has an entry for the 269 it will override the info enabler "injects". In enabler you have to write in the actual pin complexes to fill the Ioreg correctly (I guess it puts them in directly) whereas the controller plist uses the pin configuration setup (ala vista) and "parses" them to derive the pin complex info that shows up in IOreg. On the MBP only the pin complexes that correspond to the active NodeID show up in Ioreg, wheras with our setup all of them show up - I tried just delivering the active pin complexes to mimic the MBP and it does show up correctly in Ioreg but no change in the errors that are spat out. I would be interested if anyone has a second hackintosh with sound working via controller plist edits to see what shows up in IOregister explorer - could be helpful.
I didn't think AppleHDA.kext would load with ALCInject beyond 10.5.1 - let me know if it does.
Might be worth grabbing the latest AppleHDA from the new macbook updates and give them a go.

unfold Re: AppleHDA.kext progress by codeyecodeye, 1224151799|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224176917|%e %b %Y, %H:%M %Z|agohover

Hi Codeye, I do have a second hack. A Dell 530 Quad Core w/ ALC888 audio that uses HDAEnabler. The biggest difference I noted was that in ioreg it shows up at a different address (no surprise there) and the acpi-path shows it as an AZAL device vs HDEF. I did try ALCInject with the AppleAzalia kext and I too got sound out of the HP jack just as comatron did. I did not look at it in ioreg at the time though to compare how it worked compared to what we have though. I also noticed the same thing about pin configs on my macbook. Only the active ones show up.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1224176917|%e %b %Y, %H:%M %Z|agohover
One step closer
snickersmdsnickersmd 1224155973|%e %b %Y, %H:%M %Z|agohover

Toonces and codeye:

I'm afraid you may be looking in the wrong place. For one, why are you going as low level as device memory? Studying the Intel HD architecture, you have to realize that any driver for an Intel HD Audio implementation does not deal directly with codec. It universally deals with the Intel chipset, and sends the command verbs through there.

Pin config is looking to be less and less relevant, as this is information that is extracted from the chip. Yet the verbs that are sent are not determined by this default configuration, but by the information presented in the layout and pathmap. How do I know this? Read your console error messages. It fails to "GetAmplifierGain". You were both right when your earlier findings pointed to the attempts to control an amplifier that wasn't there. Unfortunately from there you went off track, going back to pin configs. The pin configs deal with the routes for the sound devices. Again, if they were incorrect, the devices wouldn't load.

I revisited the amp settings instead. If you examine the pathmap, there is a field for an amp on the middle node of the group. However, the data sheet, as well as the linux codec dump, point to an amp on the source node, not the middle (mixer) node. The reason that amp setting is in the middle is because it was copied over from pathmap 16 for the ALC885, and I assumed that center value was where the amp is. Turns out our amp was not in the right place. I put the values for the amp in the right place, and all of a sudden, I can control volume, and all the error messages go away.

While you were looking at the pin configs, the Azalia ioreg dump provided by comatron gave me a crucial clue. Only one output device is created, and it had audio level (volume) control created. Ours didn't, until now. I was hoping that by obtaining volume control we could put this to bed, but no dice.

Now that our amps are in the right place, I have gone in and started to put the DSP settings back in for both inputs and outputs, and on the plus side, i have had no crashes, and all the error messages have gone away, except for one. It refers to "SetUnsolicited" as failing. If you search the ALC269 datasheet, this corresponds to the node that handles jack sense — the one which tells us when headphones are plugged in or not. The datasheet suggests that this has something to do with the GPIO setting — the MuteGPIO setting in the IntSpeakers layout still gives me a bit of grief. We need to find out what needs to be in this field. And if this experience has taught me anything, it's that we aren't missing any of the data. Each time I have found something "new" it has always been there in the codec dump, datasheet, and Intel specification. So we already have everything we need, we just need to know how it all fits together.

Now that the error messages are clearing, it means the pathmap and layout are coming even closer to completion. If, after all the errors are cleared, we still have no sounds, then I would go back into the pin configs. Until that point, I don't think you would get any results with messing with those as it seems that its the layout and pathmap are processed first and failure here stops the entire process.

Uploading my latest kext work to this thread.

unfold One step closer by snickersmdsnickersmd, 1224155973|%e %b %Y, %H:%M %Z|agohover
Re: One step closer
TooncesToonces 1224177748|%e %b %Y, %H:%M %Z|agohover

Hi Snickers, I don't think you should take the look into the device memory as looking in the wrong place. I just happened to have ioreg open when I saw codeye's post and told him what I saw on my 1000H. If he's using a 901 that could certainly account for the difference in device addresses but it's more just talking out loud about what we see since. I've actually been busy trying to understanding HDAEnabler and working on modifying a stock AppleHDA.kext rather than working on a previously hacked one. I did wander down that road for a bit without success (BTW, the hacked ALC268 kext I messed with was using the ALC885 codec) and the thing that strikes me is that in a stock AppleHDA.kext there are multiple layout entries for the same codecid. The hacked ones have all been trimmed down to just the 0 layout and I think may be why we are missing little bits. Yesterday I also broke the AppleHDA.kext out of the Macbook 2.1 update and started applying the patches to it. It's interesting that one of the 2 other layouts for the 885 have different pin cofigs listing. 1 keeps the originals and adds to it and the other one appears to just replace the pin config with just 2 pins. I don't know. I tried to upload the latest AppleHDA.kext from that update but I am not a member so I was unable to.

On another note. I have yet to be able to get any devices to show up in the sound pref pane. My permissions and ownership are correct but I still get nothing. I think it may actually be something else like SMBIOSEFI that is causing the issue though. Which SMBIOS are you running? I may try that and see if there is a difference.

Anyways, I grabbed the file you just uploaded and will start porting it over to the latest AppleHDA.kext from the update and see if I can get any further.

unfold Re: One step closer by TooncesToonces, 1224177748|%e %b %Y, %H:%M %Z|agohover
Re: One step closer
snickersmdsnickersmd 1224183024|%e %b %Y, %H:%M %Z|agohover

:) What I meant by "looking in the wrong place" wasn't where you were looking per se, not the device memory nor the extended looks into pin config or HDAEnabler. I was gently reminding you that you should correlate your tests with the error messages that show up in your console. Even if I have already looked at those things it's also important that as a community you have your own looks because you might catch something I haven't, and vice versa. Either way, we have to be systematic, so your testing should be targeted based on what we see in tangible evidence — our console error messages.

You should know that the kext that I put out was modified from stock. We have this level of progress simply because I decided that previously hacked kexts weren't getting us anywhere, and I had to start from scratch. By all means, continue your experiments if it helps you understand more about how this works, but be aware that the kexts I've been uploading are all direct modifications made by me, not working off a prepatch.

HDAEnabler only opens the door. It injects the basic configuration. I've seen cases on the netkas forum where they use it to inject even more than just the pin config and layout id, but this is only applicable with supported codecs where EFI strings can be used to completely configure the codec. That is not our case — hacking is necessary. For us, all HDAEnabler does is help us masquerade as Apple hardware. If you don't use it, the driver doesn't load because it doesn't find an Apple-built sound system. If you do, all you have is the driver loading. The next step is to configure it.

About "missing bits", I don't think that's the case. I have also wondered on this thread about why there are multiple entries for the same codec. However, all it could mean is that Apple uses the same codec configured slightly differently per model. I've also reverse engineered the cases where they load only two pin config values instead of all of them, etc. and it was mostly to change the state of a single device like the microphones. Now I have stated before that I tried to go with a "minimal change" approach, but the results are unpredictable with unexpected things loading to nothing loaded at all. For this reason I also decided to clear out the layouts as the hackers that came before us have.

As confusing as the kexts, their plists, combined with HDAEnabler can be, I don't think it has to be so very complex, making it jump from config to config. I mean, all my testing has shown that the make or break errors happen from what's in the pathmap and layout, so logically, we have to tweak that first. The thing to remember is that we can't just run tests based on whether or not we hear sound — that's the end goal — but systematically we have to clear each error one at a time to get to that goal.

Your other question, about my SMBIOS — I'm using the MacBook SMBIOS mentioned in the wiki. I am quite concerned that none of these kexts have yielded any devices for you. Are you sure you don't have any other hacked audio kexts loading? Did you clear your extensions cache? Using terminal, can you verify the ownership and permissions of each kext inside the AppleHDA main kext?

unfold Re: One step closer by snickersmdsnickersmd, 1224183024|%e %b %Y, %H:%M %Z|agohover
Re: One step closer
TooncesToonces 1224269679|%e %b %Y, %H:%M %Z|agohover

I replaced the SMBIOS with the macnub one and I still don't get anything in the sound prefpane. It's got to be some different kext I am loading as compared to your install. I used ideneb 1.3 as a starting point but used different SMBIOS and GMA950 kexts. I'm not opposed to reinstalling if it will get me closer to what you have. I have verified permissions on every file in the AppleHDA kext that you last uploaded. I clear the extensions cace, reboot with -f, everything I can think of and nothing shows in the audio pref pane for me. Ever. It's all there in the System profiler and in IOReg but nothing in the sound prefpane.

One thing I wonder, is the HDEF driver the correct one? I checked my other hack (ALC888) and it is using HDAEnabler and AppleHDA.kext but the acpi-path says it's using AZAL vs. HDEF. From what I could find, the IOPCIMatch may determine which it uses. MadTux posted this

Yes that is also correct, but in the first place don't put nothing in your Controler plist, remove your codec id from that , this one have IOPCIClassMatch set to AZAL AND HDEF support (0x04020000&0xFFFE0000 0x04030000&0xFFFE0000)
But later after U are shure your AppleHDA.kext is working, U can test various pinconfig inside,
But real deal would be to know how to calculate your real pinconfigdefault

The above was taken from this post: http://forum.insanelymac.com/index.php?s=&showtopic=127227&view=findpost&p=900258

But our AppleHDA only has the first IOPCIClassMatch. I don't know if he has them in the same order as listed but on my 1000H I see HDEF as the selected item (driver?). Sorry if I am not being clear or seem to be jumping around. I am following your path but not getting the same results yet so I am also comparing my working configs to what is in the kext you uploaded.

last edited on 1224269767|%e %b %Y, %H:%M %Z|agohover by Toonces + show more
unfold Re: One step closer by TooncesToonces, 1224269679|%e %b %Y, %H:%M %Z|agohover
Re: One step closer
snickersmdsnickersmd 1224286310|%e %b %Y, %H:%M %Z|agohover

Toonces,

You keep mentioning that you checked the permissions, but did you check ownership? You haven't mentioned ownership at all and it is an entirely different parameter aside from permissions. How are you checking permissions and ownership — via terminal I should hope. All files inside, especially "sub"kexts (inside AppleHDA.kext/Contents/Plugins, and the files inside those kexts) have to be owned by root:wheel. Use "ls -Rl" in the terminal to verify.

HDEF is the correct device. AZAL was used by the previous Azalia kext and should no longer be used. If you have an AZAL in your IOregistry, it may explain what is going on. Perhaps you have an Azalia installation that you are not aware of, placed by iDeneb perhaps? The only explanation for an AZAL device is that you have Azalia loading, so you must find and remove it. You need to get rid of any Azalia files, ALCInject, or HDAenabler that you may have. HDAenabler is needed for our purposes, but is already provided inside the AppleHDA.kext that I have made available.

Calculating correct pinconfig as per MadTux is only his process of taking it from the Linux codec dump, assuming that you do not have the pinconfigs from a Vista registry dump. Since we do, then his step here is not applicable to us.

I do not think this is an issue of configs for you, it is obvious the driver is simply not loading properly for you. Only explanation I can think of is either the sub-kexts do not have proper ownership and permissions, or you have a rogue Azalia installation that is seizing device control. If configs were an issue, you would at least see relevant console errors, to which you have attested that there are none.

You may also try to do what strongesthylian did, by pulling all the subkexts out and installing them directly into System/Library/Extensions using the kext helper, which also verifies permissions and ownership. If it works after that, you can put all the kexts back inside AppleHDA.kext's plugin directory where they belong.

unfold Re: One step closer by snickersmdsnickersmd, 1224286310|%e %b %Y, %H:%M %Z|agohover
Re: One step closer
TooncesToonces 1224290382|%e %b %Y, %H:%M %Z|agohover

by permissions I mean the ownership and permissions on the files is correct. Yes, I use terminal. I am very familiar with using OS X and unix in general as I am a sysadmin during the day (and a lot of nights too) with around 40 FreeBSD servers that I am soley responsible for. I have checked every single file and all sub files in the kext and they are all owned by root with the proper permissions (644 if I let diskutil repair them, 755 if I use OSXTools and I even tried 777 myself). There are no other audio kext installed.

As far as AZAL vs. HDEF. I'm not talking about the difference in using the older Azalia kext vs. the AppleHDA. Take a look at what I posted in my previous reply. It has nothing to do with the older kext. It has to do with AppleHDA.kext. MadTux wrote "this one have IOPCIClassMatch set to AZAL AND HDEF support (0x04020000&0xFFFE0000 0x04030000&0xFFFE0000)" This is referring to AppleHDA.kext. Here's the acpi-path entry from my other hack w/ALC888 using HDAEnabler.kext & AppleHDA.kext:

"IOACPIPlane:/_SB/PCI0@0/AZAL@1b0000"

and my 1000H running your AppleHDA.kext with ownership & permissions corrected:

"IOACPIPlane:/_SB/PCI0@0/HDEF@1b0000"

So my question is regarding whether or not the kext you're working on should have both IOPCIClassMatch addresses in them.

I'll give a try to pulling out the sub kext but I am thinking it must be a different kext loading than what you have. Video is my next one to check as I am using a different one that is from 10.5.5 that has been modified to work rather than the earlier one that is listed on the wiki.

unfold Re: One step closer by TooncesToonces, 1224290382|%e %b %Y, %H:%M %Z|agohover
Re: One step closer
snickersmdsnickersmd 1224293571|%e %b %Y, %H:%M %Z|agohover

Ah, okay. I of course only wanted to clarify what you meant, because between IT folks, a post that doesn't spell everything out either means you're abbreviating/shorthanding everything because you assume that we're all on the same level of understanding, or your post lacks detail because you don't really have a clue what you're talking about. Glad to know your experience puts you in the former category rather than the latter. ;)

About MadTux's statements, I don't think there's any need to add anything to the IOPCIClassMatch. I didn't touch the field, and yet it loads on my side. Older Intel HDA setups identified themselves as AZAL rather than HDEF, and I believe he is just stating that the kext should be able to recognize both. In the case of the ipis and AppleHDA, it should not show up as the AZAL, and there should be no need to adjust the class matching field.

Actually, I'm looking at the comatron ioreg dump now, where he is using the older Azalia kext but the identifier is still HDEF. I think the question as to whether or not the audio is seen as AZAL or HDEF depends on the Intel chipset being used (ICH6 vs ICH7, etc).

I think there was one earlier poster who stated that he reinstalled everything before he got the AppleHDA kext to load devices. I sure hope you don't need to do anything that drastic just to get to where we are. Somehow I doubt that it has anything to do with your video kexts, but I do agree that something must be different with your install compared with ours. I will eagerly await the results of you installing the subkexts separately.

unfold Re: One step closer by snickersmdsnickersmd, 1224293571|%e %b %Y, %H:%M %Z|agohover
Re: One step closer
TooncesToonces 1224309599|%e %b %Y, %H:%M %Z|agohover

I did a reload of ideneb and installed all of the recommended kext in the wiki and installed your kext. I made sure the ownership and permissions were correct and rebooted. Same thing as before. Nothing in the pref pane. I had some time to kill waiting for my son's band practice to get finished so I connected to the internet via BT to my BB phone and downloaded your latest kext again. I put the newly downloaded kext into a folder on the desktop and removed all of the sub-kexts, set ownership on every sub kext seperately (vs. doing sudo chown -R root:wheel AppleHDA.kext), put them all back in to AppleHDA with the exception of HDAEnabler then installed them with kext helper and rebooted with -v -f and the devices now show! I checked the ownership and permissions again once the devices showed and there is no difference in terminal as before. Very Strange. Maybe it is showing inherited ownership?? It's also possible that even though there's no error messages that the permissions were not setting correctly if it was done in the Extensions folder?

Anyways, off the bat, one thing I see missing is mute. It may be related to the GPIO but I think it's more likely a setting in the controller plist. Another place you can look at audio settings is in the Audio Midi Setup app in the utilities folder. I like to look at that app because it gives you the current volume per channel and just a little more info than the audio pref pane. Mute is also grayed out there as well. I have it on the charger now (no brightness control is brutal on the battery) and can finally start making adjustments that may actually do something! Woo Hoo

unfold Re: One step closer by TooncesToonces, 1224309599|%e %b %Y, %H:%M %Z|agohover
Re: One step closer
TooncesToonces 1224311329|%e %b %Y, %H:%M %Z|agohover

ok, now that I have something to work with I see that the pathmaps for audio out are missing. Under pathmapid 16 there are only 3 pathmaps and according to MadTux's directions, those are for mic, line in and spdif in. I am going to add the ones for int speakers (3) and headphones (4) and see if I can get those working. It looks like I may have to re-arrange the 0,1 &2 that are there so they line up with the correct functions. At the very least, I don't think speakers and headphones are supposed to be under the same pathmap node.

Edit: I managed to change the error message and boot to a blue screen :D

last edited on 1224313087|%e %b %Y, %H:%M %Z|agohover by Toonces + show more
unfold Re: One step closer by TooncesToonces, 1224311329|%e %b %Y, %H:%M %Z|agohover
Closer Still?
TooncesToonces 1224319259|%e %b %Y, %H:%M %Z|agohover

ok, I think I am getting much closer to having things correct. I compared your latest kext against my working hack codec and I added the output pathmaps and arranged them in the same order as my ALC888 hack has. According to what I see, my ALC888 has the same Int Speakers and Headphone pin configs as the ALC269. I also added a missing MuteGPIO in the layout for line in. I also changed the pin config order for IntSpeakers as it appears to be backwards in your kext. At least when I compare it to my ALC888 which has the same pin configs. I may have intspeakers and headphones reversed in the layout order but they are identical in the pathmap setup other than the actual pins in use so worst case I would get speakers by selecting headphones. I think I found the config for the headphone sense but cannot find where I saw it now :( It's getting late and I have to be up early to get my son to a competition. In my latest edit I messed something up with the volume control but everything else looks correct now and I have mute for my silent eee :). I wanted to upload the kext where I have it so someone could look it over and see where I might have made an error in entry but I cannot upload files here.

Very Basically, what I see is that the pathmaps correspond in the order listed in the layout inputs first then outputs. i.e. if the layout specifies LineIn then Mic and outputs specify Headphones then IntSpeakers then there should be 4 pathmaps in the order of LineIn,Mic,Headphones & IntSpeakers. That is where I have the kext at the moment. According to what I see in my ALC888's files, the Amp goes in item 1 on the inputs and item 2 on the outputs. Of course, that could be different for this chip but that's what I did since the pinouts for the outputs are identical. I think if I can figure out what I did to the volume control I may have a shot at working sound of some type. I also have to find my headphones that my other son "borrowed" so I can test that :D

snickers, if you'll make me a member I will upload what I've got. I hate to leave it like this because I feel I'm close but it's nearing 2AM and I have to be up in 4 hours (I did say most nights didn't I?)

Toonces

Edit: What pin is the hp sense on? Also, I didn't look. Is this kext using the ALC262 or ALC885 codec?

last edited on 1224319494|%e %b %Y, %H:%M %Z|agohover by Toonces + show more
unfold Closer Still? by TooncesToonces, 1224319259|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1224156182|%e %b %Y, %H:%M %Z|agohover

http://ipis-osx.wikidot.com/local--files/forum:thread/AppleHDA.kext%202.zip

Latest kext is here. Assignment is to find the right GPIO setting for the internal speakers and headphones.

Remember to change ownership and fix permissions after install.

last edited on 1224159322|%e %b %Y, %H:%M %Z|agohover by snickersmd + show more
unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1224156182|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
comatroncomatron 1224172431|%e %b %Y, %H:%M %Z|agohover

proud that i could help with my noobish skills … we´re moving forward thanx to your all hard work… keep it up !!! i thank you

unfold Re: AppleHDA.kext progress by comatroncomatron, 1224172431|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1224322512|%e %b %Y, %H:%M %Z|agohover

@Toonces:

Glad to hear things are finally accessible for you. A member invite has been sent as well.

Actually, I don't agree with MadTux/Taruga on their structure of the pathmap for the ALC269. If it actually makes things work for you to redo my pathmap work, then so be it. However, take into consideration the unique conditions of the ALC269.

Firstly, the ALC269 has no SPDIF in. At all. So it should not be reflected in the layout or the pathmap. Secondly, the ALC269 is weird in that it has 2 SPDIF outs. Neither is connected in the ipis, so they are also not reflected in the layout or pathmap.

Thirdly, the output pathmaps are not missing. I purposely nested them together as a function group. I am almost certain that the pathmap is an xml representation of audio function groups as defined in the Intel HD Audio Specification. In Vista, the Internal Speakers and Headphones are NOT presented as two separate devices. Recall that the Vista UAA Class driver reads the proper configuration directly from our codec, and correctly for that matter since it's the only operating system and configuration with perfect sound. It specifically has 1 output device, with two possible output paths (internal ATAPI and headphone external jack) and 2 input devices, specifically termed as Microphones and not as Mic and Line Out. To schematically represent these outputs as separate devices in the pathmap is incorrect. If you study the other stock pathmaps, you will see other examples in which several pin widgets are grouped together to form a single function group. Conclusion: Vista works, and sees 3 devices. Therefore, our pathmap should only have 3 devices, with one (the output) being a compound device made up of the speakers and headphones. Again, even if my ideas are theoretically sound, please continue your experiment as you see fit because who cares about matching the spec if your methodology arrives at audio finally working? ;)

I do respect MadTux (props!) for publishing a guide but I'm afraid I wouldn't use it as anything authoritative. His guide specifically reverses and explains the methods as observed by the operation of the Taruga patcher, with the addition of the pin config addons. (In other words, MadTux is more the preacher than he is the prophet) No other sub-group in the OSX86 scene that I have found in my searches for information has had to custom build a layout and pathmap from the ground up. Nor has any other group had to deal with such an esoteric codec chip that is way off of what Apple puts in their systems. If we were not standing on the cutting edge of AppleHDA hacking, then surely they would have had a working driver for us long ago. That is why you will find plenty of stuff that is in that guide that I chose to do differently. I suggest you read the Microsoft UAA docs and the Intel HD Audio specification as a better reference than the MadTux guide.

More evidence that ours is a truly custom pathmap and layout: you pointed out that in the ALC888, the amp is on item 1 in the inputs and item 2 in the outputs. This is based on an assumption that the amp location is static and comparable to the stock ALC885 plist. As you will see from my previous posts, I have specifically found that item 2 is the wrong place for the amp for our setup. Absolute true setup will not be found in a guide to another chipset nor the stock plist; the key will be in our own Linux codec dump, specific to our audio chipset.

I am impressed that you have found working MuteGPIO settings. They were missing on purpose, since every value I had plugged in by copying from stock managed to stall my boot and give me a crapload of error messages. It was my assignment to the group to try to derive these settings.

To derive the proper node for the pin sense, refer to the codec graph in the wiki, the Linux codec dump, and the ALC269 datasheet.

One thing you might want to play with, the source path nodes for Internal Speakers and Headphones may need to be switched around. Again, refer to codec graph to see why I couldn't be sure about which way the sound was going. The testing kext I've uploaded uses the routines for the 262. I encourage you to test using patches for the 885 instead, to see if it makes a difference.

last edited on 1224322908|%e %b %Y, %H:%M %Z|agohover by snickersmd + show more
unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1224322512|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224376233|%e %b %Y, %H:%M %Z|agohover

ok, I have played around with different configurations and am not really making much headway. The only error I am at now has to do with pin sense which should absolutely not affect speakers and headphones. I decided to tackle the pin configs using the knowledgebase post over on insanelymac by The King. I am also using the intel docs to guide me. I did not use a script to do the linux codec. I am following it node by node and doing it by hand so that I know exactly what is there. I've also asked for a dump using the latest eee ubuntu with all of the audio fixes by adamm over on the eee forums so I can verify that the codec I am looking at is the same as there have been fixes that may have changed the output some.

LINUX
01171CF0 01171D11 01171E11 01171F41 - DA=F, Seq=0. Color=Black, Presence=No. DD=Speaker, CT= 1/8 Jack. PC=Fixed Function, Location=External Rear.
01271C20 01271D09 01271EA3 01271F99 - DA=2, Seq=0. Color=Unk, Presence=No. DD=Mic In, CT=ATAPI Internal. PC=Fixed Function, Location=ATAPI Internal.
01471C10 01471D01 01471E13 01471F99 - DA=1, Seq=0. Color=Unk, Presence=No. DD=Speaker, CT=ATAPI Internal. PC=Fixed Function, Location=ATAPI Internal.
01571C1F 01571D40 01571E21 01571F01 - DA=1, Seq=F. Color=Green, Presence=Yes. DD=HP Out, CT=1/8 Jack. PC=Jack, Location=External Rear.
01671CF0 01671D11 01671E11 01671F41 - DA=F, Seq=0. Color=Black, Presence=No. DD=Speaker, CT=1/8 Jack. PC=Fixed Function, Location=External Rear.
01871C30 01871D98 01871EA1 01871F01 - DA=3, Seq=0. Color=Pink, Presence=No. DD=Digital Other In, CT=1/8 Jack. PC=Jack, Location=External Rear.
01971CF0 01971D11 01971E11 01971F41 - DA=F, Seq=0. Color=Black, Presence=No. DD=Speaker, CT=1/8 Jack. PC=Fixed Function, Location=External Rear.
01A71CF0 01A71D11 01A71E11 01A71F41 - DA=F, Seq=0. Color=Black, Presence=No. DD=Speaker, CT=1/8 Jack. PC=Fixed Function, Location=External Rear.
01B71CF0 01B71D11 01B71E11 01B71F41 - DA=F, Seq=0. Color=Black, Presence=No. DD=Speaker, CT=1/8 Jack. PC=Fixed Function, Location=External Rear.
01D71C2D 01D71D82 01D71E05 01D71F40 - DA=2, Seq=D. Color=Purple, Presence=Yes. DD=Line Out, CT=Optical. PC=No Physical Connection, Location=NA
01E71CF0 01E71D11 01E71E11 01E71F41 - DA=F, Seq=0. Color=Black, Presence=No. DD=Speaker, CT=1/8 Jack. PC=Fixed Function, Location=External Rear.

Edit: Just finished decoding the dump. Here are the definitions.

BIG EDIT: I originally had a comparison to a dump from Vista but after I looked closer and double checked, I was using the wrong vista dump which was different.

last edited on 1224388796|%e %b %Y, %H:%M %Z|agohover by Toonces + show more
unfold Re: AppleHDA.kext progress by TooncesToonces, 1224376233|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224399575|%e %b %Y, %H:%M %Z|agohover

Ok, So I've had a lot of time on my hands today and think I might actually be caught up to where you are Snickers :) After getting the second linux dump from a 1000H and hand coding it, I am confident that the pin configs are right. I still don't think they're supposed to be nested though. One thing that caught my eye in the Intel specs is regarding the DA & Seq numbers. Basically it says that even though they have the same DA but a different Seq, the items should still be represented individually. I don't know if that applies directly to nesting the Speaker and HP outputs but I have a feeling that there should be 4 devices and not 3. When I added in a placeholder item I got all kinds of ugly errors but when I have it split out to 4 devices I get just the unsolicited error which is the HP Out Sense.

I have the ALC269 & ALC268 block diagrams and they are sooooo similar it's not funny. Hell, the outputs of the ALC268 speakers are even amplified just not a class D amp that makes the 1000H sound SO much better than the laptops that use the ALC268. I do see a few differences which is where it seems you have made an educated guess as to where the amps go ;) From the block diagrams it's fairly obvious they moved the amps for input from the middle to the last node. I was going to say that I thought it was strange that HP Jack doesn't work because it looks functionally unchanged but I see now that the mixer stage changed from a single node at node 0x10 to 2 seperate mixers at 0xD & 0xC. Maybe that's where we nesting is needed??? Anyways, I am going to keep playing around and see what I come up with. Maybe now that I have the diagrams I can figure out where stuff goes a little easier.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1224399575|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
snickersmdsnickersmd 1224403817|%e %b %Y, %H:%M %Z|agohover

Glad to hear it. Funny how a little over a week ago I was trying to round up people to help out from a common starting point, only to find that so many people had a hard time with the kext I put out just to get to that starting point. Now that you see what I see, we will be able to distribute our efforts more effectively.

My argument for 3 devices instead of four comes from Vista. I am dual booting Vista and I can fetch screen shots of their Audio properties pages that should definitively show how the devices should be mapped out, at least logically. (But it will have to come later, as I am running something now that won't let me reboot) Unfortunately, the pathmap file is a creation of Apple, and without documentation it is a matter of guessing the way that their file layout matches up with the specification.

If you set the pathmap up for four devices instead of three, do you still have a single output device that switches over depending on whether or not the headphones are in? Or do you have both Speakers and Headphones represented in the Sound Preferences Pane? According to Vista, you should not have two output devices, just one. If your separate representation in the pathmap ends up yielding two separate output devices, it's simply wrong… unless it works.

(Funny that I have to base correctness on what Vista does, ugh. Unfortunately, Microsoft did write the UAA side of the Intel HD Spec, and since the ipis' ALC269 is Windows Logo compliant, my contention is that we are getting AppleHDA.kext to plug into what was intended for the UAA Class Driver.)

I'm curious about these error messages you say you get when you attempt to nest a placeholder device. If the nesting is wrong, then how come on my side, the devices load up fine AND I only have one error message, the same Unsolicited message you're seeing. Either you're doing something wrong, or I am, or perhaps the whole discussion is simply moot: it's possible that the AppleHDA.kext is not as strict with pathmaps as we think it is. Let's upload console message logs in their entirety, shall we?

10/19/08 12:52:52 AM kernel HDAEnabler: Copyright (c) 2008 by Kabyl 
10/19/08 12:52:52 AM kernel HDAEnabler: 05/05/2008 Added SPAudio support:Taruga 
10/19/08 12:52:54 AM kernel Sound assertion "0 != widget->setUnsolicited ( true )" failed in "/SourceCache/AppleHDA/AppleHDA-157.1.24/AppleHDA/AppleHDACodecGeneric.cpp" at line 830 goto handler

By block diagrams, do you mean codec graph? Or do you mean the diagrams in the datasheets? Because a codec graph taken from my own ipis has always been downloadable from the wiki. My assumptions as to where the amps are come from both the error messages that I got (or didn't get, after putting them in the right place) and by reading the Linux codec dump.

Much of my understanding came from comparing the stock pathmap for the ALC885 to a Linux codec graph of the same codec, where you can diagrammatically see the connections from node to node.

unfold Re: AppleHDA.kext progress by snickersmdsnickersmd, 1224403817|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224446265|%e %b %Y, %H:%M %Z|agohover

I think it's a moot point of 3 vs. 4 devices because it looks like both work. When I setup for 4 devices I get 2 output devices to choose from in the sound pref pane. When I added in a placeholder item it either pushes the devices out of order and there are errors because the devices don't line up or if I add it at the end, it errors because there's no device in the layout to match. I just looked at my macbook and it's nested there too and there is only the 1 device in the sound pref pane so nesting is probably the way it was intended to be. I didn't get the member invite so I can't upload but when I can, I can upload an ioreg dump of the macbook if it will help. If you have an unmodified AppleHDA.kext around, take a look at layout id 22 which goes with pathmap 1 (depending on the version of plist editor you are using it could be pathmap 0). That is what my macbook is using. It's using the stac codec that I think I read that some of the Apple notebooks use the stac codec even though the chip is an ALC. No idea really but if you look at that layout & pathmap you can see the nesting and that there's more than 3 nodes in a given step than just 3. That may be what is missing for us. We have 3 nodes defined for HP Out as an example but it could be more. Maybe for the pin detect or the second pcm out line that also feeds the speakers. The codec graph shows those as connected lines but we are only using 1 of 2 possible paths for output sound. look at those block diagrams and you'll see what I am talking about

I have all of the items you uploaded and have looked at all of them. I used the codec graph to look at how the codec says it's hooked up and then the block diagrams from the ALC269 Datasheet. I grabbed the datasheet for the ALC268 to use as a comparison and you can see exactly where things have changed. Of course, that is providing that Realtek accurately depicts their chips :). The block diagrams show the node id too so it's a good reference. One addition I see from the block diagrams is the equalizer in the speaker output in node 0x14.

About plist editor. If you are using version 2, numbering starts at 0. If you are using version 3 that comes with the latest xcode download, numbering starts at 1. version 3 lets you do nice things like cut and paste items between nodes. The numbering difference threw me off at first but if you keep that in mind, version 3 is the easiest to use to copy things like the Amp between nodes. I didn't see any of that ability with version 2.

I'll try to post my errors but am not always able to depending on where I am working and whether or not I can access the internet. I carry my 1000H pretty much everywhere and work on it when I have a few moments and may not be able to post the errors. The error you posted above is the same one I get with 3 or 4 devices if they're laid out so the items match up.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1224446265|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
codeyecodeye 1224468613|%e %b %Y, %H:%M %Z|agohover

Hi guys,
Just an update on what I'm doing at present. The problem with what we are up to as I see it is that despite loading the drivers and apparently having access to volume controls nothing is happening. But its kind of an all or none outcome.
In linux they have the hda-verb utility for troubleshooting.
On the mac we can do the same thing - but in a more cumbersome way. Using reggie from xcode you can easily manipulate memory and it dynamically updates. Codec verbs can be sent directly to the realtek chip at address 0x60 offset from iodevice memory - 0xf9db8000 on the 901. If you then set register 0x68 to 1 it passes the command and displays the result in 0x64. I've only just started this but it will probably be useful (it already suggests that the correct node for the hp is probably 12 and not 13). It would likely be very insightful to see how comatrons chip is setup for azalia hp (as this is working) versus how it is set for hda hp.

last edited on 1224469278|%e %b %Y, %H:%M %Z|agohover by codeye + show more
unfold Re: AppleHDA.kext progress by codeyecodeye, 1224468613|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224471634|%e %b %Y, %H:%M %Z|agohover

Hi Codeye, That sounds great. I think you'll find the block diagram from the ALC269 datasheet to be very helpful as well. You can grab it here: ftp://66.104.77.130/pc/audio/ALC269_DataSheet_1.1.pdf

Looking at the datasheet block diagram, it shows both node 0xC & 0xD are connected to the HP Out so it's very possible that either could be the source for the HP though node 0xC (12) is listed as LOUT1 and may be the primary path? I haven't done much today but plan on it during the week. I think that Snickers nested pathmaps are probably the correct way to go so I'll be grabbing his latest kext again since I hacked the hell out of the one I was playing with in learning more of what is going on.

unfold Re: AppleHDA.kext progress by TooncesToonces, 1224471634|%e %b %Y, %H:%M %Z|agohover
Re: AppleHDA.kext progress
TooncesToonces 1224525006|%e %b %Y, %H:%M %Z|agohover

@codeye, Could you write a quick and dirty tutorial on exactly what you do with reggie? I think I understand but want to be sure. If you could use querying for EAPD as an example it would help a lot. I added the verbs to turn EAPD on in the pin configs and it shows up in IOReg but I wonder if it's being passed since it's a new verb and god knows what Apple's driver does with it :)

Looking at the input side, 0xc is definitely the connection in use (it's the default) which would make the nodes like this:

IntSpeakers: 0x02 (2), 0x0c (12), 0x14 (20)
HP Jack: 0x02 (2), 0x0c (12), 0x15 (21)

With the nested pathmap Snickers has that switches 20 & 21 it will use the correct output based on the HP being plugged in.

As far as Azalia, it should be fairly easy to check. AppleAzaliaAudio.kext edits are minor and it works without HDAEnabler. Just remove the 2 HDA kext and install Azalia then we can run through what it is doing. My guess is that it uses the HP jack because that is a default on power up. The unfortuante thing with Azalia is there's not much to edit. If I knew where I could change it from HP to speakers I would make that edit and at least have 1 audio out until this damn AppleHDA is my bitch :D

last edited on 1224525463|%e %b %Y, %H:%M %Z|agohover by Toonces + show more