Как я боролся с регулировкой яркости экрана в Linux
Проблема регулировки яркости экрана в Linux знакома, пожалуй, каждому кто ставил «пингвина» на ноутбук или моноблок. Причём сама установка, как правило, происходит безболезненно, а вот после перезагрузки уже возможны варианты.
Как заставить нормально работать подсветку экрана в Linux покажу на примере дистрибутива Deepin и моноблока Lenovo AIO 330-20AST. Нет особой разницы в том, какой дистрибутив Linux установлен, главное уловить суть проблемы, а решения везде похожи.
Итак, после первой перезагрузки свежеустановленного Deepin Linux вдруг резко снизился уровень яркости экрана, причём ползунок регулировки выставлен на максимальные 100%. Из особенностей моноблока Lenovo AIO 330-20AST можно отметить отсутствие физических клавиш регулировки яркости на клавиатуре (обычно комбинация [Fn]+[клавиша увеличения/уменьшения яркости]). Предполагается, что всё должно работать программно из операционной системы.
Регулировать яркость экрана получалось от уровня «совсем ничего не видно» до «видно с трудом». Понятно, что это какой-то косяк в настройках, осталось его найти.
Уровень яркости подсветки экрана в Linux контролируется с помощью ACPI (Advanced Configuration and Power Interface — усовершенствованный интерфейс конфигурации и управления питанием) модуля ядра для видео или графическим драйвером.
Сам интерфейс управления подсветкой доступен через папку sysfs в /sys/class/backlight . Посмотрим что там находится:
Имя папки зависит от модели видеокарты и их может быть несколько, если она у вас не одна. Так, для видеокарт от Intel она называется intel_backlight, у AMD может встретиться название radeon0. Зачастую, Linux пишет изменения настроек яркости не в тот каталог, например в acpi_video0, когда реально используется intel_backlight. Заглянем внутрь:
Значение максимальной яркости содержится в файле max_brightness . Рекомендую сперва заглянуть в данный файл, чтобы определить какое значение следует выставить для работы (обычно оно равняется 15, но в моём случае было 100, от того и максимальная яркость моноблока после перезагрузки составляла лишь 15% от реальной).
Файл brightness содержит текущее значение яркости (у меня там стояло число 15). До этого уровня Deepin Linux и предлагал мне регулировки из графической оболочки. Текущее значение в данном файле не может быть выше максимальной яркости, установленной в max_brightness . Моя борьба с подсветкой экрана на Lenovo AIO 330-20AST заключалась в изменении всего одного параметра:
Как я уже упоминал чуть ранее, не редко из-за специфических особенностей конкретного ноутбука или моноблока ACPI не работает должным образом или Linux не правильно определяет чем же нужно управлять. В таком случае следует менять в grub параметр ядра acpi_backlight при загрузке.
Как всегда в Linux возможны различные варианты и дать какой-то универсальный совет сложно — каждый случай уникален по своему. Обычно советуют добавить добавить acpi_backlight=vendor в grub, но это не всегда помагает. Возможны так же значения «video», «native» или «none». После того, как найдёте нужный, можно править загрузчик GRUB на постоянку.
GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash acpi_backlight=vendor»
Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.
Регулировка яркости Ubuntu 20.04 не работает
Я не могу регулировать уровень яркости через Gnome. У меня была такая же проблема с 18.04, но она там решилась (честно говоря, не помню как).
lspci|grep VGA 00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 18) xrandr --output LVDS-1 --brightness 0.95
20 ответов
Решение xrandr у меня не сработало. Я установил регулятор яркости и работал хорошо.
sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt update sudo apt install brightness-controller
У меня аналогичная проблема. В системном меню нет ползунка яркости экрана (тот, что ниже громкости). Я знаю, что есть обходной путь с использованием xrandr, который выглядит следующим образом:
xrandr -q | grep " connected"
DP-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm DP-3 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 477mm x 268mm
Я использую двойной экран, поэтому у меня 2 канала (DP-1 и DP-2). Затем вы можете настроить яркость, набрав
xrandr --output DP-3 --brightness 0.8
Здесь я использую 0,8 в мониторе DP-3. Просто сделайте то же самое для другого монитора, и все готово.
Однако я заметил, что яркость экрана колеблется, и ни одно решение, которое я нашел в Интернете, не помогло мне.
У меня была та же проблема, которая была решена после этого поста: Как исправить неработающие клавиши яркости в Ubuntu. Решение довольно простое:
Редактировать файл /etc/default/grub , установлен
GRUB_CMDLINE_LINUX_DEFAULT="тихий всплеск acpi_backlight=вендор acpi_osi=linux"
Сохраните файл и обновите grub:
Перезагрузил компьютер и все заработало.
Рациональное обоснование операций, как пояснил автор, заключается в следующем:
ACPI — это стандарт управления интерфейсом питания, реализованный в ядрах операционных систем. По умолчанию ядро Linux использует встроенный драйвер для клавиш клавиатуры, который часто несовместим с некоторыми клавиатурами.
Следовательно, мы указываем параметр acpi_backlight=vendor, который указывает ядру иметь приоритет над драйвером производителя над драйвером ядра. Параметр acpi_osi=linux указывает ядру включить встроенные обходные пути ACPI для драйверов Linux; что может быть в случае, если драйвер устройства имеет проблемы с архитектурой Linux.
У меня была такая же проблема, в моем случае все ответы, которые я нашел, не работали. Возможно, мой случай специфичен, но я надеюсь, что мой ответ может кому-то помочь.
Мой компьютер — Lenovo Legion Y740-15I с nvidia GeForce RTX 2060. Я испробовал все доступные решения, но ни одно из них не сработало. Однажды случайно, когда я установил tensorflow, мне пришлось установить CUDA Toolkit 11.0 и его компилятор.
После установки CUDA и перезагрузки я заметил, что контроллер яркости работает. Я дал вам все шаги, которые я выполнил ниже:
- Следуйте базовым инструкциям по установке для CUDA nvidia toolkit (официальные инструкции по выпуску ) .
- Проверить версию CUDA $ cat /usr/local/cuda/version.txt
- Установить компилятор CUDA $ sudo apt install nvidia-cuda-toolkit
- Проверить версию компилятора CUDA $ nvcc -V
- Перезагрузите компьютер
- Проверьте, взаимодействует ли драйвер nvidia с графическим процессором. $ nvidia-smi Если вы видите версию CUDA: установка 11 завершена!
Теперь проверьте, работает ли ваш контроллер яркости. Надеюсь, это может помочь кому-то.
PS: Также решена проблема с черным экраном загрузки при входе в систему.
откройте файл GRUB из каталога /etc/default/grub или выполните команду gedit /etc/default/grub в терминале и отредактируйте файл из GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" к GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=force acpi_backlight=native" и запустить команду sudo grub-update в терминале, затем перезагрузите компьютер.
В моем случае я решил эту проблему, обновив версию ядра с 5.4 до 5.6.
$ sudo apt-cache search linux-image-5
Затем он вернет список доступных ядер. Я установил linux-image-5.6.0-1028-oem, который на данный момент указан внизу.
Вы можете установить его следующим образом.
sudo apt install linux-image-5.6.0-1028-oem
После перезагрузки вашей системы вы можете увидеть, что ваше ядро обновлено.
Для справки: мой GRUB_CMDLINE_LINUX_DEFAULT установлен как исходный, то есть GRUB_CMDLINE_LINUX_DEFAULT="тихий всплеск". Кроме того, я установил регулятор яркости, но не уверен, помогло это мне или нет.
Для меня проблема была решена простым пересбором initrd в другой раз после загрузки в новое ядро:
sudo dpkg-reconfigure linux-image-5.4.0-54-generic
Очевидно, вы должны запустить это с пакетом вашего текущего загрузочного ядра. Если вы не уверены, бегите uname -r чтобы получить имя ядра. Более того, имена пакетов после dpkg-reconfigure автозаполнение в моем bash, но ваши настройки могут отличаться.
Это всегда должно быть безопасным и быстрым, поэтому не помешает попробовать это, прежде чем делать что-нибудь еще. Однако ниже я добавлю более подробную информацию о своей настройке и о том, что еще я сделал.
Моя конфигурация и наблюдаемое поведение
- Проблема была, как описано выше, впервые обнаружена после обновления до Ubuntu 20.04 (раньше работала яркость)
- Решение Ренато Миотто (через xrandr --output . --brightness 0.8 ) позволил мне изменить яркость, но системные клавиши все еще не работают и используются xrandr сбрасывает цвет экрана (ночной цветовой режим)
- Macbook Air 3,2 (очень старый, обычно возникают проблемы с загрузкой EFI, связанные с графикой)
- KDE Neon, видеодрайверы Nvidia, ядро 5.4.0-54-generic
Обратите внимание, что у драйверов Nvidia на MacBook Air 3,2 есть целый набор других, не связанных с этим проблем, некоторые из которых связаны с регулировкой яркости. В частности, вам необходимо добавить настройки параметров устройства, связанных с X EnableBrightnessControl=1 согласно Яркости не работает после установки драйвера NVIDIA. Кроме того, MacBook Air 3,2 по умолчанию может вообще не загружать пригодную для использования графику в драйверах Nvidia, что исправлено установкой определенных регистров PCI-E в grub в соответствии с проприетарными драйверами NVidia с EFI на Mac, чтобы предотвратить перегрев. Оба они применялись ранее на моей машине и оставались активными после обновления, поэтому не связаны.
Что еще я сделал (возможно, взаимодействовал с указанным выше исправлением)
После обновления я заметил еще две проблемы с загрузкой и исправил их. Это могло повлиять на эффективность моего исправления:
- Я исправил Failed to Set MokListRT: Invalid Parameter следуя (адаптированной версии KDE Neon) Shibiwan ответу на Ubuntu 20.04 Не удалось установить MokListRT: параметр Invallid.
- Мое загрузочное меню grub тоже исчезло. Восстановил редактированием /etc/default/grub содержать GRUB_TERMINAL=console , GRUB_TIMEOUT_STYLE=menu , а также GRUB_TIMEOUT=10 . После этого, update-grub необходимо запустить (что выше dpkg-reconfigure тоже подойдет).
Работа меню grub также является минимальной защитой при изменении настроек загрузки, поэтому имеет смысл сначала решить эту проблему, если вы тоже это видите.
Регулировка яркости экрана на ноутбуках
На ноутбуках иногда не работает регулировка яркости экрана, как с помощью горячих клавиш, так и через настройки системы. Существует несколько вариантов решения проблемы:
1) Первый способ
Открываем в любом текстовом редакторе файл /etc/default/grub
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor"
Перезагружаем систему, и проверяем регулировку яркости.
Данный способ работает не у всех, и имеет свои вариации.
2) Второй способ
! Внимание! От применения этого способа могут слететь иксы (проверено)!
Сначала делаем копию настроек иксов:
sudo cp -r /usr/share/X11/xorg.conf.d /usr/share/X11/xorg.conf.d.bak.20170101
Здесь 20170101 - дата. В принципе, это может быть любой идентификатор, лишь бы такой папки не было. Резервная копия настроек X-сервера лишней не бывает.
Создаем файл 20-intel.conf следующей командой в терминале:
sudo touch /usr/share/X11/xorg.conf.d/20-intel.conf
Далее открываем его в текстовом редакторе:
sudo gedit /usr/share/X11/xorg.conf.d/20-intel.conf
Запоминаем, было ли там что-то.
В него нужно написать следующее:
Section "Device" Identifier "card0" Driver "intel" Option "Backlight" "intel_backlight" BusID "PCI:0:2:0" EndSection
Решение уже было на форуме, но первоначально появилось тут
Теперь самое интересное. Если после этого способа всё не работает (у меня было так - надпись lubuntu и голубые точки замерли), то перегружаемся в режиме восстановления и, если файл был пустой, отменяем всё удалением:
sudo rm /usr/share/X11/xorg.conf.d/20-intel.conf
Если там что-то было - восстанавливаем из резервной копии:
sudo cp /usr/share/X11/xorg.conf.d/20-intel.conf.bak.20170101 /usr/share/X11/xorg.conf.d/20-intel.conf
3)Прочее
Другие варианты также существуют, представляют собой скрипты изменяющие настройки яркости. Их есть немало, они представляют не всегда красивые и изящные решения,и опять же не универсальны.
Существует также проблема связанная с сохранением значения яркости экрана. Она достаточно подробно разобрана тут