Jump to content

Xiaomi RedmiBook Pro 16 2025

From ArchWiki
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-gitAUR 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
  1. The key is visible to xev and similar tools.
  2. 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