Введение
Эта статья подойдет для большинства ноутбуков с гибридными видеокартами и ядро linux должно быть не ниже 2.6.34. Сам linux может быть на самом деле любой но рассмотрим на примере самого известного.
Конфигурация ноутбука на котором было проверено:
Acer 3820TG
ОС: Ubuntu 11.10, Ubuntu 12.04, Ubuntu 12.10
Процессор: Intel Core i3-370M
Видеоадаптер: AMD (ATI) Radeon HD 5470
Для решения проблем в Ubuntu 13.04 была написана дополнительная статья.
После установки Ubuntu сразу бросаются в глаза проблемы:
- Яркость подсветки экрана вообще не регулируется
- Повышенное потребление энергии и температура
Попробуем их решить.
Вначале посмотрим какие видеокарты нам доступны:
lspci | grep VGA
Получится примерно так
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 18) 02:00.0 VGA compatible controller: ATI Technologies Inc Manhattan [Radeon HD 5400 Series] (rev ff)
Здесь главное запомнить что 00:02.0 — intel, а 02:00.0 -radeon для других карточек цифры будут другими.
Удаление проприетарные драйверов
Предупреждаю сразу основная цель уменьшить энергопотребление. Для нормальной работы в большинстве случаев достаточно возможностей встроенной видеокарты intel (если не считать OpenGL игрушек). Как известно у радеонов всегда были проблемы с установкой проприетарных драйверов и заставить работать аппаратное ускорение без бубна удается далеко не всем. К тому же оказывается 5000 серия видеокарт по мнению AMD является устаревшей и поддержка этих карточек вырезали из драйверов, последний рабочий драйвер был если не ошибаюсь 11.6.
У Nvidia ситуация немного лучше но с переключением на встроенную видеокарту и обратно также есть проблемы. Поэтому чтобы не заморачиваться с настройкой проприетарных драйверов мы их просто удалим:
Для Radeon выполним
apt-get remove fglrx
Также на всякий случай можно запретить загрузку модулей. Создаем файл /etc/modprobe.d/blacklist-radeon.conf со следующим содержимым:
blacklist fglrx
Для Nvidia
apt-get remove nvidia-current
Аналогично отключаем модули /etc/modprobe.d/blacklist-nvidia.conf
blacklist nouveau blacklist nvidia
Перезагружаемся.
Настройка switcheroo
Мы будем использовать драйвер из комплекта Xorg поэтому убедимся что он установлен:
apt-get install xserver-xorg-video-intel
Переключатель который мы будем использовать должен поддерживаться ядром поэтому сделаем проверку:
grep -i switcheroo /boot/config-*
Должно быть:
/boot/config-3.0.0-16-generic:CONFIG_VGA_SWITCHEROO=y
Теперь проверим наличие переключателя (по умолчанию он доступен только пользователю root)
sudo ls -l /sys/kernel/debug/vgaswitcheroo/switch
Команды управления switcheroo
Если switcheroo работает то ему можно передавать разные команды но все команды выполнять нужно с правами root.
— Выключить питание на неактивной видеокарте
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
— Включить питание на неактивной видеокарте
echo ON > /sys/kernel/debug/vgaswitcheroo/switch
— В теории переключить видеовыход на интегрированную карту (вроде ещё не работает)
echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
— В теории переключить видеовыход на дискретную карту (вроде ещё не работает)
echo DIS > /sys/kernel/debug/vgaswitcheroo/switch
— Переключиться на интегрированную карту при следующей перезагрузке X server
echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch
— Переключиться на дискретную карту при следующей перезагрузке X server
echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
Теперь чтобы увеличить продолжительность работы от батарейки в два раза достаточно при старте отключить дискретную видеокарту. Так как интегрированная карта обычно запускается как основная то достаточно добавить в файл /etc/rc.local (в старых дистрибутивах /etc/init.d/rc.local) перед строкой «exit 0» следующие строчки:
chown USERNAME /sys/kernel/debug/vgaswitcheroo/switch sleep 3 echo OFF >> /sys/kernel/debug/vgaswitcheroo/switch
В первой строке разрешим пользователю USERNAME посылать команды управления. Это нужно если захотим переключать видеокарты под своим пользователем, а не от рута. Далее ждем 3 секунды и отключаем питание на неактивной видеокарте в данном случае дискретной. Маленькое замечание если захотите вручную управлять переключением то вторую и третью строчку следует закомментировать.
После загрузки проверяем т.к. изредка переключение из автозагрузки не срабатывает:
sudo cat /sys/kernel/debug/vgaswitcheroo/switch
Должно получиться:
0:IGD:+:Pwr:0000:00:02.0 1:DIS: :Off:0000:02:00.0
Здесь «+» показывает активную видеокарту (сейчас intel). Pwr — говорит о том что питание на карту подается. Off — значит питание на карте (redeon) выключено и она не потребляет заряд батареи.
Комбинируя указанные выше команды управления можно переключаться между карточками можно делать только если стоят нормальные свободные драйвера на дискретную карту.
Например переключимся на дискретную карточку.
echo ON > /sys/kernel/debug/vgaswitcheroo/switch echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
После этого нужно перезапустить X Server для этого достаточно перелогиниться (выйти из своего пользователя на стартовый экран и зайти обратно).
Аналогично переключаемся обратно на встроенную.
echo ON > /sys/kernel/debug/vgaswitcheroo/switch echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
Единственное неудобство что налету карточки ещё не научили переключаться и нужно каждый раз перезапускать X Server.
Управление подсветкой экрана
Не знаю кто виноват в том что подсветка обычно страшно глючит или вообще не на что не реагирует но решается эта проблема обычно очень просто. Достаточно добавить параметр в конфиг /etc/default/grub
GRUB_CMDLINE_LINUX="acpi_backlight=vendor"
Этот параметр говорит ядру что подсветкой должно управлять железо.
Обновляем конфигурацию grub
sudo update-grub
Перезагружаемся и радуемся что подсветка начала реагировать на функциональные кнопки.
Источники:
Конфигурация ноутбука:
ОС: Ubuntu 12.04
Процессор:AMD Turion(tm)