Bumblebee (Русский)

Ссылки по теме
PRIME
Nvidia-xrun (Русский)
NVIDIA Optimus (Русский)
Nouveau (Русский)
NVIDIA (Русский)
Intel graphics (Русский)
Из
FAQ
Bumblebee:
Bumblebee — решение, позволяющее задействовать NVIDIA Optimus в ноутбуках с GNU/Linux, что включает в себя два графических адаптера с двумя разными профилями энергопотребления, использующих общий фреймбуфер.
Примечание
Рассмотрите
nvidia-xrun (Русский)
или
PRIME
в качестве альтернативы, так как у Bumblebee присутствуют значительные проблемы с производительностью
[1]
[2]
и не планируется поддержка
Vulkan
[3]
.
This article or section needs expansion.
Reason:
Что такое "
primus_vk
" и как его можно использовать с Bumblebee? См. также
primus-vk-git
AUR
(Discuss in
Talk:Bumblebee (Русский)
)
Bumblebee: Optimus для Linux
Optimus
реализует
технологию гибридной графики
без аппаратного коммутатора. Интегрированная видеокарта выводит на экран,в то время,как дискретная видеокарта занимается рендерингом, который требует более высокой вычислительной мощности графического процессора. Технология NVIDIA Optimus дает большую производительность, сберегая при этом заряд батареи, подключая дискретный графический процессор, когда это требуется.
Bumblebee — программное решение, базирующееся на VirtualGL и драйверах ядра, позволяющее использовать дискретный GPU, не имеющий физического подключения к экрану.
Bumblebee реализует технологию Optimus в два шага:
Дискретная видеокарта производит рендеринг на виртуальном дисплее, в то время как выводом на экран занимается интегрированная видеокарта.
Дискретная видеокарта отключается от питания, когда ее вычислительная способность не требуется.
Установка
Перед установкой Bumblebee убедитесь, что поддержка NVIDIA Optimus включена в настройках BIOS, а дисплей подключён к интегрированной видеокарте.
Установите
:
bumblebee
— Основной пакет, содержащий демон и клиентское ПО.
mesa
— Свободную реализацию спецификации
OpenGL
.
Соответствующую версию драйвера NVIDIA, см.
NVIDIA#Installation
.
Опционально установите
xf86-video-intel
— драйвер
Xorg (Русский)
для Intel.
Также включите репозиторий
multilib
для поддержки 32-битных приложений и установите:
lib32-virtualgl
— виртуальный дисплей для рендеринга в 32-битных приложениях.
lib32-nvidia-utils
или
lib32-nvidia-340xx-utils
AUR
(должен соответствовать версии обычного драйвера NVIDIA).
Чтобы использовать Bumblebee, необходимо добавить обычного
пользователя
в группу
bumblebee
:
# gpasswd -a
user
bumblebee
Также
включите
службу
bumblebeed.service
, перезагрузите систему и см. раздел
#Использование
.
Использование
Тестирование
Примечание
Для использования
glxgears
и
glxspheres64
требуется установить пакет
mesa-utils
и
virtualgl
Протестируйте bumblebee:
$ optirun glxgears -info
Если это не сработало:
$ optirun glxspheres64
Примечание
Если
glxgears
не запустилось,а
glxspheres64
работает, используйте
glxspheres64
во всех случаях
Запуск программ
$ optirun [options] application [application-options]
Для примера, запуск
firefox
с параметром 'www.yandex.ru':
$ optirun firefox www.yandex.ru
Для просмотра документации и всех опций
optirun
используйте следующую команду:
$ man optirun
Настройка
Вы можете настраивать bumblebee под свои нужды, редактируя
/etc/bumblebee/bumblebee.conf
Оптимизация скорости
Использование VirtualGL в качестве 'моста'
Bumblebee отрисовывает, используя дискретную видеокарту NVIDIA на виртуальном дисплее  с помощью VirtualGL,а затем отрисовка происходит на 'реальном' дисплее, когда интегрированная видеокарта передает изображение на
X Server
. Для увеличения скорости передачи
'Виртуальный дисплей'->'X Server'
можно использовать различные методы сжатия,вызывая
optirun
с опцией
-c
$ optirun -c compress-method application [application-options]
Методы со сжатием:
jpeg
rgb
yuv
Методы без сжатия
proxy
xv
Таблица производительности с
ASUS N550JV
приложение для тестирования:
unigine-heaven
AUR
:
Command
FPS
Score
Min FPS
Max FPS
optirun unigine-heaven
25.0
630
16.4
36.1
optirun -c jpeg unigine-heaven
24.2
610
9.5
36.8
optirun -c rgb unigine-heaven
25.1
632
16.6
35.5
optirun -c yuv unigine-heaven
24.9
626
16.5
35.8
optirun -c proxy unigine-heaven
25.0
629
16.0
36.1
optirun -c xv unigine-heaven
22.9
577
15.4
32.2
Для использования метода сжатия по-умолчанию выставьте переменную
VGLTransport
c параметром
compress-method
в
/etc/bumblebee/bumblebee.conf
:
/etc/bumblebee/bumblebee.conf
[...]
[optirun]
VGLTransport=proxy
[...]
Использование Primus
Primus
позволяет увеличить производительность и энергосбережение за счет неиспользования VirtualGL.
Преимущества
Primus
перед стандартным
Optirun
:
уменьшенное использование дополнительных ресурсов (увеличена частота кадров) и оптимизированное решение (без сетевых процессов или процессов сжатия)
отсутствие бага с преждевременным выключением GPU
более стабильный,нежели
Optirun
, а также более прост в отладке
дискретная видеокарта используется только для обработки OpenGL,вся остальная информация обрабатывается и хранится в интегрированном графическом процессоре
Примечание
Для использования
primus
понадобится пакет
primus
.
Для запуска 32-битных приложений на 64-битной машине понадобится пакет
lib32-primus
(Должен быть подключен
Multilib (Русский)
)
Пример запуска
glxspheres32
:
$ primusrun glxspheres32
Для запуска приложения с ипользованием VirtualGL используйте:
$ optirun -b primus glxspheres32
Энергосбережение
Для регулировки потребления энергии на десктопном ПК используется пакет
bbswitch
Примечание
Bumblebee не умеет регулировать потребление энергии на ПК самостоятельно.
Для настройки включения и отключения видеокарты редактируйте опции
load_state
и
unload_state
. Подробнее смотрите
BBSwitch-документация
.
/etc/modprobe.d/bbswitch.conf
options bbswitch load_state=0 unload_state=1
Некорректная инициализация запуска видеокарты NVIDIA
Если ваша видеокарта NVidia некорректно запускается после последнего выключения, то следует выставить опцию
TurnCardOffAtExit=false
в
/etc/bumblebee/bumblebee.conf
- видеокарта будет выключаться каждый раз после отключения демона bumblebee. 
Для того,чтобы видеокарта NVidia постоянно работала,следует включить соответствующий сервис:
# systemctl enable nvidia-enable.service
/etc/systemd/system/nvidia-enable.service
[Unit]
Description=Enable NVIDIA card
DefaultDependencies=no

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo ON > /proc/acpi/bbswitch'

[Install]
WantedBy=shutdown.target
Для более подробного разбора всех возможностей Bumblebee посетите английскую ветку wiki:
bumblebee
Решение проблем
Примечание
Пожалуйста, сообщайте об ошибках на GitHub-странице
Bumblebee-Project
в соответствии с его
вики-разделом
.
[VGL] ERROR: Could not open display :8
Проблема заключается в VirtualGL, в этом случае можно использовать primus
$ optirun -b primus wine windows program.exe
Если использование драйвера NVIDIA решило проблему,то отредактируйте файл
/etc/bumblebee/xorg.conf.nvidia
и измените опцию
ConnectedMonitor
на
CRT-0
.
Xlib: extension "GLX" missing on display ":0.0"
Если вы установили видеодрайвер с сайта NVIDIA, то проделайте следующее:
1. Удалите драйвер:
# ./NVIDIA-Linux-*.run --uninstall
2. Удалите сгенерированный NVIDIA конфигурационный файл Xorg:
# rm /etc/X11/xorg.conf
3. Установите корректный видеодрайвер — см. раздел
#Установка
.
[ERROR]Cannot access secondary GPU: No devices detected
В некоторых случаях запуск
optirun
возвращает сообщение об ошибке вида:
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected.
[ERROR]Aborting because fallback start is disabled.
В этом случае вам следует переместить файл
/etc/X11/xorg.conf.d/20-intel.conf
куда-нибудь в другое место,а затем
перезапустите
the bumblebeed демона и это должно сработать. Если же вам нужны настройки модулей Intel, то соедините файл
/etc/X11/xorg.conf.d/20-intel.conf
c
/etc/X11/xorg.conf
.
Закомментируйте строку
Drive
в
/etc/X11/xorg.conf.d/10-monitor.conf
.
Если вы используете драйвер
nouveau
попробуйте поменять его на
nvidia
драйвер.
Вам требуется обозначить видеокарту (в конфигурационных файлах
/etc/X11/xorg.conf.d
), используя корректный
BusID
получив его выводом команды
lspci
;
Section "Device"
    Identifier "nvidiagpu1"
    Driver "nvidia"
    BusID "PCI:0:1:0"
EndSection
NVIDIA(0): Failed to assign any connected display devices to X screen 0
Если консоль возвращает сообщения об ошибке вида:
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to assign any connected display devices to X screen 0
[ERROR]Aborting because fallback start is disabled.
Вы должны поменять эту строку в
/etc/bumblebee/xorg.conf.nvidia
:
Option "ConnectedMonitor" "DFP"
На:
Option "ConnectedMonitor" "CRT"
Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!)
Добавьте
rcutree.rcu_idle_gp_delay=1
в
параметры ядра
из конфигурации
загрузчика
(подробнее
BBS post
для примера).
Could not load GPU driver
Если консоль возвращает сообщения об ошибке вида:
[ERROR]Cannot access secondary GPU - error: Could not load GPU driver
И вы пробуете загрузить модуль nvidia, но получаете это:
modprobe nvidia
modprobe: ERROR: could not insert 'nvidia': Exec format error
Это происходит потому,что видеодрайвер не может синхронизироваться с ядром, к примеру,если вы установили последний драйвер nvidia, но не можете обновить ядро. Полное обновление системы поможет исправить эту проблему. Если проблема не ушла,то попробуйте вручную скомпилировать пакеты nvidia для своего ядра.
Потребуются:
nvidia-dkms
[
ссылка недействительна
: replaced by
nvidia-open-dkms
]
или скомпилированный
nvidia
[
ссылка недействительна
: package not found]
из
ABS
.
NOUVEAU(0): [drm] failed to set drm interface version
Примите во внимание то,что nouveau драйвер в стадии тестирования. Как написано тут:
here
, лучшим выходом будет - установка официального драйвера nvidia.
/dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
Это можно решить, добавив в
/etc/bumblebee/xorg.conf.nvidia
несколько строк. (Подробнее
тут
):
Section "Screen"
    Identifier "Default Screen"
    Device "DiscreteNvidia"
EndSection
ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored
Вы пытаетесь запустить 32-битное приложение. Решит проблему запуск приложения через
primus
Fatal IO error 11 (Resource temporarily unavailable) on X server
Измените параметр
KeepUnusedXServer
в
/etc/bumblebee/bumblebee.conf
c
false
на
true
. Программа запустится в фоновом режиме и bumblebee не будет 'видеть' её.