升级VX2722-4K-pro显示器后,我的Ubuntu电脑HDMI版本太老,无法支持4K@60Hz,所以最近升级了一下显卡。某鱼买了一块RX560,支持4K60 HDR都没有问题,但是很快发现了一个问题,Ubuntu下显示器无法真正休眠!具体现象如下:因为Ubuntu运行Jellyfin Server,所以设置电脑不进入休眠,只是5分钟后关闭显示器。但在关闭显示器过程中,显示器没有进入休眠,而是在很短一段时间后,进入一种黑屏,但是在线的状态,屏幕上只剩下鼠标还有显示。这样只要打开了电脑和显示器,就算不在用电脑,显示器永远都是开着无法休眠,白白在耗电。

经过一番折腾加搜索网络,发现问题出在AMD GPU的Linux Driver与桌面环境的配合上。当显示器打开自动搜索信号时,会向电脑定时发送信号,AMD GPU驱动上报这个hotplug event,导致屏幕无法休眠。这个Bug存在很久了,数年都没有修复,参见:https://gitlab.freedesktop.org/drm/amd/-/issues/662。我尝试了各种Kernel启动参数,如amdgpu.runpm=0,新的6.1 kernel等等,都没有效果。目前只有采取一些Workaround方法。

  1. 关闭显示器的自动搜索输入功能。我的显示器有这个开关,确实可以解决问题,但是会带来其它问题。我有两台电脑,一旦设定在某个输入上,当另外一台电脑打开时,无法自动切换输入。VX2722-4K-pro还有一个问题,当目前设定的输入没有信号时,屏幕不会点亮,这时候用控制键无法调出屏幕菜单,无法手动切换输入,要折腾半天才能把输入切换过去。我还没有找到能迅速调出菜单的办法,导致使用体验很差,所以这个解决方案不行
  2. 关闭Linux桌面环境监测显示器的服务。不同的桌面环境设置的方法不同,前面链接里面提到Xfce上如何设置,受这个启发,我在网上找到了Cinnamon环境的设置方法。把Ubuntu缺省的GDM3/GNOME环境换成Cinnamon,在System Settings中找到Startup Applications,把其中的Cinnamon Settings Daemon – xrandr选项关闭掉(也可以修改其命令行参数,添加 –exit-time=5,设置一个时间,在启动后不久自动退出)。这样可以解决问题,但带来另外一个问题,如果在打开Ubuntu电脑的时候,没有开启显示器,那么以后再打开显示器,也不会有显示了。这虽然也不是完美的解决方案,比上一个方案好点,目前也就只能这样了。

AMD还是不如Intel成熟,经常有些小毛病,让人头痛,比如AMD GPU在Windows上会导致Office里面的光标变成白色,很难找到,虽然也有一些Workaround,但总还是不那么方便。虽然支持了AMD不少次,但每次还是有些不爽的地方,希望以后能进一步改进吧。