Ubuntu lacked a driver for Lenovo Legion sensors and power modes
Firmware, the laptop’s internal software, already provided sensor readings and power modes. However, the running Linux kernel lacked a working driver to expose these features to Ubuntu.
Pressing Fn+Q on my Lenovo Legion changed the indicator colour and selected another power mode. Ubuntu kept showing “Balanced”. I could not see the selected mode from my desktop, and I wanted to change it through the system menu as well.
I was also missing readings from both fans. I use Conky, a desktop system monitor, to keep an eye on my computer while working. I wanted it to show the fan speeds so I could see what was happening with cooling.
I had used the community driver before. After a kernel change, it stopped working and its automatic build complicated the system update. This installation therefore also needed a maintenance approach for future kernel changes.
LenovoLegionLinux: a kernel driver that exposes laptop features to Linux
LenovoLegionLinux, a community project by johnfanv2, provides a Linux kernel driver and companion tools for supported Legion laptops. It offers a Linux alternative to some Lenovo Vantage features.
Beyond sensors and power profiles, LenovoLegionLinux also offers fan curve adjustments, selected CPU/GPU limits, rapid charging and battery conservation mode on supported models. Availability varies by laptop and BIOS.
I checked support for my device, built the legion_laptop module for the running kernel and connected it to Ubuntu. I kept the driver source unchanged. My work was diagnostics and integration of an existing open-source project.
Lenovo Legion Pro 7 16ARX8H / 82WS with BIOS LPCN65WW
I verified the solution on my own laptop with the following configuration. The exact model, BIOS and kernel distinguish this experience from other Legion variants:
- Laptop: Lenovo Legion Pro 7 16ARX8H, DMI identifier 82WS.
- CPU and GPU: AMD Ryzen 9 7945HX and NVIDIA GeForce RTX 4080 Laptop.
- BIOS: LPCN65WW, dated March 25, 2026.
- System: Ubuntu 24.04.5, kernel 6.7.9-060709-generic.
- Installation: legion_laptop module built manually on October 8, 2026, without DKMS.
How a Linux kernel driver communicates with firmware
The Linux kernel is the foundation of Ubuntu. It manages the processor, memory and access to devices. A driver inside the kernel understands a particular hardware interface and exposes its readings to applications.
For this installation, I used an external module: an extension loaded into the running kernel. Firmware remains in the laptop and handles the device’s own functions. Fn+Q can therefore change a hardware mode even when Ubuntu does not receive the new state.
On this model, fan readings travel through the manufacturer’s WMI interface. The driver exposes them through the standard hwmon interface used for Linux hardware sensors:
sensors program requests a fan reading through hwmon.How to read Lenovo Legion fan speeds in Ubuntu and Conky
After loading the module, I verified both fan speeds and temperatures with sensors legion_hwmon-isa-0000. For repeated terminal readings, I use watch -n 1 'sensors legion_hwmon-isa-0000'.
Once the driver exposes readings to the operating system, a desktop monitor can use them too. In my setup, Conky shows them alongside other system data. Installing Conky alone would not provide the missing hardware interface.
Connecting Fn+Q with Ubuntu’s power profiles
The driver exposed the power profile through platform_profile. The power-profiles-daemon service connects this kernel interface to Ubuntu’s controls. After loading the module, I restarted the power management services so they would use it.
I verified changing the profile from Ubuntu and the reverse direction: pressing Fn+Q also changes the state shown in the operating system. Available profiles can be checked with powerprofilesctl list; during verification, the service reported PlatformDriver: platform_profile.
I use the standard power saver, balanced and performance profiles. They can affect power consumption, performance and cooling according to the firmware’s rules. The “Performance” label is not a measurement of higher FPS or a guarantee of a particular power limit.
What happens to the driver after a Linux kernel update
An external module is built for a specific kernel with matching build information, including headers. Moving to another kernel requires checking compatibility and preparing the matching module. The kernel’s external module documentation explains this process.
DKMS can automate rebuilding after kernel changes. If the driver source is incompatible with the new kernel, that build can fail. For my installation, I chose a manual process without registering LenovoLegionLinux in DKMS: I finish the Ubuntu update first, then build, verify and install the module.
Package updates therefore do not compile this driver. The trade-off is manual maintenance: after a kernel change, its features may be unavailable until I prepare the matching module. For the current kernel, I configured loading at startup.
Fan speeds on the desktop and a power profile that matches the laptop
I can see both fan speeds in Conky during everyday work. I select power profiles from Ubuntu’s menu or with Fn+Q, and the operating system shows the corresponding state. I can use these features without opening another application.
This is a practical use of a kernel driver: I can access the readings and settings the laptop already has in my working environment. Similar integration work helps with other devices whose data needs to reach custom software.
LenovoLegionLinux compatibility and installation
Do I need to compile the whole Linux kernel?
In this setup, I only needed to build and load an external module for the running kernel. I did not create a custom distribution or a new kernel for this integration.
Will it work on another Lenovo Legion model?
This case verifies the configuration listed above. The project’s compatibility list lists 16ARX8H with BIOS LPCN47WW. My Pro 7 / LPCN65WW combination is a personally tested setup, rather than confirmation for every BIOS version or model.
Can LenovoLegionLinux also control fan speeds?
Yes, on supported models, through a fan curve. The driver used on my laptop can change the curve’s speed points, meaning the fan speed set at each point. It does not support full adjustment of temperature thresholds and other curve parameters. In this setup, I verified sensor readings and standard power profiles. I did not configure a custom fan curve.


