End of last year I have replaced my aging ASUS Zenbook UX32LN with a Ryzen-based UM431DA. After installing Ubuntu 20.04 focal with kernel 5.4 I have noticed four annoying problems:
- Initializing X.Org and getting to the login screen may not work
- Suspend does not work (system freezes)
- There is disturbing tearing when moving windows or playing movies
- Sound is very loud and volume control does not work properly
My notebook variant comes with a Ryzen 7 3700U CPU and 16GB RAM.
Buyers of specific Ryzen 5 2500U or Ryzen 7 3700U notebooks like the ASUS UM431DA should know that the amount of system RAM taken by the APU might not be adjustable on all models. On the UM431DA it is fixed to 2GB of system RAM. This means that a UM431DA notebook with advertised 8GB of RAM is going to have only 6GB of RAM available to the operating system.
Display initialisation and suspend bugs
The first problem comes with the following lines in the system console:
Failed to write reg 28b4 wait reg 28c6
Failed to write reg 1a6f4 wait reg 1a706
It is followed by unexpected behavior. X Windows may not get initialized or they do after a some time. This happens every time the screen is switched. This problem is related to the amdgpu kernel driver.
My solution to this and the suspend problem is moving to the newer 5.8 kernel that is provided by the linux-generic-hwe-20.04-edge or by using Ubuntu 20.10 (Groovy Gorilla) or later.
apt -y install linux-generic-hwe-20.04-edge
The changelogs are available under the link below:
The tearing problem that occurs on both internal display and HDMI outputs can be solved by adding
Option "TearFree" "true" to the amdgpu driver configuration.
Section "OutputClass" Identifier "AMDgpu" MatchDriver "amdgpu" Driver "amdgpu" Option "TearFree" "true" EndSection
Volume control bug
The volume control problem can be solved by adding the section
[Element Master] to analog-output.conf.common right before
[Element PCM] of alsa-mixer.
[Element Master] switch = mute volume = ignore [Element PCM] switch = mute volume = merge override-map.1 = all override-map.2 = all-left,all-right