Jump to content

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


Recommended Posts

Sorry, I forgot VolumeWidget=$14 is the default setting of HDACFG.INI

But how can you set only the speaker-volume to zero without losing headphones? Or is there an independent line-out jack? Or otherwise?

Link to comment
Share on other sites


Commenting these out seems to crash the driver on each boot with an incomplete white-block error message before the desktop can finish loading, with no popping unless VolumeWidget is set to $14.

Uninstalling and reinstalling fixed the issue.

Edited by beansmuggler
Link to comment
Share on other sites

Strange :dubbio:

If you like, I can try to write a more specific HDAICOUT.HDA for your codec. Will be a lengthy excercise, because first the codec have to be read-out with Get-Verbs and output in HDAICIN.TXT, for comparison with the datasheet. Maybe things will become better, likely not.

If you are happy with your current results there is no need to go into this heavy stuff, which will need some testing on your side of course. Although you can stop every time you like.

Link to comment
Share on other sites

You have the real spirit!

First I rearranged HDAICOUT.HDA to the signal path of STAC9205, according to the datasheet. Only many GET-Verbs added, to retrieve information.

$010=DAC0
$00A=Port A
$00D=Port D
$014=MonoOut
$015=MonoOutMix
$024=ExtVolume

Copy code below to an empty HDAICOUT.HDA (always backup previous version first) and set VolumeWidget to $10

Begin
$0017FF00; CODEC RESET
$0017FF00; CODEC RESET
$001F000F;AC_PAR_POWER_STATE
$001F0500;AC_VERB_GET_POWER_STATE
$00170500;Power up!
$001F0500;AC_VERB_GET_POWER_STATE
End
Begin
$001F0000;get_gpio_caps
$001F1500;get_gpio
$001F1600;get_gpio_en
$001F1700;get_gpio_dir
$001F1800;get_gpio_wake
$001F1900;get_gpio_unsol
$001F1A00;get_gpio_sticky
$001FEE00;get_gpio_invert
$001FEF00;get_gpio_drive
Begin
$010A0000;AC_VERB_GET_Converter_FORMAT
$01024011;AC_VERB_SET_Converter_FORMAT_44.1kHz_16-bits
$010A0000;AC_VERB_GET_Converter_FORMAT
$010B8000;AC_VERB_GET_AMP_GAIN_MUTE;status_output_right
$0103907F;AC_VERB_SET_AMP_GAIN_MUTE;max_vol_right
$010B8000;AC_VERB_GET_AMP_GAIN_MUTE;status_output_right
$010BA000;AC_VERB_GET_AMP_GAIN_MUTE;status_output_left
$0103A07F;AC_VERB_SET_AMP_GAIN_MUTE;max_vol_left
$010BA000;AC_VERB_GET_AMP_GAIN_MUTE;status_output_left
$010F0009;WCap
$010F0500;AC_VERB_GET_POWER_STATE
$01070500;Power up!
$010F0500;AC_VERB_GET_POWER_STATE
$010F0600;AC_VERB_GET_CHANNEL_STREAMID
$010F0610;AC_VERB_GET_CHANNEL_STREAMID_1
$01070610;AC_VERB_SET_CHANNEL_STREAMID_1
$010F0600;AC_VERB_GET_CHANNEL_STREAMID
$010F0610;AC_VERB_GET_CHANNEL_STREAMID_1
End
Begin
$00AF0009;WCap
$00AF000C;PinCap
$00AF000E;ConnLen
$00AF0200;ConnList
$00AF0100;AC_VERB_Get_Connection_Select_Control
$00A70100;AC_VERB_Set_Connection_Select_Control
$00AF0100;AC_VERB_Get_Connection_Select_Control
$00AF0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$00A70740;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable
$00AF0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$00AF0800;UnsolResp
$00AF0900;Get_Pin_Sense;
$00AF1C00;PinConfig
End
Begin
$00DF0009;WCap
$00DF000C;PinCap
$00DF000E;ConnLen
$00DF0200;ConnList
$00DF0100;AC_VERB_Get_Connection_Select_Control
$00D70100;AC_VERB_Set_Connection_Select_Control
$00DF0100;AC_VERB_Get_Connection_Select_Control
$00DF0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$00D70740;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable
$00DF0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$00DF0800;UnsolResp
$00DF0900;Get_Pin_Sense;
$00DF1C00;PinConfig
End
Begin
$014BA000;AC_VERB_GET_AMP_GAIN_MUTE;status_output_left
$0143A07F;AC_VERB_SET_AMP_GAIN_MUTE;max_vol_left
$014BA000;AC_VERB_GET_AMP_GAIN_MUTE;status_output_left
$014F0009;WCap
$014F000C;PinCap
$014F0012;OutAmpCap
$014F000E;ConnLen
$014F0200;ConnLst
$014F0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$01470740;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable
$014F0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$014F1C00;PinConfig
End
Begin
$015F0009;WCap
$015F000E;ConnLen
$015F0200;ConnList
End
Begin
$024F0009;WCap
$024F0013;KnobCap
$024F000E;ConnLen
$024F0200;ConnList
$024F0800;UnsolResp
$024F0F00;KnobCtl
$024FE000;KnobVSR
End

I will need HDAICIN.TXT and HDALOG.TXT

 

Link to comment
Share on other sites

Can you repeat the procedure? This time with headphone jack inserted. Further with the First two Codec_Reset lines commented out (maybe with two semi-colon's?). Good idea to make changes in Safe mode!

I only need HDAICIN.TXT this time.

After booting try if there is any response from your speaker if you pull out the jack/ insert again while playing an audio-file.

Link to comment
Share on other sites

Applied the commenting to HDAICOUT. By the way, did you mean two semicolons like ;;this, or just one per line like ;this? I did the latter.

First boot had a white error box on desktop, but that's only because I forgot to turn my processor settings back to their lowest values for 98, haha

The second attempt (with proper BIOS settings) worked well, and I heard sound from both the speaker and the headphones. I went into the Windows\Media folder and played The Microsoft Sound, which played smoothly from both the speakers and the headphones, but my computer froze right before the sound could finish playing. After shutting down and booting back up, I was stuck on a black screen.

Going into Safe Mode and then Normal mode fixed it. I tried the Welcom98 song and it played to completion. The speaker played music with no audible pops when I unplugged and replugged the headphones during play.

HDAICIN.TXT

Link to comment
Share on other sites

I ment two semi-colons to be sure ';;' Nevermind, one should work too.

No further difference without CODEC_RESET. But headphone was detected on $00A with Verb F09: $FFFFFFFF instead $7FFFFFFF before.

I found an electric diagram of Dell D830 (dell_latitude_d830_discrete_256mb_quanta_jm7b__100.pdf). It seems internal MonoOut is unused ($014 is  unconnected) Instead LineOut (Port D = 0x00D) is wired to inputs of an External Stereo Amplifier. Headphone on Port A too. But there is some Sense A back-signaling. There are mute-possibilities too, but not directly (as you experienced already).

Next is trying a minimal number of Set_Verbs and muting the Speaker. Please set all three Widget-entries in HDACFG.INI to $10 and try if Speaker is muted, while headphones are active. With following HDAICOUT.HDA

Begin
$0017FF00; CODEC RESET
$0017FF00; CODEC RESET
$001F0800;Get_Unsol_Resp
End
Begin
$00AF0100;AC_VERB_Get_Connection_Select_Control
$00A70100;AC_VERB_Set_Connection_Select_Control
$00AF0100;AC_VERB_Get_Connection_Select_Control
$00AF0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$00A70740;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable
$00AF0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$00AF0900;Get_Pin_Sense;
$00AF0800;Get_Unsol_Resp
End
Begin
$00DF0100;AC_VERB_Get_Connection_Select_Control
$00D70100;AC_VERB_Set_Connection_Select_Control
$00DF0100;AC_VERB_Get_Connection_Select_Control
$00DF0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$00D70720;AC_VERB_SET_PIN_WIDGET_CONTROL;in_enable
$00DF0700;AC_VERB_GET_PIN_WIDGET_CONTROL;out_status
$00DF0800;Get_Unsol_Resp
End


BTW This time I will need HDALOG.TXT and HDAICIN.TXT both.

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...