Short Version
On Ubuntu 20.04 cannot get internal and external monitor working at the same time. Can have internal only with default drivers OR external only with manually installed NVIDIA driver. Help!
My system is an ASUS TUF A15 Gaming laptop (FA506). It has an AMD® Ryzen™ 7 4800H Processor with integrated graphics and a NVIDIA RTX 2060.
- Fresh Ubuntu 20.04 Install
- Need to set
nouveau.modeset=0
in grub entry to get graphics to work - External displays not detected
- Ubuntu 20.04 does not show anything in the Additional Drivers dialog
- Installing
nvidia-driver-440
and runningnvidia-xconfig
gets the nvidia card working but only the external display (displayport on usbc port) is detected, internal display is not working - Can switch back to internal display only by deleting
/etc/X11/xorg.conf
and rebooting but then lose external displays and NVIDIA driver not being used - Can switch back to NVIDIA by running
nvidia-xconfig
again and rebooting
Long Version
After a fresh Ubuntu 20.04 install (with installing proprietary software enabled) the laptop boots to back screen with the text
[ 7.779369] ucsi_acpi USBC000:00: PPM init failed (-110)
I can log in by switching to a virtual terminal with ctrl + alt + F2
. After I log in the screen is spammed for over a minute with message:
[ 80.199703] nouveau 0000:01:00.0 fifo: SCHED_ERROR 08 []
Followed by
[ 80.206302] nouveau 0000:01:00.0 DRM: failed to idle channel 0 [DRM]
After this I can access the terminal. Based on internet advice I can modify the linux grub entry by changing the a line of /etc/default/grub
from:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
to
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0"
and running
sudo update-grub
After reboot I get the gdm login screen and can log in to a graphical session but if I connect an external it is not detected. Output of xrandr
with or without external monitors connect via DisplayPort-USBC and HDMI is
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1920 x 1080, current 1920 x 1080, maximum 1920 x 1080
default connected primary 1920x1080+0+0 0mm x 0mm
1920x1080 77.00*
Nvidia drivers have not been installed so I first update the system with sudo apt update
and sudo apt dist-upgrade
and reboot. I check the Additional Drivers tab of Software & Updates but it says "No additional drivers available". Running ubuntu-drivers devices
shows nothing.
Next best advice is to install the nvidia drivers through apt
sudo apt install nvidia-driver-440
After reboot the monitor situation is unchanged still only internal montior. xrandr
output is the same, but Nvidia driver is now installed. nvidia-smi
shows:
Thu May 28 09:42:22 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64 Driver Version: 440.64 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 2060 Off | 00000000:01:00.0 Off | N/A |
| N/A 46C P0 9W / N/A | 0MiB / 5934MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
nvidia-settings
shows a small empty window. Launching is from the terminal prints:
ERROR: Unable to load info from any available system
(nvidia-settings:2986): GLib-GObject-CRITICAL **: 09:45:58.786: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
** Message: 09:45:58.789: PRIME: No offloading required. Abort
** Message: 09:45:58.789: PRIME: is it supported? no
Now I run sudo nvidia-xconfig
to generate /etc/X11/xorg.conf
. After a reboot THE EXTERNAL MONITOR IS WORKING I get the normal gdm login screen on my external (displayport) monitor and can login to a graphical session yay. Sadly the internal monitor is no longer detected and just shows the ASUS logo. nvidia-settings
dialog now has all the options I would expect (launching from terminal gives the same output as before)
As requested by kanehekili
the output of xrandr -q
is now:
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767
DP-0 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
2560x1440 60.00*+ 144.00 120.00 84.98
1920x1080 60.00 59.94 50.00
1680x1050 59.95
1440x900 59.89
1440x576 50.00
1440x480 59.94
1280x1024 75.02 60.02
1280x960 60.00
1280x720 60.00 59.94 50.00
1152x864 75.00
1024x768 75.03 70.07 60.00
800x600 75.00 72.19 60.32 56.25
720x576 50.00
720x480 59.94
640x480 75.00 72.81 59.94 59.93
DP-1 disconnected (normal left inverted right x axis y axis)
full output of lspci -vv
is here. But entries for graphics devices as follows:
01:00.0 VGA compatible controller: NVIDIA Corporation TU106 [GeForce RTX 2060] (rev a1) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Device 1e21
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 94
Region 0: Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at b0000000 (64-bit, prefetchable) [size=256M]
Region 3: Memory at c0000000 (64-bit, prefetchable) [size=32M]
Region 5: I/O ports at f000 [size=128]
Expansion ROM at fc000000 [virtual] [disabled] [size=512K]
Capabilities: <access denied>
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Renoir (rev c6) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Renoir
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 255
Region 0: Memory at d0000000 (64-bit, prefetchable) [size=256M]
Region 2: Memory at e0000000 (64-bit, prefetchable) [size=2M]
Region 4: I/O ports at c000 [disabled] [size=256]
Region 5: Memory at fc500000 (32-bit, non-prefetchable) [size=512K]
Capabilities: <access denied>
Kernel modules: amdgpu
PLEASE HELP ME FIGURE THIS OUT
From my internet searching I am not the only one battling with this AMD/NVIDIA hybrid graphics configuration. The holy grail would be seamless integration of the two graphics cards to save battery when possible and use dicrete graphics when needed but I will happily settle for permanent power guzzling nvidia with both monitors working!
From my research the core of the issue is that the nvidia card is hard wired to the displayport and the integrated graphics are connected to the internal montior. Ideally the nvidia can render to a buffer which can be copied to the integrated graphics but I don't know the specifics and don't know how to configure this.
Note: Some internet advice has recommended adding the nvidia ppa before installing nvidia drivers:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
I have tried this in the past but there is no difference, the nvidia-driver-440 package in that ppa and the ubuntu repository are the same version 440.82+really.440.64-0ubuntu6
and there is no change to the Additional Drivers tab.
Also note: I have secure boot disabled
Edit: This post Ubuntu 20.04 does not recognize second monitor
Suggests installing nvidia-driver-435
but in my case this does not solve the issue.
I have a partial answer to my own question but would still like help.
After reading this reddit post I came to suspect that the kernel version in Ubuntu 20.04 which is 5.4 does not have good support for the latest AMD APUs. To test this I installed the latest kernel 5.6.15 using the instructions here. With the newer kernel installed I can now use my HDMI port for an external monitor while running on the integrated graphics. That is by deleting the xorg.conf sudo rm /etc/X11/xorg.conf
and rebooting. But when using the nvidia card I can still only use the displayport (on usbc). I would still like to be able to use NVIDIA on the internal display.
I managed to the the AMD graphics working using the experimental support for Renoir in the Linux kernel that ships with Ubuntu 20.04.
You need to add
amdgpu.exp_hw_support=1
to/etc/default/grub
.To do this, open the file for editing as root, for example run
And to the line beginning
GRUB_CMDLINE_LINUX_DEFAULT=
, to the list of parameters in double quotes, addamdgpu.exp_hw_support=1
. For example, depending on what you had before, the line may look like this after editing:Save the file and exit, and then run this command to make the change effective:
and reboot. Now, blacklist the nouveau driver. To do this, create a new configuration file in
/etc/modprobe.d/
using for exampleAdd the following entries:
save changes and exit (ctrl+x if using nano). Now update initramfs
Reboot. This supports both internal and external displays.
Still no nvidia graphics though. It would be good to know a way to get this machine (AsusTUF with Ryzen 7 4800H and RTX 2060) to use switchabme AMD/Nvidia graphics.
EDIT: Activating the NVidia Card on internal/external monitors (HDMI)
If you are happy to use integrated graphics only (amdgpu driver ) read no further. To change to NVidia graphics continue.
Start by purging any previous installations of the NVidia driver, in the terminal:
Reboot the system. Now, reinstall the NVidia drivers
Edit the X11 configuration files for for amdgpu and nvidia drivers. These are located in
/usr/share/X11/sorg.conf.d/
. First, change the conf file for amdgpu:Change the file contents so it looks like:
Now, change the conf file for NVidia:
Edit the file with the following entries
Reboot the system. This solution worked for me. You should now have a working system with Nvidia drivers for both internal/external monitor configuration using HDMI (I don't have display-port or USB-C to test).
To revert back to the amdgpu swap the flags for the "PrimaryGPU" entries from "yes" to "no" as appropriate. This solution is sub-optimal and I will continue to look for a more robust swapping solution (e.g. nvidia on-demand). As a side note, I was unable to get anything to work properly by updating the kernel (tried 5.5.19 & 5.6.19). Although there are some interesting features that will benefit this laptop in newer kernel versions. The Nvidia module did not install correctly in my attempts (maybe if compiled the integration with the rest of the system might be more robust).
I am having same laptop. after trying lots of things what worked for me.
Kernel 5.7.15 ( or later from https://kernel.ubuntu.com/~kernel-ppa/mainline/) this kernel have drivers for amd cpu and apu both, will enable to use hdmi/external monitor. (remove amdgpu or amdgpu-pro if already installed)
Nvidia PPA sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt-get upgrade && sudo apt-get update sudo apt-get install nvidia-driver-450
I get the same question with my Asus FA506 with 4800H and rtx2060. I tried 2 ways to fix it, here is the first way:
Then HDMI works. I tried this in May, but somehow it cannot suspend. Then I struggled for suspending my laptop and reinstall Ubuntu for a few times. Afterwords I found another way to enable suspend(From another BBS), and it also fix HDMI problems:
Ubuntu 20.04 goes with kernel 5.4, and seems kernel 5.7 has add amd graphic drivers, so after upgrade kernel, HDMI works.
Actually it is not that simple, I also needs to fix for nvme setting and I dont't remember if I have block nouveau.
I heard that this HDMI port for FA506 is JUST FOR AMD RYZEN GRAPHIC CHIP ON 4800H, if rtx2060 is working, its data still needs to export to the Ryzen graphic chip, then the chip export to HDMI port. The HDMI port is not directly connecting to rtx2060. However I also heard that the if you export a HDMI port through the USB-C, then it is directly connecting to rtx2060, but I didn't try. Still my laptop is running with kernel 5.7.0rc4, with no nvidia driver.
Still I'm finding a way to use only AMD graphic chip and shutdown rtx2060, cause it eats up so much of the battery.