Switched to AMD GPU, system does not recognize monitor correctly

Hello, I switched to an AMD GPU (RX 6700), and since the very beginning, there have been problems with my monitor.

I’m using a 49" Samsung crg90, which has a native resolution of 3840x1080 and a 144Hz refresh rate. The system did recognize it well using both open-source and proprietary Nvidia drivers, but it just won’t work well on AMD. Under display settings, it shows the correct resolution but only gives me a 60Hz option for the refresh rate.

hwinfo --monitor

does not return anything and it looks like it just does not recognize the monitor at all with this GPU. I reinstalled the system to a clean fedora 39 and the issue remains. It even does not want to install correctly as when I choose the liveCD the screen goes black and I have to restart it and choose the ‘troubleshoot’ option followed by the basic graphic setting just so the installation starts.

The problem occurs on both Wayland and x11. This monitor should be optimal for AMD graphics card as is comes with FreeSync so I’m not sure why this is happening.

inxi -Fzx output is as follows:

System:
  Kernel: 6.7.4-200.fc39.x86_64 arch: x86_64 bits: 64 compiler: gcc
    v: 2.40-14.fc39
  Desktop: GNOME v: 45.4 Distro: Fedora Linux 39 (Workstation Edition)
Machine:
  Type: Desktop System: ASUS product: N/A v: N/A serial: <superuser required>
  Mobo: ASUSTeK model: PRIME Z690-P D4 v: Rev 1.xx
    serial: <superuser required> UEFI: American Megatrends v: 1620
    date: 08/13/2022
Battery:
  Device-1: hidpp_battery_0 model: Logitech Wireless Mouse MX Master 3
    charge: 50% (should be ignored) status: discharging
CPU:
  Info: 16-core (8-mt/8-st) model: 12th Gen Intel Core i9-12900K bits: 64
    type: MST AMCP arch: Alder Lake rev: 2 cache: L1: 1.4 MiB L2: 14 MiB
    L3: 30 MiB
  Speed (MHz): avg: 798 high: 800 min/max: 800/5100:5200:3900 cores: 1: 800
    2: 800 3: 800 4: 800 5: 800 6: 800 7: 799 8: 800 9: 758 10: 800 11: 800
    12: 800 13: 800 14: 800 15: 800 16: 800 17: 800 18: 800 19: 800 20: 800
    21: 800 22: 800 23: 800 24: 800 bogomips: 152985
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
  Device-1: AMD Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]
    vendor: XFX driver: N/A arch: RDNA-2 bus-ID: 0000:03:00.0
  Display: x11 server: X.Org v: 1.20.14 with: Xwayland v: 23.2.4 driver: X:
    loaded: modesetting,radeon,vesa unloaded: fbdev dri: swrast gpu: N/A
    resolution: 3840x1080~60Hz
  API: OpenGL v: 4.5 vendor: mesa v: 23.3.5 glx-v: 1.4 direct-render: yes
    renderer: llvmpipe (LLVM 17.0.6 256 bits)
  API: EGL Message: EGL data requires eglinfo. Check --recommends.
Audio:
  Device-1: Intel Alder Lake-S HD Audio vendor: ASUSTeK driver: snd_hda_intel
    v: kernel bus-ID: 0000:00:1f.3
  Device-2: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel v: kernel
    bus-ID: 0000:03:00.1
  Device-3: GYROCOM C&C Fiio E10 driver: hid-generic,snd-usb-audio,usbhid
    type: USB bus-ID: 1-9.3:8
  API: ALSA v: k6.7.4-200.fc39.x86_64 status: kernel-api
  Server-1: JACK v: 1.9.22 status: off
  Server-2: PipeWire v: 1.0.3 status: active
Network:
  Device-1: Realtek RTL8125 2.5GbE vendor: ASUSTeK driver: r8169 v: kernel
    port: 3000 bus-ID: 0000:06:00.0
  IF: enp6s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Bluetooth:
  Device-1: ASUSTek Broadcom BCM20702A0 Bluetooth driver: btusb v: 0.8
    type: USB bus-ID: 1-8:3
  Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 4.0
    lmp-v: 6
RAID:
  Hardware-1: Intel Volume Management Device NVMe RAID Controller driver: vmd
    v: 0.6 bus-ID: 0000:00:0e.0
Drives:
  Local Storage: total: 2.19 TiB used: 7.65 GiB (0.3%)
  ID-1: /dev/nvme0n1 vendor: GOODRAM model: IR-SSDPR-P34B-01T-80
    size: 953.87 GiB temp: 27.9 C
  ID-2: /dev/nvme1n1 vendor: GOODRAM model: N/A size: 111.79 GiB
    temp: 52.9 C
  ID-3: /dev/sda vendor: SanDisk model: SSDPR-CX400-01T-G2 size: 953.87 GiB
  ID-4: /dev/sdb vendor: GOODRAM model: N/A size: 223.57 GiB
Partition:
  ID-1: / size: 952.27 GiB used: 7.36 GiB (0.8%) fs: btrfs dev: /dev/dm-0
    mapped: luks-d028f04e-701e-4200-81d9-4aaae01100d9
  ID-2: /boot size: 973.4 MiB used: 278.7 MiB (28.6%) fs: ext4
    dev: /dev/nvme0n1p2
  ID-3: /boot/efi size: 598.8 MiB used: 19 MiB (3.2%) fs: vfat
    dev: /dev/nvme0n1p1
  ID-4: /home size: 952.27 GiB used: 7.36 GiB (0.8%) fs: btrfs
    dev: /dev/dm-0 mapped: luks-d028f04e-701e-4200-81d9-4aaae01100d9
Swap:
  ID-1: swap-1 type: zram size: 8 GiB used: 0 KiB (0.0%) dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 22.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 24 GiB note: est. available: 23.21 GiB used: 3.56 GiB (15.3%)
  Processes: 671 Uptime: 32m Init: systemd target: graphical (5)
  Packages: 5 Compilers: N/A Shell: Bash v: 5.2.26 inxi: 3.3.32

You might be able to force it by adding something like video=DP-1:3840x1080@144 to your list of kernel parameters.

https://wiki.archlinux.org/title/kernel_mode_setting

I resolved it by installing Nvidia drivers and plugging in the old GPU. Upon restart, the monitor was finally correctly detected with all possible settings and resolutions…
I replugged the new AMD card and the settings are finally there and everything works fine.
Upon hwinfo --monitor I get:

37: None 00.0: 10002 LCD Monitor                                
  [Created at monitor.125]
  Unique ID: rdCR.oxZaQR6aCd3
  Parent ID: svHJ.zBrqeyFQojB
  Hardware Class: monitor
  Model: "SAMSUNG C49HG9x"
  Vendor: SAM "SAMSUNG"
  Device: eisa 0x0e5e "C49HG9x"
  Serial ID: "HTJJ800455"
  Resolution: 720x400@70Hz
  Resolution: 640x480@60Hz
  Resolution: 640x480@67Hz
  Resolution: 640x480@72Hz
  Resolution: 640x480@75Hz
  Resolution: 800x600@56Hz
  Resolution: 800x600@60Hz
  Resolution: 800x600@72Hz
  Resolution: 800x600@75Hz
  Resolution: 832x624@75Hz
  Resolution: 1024x768@60Hz
  Resolution: 1024x768@70Hz
  Resolution: 1024x768@75Hz
  Resolution: 1280x1024@75Hz
  Resolution: 1152x864@75Hz
  Resolution: 1280x720@60Hz
  Resolution: 1280x1024@60Hz
  Resolution: 3840x1080@60Hz
  Size: 1196x336 mm
  Year of Manufacture: 2017
  Week of Manufacture: 33
  Detailed Timings #0:
     Resolution: 3840x1080
     Horizontal: 3840 3848 3880 3920 (+8 +40 +80) -hsync
       Vertical: 1080 1143 1151 1157 (+63 +71 +77) +vsync
    Frequencies: 653.10 MHz, 166.61 kHz, 144.00 Hz
  Driver Info #0:
    Max. Resolution: 3840x1080
    Vert. Sync Range: 48-144 Hz
    Hor. Sync Range: 167-167 kHz
    Bandwidth: 653 MHz
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #6 (VGA compatible controller)

But that brings me to a question - why? What is the problem with the AMD GPU which should work better out of the box? Is there a way to manually redetect/add a monitor if the GPU won’t detect it? I also tried running the LiveCD with Nvidia GPU and it works perfectly, on AMD I just get a black screen and am forced to go into troubleshooting mode with graphics compatibility options, this should not be the case and might be why my installation was faulty from the get go.

Maybe nvidia is providing an extra database of monitor capabilities along with their driver? I don’t know. The information is supposed to come from the monitor itself, but some brands are apparently known to be bad about providing correct information: How to modify physical display size in EDID (on ArchLinux with systemd boot) · GitHub