Jump to content

deomsh

Member
  • Posts

    546
  • Joined

  • Last visited

  • Days Won

    2
  • Donations

    0.00 USD 
  • Country

    Netherlands

Posts posted by deomsh

  1. Thanks!

    Judged to the response of this GET-verb in HDAICIN.TXT you really did the test with headphones unplugged:

    sent $019F0900; got $7FFFFFFF ticks=0000000A

    Sources on this verb are not really clear however.

    I hope next version of HDAICOUT.HDA will be the final one. Volume is set back to maximum (0x4A). In previous version I gave you the default state (0x3C).

    What is left: only a few SET verbs:

    ;;This_version_of_HDAICOUT.HDA_should_be_used_for_Thinkpad_T420_(Conexant_cx20672_-_Alsa_ctx5066_family),20240503,by_deomsh_made_for_awhooley
    Begin
    $0017FF00;AC_VERB_SET_CODEC_RESET;
    $0017FF00;AC_VERB_SET_CODEC_RESET;!
    ;;node_0x01:_Audio_Function_Group
    $00170500;AC_VERB_SET_POWER_STATE;Power up!
    $00171601;AC_VERB_SET_GPIO_MASK,01
    $00171701;AC_VERB_SET_GPIO_DIRECTION,01
    $00171501;AC_VERB_SET_GPIO_DATA,01
    ;;node_0x10:_DAC1
    $01070500;AC_VERB_SET_POWER_STATE;Power up!
    $0103B04A;AC_VERB_SET_AMP_GAIN_MUTE;max_vol(default=3C)
    ;;node_0x19:_OUT_HP_Detect_([Jack]_HP_Out_at_Ext_Left)
    $01970500;AC_VERB_SET_POWER_STATE;Power up!
    ;;node_0x1C:_OUT_Detect_(Line_Out_at_Ext_N/A)
    $01C70500;AC_VERB_SET_POWER_STATE;Power up!
    ;;node_0x1D:_IN_OUT_EAPD_Detect_(Line_Out_at_Ext_N/A)
    $01D70500;AC_VERB_SET_POWER_STATE;Power up!
    $01D70C02;AC_VERB_SET_EAPD_BTLENABLE;ExtenalAmplifierPowerUp
    ;;node 0x1F:_OUT_([Fixed]_Speaker_at_Int_Bottom)
    $01F70500;AC_VERB_SET_POWER_STATE;Power up!
    End

    HDAICOUT3_(Thinkpad_T420_Conexant_cx20672_Alsa_ctx5066_family).zip

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

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

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

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

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

  7. No problem.

    Sad activating the headphone amplifier made no difference, but on the other hand this is 'good'.

    But it seems to be a real issue with codec ALC269, according to various sources. So far I found no cure.

    You can try the same HDAICOUT.HDA (with 707C0 or 70740 version) and comment out with a semicolon BOTH reset lines (first two lines at the beginning of the file).

    The reset lines will set al widgets to their default state. Maybe you are lucky that another state of headphones has been set after boot.

  8. Good to know, at least you have DirectX 9.0c now (I presume).

    In the datasheet it is not fully clear if enabling headphone amplifiers is needed to enable headphones. 'Normally' this is not needed, codecs can be rather stubborn however.

    But you can try. Open HDAICOUT.HDA in some text editor and change ALL $0..70740 lines to 707C0.

    First line is now:

    $00270740;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable

    Should become:

    $002707C0;AC_VERB_SET_PIN_WIDGET_CONTROL;out_enable

    Etcetera.

    BTW watch if you use Notepad the extension is still .HDA (Notepad will try to add .TXT).

    Reboot needed of course.

  9. 8 hours ago, mrfusion92 said:

    Installed the soft midi driver and it works because now I can play midi files but that game still refuses to output any sound, so I guess it needs WDM drivers.

    I found WDM nowhere mentioned in case of the 1998 version. But I have no new ideas.

    If you run DxDiag, you will see HDA Sound is running in Software Emulation mode. At least in Prince of Persia 'Sands of Time' this was not a problem to get sound with HDA2.DLL (only Windows game I ever tried to play; together with USB the reason I once left my 'beloved' Windows 95 OSR1a).

    With DirectMusic you can test access to the YAMAGA SGX Driver too (at least in DirectX 9.0c).

  10. About midi: you can try Yamaha S-YXG100plus soft synth, see https://msfn.org/board/topic/178295-audio-driver-for-realtek-hd-audio-hardware-testing-thread/?do=findComment&comment=1245427

    Driver is somewhere on Vogons.

    In my experience: first comment out HDA2.DLL in SYSTEM.INI before installing Yamaha S-YXG100plus soft synth. Afterwards set wavehda=HDA2.DLL as LAST entry in SYSTEM.INI [drivers] and reboot.

    BTW setting Yamaha S-YXG100plus soft synth to DirectSound output is rather tricky, but after a while you will succeed. But @sifonium who introduced Yamaha S-YXG100plus soft synth to this thread had other experiences/ solutions.

  11. Thanks for testing my next quasi universal HDAICOUT.HDA with EAPD enabled (this version is CODEC Index=$0 only). All 200 lines are logged by HDAICIN.TXT. I only had to reduce the number of 'Power up!' lines a bit.

    I am afraid I cannot do anything to fix your headphone issue, but maybe you can.
    IF you where using a headset with three bands on the 3.5mm plug, try a real headphone with two bands.

  12. Two sliders are indeed uncommon. I use WAVEOUT.EXE only to set maximum volume if I use DirectSound aware programs. If they output to DirectSound their OWN volume slider will work.

    I made a version of HDAICOUT.HDA that sent certain verbs to ALL widgets/ nodes 02h-1Fh, but included EAPD_ENABLE.

    Please check if there is any difference with headphones. I need HDAICIN.TXT only.

    HDAICOUT_EAPD_ENABLED.ZIP

  13. @mrfusion92 I did a long search first on your HD Audio Controller, will be SIS996(L). I found no datasheet, but also NO pci quirks in Linux ALSA sources. So for now we should assume the controller is 'good' with Watler's HDA2.DLL. So no pcipatchB in HDACFG.INI.

    Luckily I found the datasheet of your Realtek codec ALC269, following values in HDACFG.INI are already good:

    SleepingWidget=$02
    OutputWidget=$02

    But set:

    VolumeWidget=$02

    I found speaker (widget 14)  AND headphones (widget 15) both support EAPD with default '0'. So external amplifiers powered down.

    Because speaker system looks quite complicated, lets try headphones first with following HDAICOUT.HDA (just rename).

    BTW I only need HDAICIN.TXT

    Hdaicout.hda.ALC269

×
×
  • Create New...