Case study: integrace zařízení

Lenovo Legion v Ubuntu: odemčené funkce díky ovladači jádra

Na mém Lenovo Legion Pro 7 16ARX8H chyběly v Ubuntu otáčky ventilátorů a systém neukazoval změny režimu napájení při stisknutí kláves Fn+Q. Načtením komunitního ovladače jako modulu jádra jsem zpřístupnil údaje hardwarových senzorů linuxovým nástrojům a aplikacím. Mohu tak číst teploty, otáčky obou ventilátorů a přepínat výkonové profily z Ubuntu.

AI ilustrace notebooku Lenovo Legion s Ubuntu a zvětšeným schématem linuxového jádra s ovladačem, firmwaru a hardwaru
Problém

Ubuntu nemělo ovladač pro senzory a výkonové režimy Lenovo Legion

Firmware, tedy interní software notebooku, už poskytoval údaje senzorů i výkonové režimy. V používaném linuxovém jádře ale chyběl funkční ovladač, který by tyto funkce zpřístupnil Ubuntu.

Při stisku Fn+Q se na mém Lenovo Legion změnila barva diody a notebook přepnul výkonový režim. V nabídce Ubuntu ale zůstávala „Rovnováha“. Z pracovní plochy jsem tak nepoznal, jaký režim používám, a chtěl jsem ho měnit také ze systémové nabídky.

Chyběly mi i otáčky obou ventilátorů. V Conky, přehledu stavu počítače na ploše, sleduji provozní údaje při práci. Potřeboval jsem do něj dostat také hodnoty, podle kterých vidím, co se děje s chlazením.

S komunitním ovladačem jsem měl zkušenost už dříve. Po změně linuxového jádra přestal fungovat a jeho automatické sestavení zkomplikovalo aktualizaci systému. Při nové instalaci jsem proto řešil i další údržbu.

Řešení

LenovoLegionLinux: ovladač, který zpřístupní funkce notebooku Linuxu

LenovoLegionLinux od johnfanv2 je komunitní projekt pro podporované notebooky Legion. Obsahuje ovladač do linuxového jádra a doprovodné nástroje. Projekt nabízí linuxovou alternativu k části funkcí Lenovo Vantage.

Kromě senzorů a výkonových profilů nabízí LenovoLegionLinux na podporovaných modelech také úpravu ventilátorové křivky, vybraných limitů CPU/GPU, rychlé nabíjení a režim ochrany baterie. Dostupnost jednotlivých funkcí se liší podle notebooku a BIOSu.

Prověřil jsem podporu svého zařízení, sestavil modul legion_laptop pro používané jádro a propojil ho s Ubuntu. Zdrojový kód ovladače jsem ponechal beze změn. Moje práce spočívala v diagnostice a integraci existujícího open-source řešení.

Ověřená konfigurace

Lenovo Legion Pro 7 16ARX8H / 82WS s BIOSem LPCN65WW

Řešení jsem ověřil na vlastním notebooku v této konfiguraci. Přesný model, BIOS a jádro pomáhají odlišit zkušenost od jiných variant řady Legion:

  • Notebook: Lenovo Legion Pro 7 16ARX8H, označení DMI 82WS.
  • Procesor a grafika: AMD Ryzen 9 7945HX a NVIDIA GeForce RTX 4080 Laptop.
  • BIOS: LPCN65WW, datum 25. března 2026.
  • Systém: Ubuntu 24.04.5, jádro 6.7.9-060709-generic.
  • Instalace: modul legion_laptop sestavený ručně 8. října 2026, bez DKMS.
Jádro 6.7.9-060709-generic není výchozí jádro Ubuntu 24.04. Tyto údaje popisují konkrétní instalaci, nikoli doporučenou konfiguraci pro všechny notebooky.
Princip

Jak ovladač v linuxovém jádře komunikuje s firmwarem

Linuxové jádro je základ systému Ubuntu. Spravuje procesor, paměť a přístup k zařízením. Ovladač v jádře zná konkrétní rozhraní hardwaru a převádí jeho údaje do podoby, se kterou umějí pracovat aplikace.

V této instalaci jsem použil externí modul: doplněk, který se načte přímo do běžícího jádra. Firmware zůstává v notebooku a obsluhuje jeho vlastní funkce. Proto může Fn+Q přepnout režim zařízení i v situaci, kdy se o změně Ubuntu nedozví.

Při čtení otáček vede cesta na tomto modelu přes rozhraní výrobce WMI. Ovladač poskytne data prostřednictvím standardního rozhraní hwmon, které Linux používá pro hardwarové senzory:

01Program sensors požádá přes rozhraní hwmon o údaj ventilátoru.
02Linuxové jádro zavolá obsluhu v modulu LenovoLegionLinux.
03Ovladač získá hodnotu přes rozhraní notebooku a předá ji systému.
04Údaj lze zobrazit v terminálu nebo využít v přehledu Conky na ploše.
Senzory

Jak zobrazit otáčky ventilátorů Lenovo Legion v Ubuntu a Conky

Po načtení modulu jsem ověřil otáčky obou ventilátorů i teploty příkazem sensors legion_hwmon-isa-0000. Pro opakovaný výpis v terminálu používám watch -n 1 'sensors legion_hwmon-isa-0000'.

Jakmile ovladač zpřístupní hodnoty systému, lze je využít také v monitoru na pracovní ploše. Conky je v mém nastavení zobrazuje spolu s dalšími údaji počítače. Samotná instalace Conky by chybějící hardwarové rozhraní nevyřešila.

Výkonové režimy

Propojení Fn+Q s výkonovými profily Ubuntu

Ovladač zpřístupnil výkonový profil přes platform_profile. Na toto rozhraní jádra navazuje služba power-profiles-daemon, kterou používá systémové ovládání Ubuntu. Po načtení modulu jsem restartoval služby správy napájení, aby nové rozhraní začaly využívat.

Ověřil jsem změnu profilu z Ubuntu i opačný směr: při stisku Fn+Q se mění také stav zobrazený v systému. Dostupné profily lze zkontrolovat příkazem powerprofilesctl list; při ověření služba uváděla PlatformDriver: platform_profile.

Používám standardní úsporný, vyvážený a výkonný profil. Podle pravidel firmwaru mohou změnit spotřebu, výkon i chlazení. Název „Výkon“ sám o sobě není měřením vyšších FPS ani zárukou konkrétního příkonu.

Údržba

Co se stane s ovladačem po aktualizaci linuxového jádra

Externí modul se sestavuje pro konkrétní jádro s odpovídajícími podklady pro sestavení, včetně hlaviček. Při přechodu na další jádro je potřeba ověřit jeho kompatibilitu a připravit modul pro novou verzi. Tento princip popisuje také dokumentace sestavení externích modulů.

DKMS umí sestavování po změně jádra automatizovat. Pokud ale zdroj ovladače novému jádru neodpovídá, sestavení může selhat. Pro svoji instalaci jsem zvolil ruční postup bez registrace LenovoLegionLinux v DKMS: nejprve dokončím aktualizaci Ubuntu a teprve potom sestavím, ověřím a nainstaluji modul.

Aktualizace balíčků tak nespouští kompilaci tohoto ovladače. Za toto oddělení platím ruční údržbou: po změně jádra nemusí být jeho funkce dostupné, dokud nepřipravím odpovídající modul. Pro současné jádro jsem nastavil načítání při startu.

Výsledek

Otáčky na ploše a výkonový režim, který odpovídá stavu notebooku

Otáčky obou ventilátorů vidím v Conky při běžné práci. Výkonový profil měním z nabídky Ubuntu i pomocí Fn+Q a systém ukazuje odpovídající stav. Kvůli těmto funkcím nemusím otevírat další aplikaci.

Zkušenost ukazuje praktické využití ovladače jádra: údaje a nastavení, které notebook už má, mohu používat ve svém pracovním prostředí. Stejný typ integrační práce pomáhá i u jiných zařízení, jejichž data potřebujete dostat do vlastního softwaru.

Otázky

Kompatibilita a instalace LenovoLegionLinux v praxi

Musím kvůli ovladači přeložit celé linuxové jádro?

V této instalaci stačilo sestavit externí modul pro používané jádro a načíst ho. Vlastní distribuci ani nové jádro jsem kvůli této integraci nevytvářel.

Funguje to i na jiném modelu Lenovo Legion?

Ověření v tomto článku platí pro uvedenou konfiguraci. Seznam projektu uvádí 16ARX8H s BIOSem LPCN47WW. Moje kombinace Pro 7 / LPCN65WW je vlastní otestovaná instalace, nikoli potvrzení všech verzí BIOSu nebo modelů.

Umí LenovoLegionLinux také ovládat otáčky ventilátorů?

Na podporovaných modelech ano, pomocí ventilátorové křivky. Ovladač použitý na mém notebooku umožňuje měnit rychlostní body křivky, tedy nastavené otáčky v jejích jednotlivých bodech. Kompletní úpravu teplotních prahů a dalších parametrů křivky nepodporuje. V této instalaci jsem ověřil čtení senzorů a standardní výkonové profily. Vlastní ventilátorovou křivku jsem nenastavoval.

Potřebujete propojit zařízení se svým softwarem?

Prověřím dostupná rozhraní a navrhnu integraci zařízení do vašeho systému nebo pracovního postupu.

Chci propojit zařízení se softwarem