Lenovo Legion Toolkit
Other language versions of this README file:
Support the Armed Forces of Ukraine and People Affected by Russia’s Aggression on UNITED24, the official fundraising platform of Ukraine: https://u24.gov.ua.
Слава Україні!
Lenovo Legion Toolkit (LLT) is a utility created for Lenovo Legion (and similar) series laptops, that allows changing a couple of features that are only available in Lenovo Vantage or Legion Zone.
It runs no background services, uses less memory, uses virtually no CPU, and contains no telemetry. Just like Lenovo Vantage, this application is Windows only.
Join the Legion Series Discord: https://discord.com/invite/legionseries!
If you are looking for a Vantage alternative that was made for Linux, check LenovoLegionLinux project.
Table of Contents
- Disclaimer
- Download
- Compatibility
- Features
- Donate
- Credits
- FAQ
- Arguments
- How to collect logs?
- Contribution
Disclaimer
The tool comes with no warranty. Use at your own risk.
Please be patient and read through this readme carefully - it contains important information.
Download
You can download the program by the following ways:
-
Manually from the Releases page
-
Using winget:
winget install BartoszCichecki.LenovoLegionToolkit
-
Using Scoop:
scoop bucket add versions
scoop bucket add extras
scoop install extras/lenovolegiontoolkit
Next steps
LLT works best when it's running in the background, so go to Settings and enable Autorun and Minimize on close. Next thing is to either disable Vantage and Hotkeys or just uninstall them. After that LLT will always run on startup and will take over all functions that were handled by Vantage and Hotkeys.
If you close LLT completely some functions will not work, like synchronizing Windows Power Modes or Windows Power Plans with current Power Mode, Macros or Actions. This is due to the fact that LLT does not run any background services and won't be able to respond to changes.
Required drivers
If you installed LLT on a clean Windows install, make sure to have necessary drivers installed. If drivers are missing, some options might not be available. Especially make sure that these two are installed on your system:
- Lenovo Energy Management
- Lenovo Vantage Gaming Feature Driver
Problems with .NET?
If for whatever reason LLT installer did not setup .NET properly:
- Go to https://dotnet.microsoft.com/en-us/download/dotnet/8.0
- Find section ".NET Desktop Runtime"
- Download x64 Windows installer
- Run the installer
Note: If you installed LLT from Scoop, .NET 8 should have been installed automatically as a dependency. If anything fails, use
scoop update
to update all packages and try to reinstall LLT with--force
argument.
After following these steps, you can open Terminal and type: dotnet --info
. In the output look for section .NET runtimes installed
, in this section you should see something like:
Microsoft.NETCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
and
Microsoft.WindowsDesktop.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
The exact version number can be different, but as long as it is 8.x.x
it should be fine. If after these steps LLT still shows an error on startup that .NET couldn't be found or similar, the problem is on your machine and not with LLT.
Want to help with testing?
Join the Legion Series Discord and head to #legion-toolkit
channel. Beta versions of future releases are posted there frequently!
Compatibility
Lenovo Legion Toolkit is made for Lenovo Legion laptops, and other similar laptops like Ideapad Gaming, LOQ and their Chinese variants.
Generations 6 (MY2021), 7 (MY2022) and 8 (MY2023) are supported, although some features also work on the 5th generation (MY2020). Issues related to devices older than Gen 6 or that are not Legions are out of scope of this project.
If you are getting an incompatible message on startup, you can check the Contribution section down at the bottom, to see how can you help. Keep in mind, that not always I can make all options compatible with all hardware since I do not have access to it.
Support for other laptops is not planned.
Lenovo's software
Overall the recommendation is to disable or uninstall Vantage, Hotkeys and Legion Zone while using LLT. There are some functions that cause conflicts or may not work properly when LLT is working along side other Lenovo apps.
Other remarks
LLT currently does not support installation for multiple users, so if you need to have multiple users on you laptop you might encounter issues. Same goes for accounts without Administrator rights - LLT needs an account with Administrator rights. If you install LLT on an account without such rights, LLT will not work properly.
Features
The app allows to:
- Change settings like power mode, battery charging mode, etc. that are available only through Vantage.
- Spectrum RGB, 4-zone RGB and White backlight keyboards support.
- Monitor dGPU activity (NVIDIA only).
- Define Actions that will run when the laptop is i.e. connected to AC power.
- View battery statistics.
- Control laptop features from command line
- Check for driver and software updates.
- Check warranty status.
- Disable/enable Lenovo Vantage, Legion Zone and Lenovo Hotkeys service without uninstalling them.
- ... and more!
Custom Mode
Custom Mode is available on all devices that support it. You can find it in the Power Mode dropdown as it basically is 4th power mode and it allows for adjusting power limits and fans. Custom Mode can't be accessed with Fn+Q shortcut. Not all features of Custom Mode are supported by all devices.
If you have one of the following BIOSes:
- G9CN (24 or higher)
- GKCN (46 or higher)
- H1CN (39 or higher)
- HACN (31 or higher)
- HHCN (20 or higher)
Make sure to update it to at least minimum version mentioned above for Custom Mode to function properly.
RGB and lighting
Both Spectrum per-key RGB and 4-zone RGB backlight is supported. Vantage and it's services need to be disabled to avoid conflicts when communicating with hardware. If you use other RGB apps that might conflict with LLT, check FAQ for solutions.
Other lighting features like both 1 and 3 level white keyboard backlight, panel logo and rear ports backlight are also supported, however there are some constraints:
- GKCN54WW and lower - some lighting features are disabled due to a bug in these BIOS versions causing BSOD
- some (mostly Gen 6) laptops models might not show all options or show options that aren't there - this is due misconfigured BIOS that doesn't report availability of these features
Lighting that required Corsair iCue is not supported by LLT.
Important: Riot Vanguard DRM (used in Valorant for example) is known to cause issues with RGB controls. If you don't see RGB settings and have it installed, make sure it doesn't run on startup or uninstall it.
Hybrid Mode and GPU Working Modes
There are two main way you can use your dGPU:
- Hybrid mode on - internal laptop display is connected to integrated GPU, discrete GPU will work when needed and power off when not in use, giving better battery life
- Hybrid mode off (aka dGPU) - internal laptop display is conenected directly to discreted GPU, giving best performance but also worst battery life
Switching between two modes requires restart.
On Gen 7 and 8 laptops, there are additional 2 settings for Hybrid mode:
- Hybrid iGPU-only - in this mode dGPU will be disconnected (think of it like ejecting USB drive), so there is no risk of it using power when you want to achieve best battery life
- Hybrid Auto - similar to the above, but tries to automate the process by automatically disconnecting dGPU on battery power and reconnecting it when you plug in AC adapter
Discrete GPU may not disconnect, and in most cases will not disconnect, when it is used. That includes apps using dGPU, external monitor connected and probably some other cases that aren't specified by Lenovo. If you use the "Deactivate GPU" option in LLT, make sure that it reports dGPU Powered Off and no external screens are connected, before switching between Hybrid Modes in case you encounter problems.
All above settings are using built in functions of the EC and how well they work relies on Lenovo's firmware implementation. From my observations, they are reliable, unless you start switching them frequently. Be patient, because changes to this methods are not instantanous. LLT also attempts to mitigate these issues, by disallowing frequent Hybrid Mode switching and additional attempts to wake dGPU if EC failed to do so. It may take up to 10 seconds for dGPU to reappear when switching to Hybrid Mode, in case EC failed to wake it.
If you encounter issues, you might try to try alternative, experimental method of handling GPU Working Mode - see Arguments section for more details.
Disabling dGPU via Device Manager DOES NOT disconnect the device and will cause high power consumption!
These options are not Advanced Optimus and work separately from it.
Deactivate discrete NVIDIA GPU
Sometimes discrete GPU stays active even when it should not. This can happen for example, if you work with an external screen and you disconnect it - some processes will keep running on discrete GPU keeping it alive and shortening battery life.
There are two ways to help the GPU deactivate:
- killing all processes running on dGPU (this one seems to work better),
- disabling dGPU for a short amount of time, which will force all processes to move to the integrated GPU.
Deactivate button will be enabled when dGPU is active, you have Hybrid mode enabled and there are no screens connected to dGPU. If you hover over the button, you will see the current P state of dGPU and the list of processes running on it.
Keep in mind that some apps may not like this feature and crash when you deactivate dGPU.
Overclock discrete NVIDIA GPUs
The overclock option is intended for simple overclocking, similar to the one available in Vantage. It is not intended to replace tools like Afterburner. Here are some points to keep in mind:
- Make sure GPU overclocking is enabled in BIOS, if your laptop has such option.
- Overclocking does not work with Vantage or LegionZone running in the background.
- It is not recommended to use the option while using other tools like Afterburner.
- If you edited your Dashboard, you might need to add the control manually.
Windows Power Plans & Windows Power Mode
First of all, the Power Mode you see in LLT (or toggle with Fn+Q) is not the same as Power Plans (that you access from Control Panel) or Power Mode (that you can change from Settings app).
The modern (and recommended) approach is to use Windows Power Modes and only one, default, "Balanced (recommended)" power plan. You should have 3 Power Modes to choose from in Windows Settings app:
- Best power efficiency
- Balanced
- Best performance
You can assign these in LLT settings to each of Legion Power Modes: Quiet, Balance, Performance and Custom. If you choose to do so, respective Windows Power Mode will be automatically set when you change Legion Power Modes.
The legacy approach is to use multiple Power Plans, that some devices had installed from factory. If you decide to use them, or configure your own plans, leave the settings in Windows Settings app on the default "Balanced" setting. You can configure LLT to switch Power Plans automatically whenever you change the "Legion" Power Mode in LLT settings.
If you encounter issues with power mode or plan synchronization, especially when switching between the two approaches, you can reset Windows power settings to default using powercfg -restoredefaultschemes; shutdown /r /t
command. This command will reset all power plans to default and reboot your device. All plans except for the default "Balanced (recommended)" will be deleted, so make sure to make a copy, if you plan on using them again.
Boot Logo
On Gen 6 and 7 laptops, it is possible to change the boot logo (the default "Legion" image you see at boot). Boot logo is not stored in UEFI - it is stored on the UEFI partition on boot drive. When setting custom boot logo, LLT conducts basic checks, like resolution, image format and calculates a checksum to ensure compatibility. However, the real verification happens on the next boot. UEFI will attempt to load the image from UEFI partition and show it. If that fails for whatever reason, default image will be used. Exact criteria, except for resolution and image format, are not known and some images might not be shown. In this case, try another image, edited with different image editor.
Running programs or scripts from actions
You can use "Run" step in Actions to start any program or script from Actions. To configure it, you need to provide path to the executable (.exe
) or a script (.bat
). Optionally, you can also provide arguments that the script or program supports - just like running anything from command line.
Examples
Shutdown laptop
- Executable path:
shutdown
- Arguments:
/s /t 0
Restart laptop
- Executable path:
shutdown
- Arguments:
/r
Runing a program
- Executable path:
C:\path\to\the\program.exe
(if the program is on your PATH variable, you can use the name only) - Arguments:
Running a script
- Executable path:
C:\path\to\the\script.bat
(if the script is on your PATH variable, you can use the name only) - Arguments:
Python script
- Executable path:
C:\path\to\python.exe
(or justpython
, if it is on your PATH variable) - Arguments:
C:\path\to\script.py
Environment
LLT automatically adds some variables to the process environment that can be accessed, from within the script. They are useful for more advanced scripts, where context is needed. Depending on what was the trigger, different variables are added.
Environment variables
- When AC power adapter is connected
LLT_IS_AC_ADAPTER_CONNECTED=TRUE
- When low wattage AC power adapter is connected
LLT_IS_AC_ADAPTER_CONNECTED=TRUE
LLT_IS_AC_ADAPTER_LOW_POWER=TRUE
- When AC power adapter is disconnected
LLT_IS_AC_ADAPTER_CONNECTED=FALSE
- When Power Mode is changed:
LLT_POWER_MODE=<value>
, wherevalue
is one of:1
- Quiet,2
- Balance,3
- Performance,255
- CustomLLT_POWER_MODE_NAME=<value>
, wherevalue
is one of:QUIET
,BALANCE
,PERFORMANCE
,CUSTOM
- When game is running
LLT_IS_GAME_RUNNING=TRUE
- When game closes
LLT_IS_GAME_RUNNING=FALSE
- When app starts
LLT_PROCESSES_STARTED=TRUE
LLT_PROCESSES=<value>
, wherevalue
is comma separated list of process names
- When app closes
LLT_PROCESSES_STARTED=FALSE
LLT_PROCESSES=<value>
, wherevalue
is comma separated list of process names
- Lid opened
LLT_IS_LID_OPEN=TRUE
- Lid closed
LLT_IS_LID_OPEN=FALSE
- When displays turn on
LLT_IS_DISPLAY_ON=TRUE
- When displays turn off
LLT_IS_DISPLAY_ON=FALSE
- When external display is connected
LLT_IS_EXTERNAL_DISPLAY_CONNECTED=TRUE
- When external display is disconnected
LLT_IS_EXTERNAL_DISPLAY_CONNECTED=FALSE
- When HDR is on
LLT_IS_HDR_ON=TRUE
- When HDR is off
LLT_IS_HDR_ON=FALSE
- When WiFi is connected
LLT_WIFI_CONNECTED=TRUE
LLT_WIFI_SSID=<value>
, wherevalue
is the SSID of the