I have the new zenbook 15 which comes with a secondary display in the touchpad. Ubuntu recognizes it just fine, as long as I am using Xorg and intel gpu. The issue however is that the brightness on this is not set to max. As ASUS provides drivers for windows I can adjust the backlight through an app. Not so on linux.

Here is what it looks like on Ubuntu:

And on Windows:

This is what xrandr shows the display as:

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

1080x2160 50.03*+

504x1000 50.03

I try to set the brightness via xrandr --output HDMI-1 --brightness 1.5 (ie. above 1) but this only makes the screen more saturated. It seems it does not control the actual backlight.

Any clues? I tried to mess around with ddcutil, using sudo ddcutil detect to get (note i2c-3 is the screenpad):

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

I wasn't too sure how to set backlight so I downloaded the GUI for ddccontrol (gddccontrol) and when I tried to change the settings of i2c-3 I see this:

  • 1
    Update: Still no solution, but turns out whatever brightness was set on Windows when it last booted will persist on ubuntu. Not ideal but not unworkable. – Linux Nooby Jan 5 at 5:50

Check this fix for asus-wmi kernel module by Plippo (well documented, easy to install). These are the current instructions, but please check in case they have been updated

To install and use this module using dkms:

  1. Please make sure that you are running the kernel that you want to install the module for. So if you did a kernel update, please reboot first so the installation uses the correct kernel version.

  2. Install DKMS using the method of your distribution. Debian/Ubuntu/etc.:

    sudo apt install dkms 

    In addition to that, you need to have the headers for your current kernels installed. Most distributions provide a package for that. E.g. Ubuntu:

    sudo apt install linux-headers-$(uname -r)
  3. Create a directory for the module and download the source code

    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

    Now the source code should be in /usr/src/asus-wmi-1.0. It's important that the folder is called exactly like that because DKMS expects that. Alternatively you can of course also clone this git repository into that folder.

  4. If not using kernel 5.4: Call the following script to download and patch files fitting to your kernel version

    sudo sh prepare-for-current-kernel.sh
  5. Register the module with DKMS

    sudo dkms add -m asus-wmi -v 1.0
  6. Build and install the module to the current kernel

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

    From now on, DKMS will automatically rebuild the module on every kernel update.

  7. After rebooting, you should now find a new device in /sys/class/leds/asus::screenpad. To set the brightness of the screen, simply call

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

    where XXX is a value between 0 and 255 (0 turns the screen completely off, 255 sets it to maximum brightness). To allow every user to set the brightness without using sudo, call

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

    Now you can set the brightness by simply executing

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

    chmod has to be executed again after every reboot, so it is advisable to add the call to a boot script, e.g. /etc/rc.local.

  8. You can now also use the functionality of your Desktop Environment to map the function keys on the keyboard to actions of your choice. For example, you can create a script that toggles the state of the screenpad and map it to the "Toggle ScreenPad" key.

Removing or reinstalling

If you want to re-download and reinstall the kernel module (maybe because there have been changes in the code), you have to remove the old one first, calling

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

Then repeat the steps above from step 2 on.

There are also some other workarounds discussed in this GitHub issue.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.