Xiaomi RedmiBook Pro 16 2025 - ArchWiki

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.

## Power management

### CPU frequency scaling

The `intel_pstate` driver is used by default for CPU frequency scaling. See CPU frequency scaling for details.

### Power profiles

power-profiles-daemon provides power saving, balanced and performance profiles for the Intel Core Ultra hardware.

See Power management for alternative tools like TLP.

### Suspend and hibernation

The laptop supports both `s2idle` (Modern Standby) and `deep` (S3). S3 deep sleep is the default. See Power management/Suspend and hibernate for details.

### Intel GPU power saving

See Intel graphics#Power saving for GPU power saving options.

## 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

Category:

- Xiaomi

Xiaomi RedmiBook Pro 16 2025
Add topic