Jump to content

Need help getting High Definition Audio working on Windows 98 on my Thinkpad T420


Recommended Posts

Posted (edited)

Hello!

I  have recently tried downloaing and installing WaltersWorld drivers for  the  HDA controllers, but alas I am greeted  with the  sound of  silence.

Sadly Im not hearing any pops when it is loading but  when I  play a system  audio file  in sounds  the play button doesnt freeze.

I would love if someone  could  point me in  the right direction!

 

Thank you

 

Edited by awhooley

Posted (edited)

I will take a look.

But first I need the files:

HDACFG.INI (or .txt), HDALOG.TXT and if available HDAICIN.TXT. They are/ should be in your Windows-folder.

So please upload!

Edited by deomsh
typo
Posted (edited)

You seem to have a Conexant codec, sadly no complete datasheet available.

According to your HDAICIN.TXT you used a wrong version of HDAICOUT.HDA, verbs are all starting with '$2'.

Your HDACFG.INI tells us that 'CODEC Index=$0' so all verbs should start with '$0'.

In Linux-sources I found on T420 External Amplifier Power Down (EAPD) can be a problem, so you can try following HDAICOUT.HDA:

HDAICOUT (EAPD enabled & CODEC Index 0 in HDACFG.INI).ZIP

If you hear still nothing, you can also try setting 'pcipatchB=$7900' (without quotes) in your HDACFG.INI - see: https://msfn.org/board/topic/178295-audio-driver-for-realtek-hd-audio-hardware-testing-thread/?do=findComment&comment=1242464

Edited by deomsh
Addition
Posted

Thanks for the reply!, I’ll be home shortly and I’ll have a go and see if it works. Thanks again! 

Posted

I tried it once again with the new HDAICOUT file, and I added the value to the pcpatchB in  the HDACFG.ini file.

Unfortunatly it still  is silent :(

I have attached the same files again, in case it  gives new information this time.

 

 

 

HDAICIN.TXT HDAcfg.ini HDALOG.TXT

Posted

That's sad. I didn't see anything new in your files,  except 'pcipatchB=$7900' of course.

I found some information regarding the Conexant '506e' codec (will be cx20590 or cx20672). It seems the Output widgets are $10 or $11 (converting digital to analog audio) and Volume widgets are the same numbers. Maximum volume seems to be 0x4a.  Between the PIN-complexes and the Output widgets there does not seem to be a Mixer, default connections are to Output widget $10. The standard headphone widget is probably $19 (with 0xC0: OUT HP), line-out $1A and speaker $1D (with 0x40: OUT; takes EAPD). But of course I can be mistaken/ wrong, or the connections inside your laptop are different wired.

So, if there are no special problems like General Purpose Input Output pin's (GPIO), in case of headphones the codec should work just out of the box with HDA2.DLL.

To be sure I have to ask you to check again WITHOUT HDAICOUT.HDA.

Steps: change in HDACFG.INI

SleepingWidget=$10
VolumeWidget=$10
OutputWidget=$10

and try first with default:

pcipatchB=$0000

and then again if no sound at all:

pcipatchB=$7900

As always listen carefully with headphones and report. New files are not needed.

Posted (edited)
10 hours ago, deomsh said:

That's sad. I didn't see anything new in your files,  except 'pcipatchB=$7900' of course.

I found some information regarding the Conexant '506e' codec (will be cx20590 or cx20672). It seems the Output widgets are $10 or $11 (converting digital to analog audio) and Volume widgets are the same numbers. Maximum volume seems to be 0x4a.  Between the PIN-complexes and the Output widgets there does not seem to be a Mixer, default connections are to Output widget $10. The standard headphone widget is probably $19 (with 0xC0: OUT HP), line-out $1A and speaker $1D (with 0x40: OUT; takes EAPD). But of course I can be mistaken/ wrong, or the connections inside your laptop are different wired.

So, if there are no special problems like General Purpose Input Output pin's (GPIO), in case of headphones the codec should work just out of the box with HDA2.DLL.

To be sure I have to ask you to check again WITHOUT HDAICOUT.HDA.

Steps: change in HDACFG.INI

SleepingWidget=$10
VolumeWidget=$10
OutputWidget=$10

and try first with default:

pcipatchB=$0000

and then again if no sound at all:

pcipatchB=$7900

As always listen carefully with headphones and report. New files are not needed.

Thanks for the new steps. I tried the folowing:

 -Changed  widget settings to  §10 and  restarted without HDAICOUT.HDA - no sound

 -Changed widget settings to   $10 and restarted with HDAICOUT.HDA - no sound

 - Changed widget settings to $11 (i guessed to try it as you mentioned the widgets are $10 or $11)  and restarted with/withoout HDAICOUT - no sound, but this time machine  locks up on  bootup unless TSR is unloaded (my windows installation is set to limit RAM to 980 MB)

I  also  tried all of the above with pcipatch value  and without.

Looks like the Conexant variant is one stubborn  codec :$

 

Edited by awhooley
typo
Posted (edited)

Thanks for trying.

Strange behavior with widgets at $11, but at least something is happening.

Did you took any stabilizing measures as described in the hda-thread?

Memory should'nt be a problem, HDATSR makes a buffer somewere between 1-4 MB, most of the time. 

Setting [BUSMASTER] manually in HDACFG.INI is only needed in case of Windows ME (ME can not load TSR's, unless some real-mode fix is added).

About trying widgets at $11: very good. The Conexant codec seems to be a so called 'double codec' with two DAC's (Digital Analog Converters).

Edit:

And just to be sure: if you play a file, is the slider of the mediaplayer moving?

Oeps, you already mentioned the slider was moving, overlooked that part. :ph34r:

Edited by deomsh
Addition
Posted (edited)

I studied all sources about the ctx5066-family I could find. According Linux' ALSA sources your codec needs enabling first GPIO-pin.

I do not have any experience with GPIO-verbs, but we can try.

I made following debug-version of HDAICOUT.HDA. I added many extra so called 'GET-verbs' to retrieve more information from your codec. As can easily be seen this is NOT an universal version, but addressing specific nodes/ widgets. Verbs starting with ';;' are currently unused:

;;This debug-version of HDAICOUT.HDA should be used for Thinkpad T420 (Conexant cx20672 - Alsa ctx5066 family)
Begin
$0017FF00;AC_VERB_SET_CODEC_RESET;
$0017FF00;AC_VERB_SET_CODEC_RESET;!
End
Begin
$000F0000;AC_PAR_VENDOR_ID
$000F0002;AC_PAR_SUBSYSTEM_ID
$000F0004;AC_PAR_NODE_COUNT;Subordinate_Node_Count
$001F0004;AC_PAR_NODE_COUNT;Subordinate_Node_Count
$001F0005;AC_PAR_FUNCTION_TYPE
$001F0008;AC_PAR_AUDIO_FG_CAP
$001F000A;AC_PAR_STREAM;Sample_Size_Rate
$001F000B;AC_PAR_PCM;Stream_Formats
$001F000F;AC_PAR_POWER_STATE
$001F0011;AC_PAR_GPIO_CAP;Number_GPIO'S
$001F2000;AC_VERB_GET_SUBSYSTEM_ID;Board_Implementation_ID
$001F0500;AC_VERB_GET_POWER_STATE
$00170500;AC_VERB_SET_POWER_STATE;Power up!
$001F0500;AC_VERB_GET_POWER_STATE
$001F1600;AC_VERB_GET_GPIO_MASK
$001F1700;AC_VERB_GET_GPIO_DIRECTION
$001F1500;AC_VERB_GET_GPIO_DATA
$00171601;AC_VERB_SET_GPIO_MASK,01
$00171701;AC_VERB_SET_GPIO_DIRECTION,01
$00171501;AC_VERB_SET_GPIO_DATA,01
$001F1600;AC_VERB_GET_GPIO_MASK
$001F1700;AC_VERB_GET_GPIO_DIRECTION
$001F1500;AC_VERB_GET_GPIO_DATA
$001F0011;AC_PAR_GPIO_CAP;Number_GPIO'S
End
Begin
;;node 0x10: DAC1
$010F0009;AC_PAR_AUDIO_WIDGET_CAP
$010F000A;AC_PAR_PCM;SAMPLE_SIZE_RATE_CAP
$010F000B;AC_PAR_STREAM;STREAM_FORMATS
$010F0012;AC_PAR_AMP_OUT_CAP
$010F0500;AC_VERB_GET_POWER_STATE
$01070500;AC_VERB_SET_POWER_STATE;Power up!
$010F0500;AC_VERB_GET_POWER_STATE
$010F0600;AC_VERB_GET_CONV;GET_CHANNEL_STREAMID;00
$01070600;AC_VERB_SET_CHANNEL_STREAMID;00
$010F0600;AC_VERB_GET_CONV;GET_CHANNEL_STREAMID;00
$010F0610;AC_VERB_GET_CONV;GET_CHANNEL_STREAMID;01
;;$01070610;AC_VERB_SET_CHANNEL_STREAMID;01
;;$010F0610;AC_VERB_GET_CONV;GET_CHANNEL_STREAMID;01
$010A0000;AC_VERB_GET_STREAM_FORMAT
$01024011;AC_VERB_SET_STREAM_FORMAT;44.1kHz_16-bits
$010A0000;AC_VERB_GET_STREAM_FORMAT
$010B8000;AC_VERB_GET_AMP_GAIN_MUTE
$0103B04A;AC_VERB_SET_AMP_GAIN_MUTE;max_vol
$010B8000;AC_VERB_GET_AMP_GAIN_MUTE
End
Begin
;;node 0x11: DAC2
$011F0009;AC_PAR_AUDIO_WIDGET_CAP
$011F000A;AC_PAR_PCM;SAMPLE_SIZE_RATE_CAP
$011F000B;AC_PAR_STREAM;STREAM_FORMATS
$011F0012;AC_PAR_AMP_OUT_CAP
$011F0500;AC_VERB_GET_POWER_STATE
$01170500;AC_VERB_SET_POWER_STATE;Power up!
$011F0500;AC_VERB_GET_POWER_STATE
$011F0600;AC_VERB_GET_CONV;GET_CHANNEL_STREAMID;00
;;$01170600;AC_VERB_SET_CHANNEL_STREAMID;00
;;$011F0600;AC_VERB_GET_CONV;GET_CHANNEL_STREAMID;00
$011F0610;AC_VERB_GET_CONV;GET_CHANNEL_STREAMID;01
$01170610;AC_VERB_SET_CHANNEL_STREAMID;01
$011F0610;AC_VERB_GET_CONV;GET_CHANNEL_STREAMID;01
$011A0000;AC_VERB_GET_STREAM_FORMAT
$01124011;AC_VERB_SET_STREAM_FORMAT;44.1kHz_16-bits
$011A0000;AC_VERB_GET_STREAM_FORMAT
$011B8000;AC_VERB_GET_AMP_GAIN_MUTE
$0113B04A;AC_VERB_SET_AMP_GAIN_MUTE;max_vol
$011B8000;AC_VERB_GET_AMP_GAIN_MUTE
End
Begin
;;node 0x19: OUT HP Detect ([Jack] HP Out at Ext Left)
$019F0009;AC_PAR_AUDIO_WIDGET_CAP
$019F000C;AC_PAR_PIN_CAP
$019F0900;AC_VERB_GET_PIN_SENSE
$019F0800;AC_VERB_GET_UNSOLICITED_RESPONSE;Get_Unsollicited_Response_Control
;;$01970800;AC_VERB_SET_UNSOLICITED_RESPONSE;Set_Unsollicited_Response_Control;disable
;;$019F0800;AC_VERB_GET_UNSOLICITED_RESPONSE;Get_Unsollicited_Response_Control
$019F0500;AC_VERB_GET_POWER_STATE
$01970500;AC_VERB_SET_POWER_STATE;Power up!
$019F0500;AC_VERB_GET_POWER_STATE
$019F0100;AC_VERB_GET_CONNECT_SEL
$01970100;AC_VERB_SET_CONNECT_SEL;Front?
$019F0100;AC_VERB_GET_CONNECT_SEL
$019F0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$019707C0;AC_VERB_SET_PIN_WIDGET_CONTROL;hp_amp_out_enable
$019F0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$019B8000;AC_VERB_GET_AMP_GAIN_MUTE;status_output
End
Begin
;;node 0x1B: IN OUT EAPD Detect ([Jack] Mic at Ext Left)
$01BF0009;AC_PAR_AUDIO_WIDGET_CAP
$01BF000C;AC_PAR_PIN_CAP
$01BF0500;AC_VERB_GET_POWER_STATE
$01B70500;AC_VERB_SET_POWER_STATE;Power up!
$01BF0500;AC_VERB_GET_POWER_STATE
$01BF0100;AC_VERB_GET_CONNECT_SEL
$01B70100;AC_VERB_SET_CONNECT_SEL;Front?
$01BF0100;AC_VERB_GET_CONNECT_SEL
$01BF0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$01B70740;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable
$01BF0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$01B70C02;AC_VERB_SET_EAPD_BTLENABLE;ExtenalAmplifierPowerUp
$01BB8000;AC_VERB_GET_AMP_GAIN_MUTE;status_output
End
Begin
;;node 0x1C: OUT Detect (Line Out at Ext N/A)
$01CF0009;AC_PAR_AUDIO_WIDGET_CAP
$01CF000C;AC_PAR_PIN_CAP
$01CF0500;AC_VERB_GET_POWER_STATE
$01C70500;AC_VERB_SET_POWER_STATE;Power up!
$01CF0500;AC_VERB_GET_POWER_STATE
$01CF0100;AC_VERB_GET_CONNECT_SEL
$01C70100;AC_VERB_SET_CONNECT_SEL;Front?
$01CF0100;AC_VERB_GET_CONNECT_SEL
$01CF0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$01C70740;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable
$01CF0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$01CB8000;AC_VERB_GET_AMP_GAIN_MUTE;status_output
End
Begin
;;node 0x1D: IN OUT EAPD Detect (Line Out at Ext N/A)
$01DF0009;AC_PAR_AUDIO_WIDGET_CAP
$01DF000C;AC_PAR_PIN_CAP
$01DF0500;AC_VERB_GET_POWER_STATE
$01D70500;AC_VERB_SET_POWER_STATE;Power up!
$01DF0500;AC_VERB_GET_POWER_STATE
$01DF0100;AC_VERB_GET_CONNECT_SEL
$01D70100;AC_VERB_SET_CONNECT_SEL;Front?
$01DF0100;AC_VERB_GET_CONNECT_SEL
$01DF0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$01D70740;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable
$01DF0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$01D70C02;AC_VERB_SET_EAPD_BTLENABLE;ExtenalAmplifierPowerUp
$01DB8000;AC_VERB_GET_AMP_GAIN_MUTE;status_output
End
Begin
;;node 0x1F: OUT ([Fixed] Speaker at Int Bottom)
$01FF0009;AC_PAR_AUDIO_WIDGET_CAP
$01FF000C;AC_PAR_PIN_CAP
$01FF0500;AC_VERB_GET_POWER_STATE
$01F70500;AC_VERB_SET_POWER_STATE;Power up!
$01FF0500;AC_VERB_GET_POWER_STATE
$01FF0100;AC_VERB_GET_CONNECT_SEL
$01F70100;AC_VERB_SET_CONNECT_SEL;Front?
$01FF0100;AC_VERB_GET_CONNECT_SEL
$01FF0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$01F70740;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable
$01FF0700;AC_VERB_GET_PIN_WIDGET_CONTROL
$01FB8000;AC_VERB_GET_AMP_GAIN_MUTE;status_output
End

I'd like you to do following tests, all with new HDAICOUT.HDA. Afterwards I need the four HDAICIN.TXT's only.

First: all widget values in HDACFG.INI should ALWAYS stay on $10.

First test:

1) Set pcipatchB=$0000 in HDACFG.INI.

2) Connect headphones.

3) Boot and listen carefully.

4) Unplug headphones and listen to the speaker.

5) Rename HDAICIN.TXT to HDAICINA.TXT.

6) Reboot, headphones still unplugged.

7) Listen to the speaker.

5) Rename HDAICIN.TXT to HDAICINB.TXT.

Second test:

1) Set pcipatchB=$7900 in HDACFG.INI (as always at your own risk, if any!)

2) Connect headphones.

3) Boot and listen carefully.

4) Unplug headphones and listen to the speaker.

5) Rename HDAICIN.TXT to HDAICINC.TXT.

6) Reboot, headphones still unplugged.

7) Listen to the speaker.

5) Rename HDAICIN.TXT to HDAICIND.TXT.

 

HDAICOUT_(Thinkpad T420_Conexant cx20672_ Alsa_ctx5066_family).ZIP

Edited by deomsh
Corrections
Posted (edited)

Thank you!!

IT WORKED! when I set it to pcipatch §7900 it sprang into life upon bootupwith  headphoners and speakers.

i also noted that  after first reboot on $7900, it garbled mydisplay driver on bootup, but subsequent startups seem fine.

I have attached the txt  files.

Thanks again   im  so happy its working!

Hdaicina.txt Hdaicinb.txt HDAICINC.TXT HDAICIND.TXT

Edited by awhooley
Posted

Very good news!

Analyzing the HDAICIN.TXT's will take some time.

If I understand you well, with the second test speakers are always working, also if the headphone is plugged in?

Posted

Yes both are working at the same time. The mute switch however works on the laptop so I can mute the speakers and the sound will still play from the headphones. 
i installed the Yamaha soft synth , and tested some games and it sounds excellent. 
 

the volume control works in the waveout program.

Posted (edited)

GOOD!

Nice your speaker can be muted with a switch, this makes my task MUCH easier.

I made a smaller version of HDAICOUT.HDA, with verbs that seems still necessary. Smaller is better (more responsive)! But I added a few GET verbs I forgot in previous version.

Judged from your HDAICINA-D.TXT's most default values were already 'good'. This time I won't change the default converter format: you will get REAL High Definition Audio with the default of 48kHz/16-bits (I hope it is working).

Can you test once again without headphones. Only one HDAICOUTE.txt needed.

EDIT:

I will need HDALOGE.TXT too, I want to check if HDA2.DLL will still default to stream 01 and 44.1kHz/16-bits.

HDAICOUT2_(Thinkpad T420_Conexant cx20672_ Alsa_ctx5066_family).ZIP

Edited by deomsh
Addition
Posted (edited)

I sure will. Just home from work so in a while I will give the new file a test. 
 

thanks again, I am still on cloud nine that the sound is even working! 🤩🤩

 

EDIT: I tried downloading the new hdaicout file but the link seems to be broken

Edited by awhooley

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