EAPD-Codec-Commander icon indicating copy to clipboard operation
EAPD-Codec-Commander copied to clipboard

Added ALC269VC (thinkpad x230 i7) support

Open ghost opened this issue 8 years ago • 5 comments

ghost avatar Oct 18 '17 09:10 ghost

Strange that you needed an EAPD enable, as that part of CodecCommander is automatic (it detects all potential nodes that need EAPD wakeup and does it if Wake Nodes=true.

RehabMan avatar Oct 18 '17 22:10 RehabMan

My problem now is after sleep, I have to plug in and out my headphone otherwise my int speaker won't work

ghost avatar Oct 19 '17 09:10 ghost

My problem now is after sleep, I have to plug in and out my headphone otherwise my int speaker won't work

Look into AlcPlugFix

RehabMan avatar Oct 19 '17 14:10 RehabMan

Thanks, but I found another interesting thing. I wrote a script to dump audio card status based on your widget_dump.sh. Using that script I dumped two times, before sleep and after wake, respectively.

  • 0x12 = Internal Mic, 0x14 = Internal Speaker, 0x15 = Jack Ext. Headphone, 0x18 = Jack Ext. Speaker

Let's say the case without headphone: Before sleep: Node [0x12]: Connection Selector [GET_CONNECT_SEL]: 0x00000000 Processing State [GET_PROC_STATE]: 0x00000000 Power State [GET_POWER_STATE]: 0x00000000 Pin Widget Control [GET_PIN_WIDGET_CONTROL]: 0x00000020 Pin Sense [GET_PIN_SENSE]: 0x00000000 EAPD [GET_EAPD_BTLENABLE]: 0x00000000 Amp Mute (Right Input) 5xxx [GET_AMP_GAIN_MUTE]: 0x00000003 Amp Mute (Left Input) 6xxx [GET_AMP_GAIN_MUTE]: 0x00000003 Amp Mute (Right Output) axxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Output) bxxx [GET_AMP_GAIN_MUTE]: 0x00000000 Volume Knob Control [GET_VOLUME_KNOB_CONTROL]: 0x00000000 Configuration Default [GET_CONFIG_DEFAULT]: 0x90a00110

Node [0x14]: Connection Selector [GET_CONNECT_SEL]: 0x00000000 Processing State [GET_PROC_STATE]: 0x00000000 Power State [GET_POWER_STATE]: 0x00000000 Pin Widget Control [GET_PIN_WIDGET_CONTROL]: 0x00000040 Pin Sense [GET_PIN_SENSE]: 0x00000000 EAPD [GET_EAPD_BTLENABLE]: 0x00000002 Amp Mute (Right Input) 5xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Input) 6xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Right Output) axxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Output) bxxx [GET_AMP_GAIN_MUTE]: 0x00000000 Volume Knob Control [GET_VOLUME_KNOB_CONTROL]: 0x00000000 Configuration Default [GET_CONFIG_DEFAULT]: 0x90100140

Node [0x15]: Connection Selector [GET_CONNECT_SEL]: 0x00000000 Processing State [GET_PROC_STATE]: 0x00000000 Power State [GET_POWER_STATE]: 0x00000033 Pin Widget Control [GET_PIN_WIDGET_CONTROL]: 0x00000000 Pin Sense [GET_PIN_SENSE]: 0x00000000 EAPD [GET_EAPD_BTLENABLE]: 0x00000002 Amp Mute (Right Input) 5xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Input) 6xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Right Output) axxx [GET_AMP_GAIN_MUTE]: 0x00000080 Amp Mute (Left Output) bxxx [GET_AMP_GAIN_MUTE]: 0x00000080 Volume Knob Control [GET_VOLUME_KNOB_CONTROL]: 0x00000000 Configuration Default [GET_CONFIG_DEFAULT]: 0x01211050

Node [0x18]: Connection Selector [GET_CONNECT_SEL]: 0x00000000 Processing State [GET_PROC_STATE]: 0x00000000 Power State [GET_POWER_STATE]: 0x00000033 Pin Widget Control [GET_PIN_WIDGET_CONTROL]: 0x00000000 Pin Sense [GET_PIN_SENSE]: 0x00000000 EAPD [GET_EAPD_BTLENABLE]: 0x00000000 Amp Mute (Right Input) 5xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Input) 6xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Right Output) axxx [GET_AMP_GAIN_MUTE]: 0x00000080 Amp Mute (Left Output) bxxx [GET_AMP_GAIN_MUTE]: 0x00000080 Volume Knob Control [GET_VOLUME_KNOB_CONTROL]: 0x00000000 Configuration Default [GET_CONFIG_DEFAULT]: 0x01a11070

After sleep: Node [0x12]: Connection Selector [GET_CONNECT_SEL]: 0x00000000 Processing State [GET_PROC_STATE]: 0x00000000 Power State [GET_POWER_STATE]: 0x00000430 Pin Widget Control [GET_PIN_WIDGET_CONTROL]: 0x00000000 Pin Sense [GET_PIN_SENSE]: 0x00000000 EAPD [GET_EAPD_BTLENABLE]: 0x00000000 Amp Mute (Right Input) 5xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Input) 6xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Right Output) axxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Output) bxxx [GET_AMP_GAIN_MUTE]: 0x00000000 Volume Knob Control [GET_VOLUME_KNOB_CONTROL]: 0x00000000 Configuration Default [GET_CONFIG_DEFAULT]: 0x90a00110

Node [0x14]: Connection Selector [GET_CONNECT_SEL]: 0x00000000 Processing State [GET_PROC_STATE]: 0x00000000 Power State [GET_POWER_STATE]: 0x00000030 Pin Widget Control [GET_PIN_WIDGET_CONTROL]: 0x00000000 Pin Sense [GET_PIN_SENSE]: 0x00000000 EAPD [GET_EAPD_BTLENABLE]: 0x00000002 Amp Mute (Right Input) 5xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Input) 6xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Right Output) axxx [GET_AMP_GAIN_MUTE]: 0x00000080 Amp Mute (Left Output) bxxx [GET_AMP_GAIN_MUTE]: 0x00000080 Volume Knob Control [GET_VOLUME_KNOB_CONTROL]: 0x00000000 Configuration Default [GET_CONFIG_DEFAULT]: 0x90100140

Node [0x15]: Connection Selector [GET_CONNECT_SEL]: 0x00000000 Processing State [GET_PROC_STATE]: 0x00000000 Power State [GET_POWER_STATE]: 0x00000030 Pin Widget Control [GET_PIN_WIDGET_CONTROL]: 0x00000000 Pin Sense [GET_PIN_SENSE]: 0x00000000 EAPD [GET_EAPD_BTLENABLE]: 0x00000002 Amp Mute (Right Input) 5xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Input) 6xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Right Output) axxx [GET_AMP_GAIN_MUTE]: 0x00000080 Amp Mute (Left Output) bxxx [GET_AMP_GAIN_MUTE]: 0x00000080 Volume Knob Control [GET_VOLUME_KNOB_CONTROL]: 0x00000000 Configuration Default [GET_CONFIG_DEFAULT]: 0x01211050

Node [0x18]: Connection Selector [GET_CONNECT_SEL]: 0x00000000 Processing State [GET_PROC_STATE]: 0x00000000 Power State [GET_POWER_STATE]: 0x00000030 Pin Widget Control [GET_PIN_WIDGET_CONTROL]: 0x00000024 Pin Sense [GET_PIN_SENSE]: 0x00000000 EAPD [GET_EAPD_BTLENABLE]: 0x00000000 Amp Mute (Right Input) 5xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Left Input) 6xxx [GET_AMP_GAIN_MUTE]: 0x00000000 Amp Mute (Right Output) axxx [GET_AMP_GAIN_MUTE]: 0x00000080 Amp Mute (Left Output) bxxx [GET_AMP_GAIN_MUTE]: 0x00000080 Volume Knob Control [GET_VOLUME_KNOB_CONTROL]: 0x00000000 Configuration Default [GET_CONFIG_DEFAULT]: 0x01a11070

===============================================================

Comparing these two data, it's easy to find that: Int. Mic (No longer has input) PowerState: 0x0 --> 0x00000430 GET_PIN_WIDGET_CONTROL: 0x20 --> 0x0 Amp Mute (Right Input): 0x3 --> 0x0 Amp Mute (Left Input): 0x3 --> 0x0

Int. Speaker (No output unless plug in headphone then plug out) PowerState: 0x0 --> 0x30 GET_PIN_WIDGET_CONTROL: 0x40 --> 0x0 Amp Mute (Right Output): 0x0 --> 0x80 // Muted? Amp Mute (Left Output): 0x0 --> 0x80 // Muted?

Ext. Headphone (Not plugged in) PowerState: 0x33 --> 0x30

Ext. Speaker (Not plugged in) PowerState: 0x33 --> 0x30 GET_PIN_WIDGET_CONTROL: 0x0 --> 0x24

The following commands I tried with hda-verb but has no effect: hda-verb 0x14 SET_PIN_WIDGET_CONTROL 0x40 hda-verb 0x14 SET_AMP_GAIN_MUTE 0xA000 // Unmute left output hda-verb 0x14 SET_AMP_GAIN_MUTE 0xB000 // Unmute right output hda-verb 0x14 SET_POWER_STATE 0x0

I also did the same thing on all nodes but no lucks as expected. after_sleep_no_hp.txt before_sleep_no_hp.txt

ghost avatar Oct 20 '17 00:10 ghost

@eitanlevy97, I've had similar problems with ALC256, ALCPlugFix solved them. ALCPlugFix is essentially a small tool that runs during boot time and continue to run on the background until shutdown (It runs hda-verb with some arguments on inserting and removing the headphones). @RehabMan, I wonder why this isn't being implemented directly in the CodecCommander.

MuntashirAkon avatar Jan 08 '19 14:01 MuntashirAkon