Xiaomi RedmiBook Pro 16 2025

Hardware
PCI/USB ID
Working?
GPU
8086:7d51
Yes
Wi-Fi
8086:7740
Yes
Bluetooth
8087:0026
Yes
Webcam
2b7e:c817
Yes
Touchpad
27c6:0f90
Yes
Keyboard
Yes
TPM
Yes
Fingerprint reader
27c6:689a
Yes
Audio
8086:7728
Yes
Ambient light sensor
Yes
NPU
8086:7d1d
Untested
The Xiaomi RedmiBook Pro 16 (2025) features a 16" screen, Intel Core Ultra 5 225H or Ultra 7 255H processor, and integrated Intel Arc 130T / 140T GPU.
For a general overview of laptop-related articles and recommendations, see
Laptop
.
Installation
When installing Arch Linux on this device, Wi-Fi functionality may require the
linux-firmware-git
AUR
package.
To disable
Secure Boot
, a UEFI password has to be set first.
Accessibility
Note
Blind users should request the help of a sighted person to change firmware settings.
The firmware interface is set to Chinese by default.
To change the firmware language to English, navigate through the menus by pressing:
Right
(to access the
Settings
tab),
Down
,
Down
,
Enter
(to enter language settings),
Down
,
Enter
(to select English).
Firmware
fwupd
supports updating the system firmware, NVMe SSD, and webcam on this device.
Function keys
Key
Visible?
1
Marked?
2
Effect
Fn+Esc
No
Yes
Enable Fn lock
Fn+F1
Yes
Yes
XF86AudioMute
Fn+F2
Yes
Yes
XF86AudioLowerVolume
Fn+F3
Yes
Yes
XF86AudioRaiseVolume
Fn+F4
No
Yes
Mute Microphone
Fn+F5
Yes
Yes
XF86MonBrightnessDown
Fn+F6
Yes
Yes
XF86MonBrightnessUp
Fn+F7
No
Yes
Xiao AI
Fn+F8
No
Yes
Project
Fn+F9
No
Yes
Settings
Fn+F10
No
Yes
Toggle Keyboard Backlight
Fn+F11
Yes
Yes
Print
Fn+F12
Yes
Yes
Insert
Fn+p
Yes
No
Pause
Fn+b
Yes
No
Pause
Fn+Ctrl
Yes
Yes
Menu
The key is visible to
xev
and similar tools.
The physical key has a symbol on it, which describes its function.
Charge Limit
The device supports setting a charge limit by making some ACPI calls (extracted from the
Xiaomi PC Manager
software). Provided the
acpi_call
package is installed, the following script makes this easily accessible under Linux as well:
set_charge_limit.sh
#!/bin/bash

acpi_call() {
    local command="$1"
    local hex_value="$2"

    local acpi_string="\\_SB.PC00.WMID.WMAA 0x0 0x1 { \
0x00 $command 0x00 0x10 0x02 0x00 $hex_value 0x00 \
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 \
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 \
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 }"

    echo "$acpi_string" | tee /proc/acpi/call
}

set_charge_limit() {
    local limit_hex
    case "$1" in
        40) limit_hex="0x08" ;;
        50) limit_hex="0x07" ;;
        60) limit_hex="0x06" ;;
        70) limit_hex="0x05" ;;
        80) limit_hex="0x01" ;;
        *) echo "Invalid limit. Valid options: 40, 50, 60, 70, 80"; exit 1 ;;
    esac

    echo "Setting $1% limit"
    acpi_call "0xfb" "$limit_hex"

    echo "Enabling charge limit"
    acpi_call "0xfa" "0x00"

    echo "Enabling charge limit (second call)"
    acpi_call "0xfa" "0x00"
}

disable_charge_limit() {
    echo "Disabling charge limit"
    acpi_call "0xfb" "0x00"

    echo "Disabling charge limit (second call)"
    acpi_call "0xfb" "0x00"
}

if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <limit|disable>"
    echo "  limit: 40, 50, 60, 70, or 80"
    echo "  disable: turns off charge limiting"
    exit 1
fi

if [ "$1" = "disable" ]; then
    disable_charge_limit
else
    set_charge_limit "$1"
fi
The script needs to be run on every reboot. You can automate this by using
systemd
. An example unit to set the charge limit to 70% may look like this:
[Unit]
Description=Set battery charge limit on boot

[Service]
Type=simple
ExecStart=/path/to/set_charge_limit.sh 70
User=root
Group=root

[Install]
WantedBy=multi-user.target