Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save wastee/e58b42abfec9419dd11c0a2533d36d6e to your computer and use it in GitHub Desktop.
Save wastee/e58b42abfec9419dd11c0a2533d36d6e to your computer and use it in GitHub Desktop.
Colorful X16Pro Laptop (AKA Clevo PExxRNx) Linux Tips

Everything works out of the box on Arch Linux, but there are some tweaks and tips you might find useful.

Sound Card

If you encounter issues with your sound card (no sound), you can create a file with any name (e.g., alsafix.conf) in the directory /etc/modprobe.d/. The full path is /etc/modprobe.d/alsafix.conf.

Next, add the following line to this file: options snd-hda-intel model=clevo-p950, and then reboot your system. This should resolve the problem.

Fan and Keyboard Lights

We owe thanks to the Tuxedo company, which specializes in building Linux laptops. Some of their products are based on Clevo hardware.

Technically, you can use their drivers and apps to control fans and keyboard lighting. However, it appears that they have added model checks in their latest open-source driver code. If you don't own a Tuxedo model, you'll need to compile the driver yourself to make it work.

evorster have provided detailed instructions in the Arch User Repository (AUR) package:

https://aur.archlinux.org/packages/tuxedo-keyboard-dkms

Here are the steps:

1. Download the package manually
2. Run makepkg -o
3. Edit the file in the source code src/tuxedo-something/src/tuxedo_keyboard.c
4. Search for "DMI_MATCH" and set the DMI strings to what matches your system.

How to find what matches your system?

  sudo dmidecode | grep Manufacturer

Use the first three hits, on my system it was "Notebook", "Notebook" and "No Enclosure"

  1. Install the package by running makepkg -se in the root dir where you cloned it

Please note that tuxedo-keyboard is essential for controlling fans and keyboard lighting.

BTW, install tuxedo-control-center-bin to control fans and keyboard lighting.

OR

Write your own script to control /dev/tuxedo_io. Below is an example code. You can find all the necessary methods in Tuxedo's repository since they are open-source.

  import ctypes
  import ioctl
  import ioctl.linux
  
  IOCTL_MAGIC = 0xEC
  MAGIC_READ_CL = IOCTL_MAGIC + 1
  MAGIC_WRITE_CL = IOCTL_MAGIC + 2
  
  
  R_CL_HW_IF_STR = 0x00
  
  R_CL_FANINFO1 = 0x10
  R_CL_FANINFO2 = 0x11
  R_CL_FANINFO3 = 0x12
  
  MAX_FAN_SPEED = 0xFF
  
  W_CL_FANSPEED = 0x10
  W_CL_FANAUTO = 0x11
  
  W_CL_PERF_PROFILE = 0x15
  
  PERF_PROF_QUIET = 0x00
  PERF_PROF_POWERSAVE = 0x01
  PERF_PROF_PERFORMANCE = 0x02
  PERF_PROF_ENTERTAINMENT = 0x03
  
  
  fd = os.open('/dev/tuxedo_io', os.O_RDONLY)
  
  ......
  ......
  ......
  
  fan1 = fan_speed_percent_list[0]
  fan2 = fan_speed_percent_list[1]
  fan3 = fan_speed_percent_list[2]
  argument = fan1  # 0-255
  argument |= fan2 << 8  # 0-255
  argument |= fan3 << 16  # 固定 256
  write(fd, W_CL_FANSPEED, argument)  # W_CL_FANSPEED = 0x10
  
  ......
  ......
  ......

The Python package i use: https://github.com/olavmrk/python-ioctl

You can use this script to control various settings like fan speed, fan auto mode, TDP profiles, and more, just like the Windows control center!

Nvidia dynamic boost control

systemctl start nvidia-powerd

It can also stop for stop and enable/disable for boot config.


If you have any advice to share with me, please feel free to do so!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment