Added ALC269VC (thinkpad x230 i7) support
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.
My problem now is after sleep, I have to plug in and out my headphone otherwise my int speaker won't work
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
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
@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.