Optimize Battery Health on Dell Linux Laptops and Fedora 38
Update, 24/12/2023: Dell has recently updated and released their
Dell Command & Configure toolkit for RHEL9, which makes it installable natively again on recent RHEL-based distros such as Fedora.
Why tune battery charging?
To any laptop user who is often on the go, battery life is essential but unfortunately, tends to decrease siginificantly as a laptop grows older. However, did you know that keeping your laptop battery charged at 100% all the time can actually hurt its health over time?
There is a lot of well written articles over this topic, so I won’t go in details; but here are two suggestions:
- My laptop just turned 4 years old. Its battery is still 97.7% healthy. This is how I did it.
- iFixit: How to Care for Your Laptop’s Battery (So It Lasts Longer)
Now, to the matter at hand. Most mainstream laptop manufacturers make use of a variety of software that enables users to directly or indirectly manage battery charge levels and algorithms from the OS while using Windows. MacOS also has a similar functionality called battery health management. This range of options is however often missing on Linux.
If you are using a Dell XPS, not to worry though!
command-configure, mainly a server-oriented utility, lets us control laptop UEFI settings straight from the OS. This comes in handy, especially when we want to adjust battery charge levels.
The snag is
command-configure isn’t quite current. The newest version supports RHEL8 and earlier versions but attempting to install the package on Fedora 38 only leads to broken dependencies - and a broken system.
Here’s where Distrobox steps in to save the day!
What is Distrobox?
Distrobox is a utility that lets us run different Linux distributions as containers on our host system. It aims to provide an integrated and seamless experience with the host system while keeping the sandboxed environment of the distribution.
Using Distrobox, we can operate a RHEL8 container that serves the sole purpose of running
command-configure and altering UEFI settings from the OS — specifically, battery charge levels.
For this process, you’ll need:
srvadmin-hapirpm package (it’s a dependency)
You can download both Dell rpm packages from the Dell Support website here.
Steps to Optimize Your Battery Health
Here’s how you can use Distrobox and
command-configure to ensure your battery’s longevity.
1. Create a Distrobox with host
When Distrobox (and Podman) launches without the
--root argument, it results in a rootless container, which is good practice but doesn’t meet the requirements for Dell
command-configure to work. Instead, we use the
--root argument as shown below:
> $ distrobox create --image rhel8 --name rhel8-root --root
This command will pull the image if it’s not already available and create a root container named ‘rhel8-root’. The output will display the next command to enter the container.
2. Enter the Container
To get into your newly created container use this command:
> $ distrobox enter --root rhel8-root
On the first launch, the container will run through a set of updates before displaying a command prompt.
command-configure in the Container
Once you’re inside the container, go ahead and install
command-configure using the following commands:
> $ sudo dnf install .srvadmin-hapi-9.5.0-4063.16816.el8.x86_64.rpm
> $ sudo dnf install ./command-configure-4.7.0-433.el8.x86_64.rpm
4. Adjust the Battery Charge
command-configure utility installed, you’re now free to adjust the battery charging settings. We’re primarily interested in the
PrimaryBattChargeCfg argument, which configures the charging behavior of the battery, with several options available:
- Standard: Charges the battery over a longer period of time.
- Express: Charges the battery using Dell’s fast charging technology.
- PrimAcUse: Charges battery while plugged-in.
- Adaptive: Charges the battery based on periodic evaluation of battery usage to balance capacity.
- Custom: Starts and stops battery charging based on user input.
If your UEFI is password-protected (and it should be), you’ll also need to include the
To extend the lifespan of your battery, you may choose to set a custom interval of 50-60% while docked and not on the go. To do this, simply input the command:
> $ sudo /opt/dell/dcc/cctk --PrimaryBattChargeCfg=Custom:50-60 --ValSetupPwd='mypassword'
With these steps, you should be able to effectively manage and optimize the health of your Dell laptop’s battery while using Linux. It’s an extra step, yes, but it’s a small price to pay for increased battery lifespan.