Как изменить интенсивность / яркость подсветки внешнего дисплея ASUS Screenpad

У меня есть новый zenbook 15 с дополнительным дисплеем на тачпаде. Ubuntu прекрасно это распознает, если я использую Xorg и Intel gpu. Однако проблема в том, что яркость на нем не установлена ​​на максимум. Поскольку ASUS предоставляет драйверы для Windows, я могу регулировать подсветку через приложение. В Linux все не так.

Вот как это выглядит в Ubuntu:

https://i.imgur.com/MykCqOw.jpg

И в Windows:

https://i.imgur.com/ewxknAM.jpg

Это что xrandr показывает на дисплее как:

       HDMI-1 connected 2160x1080+0+1080 right (normal left inverted right x axis y axis) 66mm x 134mm

1080x2160 50.03*+

504x1000 50.03

Пытаюсь выставить яркость через xrandr --output HDMI-1 --brightness 1.5(т.е. выше 1), но это только делает экран более насыщенным. Вроде не управляет собственно подсветкой.

Какие-нибудь подсказки? Я попытался возиться с ddcutil, используя sudo ddcutil detect, чтобы получить (обратите внимание, что i2c-3 - это экранная панель):

       Invalid display
   I2C bus:             /dev/i2c-3
   EDID synopsis:
      Mfg id:           TSB
      Model:            ScreenXpert-
      Serial number:    Unspecified
      Manufacture year: 2011
      EDID version:     1.3
   DDC communication failed

Invalid display
   I2C bus:             /dev/i2c-8
   EDID synopsis:
      Mfg id:           BOE
      Model:            Unspecified
      Serial number:    Unspecified
      Manufacture year: 2018
      EDID version:     1.4
   DDC communication failed

Я не был уверен, как установить подсветку, поэтому я загрузил графический интерфейс для ddccontrol (gddccontrol), и когда я попытался изменить настройки i2c-3, я увидел следующее:

https://i.imgur.com/AeDFxbj.png

3 ответа

отлично работал для меня до последнего обновления. Только что найденный контроллер яркости добавил поддержку нескольких окон, запустите

      sudo add-apt-repository ppa:apandada1/brightness-controller
sudo apt update
sudo apt install brightness-controller

Чтобы установить, то свои 2 переключателя, по одному на каждый экран при запуске программы. Должен появиться, если вы его ищете.

Я разработчик ddcutil

Встроенные дисплеи ноутбуков имеют элементарную реализацию I2C. Можно прочитать EDID по адресу подчиненного устройства x50, но протокол DDC/CI не реализован на адресе подчиненного устройства x37. Таким образом, ddcutil видит дисплеи (он может читать EDID), но связь DDC/CI не работает.

Обычно управление такими дисплеями осуществляется с помощью ACPI.

Проверьте это исправление для модуля ядра asus-wmi от Plippo (хорошо документировано, легко устанавливается). Это текущие инструкции, но, пожалуйста, проверьте, были ли они обновлены

Чтобы установить и использовать этот модуль с помощью dkms:

  1. Убедитесь, что вы запускаете ядро, для которого хотите установить модуль. Поэтому, если вы обновляли ядро, сначала перезагрузитесь, чтобы при установке использовалась правильная версия ядра.

  2. Установите DKMS методом вашего дистрибутива. Debian/Ubuntu/ и т. Д.:

    sudo apt install dkms 
    

    В дополнение к этому вам необходимо установить заголовки для ваших текущих ядер. Большинство дистрибутивов предоставляют для этого пакет. Например, Ubuntu:

    sudo apt install linux-headers-$(uname -r)
    
  3. Создайте каталог для модуля и загрузите исходный код

    sudo mkdir /usr/src/asus-wmi-1.0
    cd /usr/src/asus-wmi-1.0
    sudo wget 'https://github.com/Plippo/asus-wmi-screenpad/archive/master.zip'
    sudo unzip master.zip
    sudo mv asus-wmi-screenpad-master/* .
    sudo rmdir asus-wmi-screenpad-master
    sudo rm master.zip
    

    Теперь исходный код должен быть в /usr/src/asus-wmi-1.0. Важно, чтобы папка называлась именно так, потому что DKMS этого ожидает. В качестве альтернативы вы, конечно, также можете клонировать этот репозиторий git в эту папку.

  4. Если не используется ядро ​​5.4: вызовите следующий сценарий, чтобы загрузить и исправить файлы, соответствующие вашей версии ядра.

    sudo sh prepare-for-current-kernel.sh
    
  5. Зарегистрируйте модуль в DKMS

    sudo dkms add -m asus-wmi -v 1.0
    
  6. Соберите и установите модуль в текущее ядро

    sudo dkms build -m asus-wmi -v 1.0
    sudo dkms install -m asus-wmi -v 1.0
    

    С этого момента DKMS будет автоматически перестраивать модуль при каждом обновлении ядра.

  7. После перезагрузки вы должны найти новое устройство в /sys/class/leds/asus::screenpad. Чтобы установить яркость экрана, просто позвоните

    echo XXX | sudo tee '/sys/class/leds/asus::screenpad/brightness'
    

    где XXX- значение от 0 до 255 (0 полностью выключает экран, 255 устанавливает максимальную яркость). Чтобы позволить каждому пользователю устанавливать яркость без использованияsudo, вызов

    sudo chmod a+w '/sys/class/leds/asus::screenpad/brightness'
    

    Теперь вы можете установить яркость, просто выполнив

    echo XXX > '/sys/class/leds/asus::screenpad/brightness'
    

    chmod должен выполняться снова после каждой перезагрузки, поэтому рекомендуется добавить вызов в сценарий загрузки, например /etc/rc.local.

  8. Теперь вы также можете использовать функциональные возможности среды рабочего стола для сопоставления функциональных клавиш на клавиатуре с действиями по вашему выбору. Например, вы можете создать сценарий, который переключает состояние экранной панели и сопоставляет его с клавишей "Toggle ScreenPad".

Удаление или переустановка

Если вы хотите повторно загрузить и переустановить модуль ядра (возможно, из-за изменений в коде), вам необходимо сначала удалить старый, вызвав

sudo dkms remove -m asus-wmi -v 1.0 --all
sudo rm -r /usr/src/asus-wmi-1.0

Затем повторите шаги, указанные выше, начиная с шага 2.

В этом выпуске GitHub обсуждаются и другие обходные пути.

Другие вопросы по тегам