Detailed Issue Report: External Monitor Not Working on Manjaro Linux with Hybrid AMD/NVIDIA Graphics
1. Introduction
I have been working through this issue with the help of chatgpt’s new 01advanced model and this is a summary of what has been happening and what I have done up to this point. I am experiencing an issue where an external monitor connected via a USB-C to DisplayPort adapter is not recognized or detected by my laptop running Manjaro Linux. The laptop (Razer Blade 14 2021) has a hybrid graphics setup with an AMD Ryzen 9 5900 and an NVIDIA RTX 3060 GPU. Despite numerous troubleshooting steps, the external monitor remains non-functional. The adapter has been tested and works on windows on the same machine, and on other machines as well.
2. System Information
Hardware Configuration
- Laptop Model: Razer Blade 14" (2021)
- CPU: AMD Ryzen 9 5900
- Integrated GPU: AMD Radeon Graphics
- Discrete GPU: NVIDIA RTX 3060 Mobile/Max-Q
- Memory: 16 GB
- Display:
- Internal Monitor: 1920x1080 resolution
- External Monitor: Connected via USB-C to DisplayPort adapter (not detected)
Software Configuration
- Operating System: Manjaro Linux (64-bit)
- Kernel Version: Initially using
6.10.13-3-MANJARO
, later switched to6.1
LTS kernel but switched back after no progress was made. - Desktop Environment: GNOME
- Display Server: Initially Wayland, attempted to switch to Xorg but this did not fix my issue
- NVIDIA Driver Version: 550.120 (as per
dmesg
output) - Installed Video Driver Configurations:
video-hybrid-amd-nvidia-prime
(proprietary)video-linux
(free)
Relevant Outputs
lsmod | grep nvidia
: Shows onlynvidia_uvm
andnvidia
, missingnvidia_modeset
andnvidia_drm
I was able to use modprobe to forceload the modules but nothing changed.dmesg
Outputs:- NVIDIA modules are tainting the kernel
nvidia_drm
module is not loaded- No significant errors pointing to the cause of the issue
- Kernel Configuration:
CONFIG_TYPEC_DP_ALTMODE=m
(indicates DisplayPort Alternate Mode over USB-C is available as a module)
3. Detailed Troubleshooting Steps Taken
Step 1: Initial Investigation
- Issue Identified: External monitor connected via USB-C to DisplayPort adapter is not working.
- Observation: Monitor is not detected in display settings or
xrandr
output.
Step 2: Switch from Wayland to Xorg
- Action: Modified
/etc/gdm/custom.conf
to disable Wayland.- Uncommented
WaylandEnable=false
- Uncommented
- Result: System boots into Xorg, but external monitor issue persists.
Step 3: Verify NVIDIA Drivers Installation
- Action: Checked installed NVIDIA packages using
pacman -Qs nvidia
. - Observation: Confirmed
nvidia-utils
and related packages are installed.
Step 4: Configure PRIME Offloading
- Action: Created
/etc/X11/xorg.conf.d/90-nvidia.conf
with configurations for NVIDIA and AMD GPUs. - Issue: Original configuration incorrectly referenced Intel GPU instead of AMD.
- Correction: Updated configuration to reference
amdgpu
instead ofintel
.
Updated Configuration:
Section "ServerLayout"
Identifier "layout"
Screen 0 "nvidia"
Inactive "amdgpu"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "AllowEmptyInitialConfiguration" "true"
Option "Coolbits" "28"
Option "SLI" "Off"
Option "BaseMosaic" "off"
EndSection
Section "Screen"
Identifier "nvidia"
Device "nvidia"
Option "AllowEmptyInitialConfiguration" "true"
Option "PrimaryGPU" "yes"
EndSection
Section "Device"
Identifier "amdgpu"
Driver "amdgpu"
BusID "PCI:4:0:0"
Option "AccelMethod" "none"
EndSection
Section "Screen"
Identifier "amdgpu"
Device "amdgpu"
EndSection
- Result: External monitor still not detected.
Step 5: Enable NVIDIA DRM Modeset
- Action: Added
options nvidia_drm modeset=1
to/usr/lib/modprobe.d/nvidia.conf
. - Updated GRUB Configuration:
- Added
nvidia-drm.modeset=1
toGRUB_CMDLINE_LINUX_DEFAULT
in/etc/default/grub
.
- Added
- Ran:
sudo mkinitcpio -P sudo update-grub sudo reboot
- Result:
nvidia_drm
module still not loaded.
Step 6: Verify NVIDIA Modules
- Action: Ran
lsmod | grep nvidia
. - Result: Only
nvidia_uvm
andnvidia
modules are loaded;nvidia_modeset
andnvidia_drm
are missing.
Step 7: Check for Errors in Kernel Messages
- Action: Ran
dmesg | grep -i nvidia
. - Observation: No significant errors indicating why
nvidia_drm
is not loaded.
Step 8: Switch to an LTS Kernel
- Action: Installed the
6.1
LTS kernel usingmhwd-kernel -i linux61
. - Installed corresponding headers:
sudo pacman -S linux61-headers
- Updated GRUB to display the menu at boot:
- Edited
/etc/default/grub
to setGRUB_TIMEOUT_STYLE=menu
andGRUB_TIMEOUT=5
. - Ran
sudo update-grub
.
- Edited
- Rebooted and selected the
6.1
kernel from GRUB menu. - Result: Issue persists;
nvidia_drm
module still not loaded.
Step 9: Reinstall NVIDIA Drivers
- Action: Removed existing drivers:
sudo mhwd -r pci video-hybrid-amd-nvidia-prime
- Reinstalled drivers:
sudo mhwd -i pci video-hybrid-amd-nvidia-prime
- Cleaned up residual configuration files:
sudo rm /etc/X11/xorg.conf.d/90-mhwd.conf sudo rm /etc/X11/xorg.conf.d/90-nvidia.conf sudo rm /etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
- Result:
nvidia_drm
module still not loaded.
Step 10: Ensure Secure Boot is Disabled
- Action: Checked Secure Boot status:
sudo mokutil --sb-state
- Observation: Secure Boot is disabled.
- Result: Issue persists.
Step 11: Load typec_displayport
Module
- Action: Verified
CONFIG_TYPEC_DP_ALTMODE=m
in kernel configuration. - Attempted to load module:
sudo modprobe typec_displayport
- Checked if module is loaded:
lsmod | grep typec_displayport
- Result: Module loaded successfully, but external monitor still not detected.
Step 12: Examine USB-C Port Functionality
- Action: Ran
lsusb
to list USB devices. - Checked kernel messages:
sudo dmesg | grep -i 'usb\|typec\|thunderbolt'
- Observation: No errors indicating issues with USB-C port.
Step 13: Verify Module Dependencies
- Action: Ensured related modules are loaded:
lsmod | grep typec
- Modules Loaded:
typec_displayport
typec
typec_ucsi
ucsi_acpi
- Result: Modules are loaded, but external monitor remains undetected.
Step 14: Check System Logs for Errors
- Action: Examined system logs:
sudo journalctl -b | grep -i 'typec\|displayport\|drm\|nvidia\|amdgpu\|error\|fail'
- Observation: No significant errors related to the issue.
Step 15: Test with a Live USB Environment
- Action: Booted into a Live USB of Ubuntu.
- Result: External monitor still not detected, suggesting a potential hardware issue.
4. Summary of Findings
nvidia_drm
andnvidia_modeset
Modules Not Loaded:- Essential for modesetting and external display functionality.
- Attempts to load modules manually were unsuccessful.
- Kernel Version Compatibility:
- Switching to the
6.1
LTS kernel did not resolve the issue.
- Switching to the
- NVIDIA Driver Installation:
- Reinstalled
video-hybrid-amd-nvidia-prime
drivers multiple times. - Ensured kernel headers are installed.
- Reinstalled
- USB-C DisplayPort Alternate Mode Support:
CONFIG_TYPEC_DP_ALTMODE
is set tom
, and module is loaded.- External monitor still not detected after loading the
typec_displayport
module.
- Hardware Considerations:
- Tested in a Live USB environment; issue persists.
- Suggests potential hardware limitation or incompatibility.
- Secure Boot:
- Confirmed to be disabled, ruling out interference.
- System Logs and Errors:
- No significant errors indicating why the external monitor is not working.
- No conflicts with other modules like
nouveau
.
5. Relevant System Outputs
lsmod | grep nvidia
Output
nvidia_uvm 6701056 2
nvidia 60596224 7 nvidia_uvm
dmesg | grep -i nvidia
Output
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.10-x86_64 root=UUID=... rw quiet splash apparmor=1 security=apparmor resume=UUID=... udev.log_priority=3 nvidia-drm.modeset=1
[ 0.030436] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.10-x86_64 root=UUID=... rw quiet splash apparmor=1 security=apparmor resume=UUID=... udev.log_priority=3 nvidia-drm.modeset=1
[ 4.088444] audit: type=1400 audit(...): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=422 comm="apparmor_parser"
[ 4.665400] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card0/input16
[ 11.753929] nvidia: module license 'NVIDIA' taints kernel.
[ 12.106675] nvidia-nvlink: Nvlink Core is being initialized, major device number 510
[ 12.107702] nvidia 0000:01:00.0: enabling device (0000 -> 0003)
[ 12.152446] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 550.120 Fri Sep 13 10:10:01 UTC 2024
[ 12.516043] nvidia_uvm: module uses symbols nvUvmInterfaceDisableAccessCntr from proprietary module nvidia, inheriting taint.
[ 12.598262] nvidia-uvm: Loaded the UVM driver, major device number 508.
mhwd -li
Output
> Installed PCI configs:
--------------------------------------------------------------------------------
NAME VERSION FREEDRIVER TYPE
--------------------------------------------------------------------------------
video-linux 2024.05.06 true PCI
video-hybrid-amd-nvidia-prime 2023.03.23 false PCI
Warning: No installed USB configs!
Kernel Configuration for DisplayPort Alternate Mode
zcat /proc/config.gz | grep TYPEC_DP_ALTMODE
CONFIG_TYPEC_DP_ALTMODE=m