Ubuntu – AMD-INTEL hybrid graphics on Ubuntu 16.04

amd-graphicsdriversgraphicshybrid-graphicsintel graphics

I saw many saying that the latest version of Ubuntu 16.04 includes an opensource driver for ATI. I have an HP laptop with AMD 6770m + Intel HD 3000 hybrid graphics and wants to install Kubuntu on it. I created a bootable USB drive of Kubuntu 16.04 and booted from it just to check everything works perfectly (I don't want to install it separately and ruin bootloader as of now). But my laptop is getting too hot and the battery is not lasting for more than 30 mins. Also the brightness control is not working at all and it stays high always.

How can I get hybrid graphics on Kubuntu/Ubuntu working well? I am ready to turn off the ATI card since I am not going to play any games on Linux. I just need the Intel graphics + Cool Laptop + Good battery Life + Brightness control.

My BIOS setting for switchable graphics mode is FIXED. Do I need to change it to DYNAMIC?

UPDATE

I wasn't able to make things work in 16.04 so installed 14.04 LTS along with the AMD Catalyst driver. Now everything works perfectly fine. Below are the steps.

  • Clean install Ubuntu 14.04 LTS
  • Install the fglrx catalyst drivers using “Additional Drivers” window. This will enable us to switch graphics
  • Restart Ubuntu
  • FAN Noise Fix – Refer this url and install i8kutils
  • Brightness Control – Check this link

This is the official documentation for AMD/Intel hybrid graphics

Best Answer

Since there are no longer support for fglrx driver in Ubuntu 16.04, so it seems the built in radeon driver is the only way to solve this problem. First, you have to confirm that your ATI Radeon graphics card is supported by Xorg driver by typing man radeon in 16.04 terminal. Here is mine:

R100        Radeon 7200
RV100       Radeon 7000(VE), M6, RN50/ES1000
RS100       Radeon IGP320(M)
RV200       Radeon 7500, M7, FireGL 7800
RS200       Radeon IGP330(M)/IGP340(M)
RS250       Radeon Mobility 7000 IGP
R200        Radeon 8500, 9100, FireGL 8800/8700
RV250       Radeon 9000PRO/9000, M9
RV280       Radeon 9200PRO/9200/9200SE/9250, M9+
RS300       Radeon 9100 IGP
RS350       Radeon 9200 IGP
RS400/RS480 Radeon XPRESS 200(M)/1100 IGP
R300        Radeon 9700PRO/9700/9500PRO/9500/9600TX, FireGL X1/Z1
R350        Radeon 9800PRO/9800SE/9800, FireGL X2
R360        Radeon 9800XT
RV350       Radeon 9600PRO/9600SE/9600/9550, M10/M11, FireGL T2
RV360       Radeon 9600XT
RV370       Radeon X300, M22
RV380       Radeon X600, M24
RV410       Radeon X700, M26 PCIe
R420        Radeon X800 AGP
R423/R430   Radeon X800, M28 PCIe
R480/R481   Radeon X850 PCIe/AGP
RV505/RV515/RV516/RV550 Radeon X1300/X1400/X1500/X1550/X2300
R520        Radeon X1800
RV530/RV560 Radeon X1600/X1650/X1700
RV570/R580  Radeon X1900/X1950
RS600/RS690/RS740 Radeon X1200/X1250/X2100
R600        Radeon HD 2900
RV610/RV630 Radeon HD 2400/2600/2700/4200/4225/4250
RV620/RV635 Radeon HD 3410/3430/3450/3470/3650/3670
RV670       Radeon HD 3690/3850/3870
RS780/RS880 Radeon HD 3100/3200/3300/4100/4200/4250/4290
RV710/RV730 Radeon HD 4330/4350/4550/4650/4670/5145/5165/530v/545v/560v/565v
RV740/RV770/RV790 Radeon HD 4770/4730/4830/4850/4860/4870/4890
CEDAR       Radeon HD 5430/5450/6330/6350/6370
REDWOOD     Radeon HD 5550/5570/5650/5670/5730/5750/5770/6530/6550/6570
JUNIPER     Radeon HD 5750/5770/5830/5850/5870/6750/6770/6830/6850/6870
CYPRESS     Radeon HD 5830/5850/5870
HEMLOCK     Radeon HD 5970
PALM        Radeon HD 6310/6250
SUMO/SUMO2  Radeon HD 6370/6380/6410/6480/6520/6530/6550/6620
BARTS       Radeon HD 6790/6850/6870/6950/6970/6990
TURKS       Radeon HD 6570/6630/6650/6670/6730/6750/6770
CAICOS      Radeon HD 6430/6450/6470/6490
CAYMAN      Radeon HD 6950/6970/6990
ARUBA       Radeon HD 7000 series
TAHITI      Radeon HD 7900 series
PITCAIRN    Radeon HD 7800 series
VERDE       Radeon HD 7700 series
OLAND       Radeon HD 8000 series
HAINAN      Radeon HD 8000 series
BONAIRE     Radeon HD 7790 series
KAVERI      KAVERI APUs
KABINI      KABINI APUs
HAWAII      Radeon R9 series
MULLINS     MULLINS APUs

If your graphics card is not listed, you should go back to Ubuntu 14.04 and use fglrx driver until your device supported by Ubuntu 16.04.

Next step, install your ubuntu 16.04 and update Ubuntu kernel to the latest stable kernel version. You can check your kernel version by typing in your terminal:

uname -r

Search for the latest kernel here. For the tutorial installing new kernel is available here.

After installing kernel, please reboot your computer and login using your new kernel.

To make your ATI Radeon graphics card fully detected by the OS, tell the kernel to load it by editing the grub:

  1. Open your GRUB configuration by typing in your terminal: sudo nano /etc/default/grub
  2. Add modprobe radeon.modeset=1 after quiet splash command. Then it will be like this : " ... quiet splash modprobe radeon.modeset=1". Be sure there are no nomodeset in grub configuration. To finish, enter: ctrl+x, and type y, and Enter.
  3. Run in your terminal sudo update-grub.
  4. Reboot your computer.

After your radeon graphics card recognized by the OS, of course you can switch to use Intel graphics card and disable the radeon one by adding some configuration. Create a script, place it somewhere in your home folder. In my case, I use this:

  1. cd ~

  2. nano radeon_off

  3. Put the following in the script:

    chown CHANGE_WITH_YOUR_USERNAME /sys/kernel/debug
    chown CHANGE_WITH_YOUR_USERNAME /sys/kernel/debug/vgaswitcheroo/switch
    echo DIS > /sys/kernel/debug/vgaswitcheroo/switch
    echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
    echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
  4. To finish, enter: ctrl+x, and type y, and Enter.

  5. Type: chmod 755 radeon_off,

  6. Edit lightdm configuration by entering in your terminal: sudo nano /etc/lightdm/lightdm.conf.

  7. Add this line : session-setup-script = /home/CHANGE_WITH_YOUR_USERNAME/radeon_off

  8. Reboot.

To verify your radeon graphics card has been disabled, type sudo cat /sys/kernel/debug/vgaswitcheroo/switch in your terminal. The results may be similar to this:

0:IGD:+:Pwr:0000:00:02.0
1:DIS: :DynOff:0000:01:00.0

You need the DIS to have :DynOff value or maybe just :Off is fine.

Related Question