No HDMI output on AMD/NVIDIA hybrid laptop

Hi, I got a new Asus TUF A15 laptop, which comes with a Ryzen 7 4800H CPU and a RTX2060 GPU. I’ve succesfully installed video-hybrid-amd-nvidia-450xx-prime from mhwd. prime-run seems to work normally. However, I think the Nvidia card is wired to the HDMI port, and as such, I’m unable to get an external monitor to work. inxi output:

$ inxi -Fxxz

System:

  Kernel: 5.8.3-2-MANJARO x86_64 bits: 64 compiler: N/A 

Desktop: KDE Plasma 5.19.4 tk: Qt 5.15.0 wm: kwin_x11 dm: SDDM 

  Distro: Manjaro Linux 
Machine:
  Type: Laptop System: ASUSTeK product: TUF Gaming FA506IV_TUF506IV 
  v: 1.0 serial: <filter> 
  Mobo: ASUSTeK model: FA506IV v: 1.0 serial: <filter> 
  UEFI: American Megatrends v: FA506IV.309 date: 07/02/2020 
Battery:
  ID-1: BAT1 charge: 88.2 Wh condition: 93.0/90.2 Wh (103%) 
  volts: 5.5/15.9 model: ASUS A32-K55 serial: N/A status: Charging 
CPU:
  Topology: 8-Core model: AMD Ryzen 7 4800H with Radeon Graphics 
  bits: 64 type: MT MCP arch: Zen rev: 1 L2 cache: 4096 KiB 
  flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm 
  bogomips: 92667 
  Speed: 2196 MHz min/max: 1400/2900 MHz Core speeds (MHz): 1: 1638 
  2: 1397 3: 1397 4: 1396 5: 1398 6: 1397 7: 1397 8: 1397 9: 1557 
  10: 1397 11: 1854 12: 1392 13: 1625 14: 1402 15: 1397 16: 1396 
Graphics:
  Device-1: NVIDIA TU106M [GeForce RTX 2060 Mobile] vendor: ASUSTeK 
  driver: nvidia v: 450.66 bus ID: 01:00.0 chip ID: 10de:1f15 
  Device-2: AMD Renoir vendor: ASUSTeK driver: amdgpu v: kernel 
  bus ID: 06:00.0 chip ID: 1002:1636 
  Device-3: IMC Networks USB2.0 HD UVC WebCam type: USB driver: uvcvideo 
  bus ID: 3-4:2 chip ID: 13d3:56a2 
  Display: x11 server: X.Org 1.20.9 compositor: kwin_x11 
  driver: amdgpu,nvidia FAILED: ati unloaded: modesetting,nouveau 
  alternate: fbdev,nv,vesa resolution: 1920x1080~144Hz s-dpi: 96 
  OpenGL: renderer: AMD RENOIR (DRM 3.38.0 5.8.3-2-MANJARO LLVM     10.0.1) 
  v: 4.6 Mesa 20.1.6 direct render: Yes 
Audio:
  Device-1: AMD vendor: ASUSTeK driver: snd_hda_intel v: kernel 
  bus ID: 06:00.1 chip ID: 1002:1637 
  Device-2: AMD Raven/Raven2/FireFlight/Renoir Audio Processor 
  driver: snd_rn_pci_acp3x v: kernel bus ID: 06:00.5 chip ID: 1022:15e2 
  Device-3: AMD Family 17h HD Audio vendor: ASUSTeK 
  driver: snd_hda_intel v: kernel bus ID: 06:00.6 chip ID: 1022:15e3 
  Sound Server: ALSA v: k5.8.3-2-MANJARO 
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet 
  vendor: ASUSTeK driver: r8169 v: kernel port: e000 bus ID: 02:00.0 
 chip ID: 10ec:8168 
  IF: enp2s0 state: down mac: <filter> 
  Device-2: Realtek RTL8822CE 802.11ac PCIe Wireless Network Adapter 
  vendor: AzureWave driver: rtw_8822ce v: N/A port: d000 bus ID: 03:00.0 
  chip ID: 10ec:c822 
  IF: wlp3s0 state: up mac: <filter> 
Drives:
  Local Storage: total: 953.87 GiB used: 77.01 GiB (8.1%) 
  ID-1: /dev/nvme0n1 vendor: Crucial model: CT1000P1SSD8 
  size: 931.51 GiB speed: 31.6 Gb/s lanes: 4 serial: <filter> 
  ID-2: /dev/nvme1n1 vendor: Intel model: SSDPEKNW010T8 size: 953.87 GiB 
  speed: 31.6 Gb/s lanes: 4 serial: <filter> 
Partition:
  ID-1: / size: 95.62 GiB used: 58.61 GiB (61.3%) fs: ext4 
  dev: /dev/nvme0n1p1 
  ID-2: /home size: 819.27 GiB used: 18.40 GiB (2.2%) fs: ext4 
  dev: /dev/nvme0n1p2 
Swap:
  ID-1: swap-1 type: file size: 36.00 GiB used: 0 KiB (0.0%) 
  priority: -2 file: /swap/swapfile 
Sensors:
  System Temperatures: cpu: 46.9 C mobo: N/A gpu: amdgpu temp: 38 C 
  Fan Speeds (RPM): N/A 
Info:
  Processes: 304 Uptime: 14m Memory: 30.85 GiB used: 2.07 GiB (6.7%) 
  Init: systemd v: 246 Compilers: gcc: 10.2.0 Packages: pacman: 1308 
  Shell: Zsh v: 5.8 running in: konsole inxi: 3.1.05

Additionnally, xrandr doesn’t detect a known working monitor connected to HDMI. This is also true for when I’m prime-running a program, such as firefox:

$ prime-run firefox && xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
eDP connected primary 1920x1080+0+0 (normal left inverted right x axis y axis)     344mm x 194mm
   1920x1080    144.00*+  60.00  
   1680x1050    144.00  
   1280x1024    144.00  
   1440x900     144.00  
   1280x800     144.00  
   1280x720     144.00  
   1024x768     144.00  
   800x600      144.00  
   640x480      144.00  
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
DP-1-0 disconnected
DP-1-1 disconnected

Finally, glxinfo output and installed mhwd drivers:

$ prime-run glxinfo | grep -i opengl
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce RTX 2060/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 450.66
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6.0 NVIDIA 450.66
OpenGL shading language version string: 4.60 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 450.66
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

$ mhwd -li
> Installed PCI configs:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
video-hybrid-amd-nvidia-450xx-prime 2019.10.25             false            PCI
    video-nvidia-450xx            2019.10.25               false            PCI
           video-linux            2018.05.04                true            PCI


Warning: No installed USB configs!

Any advice or suggestions would be greatly welcome!

I never used hybrid graphics so I don’t 100% know the answer, but this might help:

https://wiki.archlinux.org/index.php/PRIME#Reverse_PRIME

Alternatively, you can try to turn off your iGPU and only use your dGPU. But that’ll drain your battery more.

Hi!
I have an asus fx505 with the same problem as you. I wasn’t able to make work the hdmi output with reverse prime. I was able to make it work with aptimus-switch-amd, depend of what DE are you using, you need to choose one of this links.

  1. SDDM
https://github.com/dglt1/optimus-switch-amd-sddm
  1. GDM
https://github.com/dglt1/optimus-switch-amd-gdm
  1. LightDM
https://github.com/dglt1/optimus-switch

It’ll give you option to change between graphics card, use amd for a normal use, and nvidia when you need to game or use the hdmi output

1 Like

Thank you! I’ll check that out tonight. Do I need to uninstall the hybrid drivers or install some other driver to get this to work?

Hi!
I’d recommend uninstall any hybrid driver and install nvidia 450 and free amd driver. Also you can use 440, it work with both

@visone I’ve tried setting this up (optimus-switch-amd-sddm). It works perfectly in AMD mode. However switching to nvidia locks up the system after rebooting. Did you have to edit the acpi call in /etc/switch/amd/no-optimus.sh? (see https://github.com/dglt1/optimus-switch#usage).

Running the acpi call checking tool gives me:

$ sudo /etc/switch/gpu_switch_check.sh
Trying \_SB.PCI0.P0P1.VGA._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.P0P2.VGA._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.OVGA.ATPX: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.OVGA.XTPX: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.P0P3.PEGP._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.P0P2.PEGP._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.P0P1.PEGP._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.MXR0.MXM0._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG1.GFX0._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG0.GFX0.DOFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG1.GFX0.DOFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG0.PEGP._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.XVR0.Z01I.DGOF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEGR.GFX0._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG.VID._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG0.VID._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.P0P2.DGPU._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.P0P4.DGPU.DOFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.IXVE.IGPU.DGOF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.RP00.VGA._PS3: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.RP00.VGA.P3MO: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.GFX0.DSM._T_0: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.LPC.EC.PUBS._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
 failed
Trying \_SB.PCI0.P0P2.NVID._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.P0P2.VGA.PX02: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.PEGP.DGFX._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.VGA.PX02: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG0.PEGP.SGOF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.AGP.VGA.PX02: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG0.PEGP._DSM: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.RP01.PEGP._DSM: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.GFX0._DSM: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.RP01.PXSX._DSM: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG.VID._DSM: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.PEG0.PEGP._DSM: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.AGP.VGA.PX02: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG0.PEGP._DSM_OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.RP01.PEGP._DSM_OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.GFX0._DSM_OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.RP01.PXSX._DSM_OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG.VID._DSM_OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.PEG0.PEGP._DSM_OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.AGP.VGA.PX02._DSM_OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG0.PEGP._DSM._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.RP01.PEGP._DSM._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.GFX0._DSM._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.RP01.PXSX._DSM._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB.PCI0.PEG.VID._DSM._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed
Trying \_SB_.PCI0.PEG0.PEGP._DSM._OFF: /etc/switch/gpu_switch_check.sh: line 63: warning: command substitution: ignored null byte in input
failed

None of these have output the “works!” message.

Hi!
I didn’t have to edit nothing. I think your system sill had a nvidia.conf for older drivers.
I follow this guide

https://archived.forum.manjaro.org/t/asus-rog-zephyrus-ga502du-installation-and-configuration-guide-updated-information-7-22-2020/118392

Resolved! Somehow HDMI started working with the default Manjaro video-hybrid-amd-nvidia-450xx-prime drivers. No need for optimus-switching. I suspect that rebooting with the monitor already plugged in did the trick.

Do you have an issue with screen flickering on the bottom left of your laptop display panel? I have this same system (2060/Ryzen 7 4800H) and on Kernel 5.8 I get a weird static/distortion/flicker on the bottom left of my laptop panel under any kernel higher than 5.7 right now.

Also, under the video-hybrid-amd-nvidia-450xx-prime driver, the FPS for any Vulkan application is locked to vsync (144 for internal panel, 60 for external display), whereas this is NOT the case for the 440 driver. Just curious if you have this issue as well.

As a matter of fact I did have the weird flicker issue, For me adding the file /etc/X11/xorg.conf.d/20-amdgpu.conf with contents

Section "Device"
        Identifier "AMD"
        Driver  "amdgpu"
        Option "TearFree" "true"
EndSection

alleviated the problem (I thought it was gone, but I just noticed there’s still a bit of flickering). As for the FPS locking, I must admit I didn’t notice. Please let me know if you find a solution!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.