A guide to Hybrid Video on Dell PCs with an Ubuntu Operating System

A guide to Hybrid Video on Dell PCs with an Ubuntu Operating System



The following article provides information about Hybrid Graphics on a Dell PC using the Ubuntu operating system.


Table of Contents:

  1. Introduction
  2. Find and install the correct drivers
  3. Setup and use Hybrid Graphics
  4. Common video issues and solutions

Introduction

This article is going to go over the differences between Discrete Graphics and Video Card Graphics and what Proprietary Drivers and Open Source Drivers means for your Video output. This article deals with Dell PCs using the Ubuntu operating system and the common videos issues you are likely to experience over time. This article is as much a reference guide as it is a troubleshooting guide.

Please remember that Dell supports the Hardware that ships with the unit and the reinstall or recovery of the Operating system that came with the unit. I hope you find the following information useful.

Hybrid Graphics :

Most Notebook and AIO (All in One) systems have the capability of having two GPUs. The first is the integrated GPU and is usually part of the CPU and the other is called the discrete GPU. The discrete GPU is an optional extra and is always more powerful than the integrated GPU. If your system has a hardware mux it will be able to switch between GPUs.

Video Cards :

While add-on Video cards are technically a second GPU added to the Integrated GPU, they are not usually included in Hybrid Graphics. Most Desktop BIOS settings means that when a Video card is plugged in, it automatically takes the place of the Integrated GPU which is no longer used.


Back to Top


Find and Install the correct drivers

Proprietary Drivers :

This is another term for Binary drivers, which are closed source drivers provided by the hardware manufacturers of the secondary GPU. Some hardware devices may require this kind of driver in order to function fully and properly. Unfortunately there is no way for developers to affect this type of driver and work on any bugs found with it.

Open Source Drivers :

Open source drivers have been created by the Linux community to function with certain GPUs. They are most commonly used with GPUs where the manufacturer doesn't supply Linux versions and there is no proprietary driver available. The benefits of open source is that they are community supported and bugs tend to be fixed on an ongoing basis. The disadvantage is that they won't fully support all the features of every GPU.

The first thing is to correctly identify your Hardware.

You can determine you make and model using the command below in Terminal :

lspci | grep VGA

You can get more detailed information by running :

sudo lshw -C video

For a list of supported hardware please check out the article below :

There are two ways to install a proprietary driver in Ubuntu :

  1. The first way is through the GUI (Graphical User Interface) Hardware Manager window.

    1. Open Software Center and go to Edit

    2. Select Additional Drivers

    3. It will check what is already installed and download a list of all the other proprietary drivers available and any updates.

    4. You will now be able to enable / disable a driver. If there are multiple versions, please remember it's best to use the most recent one that applies to your hardware. It's usually got the best chance of working and containing the most recent fixes for any issues.

  2. The second way is through the CLI (Command Line Interface)

    1. Open a Terminal Window (CTRL + ALT + T)

    2. The example below shows commands for Nvidia:

      sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
      sudo apt-get update
      sudo apt-get install Nvidia-current

There are a number of open source drivers that cover a number of manufacturers.

I've listed some current programmes below :

VESA

This is the default driver and supports most cards without acceleration and has a limited set of possible resolutions.

xorg-video-intel

This is the latest open source driver to support the Intel Graphics

radeon

This is another AMD Radeon driver which is looking to support 3D and is made up of radeon, r200, r300g, r600g and radeonsi.

nouveau

This driver is based entirely on information gained through backward engineering for Nvidia devices.

tegra-re

This driver is also based entirely on information gained through backward engineering for Nvidia Tegra devices.

Matrox

This company supplied open source drivers for all devices older than G550, any that are newer than G550 use a closed source driver.

opernChrome

This supports the S3 Chrome GPU, all other S3 products are closed source.

lima

This driver had support built in for the ARM Mali GPU.

etna_viv and BLTsville

These drivers support the Vivante GC400, GC800 and the GC1000 series.

freedreno

This supports the Qualcomm Adreno GPU series.

videocoreiv

This was an attempt to support the Videocore GPU series, but Broadcom who make the Videocore series release the source code for the IV graphics core as part of the second anniversary of the Broadcom Raspberry Pi.


Back to Top


Setup and use Hybrid Graphics

Enabling vga_switcheroo

vga_switcheroo is what allows you to switch between GPUs if your machine has a hardware mux.

Note: This method is not supported by all system types and only works if you are using an open source driver (nouveau, radeon) and not the proprietary ones (nvidia, fglrx).

To check whether your kernel is compiled with the correct option you can examine the file config-2.6.nn-mm-generic in the /boot directory :

grep -i switcheroo /boot/config-*

vga_switcheroo mechanism works when the kernel is booted with either the modeset=1 kernel option and/or the nomodeset option being absent. To test if vga_switcheroo is enabled, look for the switch file :

ls -l /sys/kernel/debug/vgaswitcheroo/switch

Using vga_switcheroo

If vga_switcheroo is available, you can switch between GPUs. Be prepared for something to go wrong and the system to lockup as the fact this file is there doesn't gaurantee the machine is supported.

Use this command to turn on the GPU that is currently disconnected, but it doesn't switch the outputs :

echo ON > /sys/kernel/debug/vgaswitcheroo/switch

This command connects the integrated graphics with the outputs :

echo IGD > /sys/kernel/debug/vgaswitcheroo/switch

This command connects the discrete graphics with the outputs :

echo DIS > /sys/kernel/debug/vgaswitcheroo/switch

This command turns off the graphics card that is currently disconnected :

echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

This command lets you check the current state of the hybrid graphics. There will usually be two lines of output - one should show Pwr and the other shows Off :

cat /sys/kernel/debug/vgaswitcheroo/switch

Note: If you just want to turn one of the GPUs off and run on one full time, then you will want to search for guides on a kernel mechanism like Bumblebee. As a last resort you could try acpi_call, but I wouldn't recommend it unless you are an experienced Ubuntu user.


Back to Top


Common video issues and solutions

Note: Dell only supports the hardware they ship with the PC and the factory installed version of the Ubuntu Operating system. If the hardware checks out OK and an OS reinstall from the recovery partition doesn't resolve the issue, then you could be directed to contact Canonical for further Software support. If the hardware in question is a third party device, you may be directed to contact the manufacturer of the device for further help. If you're looking for a specific driver that isn't commonly available, then you may be directed to contact the Ubuntu community forums with the information about your hardware for further support. I will give some general troubleshooting steps in the section below, but this information is used at your own risk.

No Display (i.e. nothing seen on screen.)

Are you experiencing the issue outside of the Ubuntu operating system?

  1. If you are seeing the issue outside the operating system then please go to either this article for an External Screen or this article for an Internal Screen to troubleshoot further.

  2. If you aren't seeing the issue outside the operating system then:

    1. In the Grub bootloader menu - select boot your computer into recovery mode

    2. Choose resume normal boot from the recovery menu (This will attempt a normal boot with failsafe video settings.)

    3. If the normal boot doesn't resolve the issue, then you can go back into recovery mode and select the run in failsafe graphic mode option.

    4. If you still have no video then you may be looking at an operating system reinstall or you can drop to the root shell prompt if you have the experience or a guide to troubleshoot further using Terminal.

Distorted Display (i.e. you can see something on the screen, but not make it out.)

Are you experiencing the issue outside of the Ubuntu operating system?

  1. If you are seeing the issue outside the operating system then please go to either this article for an External Screen or this article for an Internal Screen to troubleshoot further.

  2. If you aren't seeing the issue outside the operating system then:

    1. Performance Issues and Video Stability can be helped by disabling the visual effects. (This involves changing to the 2D desktop environment.)

    2. Open Terminal (CTRL + ALT + T) and install compiz settings manager:

      sudo apt-get install compizconfig-settings-manager
    3. On Ubuntu Dash, search for compiz settings manager and open the application and disable/uncheck:

      • Effects > Animations, Fading Windows, Windows Decoration

    4. If you still have distorted video then you may be looking at an operating system reinstall to resolve.

Resolution Issues (i.e. the screen is too big or too small.)

The default resolution for Ubuntu 14.04 is 640x480 at the low end and 1024x768 at the top.

If you are using the default video GPU and only see the low end of 640x480 then it's recommended that you run Xdiagnose and tick all 3 Debug options, as this has been known to restore the screen to the upper default 1024x768.

To get resolutions above 1024x768 you will need to use the xrandr command in Terminal to add a new mode with the new resolution. (This isn't usually kept past a Reboot.)

If you are an experienced Ubuntu user and are looking to keep the changes past a reboot then you can look to add the xrandr newmode and addmode commands into /etc/gdm/Init/Default just before "initctl ..."

It should look similar to the code below :

xrandr --newmode "1280x1024_60_new" 138.54 1280 1368 1504 1728 1024 1025 1028 1069 -HSynch +V
xrandr --addmode VGA-0 1280x1024_60_new

Settings issues (i.e. Brightness.)

(i) Intel Video Card Brightness

Note: This method is used on systems with only 1 GPU. Check out the other methods for dealing with Hybrid Graphics.

If the Fn shortcut keys for adjusting the brightness aren't working or you are looking for more control than they provide, then there are applets you can install that will give you a GUI (Graphical User Interface) window with various display settings. If you are an experienced Ubuntu user there are Terminal commands such as gksu and leafpad that will let you create a file to resolve the Fn shortcuts.

(ii) Using a Grub parameter to change brightness

Again for experienced users, adding a Grub parameter may be all you need. You will need gksu and leafpad installed and to be operating as admin with sudo control. You need to replace the existing line GRUB_CMDLINE_LINUX="" with the new line GRUB_CMDLINE_LINUX="acpi_osi=Linux" in the Grub text file and then update it in Terminal. If the brightness keys on the keyboard still don't work, you can replace GRUB_CMDLINE_LINUX="acpi_osi=Linux" with GRUB_CMDLINE_LINUX="acpi_backlight=vendor" and try again. If you still have issues after this, try the next method.

(iii) Using xbacklight to change the brightness

The first step is to install xbacklight if it isn't already on your system. Create a startup application called brightness, by searching for startup applications and clicking Add. Give the new application the command below and reboot the system. If it doesn't work, try the next method.

xbacklight -set 70
Note: You can use other settings than 70, you need to experiment to see which setting suits you best. However be aware you need to login for this to take effect, if you can't see to login you could have a problem.

(iv) Using setpci to change the brightness

  1. The first thing to do is open a Terminal window and identify the exact type of card you have and the BusID. (The BusID has five (5) digits 00:00.0 , take a note of it.)

    Ispci | grep -i vga
  2. Combine the BusID with the following two commands to dim and increase the brightness on your display. (You will need to experiment to see which settings suit you best.)

    sudo setpci -s 00:00.0 F4.B=50
    sudo setpci -s 00:00.0 F4.B=90
  3. In order to make this change survive a reboot you will need gksu and leafpad installed. You need to open the /etc/re.local file in leafpad and add this line setpci -s 00:00.0 F4.B=50 just above the existing line that says exit 0:

If you're still having problems after this, then the next method is a last resort and only intended for those users who are experienced with Ubuntu.

(v) Using xrandr to change the brightness

you can even use xrandr to affect the brightness output. (I would recommend you be sure about the hardware of your machine and are confident in whichever guide you find to use, before doing too much in Terminal with the sudo command.)

Fans running at full speed

Does your graphics card fan run at full speed? You can create a script using the following command to run before shutdown :

echo ON > /sys/kernel/debug/vgaswitcheroo/switch

Suspend/Wake Freezing

If you have turned off the unused discrete card and your laptop freezes after suspending and trying to wake, you can make a new file called 11_switcheroo_suspend under /etc/pm/sleep.d and make sure the file is executable :

#!/bin/bash

PATH=/bin:/usr/bin

switchfile=/sys/kernel/debug/vgaswitcheroo/switch

[[ -n "$1" && -f "$switchfile" ]] || exit 1

retval=0

case "$1" in
hibernate|suspend)
echo ON > /sys/kernel/debug/vgaswitcheroo/switch
retval=$?
;;
resume|thaw)
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
retval=$?
;;
*)
[ -x /bin/logger ] && /bin/logger -i -t switcheroo_suspend -p user.info "Unknown mode: $1"
retval=$?
;;
esac

exit $retval

Default GPU

Depending on which GPU is started on Boot - you may have an issue with it needing the system to be connected to mains power.


Back to Top


Additional Information :

Note :
Software support is provided by Canonical through the following methods:
Technical Support is provided by Dell :


Back to Top






Article ID: SLN298475

Last Date Modified: 11/05/2018 05:01 AM


Rate this article

Accurate
Useful
Easy to understand
Was this article helpful?
Yes No
Send us feedback
Comments cannot contain these special characters: <>()\
Sorry, our feedback system is currently down. Please try again later.

Thank you for your feedback.