Skip to content

Fix ALC255 layout-id 3 audio after warm reboot / sleep #2540

@Andergraw

Description

@Andergraw

I have been dealing with this issue for the last weeks til I finally solved it. I'd like to know if the solution could help the community since it's such an specific thing. I have not created a new layout, it's basically the layout 3 with this minor change. I'll explain:

On ALC255 layout-id 3 (tested on Gigabyte Aorus 15G), speaker audio is silent after:

  • Warm reboot from Windows → macOS
  • Resume from sleep

Everything reports correctly — widgets enumerate, the UI shows the speaker device, audio settings ok— but no sound is produced until a manual coefficient write to the Realtek vendor node (NID 0x20) is issued.

Three processing coefficients on NID 0x20 have specific bits set in the broken state that are cleared in the working state:

Coef Working Broken Diff
0x10 0x0020 0x0220 bit 9 set
0x45 0x5089 0xD089 bit 15 set
0x1A 0x8003 0x9003 bit 12 set

The known-working manual workaround is a six-verb sequence writing all three coefs to their working values:

alc-verb 0x20 0x500 0x10 
alc-verb 0x20 0x400 0x0020  
alc-verb 0x20 0x500 0x45
alc-verb 0x20 0x400 0x5089
alc-verb 0x20 0x500 0x1A
alc-verb 0x20 0x400 0x8003

After some testing, I realized that only coef 0x10 (bit 9, the mute bit) is sufficient to restore audio. Since I have no idea of this, I don't know if the two other would be necessary as well for any edge scenario or whatever reason. But coef 0x10 alone brings sound back (the only strange thing, it takes around 8 seconds to do it, which made me think that it was not working for a while).

So what I am doing is just appending the coef 0x10 write to ConfigData and to WakeConfigData.

02 05 00 10   SET_COEF_INDEX  0x0010
02 04 00 20   SET_PROC_COEF   0x0020

Meaning:

ConfigData:

- ASccEAEnHQABJx6mAScfkAFHHCABRx0AAUceFwFHH5ABlxwwAZcdEAGXHosBlx8AAhccUAIXHRACFx4rAhcfAgFHDAI=
+ ASccEAEnHQABJx6mAScfkAFHHCABRx0AAUceFwFHH5ABlxwwAZcdEAGXHosBlx8AAhccUAIXHRACFx4rAhcfAgFHDAICBQAQAgQAIA==

WakeConfigData:

- AUcMAg==
+ AUcMAgIFABACBAAg

Does this worth a PR?
Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions