Включение/отключение дискретной видеокарты
Практически все современные ноутбуки обладают двойными видеокартами. Обычно это что то маломощное от интел, и крутая, энергозависимая карта для фильмов и игр от nvidia или ati. Автоматическое переключение довольно часто глючит(Например: может включится крутая видеокарта при работе с документами, а нам нужно сохранить батарею как можно дольше), поэтому рассмотрим способ ручного переключения.
1. Способ. Подходит для все версий linux с ядром 2.6.34 +
«uname -a» узнать свою версию ядра
Для начала узнаем какие видеокарты видит наша система
Появится примерно такие строчки:
Запомним, что 00:02.0 это слабая видеокарта, а 1:00.0 сильная
Теперь посмотрим, какая из видеокарт сейчас работает
Появятся примерно такие строки:
Плюс стоит на против активной видеокарты, а Pwr обозначает, что видеокарта работает и кушает питание. Несложно догадаться, что можно отключить питание от неиспользуемой карточки этим самым ничуть не повредить системе.
а) Если нам нужно обесточить неиспользуемую видеокарту, то выполняем команду:
Батарея ноутбука скажет вам спасибо 🙂
Если хотим, чтобы лишняя видеокарта отключалась после загрузки системы, то добавляем строчку
в файл /etc/rc.local
б) Если нам нужно, наоборот, включить мощную видеокарту и на неё изначально не подаётся питание то выполняем команды:
sudo echo ON > /sys/kernel/debug/vgaswitcheroo/switch
sudo echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
DIS — немедленное переключение на дискретную видеокарту
IGD — немедленное переключение на интегрированную видеокарту
DDIS — отложенное переключение на дискретную видеокарту
DIGD — отложенное переключение на интегрированную видеокарту
ON — включить неиспользуемую видеокарту
OFF — выключить неиспользуемую видеокарту
Завершаем сеанс, входим заново и отключаем слабую видеокарту
Должно получится так:
Если вдруг видеокарта вообще не работает, то тут поможет только ремонт ноутбуков. Если с видеокартой всё в порядке, но способ описанные выше кажется сложным, то можно воспользоваться графической программой.
2. Способ. Если на вашем ноутбуке установлена ubuntu и лезть в терминал не хочется, то можно воспользоваться Ubuntu Control Center
После установки и запуска переходим в Hardware>VGA Switching
Тут всё интуитивно понятно.
После выбора видеокарты произойдёт автоматическое завершение сеанса, так что не пугайтесь. Лично мне первый способ показался более красивым 🙂
Источник
Ноутбук + 2 видеокарты — как жить?
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
01:00.0 VGA compatible controller: ATI Technologies Inc M93 [Mobility Radeon HD 4500 Series] (rev ff)
Наша задача — либо научиться переключаться между двумя видеокартами, либо хотя бы отключить питание второй видеокарты.
Способ первый. Убить пересмешника.
Первый способ простой. Мы возьмём готовый модуль, написанный для ноутбуков Lenovo (для нашего замечательного HP он тоже подходит) и заставим его прикручиваться к нашему ядру. Для этого мы воспользуемся deb-пакетами и системой динамического прикручивания модулей — DKMS.
Модуль я обозвал незатейливо — hp_acpi_kill.
Берём исходный код модуля и сохраняем его под именем hp_acpi_kill.c
Теперь кладём рядом Makefile.
Это наш необходимый модуль, написанный неизвестным энтузиастом для OpenSUSE.
Теперь нам надо написать конфиг для DKMS, чтобы не пересобирать модуль под каждую новую версию ядра. К счастью, DKMS устроен очень просто, и конфиг получается короткий. Скачиваем и сохраняем под именем dkms.conf. В этом файле мы указываем имя компилируемого модуля, его версию, а также как компилировать и ставить наш модуль. Казалось бы на этом можно и остановиться — добавить модуль в DKMS, собрать и установить — но мы всё-таки пользователи удобного дистрибутива, а не не пойми чего. Поэтому мы завернём наш модуль в пакет.
Углубляться в подробности сборки пакета я не буду, посколько на хабре писал об этом уже много, скажу лишь, что помимо обычного набора файлов нам потребуются файлы *.postinst,*.postrm, *.prerm — чтобы наш модуль регистрировался и компилировался в DKMS при установке пакета, а также вычищался при удалении. Скачать архив со всеми необходимыми файлами можно тут.
Собираем пакет командой debuild или dpkg-buildpackage на выбор, устанавливаем и добавляем в /etc/modules название модуля hp_acpi_kill — теперь при загрузке системы дискретная видеокарта будет отключаться и энергопотребление резко падать.
Посмотрев список устройств, мы обнаружим, что наша видеокарта системе видна, но не определяется:
$ lshw
.
*-generic:0
product: Illegal Vendor ID
vendor: Illegal Vendor ID
physical id: 0
bus info: pci@0000:01:00.0
version: ff
width: 32 bits
clock: 66MHz
capabilities: bus_master vga_palette cap_list rom
configuration: driver=radeon latency=255 maxlatency=255 mingnt=255
resources: irq:31 memory:c0000000-cfffffff ioport:3000(size=256) memory:e4400000-e440ffff memory:e4420000-e443ffff
Способ второй. vga_switcheroo
Способ второй потребует от нас немножко трафика и капельку времени. Дело в том, что не так давно вышла версия 2.6.34 ядра, в которую включен новый интересный модуль — vga_switcheroo, который как раз и призван переключать видеокарты. На Launchpad и kernel.ubuntu.com даже можно найти пакеты с этим ядром, но в дефолтном конфиге модуль выключен — вероятно потому, что удобных графических средств для переключения видеокарт пока не придумали.
Поэтому для начала скачаем исходный пакет с ланчпада (он предназначен для Maverick Meerkat, но и у нас отлично заработает):
$ wget launchpad.net/ubuntu/+archive/primary/+files/linux_2.6.34-2.9.dsc
$ wget launchpad.net/ubuntu/+archive/primary/+files/linux_2.6.34-2.9.tar.gz
$ sudo dpkg -i linux-headers-2.6.34-2_2.6.34-2.9_all.deb linux-headers-2.6.34-2-generic_2.6.34-2.9_i386.deb linux-image-2.6.34-2-generic_2.6.34-2.9_i386.deb
Если у вас 64-битная система, вместо i386 в имени файла будет, разумеется, amd64.
Как нам после перезагрузки в новое ядро переключить видеокарту? Посмотрим на сводку советского информбюро:
$ cat /sys/kernel/debug/vgaswitcheroo/switch
0:+:Pwr:0000:00:02.0
1: :Off:0000:01:00.0
DIS — немедленное переключение на дискретную видеокарту
IGD — немедленное переключение на интегрированную видеокарту
DDIS — отложенное переключение на дискретную видеокарту
DIGD — отложенное переключение на интегрированную видеокарту
ON — включить неиспользуемую видеокарту
OFF — выключить неиспользуемую видеокарту
# echo ON > /sys/kernel/debug/vgaswitcheroo/switch # включим дискретную видеокарту
# echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch # попросим при случае переключить на дискретную видеокарту
# echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
$ $ cat /sys/kernel/debug/vgaswitcheroo/switch
0: :Off:0000:00:02.0
1:+:Pwr:0000:01:00.0
Источник
Перейти на полную работу через дискретную видеокарту Radeon
Стал я «счастливым» обладателем ноутбука с видеокартой Radeon. До этого слышал о проблемах с ее запуском на лине только по наслышке.
Аппарат работает на Linux Mint 18.3 Cinnamon (можно приравнять к Ubuntu 16.04)
Вот такие видеокарты определяет (мне нужная вторая — HD 6400M/7400M):
Вот какая сейчас выбрана (первая — не дискретная, а нужно выбрать вторую):
Запуск конкретных программ через DRI_PRIME=1 работает, но это не то что мне нужно. Мне нужно что бы иксы и все проги работали через эту видеокарту.
после установки в граб: GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash radeon.runpm=0″ — включилось питание в дискретной видеокарте:
но она всё еще не активна.
По идее после этой команды (отложенное изменение видеокарты): sudo /sys/kernel/debug/vgaswitcheroo/switch нужно перелогиниться (НЕ выключить/включить).
Но у меня после этой команды при попытке разлогининия просто вырубается экран (не черный фон, а именно выключается) и не реагирует. Если эту команду не давать, то разлогиниться/залогиниться можно без проблем.
Согласно этому мануалу http://ubuntu.fliplinux.com/vgaswitcheroo.html :
1. Перешел в ctrl+alt+f1 терминал.
2. sudo service lightdm stop 3. echo «DDIS»|sudo tee /sys/kernel/debug/vgaswitcheroo/switch 4. гаснет (отключается) экран
В общем провернуть это дело в консольном режиме — не помогло.
Может надо в xorg.conf указать параметр BusID с указанием номера PCI устройства?
export DRI_PRIME=1 это прописать в /etc/profile
vgaswitcheroo не работает для радеонов
Linux Mint 18.3 Cinnamon (можно приравнять к Ubuntu 16.04)
Прописал export DRI_PRIME=1 в конце /etc/profile
При логинии в систему (у меня вход через пароль), на долю секунды показывает картинку фоновую в рабочем столе и экран становится черным. Он включен, просто цвет фона черный.
Поставил для пробы просто DRI_PRIME=1 без «export» — все нормально загрузилось, но признаков работы дискретной видеокарты нет.
«vgaswitcheroo не работает для радеонов» блин, хоть кто нибудь бы написал об этом. а то все бьются на форумах с этим vgaswitcheroo. А оно оказывается не работает.
C 2012 года уже не существует этого аттавизма как /etc/X11/xorg.conf насколько знаю
Есть. Просто куча параметров теперь назначается по умолчанию. Но никто не мешает тебе создать этот фаил и прописать в него нужные настройки. Сейчас скорее вместо единого xorg.conf используются специализированные конфиги вида 10-radeon.conf в каталоге /etc/X11/xorg.d/
При логинии в систему (у меня вход через пароль), на долю секунды показывает картинку фоновую в рабочем столе и экран становится черным. Он включен, просто цвет фона черный.
Ибо нефиг было было извращаться со всем этим, что было понаписано в ОПпосте
Поставил для пробы просто DRI_PRIME=1 без «export» — все нормально загрузилось, но признаков работы дискретной видеокарты нет.
Правильно, не на радеоне теперь.
А какие признаки ожидались?
«vgaswitcheroo не работает для радеонов» блин, хоть кто нибудь бы написал об этом. а то все бьются на форумах с этим vgaswitcheroo. А оно оказывается не работает.
Для уточнения, дискретные карты в ноутбуках позднее 2013 теперь по-другому работают. Эти советы не актуальны.
Ибо нефиг было было извращаться со всем этим, что было понаписано в ОПпосте
плавная анимация открытия окон, тест glxgears выдавал бы 1500-2000 fps вместо 60 fps
Для уточнения, дискретные карты в ноутбуках позднее 2013 теперь по-другому работают. Эти советы не актуальны.
да вроде старался искать статьи/форумы 2016 года и выше
Есть еще шансы переключить на Radeon?
даже поставил, но эффекта не увидел и удалил. Может был недостаточно настойчив?
Судя по Арч-вики такое можно сделать, но только через бубен. Пишешь в xorg.conf
После чего тебе нужно будет перезапустить иксы и включить в xrandr нужные выводы. При этом иксовая сессия у тебя, скорее всего, сразу не заработает, нужно будет выставить вывод через интеграшку xrandr —setprovideroutputsource integratedCard discreteCard .
А нахрена тебе вообще всё это? Если у тебя PRIME работает нормально, в чём смысл пускать всё на дискретке? Неужто производительности встройки не хватает для рабочего стола?
ЗЫЖ glxgears — это не бенчмарк. На его показания вообще не стоит ориентироваться.
xorg-server сам может автоконфигурироваться, но создать xorg.conf тебе никто те запрещает, xorg-server будет его точно так же считывать и обрабатывать.
Так что то, что ты знаешь — неправильно.
Если у тебя сложная конфигурация, с несколькими видео картами, мониторами, то xorg.conf тебе может потребоваться.
про 2000 fps я преувеличил.
vblank_mode=0 glxgears — 1350 fps выдает
DRI_PRIME=1 glxgears — 1020 fps
glxgears — 60 fps
странно. ну да ладно. Моя цель что бы сразу нормальный fps был, без доп флагов. Ибо ко всем программам флаги не расставишь (наверно)
А нахрена тебе вообще всё это? Если у тебя PRIME работает нормально, в чём смысл пускать всё на дискретке? Неужто производительности встройки не хватает для рабочего стола?
нехватает. Тормозит, эффекты не гладкие, даже простые. Никакого удовольствия, одни страдания. Тем более эта мощность отнимается у центрального процессора, который не настолько мощен что бы разбрасываться на всякую фигню своим временем. Даже древний iMac с его 512мб видюхи работает идеально гладко.
Тем более эта мощность отнимается у центрального процессора
Не отнимается, просто на одной подложке вместе с чипами процессорных ядер разведено и графическое ядро, процессор к обработке графики отношения не имеет.
Это уже к DE вопросы. У меня гном на радеоне тоже лагает. Но все остальное работает сносно.
тест glxgears выдавал бы 1500-2000 fps вместо 60 fps
60 — потому что вертикальная синхронизация. И glxgears не показатель.
А что за встройка?
нехватает. Тормозит, эффекты не гладкие, даже простые.
Тогда вряд ли проблема в видяхе. Если всё нормально, то DE должно хватать даже слабой интеграшки. Попробуй другое DE, типа кед с livecd запустить. Просто для сравнения.
Про ЦП тебе уже сообщили. От перехода на дискретку, разве что нагрузка на память снизится, но незначительно.
Даже древний iMac с его 512мб видюхи работает идеально гладко.
С минтом и циннамоном, или с макосью?
Ибо ко всем программам флаги не расставишь (наверно)
Ко всем и не надо. Зачем тебе калькулятор, или терминал на дискретке запускать? А для браузера, стима и т.п. вполне можно DRI_PRIME=1 в ярлык добавить.
В принципе glxgears это бенчмарк но очень узко специфичный. Судить об общей производительности видеокарты по нему не стоит.
А просто ради нтереса что скажет команда glxinfo | grep Open
Enjoy your linux
Ага, а тут всякие орут что видео АМД готово для лини 🙂
А ты можешь решить этот сценарий под любую другую ОС на любом другом железе?
попробовал такую конфигурацию:
а так же пробовал сдвинуть PCI:0:2:0 >> PCI:2:0:0 и аналогично вторую секцию. а так же пробовал эти пару вариантов с прописанной «amdgpu» Это уже через загрузочную флешку добирался до /etc/X11/xorg.conf.d/10-gpu.conf
При попытке разлогиниться — темный экран и курсор ввода текста вверху мигает и ничего не происходит и ввести в этот курсор тоже ничего невозможно. После перезагрузки тоже самое. В последующих вариантах — просто повисало на этом экране еще при загрузке.
еще нюанс, у меня и встроенная видеокарта и дискретная — radeon, так что отделить их коротким названием не получится.
еще у меня помимо nouveau установлены открытые дрова amdgpu и ati как в статье, пока попробовал только amdgpu и nouveau
Благодарю за пояснения по работе встроенных карт и конфигурирования xorg, видимо давно не общался с линуксом. Встроенная и дискретная карты указаны в тексте первого сообщения темы.
Вообще есть ощущение что конфигурирование xorg — правильный путь. Только надо это правильно сделать.
еще у меня помимо nouveau установлены открытые дрова amdgpu и ati как в статье, пока попробовал только amdgpu и nouveau
У тебя в голове просто лютейшая каша. Почитай нормальную документацию, чтобы понять, что такое «драйвер» (модуль ядра, реализации API типа OpenGL, драйвер X.Org — всё это разные вещи) и какие драйверы используются для каких видеокарт (и не только видеокарт).
Если это так просто, а я дико туплю, прошу подсказать пару строк конфига, которые нужно вписать или парочку команд утилиты xrandr
кстати нашел наиболее подробный (для меня все равно тяжеловат) мануал по этой утилите: http://rpm.pbone.net/index.php3/stat/45/idpl/33021513/numer/1/nazwa/xrandr
только я чет не понял как уидеть результаты ее работы
Очень занятный вывод и сервис. было бы неплохо им управлять, ведь именно он падает при загрузке системы когда добавляю конфиг xorg
Ну gpu-manager от рута пускается
Была идея что у тебя не завелось 3д на встройке и из-за этого лагает, но вроде норм все.
При работе с открытыми дровами нормальным советом является обновиться до последней месы и ядра. Или как вариант попробовать загрузиться для теста с лайвсд ге такие есть и проверить на нем.
Тебе правильно сказали что у тебя каша в голове насчет дров.
radeon — драйвер который тебе нужен.
nouveau — драйвер для нвидий
amdgpu — драйвер для новых радеонов
А там нет никаких проблем. Все работает.
Перейти на полную работу через дискретную видеокарту Radeon
Сейчас бы врать и не краснеть.
То есть видео от амд такое кривое что нельзя выбрать его в качестве дефолта?
Перейти на полную работу через дискретную видеокарту Radeon
Что значит на полную? Чтобы все проги запускались на ней? А у нее есть непосредственный вывод на дисплей или она отрисовывает через встроенную?
Ну и зачем лезть в тему, если не разбираетесь?
Ноутбук такой кривой и в нем нельзя выбрать видеокарту AMD в качестве дефолта, т.к. нет видеовыхода.
И вообще абсолютное большинство ноутбуков такие.
продолжаю пробовать разные конфигурации
Сейчас попробовал в конфигурацию добавить именно встроенную видеокарту через которую он нормально работает:
Результат: он нормально загрузился. На самом деле я не ожидал, думал косяк в конфиге какой-нибудь принципиальный. Ан нет.
Попробовал заменить видеокарту: [font=andale mono]BusID «PCI:2@0:0:0» [/font]
Результат: Снова темный экран
обновиться до последней месы и ядра
обновлялся вроде пару дней назад. все обновления загрузились/применились.
Ну и зачем лезть в тему, если не разбираетесь?
Прошу не захламляйте тему вопросами морали. Это деструктивный вопрос и комментарий, который ни на сантиметр не приближает к решению проблемы.
нельзя выбрать видеокарту AMD в качестве дефолта, т.к. нет видеовыхода.
Как понять есть ли видеовыход?
не соглашусь. С N-vidia вообще не встречался с проблемами никогда, а ставил Убунту примерно на 7-9 устройств разных в разное время.
UPD: попробовал другой драйвер указать в конфиге вот так
не соглашусь. С N-vidia вообще не встречался с проблемами никогда, а ставил Убунту примерно на 7-9 устройств разных в разное время.
Чтоооо? nvidia optimus для вас пустой звук? Что за чушь я сейчас прочитал? Primus более черезжопный метод вывода изображения.
А у нее есть непосредственный вывод на дисплей или она отрисовывает через встроенную?
Вот еще есть такая информация:
Чтобы все проги запускались на ней?
Проги и иксы, а более ничего и не надо.
Раз ты пытаешься уйти от ответа я так понимаю ответ нет, не можешь.
обновлялся вроде пару дней назад. все обновления загрузились/применились.
Сейчас актуальна ветка месы 17.3 и ядра 4.15. Скоро выходит 18 версия месы а в ней для старых карт было много улучшений. Я не предлагаю превращать систему в блейдингэдж, потому и говорил попробовать лайвсд.
По конфигурации иксов я тебе врятли что подскажу, ноутбука у меня никогда не было.
Просто запускай нужные приложения с DRI_PRIME=1
Ты хочешь сказать что под виндой в амд дровах нету возможности выбрать видюху по умолчанию.
Почти все конфиги, которые ты тут постил — полная хрень.
У тебя может быть только один драйвер для видеокарт — radeon. Никакие другие тебе не подойдут. Не пытайся их использовать.
Ты тот конфиг, который я предложил пробовал запускать? С указанием правильных busid, естественно.
При попытке разлогиниться — темный экран
Тебе надо переключить вывод с дискретки на интеграшку через xrandr. Без этого у тебя будет тёмный экран. Делать это нужно после того, как дискретка будет указана основной картой в xorg.conf.
ЗЫЖ Про modesetting я в курсе, ТСу он не нужен.
А вообще это хреновая идея, пытаться делать основной карту без видеовывода.
Возможно имеет смысл отредактировать скрипт запуска сессии и делать в нём export DRI_PRIME=1 после запуска иксов. Не знаю, можно ли запускать с DRI_PRIME непосредственно wm, но всё остальное должно быть вполне возможно.
Мне нужно что бы иксы и все проги работали через эту видеокарту.
У меня после такой процедуры появились сильные тормоза. Лучше иксы туда не пхать. (опыт с nvidia). Просто поправить ярлыки для нескольких нужных прог, зачам терминал или блокнот запускать на той видюхе? Блендер3Д, например, при первом страте у меня заливал некоторые панели черным, приходилось свернуть развернуть окно. Все равно все будет отрисовыватся на встроенной, к ней же подключен LVDS.
Конкретно сейчас пробую этот конфиг, скорее всего уже пробовал, просто уже пару десятков раз перезагружал комп, точно не вспомню:
Тебе надо переключить вывод с дискретки на интеграшку через xrandr.
Да, вот это вот и пытаюсь понять как сделать.
Возможно имеет смысл отредактировать скрипт запуска сессии и делать в нём export DRI_PRIME=1 после запуска иксов.
В самом начале этой темы пробовал это сделать, результат не очень. Да и мне иксы нужны с рендрингом через дискретку.
Тебе надо переключить вывод с дискретки на интеграшку через xrandr.
0x78 — встроенная 0x43 — дискретная
Конкретно сейчас пробую этот конфиг
увы. темный экран с моргающим курсором вверху,
он не преждагает мне обновиться. Да и до 17.3 люди как-то наверно запускали эту видеокарту. Так что пока нарываться на лишние проблемы совместимости пакетов думаю не стоит торопиться.
Я уже сказал, для тебе еще раз повторю:
А ты можешь решить этот сценарий под любую другую ОС на любом другом железе?
Хочешь такой юзкейс рассказывай как. Только весь вывод а не отдельные приложения.
В самом начале этой темы пробовал это сделать, результат не очень.
Ты пробовал это делать через profile.d, что повлияет на всё, включая запуск иксов.
Да и мне иксы нужны с рендрингом через дискретку.
Ты так говоришь, как будто понимаешь, что это значит и на что повлияет. Иксы с рендерингом через дискретку тебе не нужны. Ты хочешь, чтобы все иксовые приложения, ключая wm, запускались на дискретке. Насчёт wm я не уверен, но запускать всё остальное вполне можно. Соответственно, можно попробовать отредактировать инит скрипт и экспортировать DRI_PRIME после запуска иксов и, возможно, wm.
Да, вот это вот и пытаюсь понять как сделать.
После того, как перезапустил иксы с правильным конфигом, при котором основной видяхой используется дискретка, если у тебя чёрный экран, переходишь в tty, делаешь export DISPLAY=:0 , после чего делаешь xrandr —listproviders и на основе его вывода устанавливаешь правильный provideroutputsource. Возможно даже заработает.
xrandr не должен запускаться от рута. От пользователя.
ЗЫЖ Эксперименты с xorg.conf и DRI_PRIME нужно проводить отдельно. Будешь мешать их в кучу, не заработает ничего.
Установил ядро 4.9 и к нему mesa 17.3.3 Судя по докам для моей видюхи нужен OpenGL 4+, а у меня 3. Но у меня openGL ES — там другая нумерация. Типя для мобильных видюх ветка
если у тебя чёрный экран, переходишь в tty, делаешь export DISPLAY=:0,
Источник