12-07-2025 05:29 AM
Hi all, I hope this is the right place for this.
I’m using a ROG Ally X running Bazzite, and I’ve been dealing with noticeable stutter when running games or emulators (e.g., PCSX2) from the SD card. After checking around online, it seems this isn’t unique to me and that similar behaviour has been reported on other handhelds using Realtek SD controllers. I decided to investigate the issue in more depth, and with some assistance from tools like ChatGPT I was able to narrow down what’s actually happening.
The stutter appears every time the SD controller enters a deeper low-power state. After around four seconds of inactivity, the controller drops to this state. When it wakes up, it performs a 1.8 V UHS-I voltage switch. This switch frequently fails, which triggers a 1–2 second pause in SD I/O. Any game that streams data from the card will stutter exactly at these moments. The pattern repeats indefinitely.
This behaviour fits known Realtek firmware issues involving voltage-switch timing and faulty recovery from idle.
I tested everything that could reasonably affect power state behaviour:
PCIe ASPM: The setting appears to be locked by the firmware on the Ally X. Changing Linux ASPM policy does nothing.
Linux runtime PM: Forcing the host controller to stay active has no effect. Forcing the card node to stay active triggers a full reinitialisation of the SD card.
Filesystem behaviour: Cached reads do not prevent the issue. Only actual writes to the SD card stop the voltage-switch failures.
Across all tests, the trigger is consistent: the SD controller becomes unstable after more than ~4 seconds of real inactivity. This points to an internal firmware timeout rather than anything the OS controls.
The only reliable workaround I found was to prevent the controller from entering that deep idle state. I wrote a small script that writes 1 byte to the SD card every 3 seconds. With this running, the stutters disappear completely:
No voltage-switch failures
No I/O stalls
Smooth gameplay from SD
This strongly suggests the issue is inside the SD controller firmware and not related to Linux or the filesystem.
Normally, an SD host controller should:
Enter and exit low-power states safely
Perform the 1.8 V voltage switch only once during card initialization
Avoid reinitialising or resetting the SD device during runtime
Wake from idle instantly without causing multi-second stalls
The Ally X currently does not behave this way.
If possible, I would like ASUS to investigate the Realtek RTS525A firmware, specifically:
The idle timeout threshold
Handling of the 3.3 V → 1.8 V voltage switch during wake
Recovery sequence from deep idle
Prevention of repeated runtime voltage-switch cycles
UHS-I stability on wake
I’m happy to provide logs and repro steps if needed.
12-07-2025 05:46 AM
Additional reddit posts describing the same issue:
I've put together a repo with my fix. Note that this is a version for linux:
https://github.com/Ardetis/ROG-Ally-X-SD-Card-Stutter-Mitigation-Realtek-RTS525A-
And I'm sorry if it all seems a bit hastily put together, I'm leaving for vacation soon and I just want it out there while it is still fresh in my mind.
12-07-2025 11:23 PM
@w_e_l_o
Currently, the ROG Ally X only undergoes compatibility, firmware, and hardware verification for the factory-preinstalled Windows system. Testing has not been conducted on Linux (including third-party systems such as Bazzite). Therefore, we cannot directly determine whether behaviors encountered on non-official systems are related to hardware or firmware. For further verification, we recommend restoring the system to the Windows version and drivers provided by ASUS at factory default and retesting the SD card read/write performance under the official environment to see if the same stuttering or instability occurs. We apologize for any inconvenience caused.