Skip to content

Add ASUS G733ZW audio and Ethernet profiles#248

Closed
akshaynexus wants to merge 4 commits into
CachyOS:masterfrom
akshaynexus:asus-g733zw-fixes
Closed

Add ASUS G733ZW audio and Ethernet profiles#248
akshaynexus wants to merge 4 commits into
CachyOS:masterfrom
akshaynexus:asus-g733zw-fixes

Conversation

@akshaynexus
Copy link
Copy Markdown

@akshaynexus akshaynexus commented May 8, 2026

Summary

Add two hardware-gated profiles for the ASUS ROG Strix G733ZW:

  • asus-g733zw-alc285-audio
  • realtek-r8125.asus-g733zw

These profiles cover two issues observed and tested on a CachyOS install on this laptop.

Audio issue

The internal speakers on this G733ZW sounded muffled, quiet, and low-pass filtered, like only the bass/low-frequency path was active. PipeWire itself was working, but the Realtek HDA routing exposed by the kernel did not seem to enable the correct ASUS speaker path.

The kernel autoconfig showed the ALC285 codec using only one speaker-ish line out:

autoconfig for ALC285: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
hp_outs=1 (0x21/0x0/0x0/0x0/0x0)

Hardware validated:

Laptop: ASUS ROG Strix G733ZW
DMI product: ROG Strix G733ZW_G733ZW
PCI audio controller: Intel Alder Lake PCH-P HDA, 8086:51c8
Codec: Realtek ALC285
Codec subsystem: 1043:12bf

The profile installs alsa-tools and alsa-utils, writes the same WirePlumber soft-mixer rule used on the test system, then creates a small one-shot systemd service and timer that apply the HDA verbs after desktop audio has had time to start.

The WirePlumber rule sets api.alsa.soft-mixer = true for alsa_card.pci-0000_00_1f.3, matching the local workaround used with the HDA verbs.

On the tested system, a service triggered immediately after sound.target ran before the user PipeWire/WirePlumber session started. The timer uses OnBootSec=45s so the fix runs once after the desktop audio session is normally up, without repeatedly looping.

After sleep/idle testing, snd_hda_intel power saving was also found to be 10, which can power down the codec and lose runtime HDA verb state. The profile now sets options snd_hda_intel power_save=0, applies that live through sysfs when possible, and installs a systemd-sleep post hook to reapply the fix once after resume.

0x17 SET_CONNECT_SEL 0x00
0x14 SET_PIN_WIDGET_CONTROL 0x40
0x14 SET_EAPD_BTLENABLE 0x02
0x14 SET_AMP_GAIN_MUTE 0xb000
0x1e SET_PIN_WIDGET_CONTROL 0x40
0x16 SET_PIN_WIDGET_CONTROL 0x00
0x1b SET_PIN_WIDGET_CONTROL 0x00

The profile is intentionally narrow:

  • DMI gated to ROG Strix G733ZW_G733ZW
  • PCI gated to Intel HDA 8086:51c8
  • runtime gated to Codec: Realtek ALC285
  • runtime gated to Subsystem Id: 0x104312bf

That last runtime codec/subsystem check is included because chwd profiles can match PCI IDs and DMI product names, but not HDA codec subsystem IDs directly.

Ethernet issue

The onboard Realtek RTL8125 2.5GbE NIC was initially handled by the generic r8169 driver. On this machine the vendor r8125 module restored the interface behavior.

Hardware validated:

Ethernet controller: Realtek RTL8125 2.5GbE
PCI ID: 10ec:8125
PCI revision: 05
Subsystem vendor/device: 1043:205f
Interface: enp44s0
Working driver: r8125

The profile installs the CachyOS r8125 packages:

linux-cachyos-r8125
linux-cachyos-lts-r8125

It then writes /etc/modprobe.d/99-realtek-r8125.conf to prefer r8125 over r8169 and rebuilds initramfs.

This is also narrowly gated:

  • DMI gated to ROG Strix G733ZW_G733ZW
  • PCI gated to Realtek Ethernet 10ec:8125
  • runtime gated to ASUS subsystem 1043:205f

The subsystem guard avoids applying the r8169 blacklist on unrelated RTL8125 systems.

Testing

Ran locally:

cargo test
/usr/lib/luarocks/rocks-5.5/busted/2.3.0-1/bin/busted . --no-keep-going
git diff --check

Results:

  • Rust tests passed: 20 total unit tests plus doc tests
  • Lua profile/package tests passed: 14 successes, 0 failures
  • git diff --check clean

@akshaynexus akshaynexus force-pushed the asus-g733zw-fixes branch from 664c87a to d862569 Compare May 8, 2026 14:08
@1Naim
Copy link
Copy Markdown
Member

1Naim commented May 8, 2026

For the verb fixups, I'll create a patch for it in the kernel. Where did you get these verbs though? From Windows?

@akshaynexus akshaynexus force-pushed the asus-g733zw-fixes branch from d862569 to 8376d79 Compare May 9, 2026 02:54
@akshaynexus
Copy link
Copy Markdown
Author

Codex CLI found the verbs by inspecting the laptop’s live HDA codec dump and testing candidate pin widgets with hda-verb.

Process used:

  1. Read the live codec dump:
/proc/asound/card0/codec#0
  1. Confirmed the codec hardware:
Codec: Realtek ALC285
Vendor Id: 0x10ec0285
Subsystem Id: 0x104312bf
  1. Observed that the kernel autoconfig only routed speaker output through 0x17, while speaker_outs was empty.

  2. Identified other output-capable pin widgets from the codec dump:

0x14
0x1e
0x16
0x1b
  1. Used hda-verb live, without rebooting, to test each candidate pin and compare speaker output.

  2. Kept the verb combination that restored full internal speaker output on this machine.

Final tested verbs:

0x17 SET_CONNECT_SEL 0x00
0x14 SET_PIN_WIDGET_CONTROL 0x40
0x14 SET_EAPD_BTLENABLE 0x02
0x14 SET_AMP_GAIN_MUTE 0xb000
0x1e SET_PIN_WIDGET_CONTROL 0x40
0x16 SET_PIN_WIDGET_CONTROL 0x00
0x1b SET_PIN_WIDGET_CONTROL 0x00

@akshaynexus akshaynexus force-pushed the asus-g733zw-fixes branch from 8376d79 to 834e62e Compare May 9, 2026 08:00
@akshaynexus
Copy link
Copy Markdown
Author

The only issue with this patch I've not been able to figure out to make it stay enabled when system goes to sleep then is turned on again

But overall the fix for the audio and ethernet is valid as per testing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants