Jump to content

Audio driver for Realtek HD Audio Hardware? [Testing thread]


Recommended Posts

And if you comment out the two first Codec_Reset lines (;;$0017FF00)?

If no difference, change $00D70720 back to $00D70740 and report (still with ;;$0017FF00 - two times!).

There is no mute option for node $00D, that's why I changed direction to input (70720) to try if that has same result, instead of output as normally (707040)

Edited by deomsh
Typo's + addition
Link to comment
Share on other sites

And if you go back to earlier version of HDAICOUT.HDA below (cleaned version of Saturday at 12:23 AM, but with $00D70720)? No need to edit HDACFG.INI again, widgets can stay on $10.

$00170500;Power up!
$01070500;Power up!

If still everything muted, activate line with $00D70740 and comment-out ;;$00D70720 and report. No files needed.

Link to comment
Share on other sites

This one seems to work! I have audio from the headphones with speakers muted. If I unplug them while Welcom98 plays, the speakers don't unmute, but the audio will continue after the headphones are plugged back in. If I boot into 98 without headphones plugged in, I get a black screen.

Link to comment
Share on other sites

Good. :thumbup

Strange about the need of having a jack plugged in during boot in this case. Good to know! Set Verb $00D70720 is the only way I saw with HDA2.DLL in combination with STAC9205. It's not an official way, just my 'hack'.

I believe the only difference with the Set Verbs sent by HDA2.DLL as can be seen in HDACFG.INI is Set Verb $00170500;Power up! (apart form settings of $00A and $00D). This codec has only Power saving Verbs (in the playback-mode) for the DAC's and the main Audio Function Group (AFG) node $001.

Maybe $00A70100 and $00D70100 can be commented out, Port A and Port D seems to be connected with DAC0 already after Codec_Reset. You can try.

This will be the final working version of HDAICOUT.HDA in case of Dell D830 (probably D630 too), with VolumeWidget in HDACFG.INI set to $10 for use with WAVEOUT.EXE. I can't found anything that mutes the speaker after the headphone-jack is inserted (with this driver).

It would be of interest what happens with the muted speaker while still in Windows if you change $00D70720 back to $00D70740 (RUN => Notepad HDAICOUT.HDA should work). Probably no difference?

Otherwise you will have a choice before starting Windows. Can be easily automated in a batch-file or in AUTOEXEC.BAT with choice, or with menu's in CONFIG.SYS/ AUTOEXEC.BAT. With purpose to copy 'right' HDAICOUT.HDA to %windir% according to chosen speaker-mode.


Link to comment
Share on other sites

13 minutes ago, deomsh said:

This will be the final working version of HDAICOUT.HDA in case of Dell D830 (probably D630 too), with VolumeWidget in HDACFG.INI set to $10 for use with WAVEOUT.EXE. I can't found anything that mutes the speaker after the headphone-jack is inserted (with this driver).

Very understandable. Should I change the other Widget values?

As for the other things, commenting $00A70100 and $00D70100 would result in a black screen, and changing $00D70720 back to $00D70740 did not make a difference.

The choice tool is a very good idea, so I will have to try that! Thank you for your assistance :D

Link to comment
Share on other sites

Your welcome. If you are experiencing problems with 'choice', don't hesitate asking for help.


I About the other Widget-values in HDACFG.INI:

1) you can try SleepingWiget=$01 and commenting out $00170500;Power up! to ;;$00170500;Power up! (or just deleting the whole line). But from earlier HDAICIN.TXT we saw:

sent $001F0500; got $00000033
sent $00170500; got $00000000
sent $001F0500; got $00000000


sent $010F0500; got $00000033
sent $01070500; got $00000000
sent $010F0500; got $00000000

So Codec_Reset + setting the AFG-widget to full power has NO effect on power state of DAC0 (last '00' is highest power-state, '33' lowest power-state implemented for STAC9205). From the datasheet (p.40) it's not clear to me what 'referenced node' means, in this respect.

Watler from 'Watlers World', the programmer of HDA2DLL, didn't include sending 'standard' $00170500. Although it's clearly needed in case of STAC9205. No offence to Watler of course, he did a great job! :yes:

2) OutputWidget=$10 is 'Good'. Overruled by Verbs in latest D830-version HDAICOUT.HDA anyway.

3) VolumeWidget=$10: needed for WAVEOUT.EXE, as found earlier.


II About $00A70100;AC_VERB_Set_Connection_Select_Control AND $00D70100;AC_VERB_Set_Connection_Select_Control in HDAICOUT.HDA:
I do not understand the 'why' of the 'black screen' you described. In earlier HDAICIN.TXT Verb 701 didn't change anything, so why it's needed in HDAICOUT.HDA?

BTW relationship Codec <=> External Amplifier is not clear to me, maybe D830 'expects' *some* electrical output from the codec?

Edited by deomsh
Link to comment
Share on other sites

Thank you, I may try using lower power settings for the CHOICE tool.

It's working fine so far. I have it ask for HEADPHONES, SPEAKER, or NONE. Based on the user's choice, it copies the appropriate HDAICOUT.HDA to C:\WINDOWS. I don't have any problems with CHOICE, but if you know a way to detect which HDAICOUT.HDA is present in C:\WINDOWS, that would be helpful. I looked at CF, but I don't think I can use it in an IF statement.

Link to comment
Share on other sites

  • 1 month later...
  • 3 months later...


Hi again, after a long pause!

I've now run into a problem with my HD audio installation, cause by a hardware change.
For reasons I won't bore you with, I have swapped over my two graphics cards, and although this should only have affected the PCI-E bus, it seems to have caused a problem with the Windows 98 sound. Everything is still fine on Windows XP and Windows 10.

What's happening is that Windows 98 is freezing now on startup, it gets to the desktop OK, but then there's the usual thump from the speakers when the driver loads, then the system permanently freezes completely. The only way I can get it to boot now is by commenting out the "wavehda=hda2.dll" line in the [Drivers} section of system.ini.

So far I have found no answer to this, I guess it's some sort of low-level memory issue, but why it should have been affected by swapping the graphics cards is a mystery to me!
Any suggestions for troubleshooting this?

Cheers, Dave.

Link to comment
Share on other sites

Looks like a memory issue.

If you use Win98SE: did you use HDATSR.EXE in AUTOEXEC.BAT?

If HDATSR gives no relief, or otherwise, you can mess around with MaxPhysPage in SYSTEM.INI and PCIHI/ PCILO entrances in HDACFG.INI, to give HDA2.DLL a few MB's not available to Windows


There is an (WinME-related) example in the thread, links  below, based on 1GB max Windows' memory.


If HDATSR is of no help, try II. If it's working we can always try to reach you max memory (if I remember well about 3GB with RLoew's patches)

Edited by deomsh
Typo & addition
Link to comment
Share on other sites

Thanks for the quick response @deomsh!

Yes, I'm sure it's a memory problem, but it certainly isn't RAM, with RLoew's patches I have over 3GB available!
I tried commenting HDATSR.EXE out of autoexec.bat, and reinstated hda2.dll in system.ini.
Bad move! The system didn't freeze this time, it booted up but said it couldn't read the registry and produced the most dreadful mess where a lot of Windows 98 seemed to have reverted to "out of the box" condition, accompanied by a huge number of error popups from some of the installed programs!
Fortunately I managed to restore another backed up version of the system files using SCANREG so things are back to as they were before.

So, it looks as if with hda2.dll and HDATSR.EXE loading, the system just freezes on the desktop, if I take HDATSR.EXE out of the equation, it looks as if hda2.dll possibly leaves no memory space left to load the registry!

Any suggestions gratefully received!

Link to comment
Share on other sites

Dangerous experiments!

Personally I always backup my entire Windows' folder, or at least system files with ERU (a tool included with Win95, I prefer this MS-tool above SCANREG - still available as ERUZIP.EXE).

Removing HDATSR.EXE only means that the memory buffer needed by HDA2.DLL is not defined and not protected if Windows is started.

In the link I gave you, the procedure for WinME is described. Actual RAM is not important, just the amount 'visible' to Windows, and the location of the buffer.

Availaible Windows memory can be limited with MaxPhysPage in SYSTEM.INI, the location of the buffer with PCIHI/ PCILO in HDACFG.INI.

In the sparse documentation of HDA2.DLL Watler, who programmed HDA2.DLL, used the phrase 'outside the reach of Windows ', if I remember well.

I do not use WinME, the only instance of the procedure to relocate the buffer is described in the thread I linked to.

So you can try first following:


2) Add to SYSTEM.INI [386Enh] MaxPhysPage=3E6FF (if the entrance already exists with a higher value, change to 3E6FF. 

3) Add to HDACFG.INI


BTW this will limit Windows' memory to a value just below 1GB. But if this approach is working on your system, I can make calculations for a value around 3GB. 


Edited by deomsh
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    • No registered users viewing this page.

  • Create New...