I'm running Xubuntu 18.04 on my Dell Inpiron 15 7548. Machine has integrated HD 5500 graphics, and a dedicated AMD R7 card. I've tried getting access to my dedicated card several times, but always ended up giving up, so I would really like to try and get to the bottom of this so I can actually use my hardware.

First off, both cards are detected just fine:

narameh@Hydrogen:~$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09)
08:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Opal XT [Radeon R7 M265/M365X/M465] (rev ff)

I've tried following Dell's own guide on how to use switcheroo to just switch the entire system to the dedicated card, found here: https://www.dell.com/support/article/uk/en/ukbsdt1/sln298475/a-guide-to-hybrid-video-on-dell-pcs-with-an-ubuntu-operating-system?lang=en

Here's some output:

VGA switcheroo is enabled:

narameh@Hydrogen:~$ grep -i switcheroo /boot/config-*

Switch file exists:

narameh@Hydrogen:~$ sudo ls -l /sys/kernel/debug/vgaswitcheroo/switch
-rw-r--r-- 1 root root 0 Jun 12 16:07 /sys/kernel/debug/vgaswitcheroo/switch

Default state:

narameh@Hydrogen:~$ sudo cat /sys/kernel/debug/vgaswitcheroo/switch
1:DIS: :DynOff:0000:08:00.0

The tutorial assumes it's either Pwr or Off, but since this is meant to be a hybrid system, for me it's DynOff. Hence, when I try to turn on the disconnected GPU as per instructions, nothing happens, as it's not really disconnected, just dynamically turned off. This has to happen as root, otherwise I cannot echo due to lack of permissions.

narameh@Hydrogen:~$ sudo su
root@Hydrogen:/home/narameh# echo ON > /sys/kernel/debug/vgaswitcheroo/switch
root@Hydrogen:/home/narameh# cat /sys/kernel/debug/vgaswitcheroo/switch
1:DIS: :DynOff:0000:08:00.0

Next I tried to use DRI_PRIME to run something on my AMD card to see if I could get it to turn on at all. I can for a second, by running

DRI_PRIME=1 glxinfo

in one terminal window, and spamming

narameh@Hydrogen:~$ sudo cat /sys/kernel/debug/vgaswitcheroo/switch

in the other. However, the first terminal then spits out a load of errors and we go back to DynOff. Pastebin of error output: https://pastebin.com/gJ4StVLS

Googling the error code got me this topic with a similar issue: https://www.linuxquestions.org/questions/slackware-14/current-14-2-and-dri-3-and-dri_prime-ain%27t-working-4175578108/ More info on what this poster is doing here: https://kaosx.us/docs/hybrid_gfx/

Following the steps there gets me the following

DRI seems to be fine:

narameh@Hydrogen:~$ cat /var/log/Xorg.0.log | grep DRI
[    45.527] (II) RADEON(G0): [DRI2] Setup complete
[    45.527] (II) RADEON(G0): [DRI2]   DRI driver: radeonsi
[    45.527] (II) RADEON(G0): [DRI2]   VDPAU driver: radeonsi
[    46.672] (II) modeset(0): [DRI2] Setup complete
[    46.672] (II) modeset(0): [DRI2]   DRI driver: i965
[    46.672] (II) modeset(0): [DRI2]   VDPAU driver: i965
[    46.704] (II) GLX: Initialized DRI2 GL provider for screen 0

narameh@Hydrogen:~$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x66 cap: 0x9, Source Output, Sink Offload crtcs: 3 outputs: 2 associated providers: 1 name:modesetting
Provider 1: id: 0x41 cap: 0x6, Sink Output, Source Offload crtcs: 2 outputs: 0 associated providers: 1 name:OLAND @ pci:0000:08:00.0
narameh@Hydrogen:~$ xrandr --setprovideroffloadsink 0x41 0x66

Note that it throws no errors, so this command seems to work fine. When I then try to run on either card, the intel onboard works fine:

narameh@Hydrogen:~$ DRI_PRIME=0 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: Intel Open Source Technology Center

But the AMD still throws the same errors: https://pastebin.com/W56z6z3L

In the end, the user in the thread traces his problems to a bad kernel commit and rolls back, but as this is a) a thread from 2016 and b) I am not an advanced enough user to go messing with my kernel, that is not an option for me.

I can find multiple other similar errors that seem related to kernel versions (e.g. https://bugs.freedesktop.org/show_bug.cgi?id=102800 on Ubuntu 17.01 or this one https://bugs.freedesktop.org/show_bug.cgi?id=94874)

In both topics, adding radeon.nopm=0 to the kernel boot is suggested, but I am hesitant to try this without some guidance as I don't know enough about what I'm doing.

I hope it's clear from this post I have put in the work to try and solve this on my own, but am running into the limits of my knowledge and don't want to mess up my system by changing things I don't understand or cannot undo if I end up booting into a black screen because of it. Some help from someone more advanced would be extremely appreciated.

tldr: discrete AMD is in DynOff can't be forced on with VGA_switcheroo. DRI_PRIME can talk to discrete card, but errors with what seems to be a kernel issue? User is at the end of her knowledge and afraid to break stuff. Help appreciated.

EDIT: realised including kernel version etc would be useful:

    narameh@Hydrogen:~$ uname -r
    narameh@Hydrogen:~$ lspci -nnk | grep -i vga -A3
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 5500 [8086:1616] (rev 09)
    Subsystem: Dell HD Graphics 5500 [1028:066f]
    Kernel driver in use: i915
    Kernel modules: i915
08:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Opal XT [Radeon R7 M265/M365X/M465] [1002:6604] (rev ff)
    Kernel driver in use: radeon
    Kernel modules: radeon, amdgpu

EDIT 2: Also useful to add there are no options to switch on/off my GPUs in my bios. No video related options at all.


To my complete befuddlement, it now works. Bear in mind I have been trying to get this to work on and off for over a year. It never did. Today I decided to take a break after writing this post. I rebooted to double check my bios options, then cleared out my unused ppas. Then I ran DRI_PRIME=1 glxinfo to see if I could get any more info out of the error log and it just... worked. I honestly have no clue what happened. Neither the reboot nor deleting some unused ppas should have affected this at all. WTF. Very happy it now works though! Consider this issue solved.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.