Lenovo IdeaPad 5 14are05

From ArchWiki

Tango-edit-clear.pngThis article or section does not follow the Laptop page guidelines.Tango-edit-clear.png

Reason: Needs a hardware table and a function keys section (Discuss in Talk:Lenovo IdeaPad 5 14are05)

The IdeaPad 5 14are05 is a 14-inch Lenovo AMD Renoir (Ryzen 4000)-based laptop.

Hardware Support

BIOS

BIOS can be accessed by pressing F2 at the Splash screen. The 15-inch model has BIOS updates that are compatible with DOS, so its BIOS can be flashed without Windows (see Flashing BIOS from Linux#FreeDOS). Unfortunately, the update files for this model require Windows. In theory, Windows can be installed on a USB drive through woeusbAUR.

Video

X works natively with a current linux and xf86-video-amdgpu.

Sound

Sound works with PulseAudio in linux out of the box.

Microphone

The internal microphone is properly recognized and working for linux >=5.8rc3 as long as the snd-acp3x-rn kernel module is loaded.

If the internal microphone is no longer recognized on linux >=5.10, you may need to add the following to the kernel parameters:

snd_rn_pci_acp3x.dmic_acpi_check=1

Wireless

It is available with different wifi chips but they should work out of the box. Bluetooth also works with the btusb module, and remote audio playback with A2DP works through pulseaudio-bluetooth (see Bluetooth headset on setting it up).

Touchpad

The touchpad works almost as expected starting from linux 5.9-rc1. It is still random whether it will work or not after going out of suspend mode, but in that case it is an easy fix: just add a keyboard shortcut for the touchpad toggle and you should be able to make it work again.

For older kernels, it is important to make sure that the BIOS is updated to the latest version (atm 1.06), otherwise it is possible that the touchpad will not even be discovered let alone work. If touchpad device is found it is still possible that it will not work (either right after startup or after going out of suspend mode). In this case a new cold start might help (sometimes a reboot might be enough).

Additionally, while there is no explicit option to disable the touchpad in the BIOS, some option combinations in the BIOS can make the touchpad inaccessible. Thus, if you are running on linux 5.9 or newer and you still have issues with this module, try checking your BIOS settings first.

Display

The brightness works for linux >=5.7.6.1, since the patch to fix brightness has been merged. The xbacklight utility provided with xorg-xbacklight only works with Intel drivers (see Backlight#xbacklight), but you can use its replacement from acpilight to increase and decrease brightness levels. Since the latter requires different permissions for the files in /sys/class/backlight/ to control the backlight brightness levels, you should set up a file in /etc/udev/rules.d/90-backlight.rules containing:

SUBSYSTEM=="backlight", ACTION=="add", \
  RUN+="/usr/bin/chgrp video /sys/class/backlight/amdgpu_bl0/brightness", \
  RUN+="/usr/bin/chmod g+w /sys/class/backlight/amdgpu_bl0/brightness"

You would also need to add your users to the video group.

In order to preserve the brightness level when resuming from suspend, you should add the following kernel parameter to your bootloader's configuration file:

acpi_backlight=vendor

Issues

Suspend issues (S3 sleep fix)

Note: suspending works as expected out of the box starting from linux 5.14-rc1 (that is, AMD's s2idle is now properly supported, although s3 sleep can still be achieved with the method below). So for kernels <= 5.10 and >= 5.14, the solution is provided below. Note that this does not work in kernels from 5.11 to 5.13. Original solution is described on reddit.

About issue

Windows has introduced a new sleep mode a.k.a. Modern Standby. It is supposed to be more like a smartphone's deep sleep, which lets the system keep the wifi active and check for emails without needing to fully wake up.

For some reason, this new S0ix sleep mode only works if BIOS does not advertise support for the traditional S3 suspend-to-RAM sleep state. So Linux will do suspend-to-idle sleep, which results in bigger energy consumption.

Some systems have a "Sleep Mode: Windows / Linux" switch in the BIOS to turn S3 support on or off. In this laptop, for some BIOS versions (at least confirmed on 2.x) this option can be enabled on an extended BIOS mode accessible with a key sequence. Otherwise, another solution is to patch the ACPI table to enable it.

Solution 1: Enabling S3 sleep on advanced BIOS

  • Turn off OneKeyBattery mode in BIOS setup, if it is enabled, and save the BIOS settings.
  • Power down the laptop.
  • Type, with the laptop powered off: F1 1 Q A Z F2 2 W S X F3 3 E D C F4 4 R F V F5 5 T G B F6 6 Y H N.

If you notice the pattern, it is just going down the column from F1 to the letter in the last keyboard row, from F1 to F6. (You may need to replace some keys accordingly if you got a QWERTZ layout or similar alternative layouts).

  • Boot the laptop with F2 pressed to get into BIOS as usual, you will get into the BIOS but with a few options more unlocked.

You will be able to then find a "S3/Modern Standby Support" setting in one of the newer menus that appear and toggle it to S3 instead of Modern Standby. Do not touch any other setting here unless you know what you are doing.

Solution 2: ACPI patching

  • Get acpidump and iasl, provided by the acpica package.
  • Dump all your ACPI files into a directory:
$ mkdir ~/acpi/
$ cd ~/acpi/
# acpidump -b
  • Decompile the DSDT table
$ iasl -e *.dat -d dsdt.dat
  • Patch the decompiled DSDT table (dsdt.dsl). Use this patch for Linux <= 5.10 and this patch for Linux 5.14.
$ patch -p1 < dsdt.patch
  • Compile the modified DSDT table
$ iasl -ve -tc dsdt.dsl
$ mkdir -p kernel/firmware/acpi
$ cp dsdt.aml kernel/firmware/acpi
$ find kernel | cpio -H newc --create > acpi_override
  • Copy created cpio file to boot:
# cp acpi_override /boot
  • GRUB needs to boot the kernel with a parameter setting the deep sleep state as default. Edit /etc/default/grub and add the following:
GRUB_CMDLINE_LINUX_DEFAULT="mem_sleep_default=deep"
GRUB_EARLY_INITRD_LINUX_CUSTOM=acpi_override
  • Regenerate the GRUB configuration:
# grub-mkconfig -o /boot/grub/grub.cfg

as a result in the /boot/grub/grub.cfg for the corresponding menu entry(ies) one should be able to find lines that look similar to: initrd /boot/acpi_override

  • Reboot
  • To verify that things are working:
# dmesg | grep ACPI | grep supports
[    0.195933] ACPI: (supports S0 S3 S4 S5)
$ cat /sys/power/mem_sleep
s2idle [deep]
  • Do not forget to set your system to go into 'deep' sleep
# echo deep > /sys/power/mem_sleep
  • Now try new suspend. Power led should have a slowly pulsing light.

Power management

To toggle the System Performance or the Battery Conservation/Rapid Charge mode, you would need to call some ACPI methods.

First install acpi_call (or acpi_call-lts for LTS kernel, acpi_call-dkms for other kernels) and load the kernel module:

# modprobe acpi_call

You can also use ideapad-perf to control both the System Performance and the Battery Conservation mode through the CLI or with the provided tray applet.

System Performance Mode

There are 3 modes available: Intelligent Cooling, Extreme Performance and Battery Saving.

Set it to Intelligent Cooling mode:

# echo '\_SB.PCI0.LPC0.EC0.VPC0.DYTC 0x000FB001' | tee /proc/acpi/call

Set it to Extreme Performance mode:

# echo '\_SB.PCI0.LPC0.EC0.VPC0.DYTC 0x0012B001' | tee /proc/acpi/call

Set it to Battery Saving mode:

# echo '\_SB.PCI0.LPC0.EC0.VPC0.DYTC 0x0013B001' | tee /proc/acpi/call

To verify your setting:

# echo '\_SB.PCI0.LPC0.EC0.STMD' | tee /proc/acpi/call
# cat /proc/acpi/call; printf '\n'

As a result you get the value for the bit STMD (either 0x0 or 0x1).

# echo '\_SB.PCI0.LPC0.EC0.QTMD' | tee /proc/acpi/call
# cat /proc/acpi/call; printf '\n'

As a result you get the value for the bit QTMD (either 0x0 or 0x1). To interpret the results the following table can be used:

STMD QTMD Mode
0x0 0x0 Extreme Performance
0x0 0x1 Battery Saving
0x1 0x0 Intelligent Cooling

Rapid Charge

The Rapid Charge technology allows you to charge 80% of the battery capacity in around 30 minutes (depending on laptop model and battery). According to Lenovo, their batteries are charged at a higher rate with high current rather than high voltage, which they claim increases battery life.

Turn on:

# echo '\_SB.PCI0.LPC0.EC0.VPC0.SBMC 0x07' | tee /proc/acpi/call

Turn off:

# echo '\_SB.PCI0.LPC0.EC0.VPC0.SBMC 0x08' | tee /proc/acpi/call

To verify your setting:

# echo '\_SB.PCI0.LPC0.EC0.FCGM' | tee /proc/acpi/call
# cat /proc/acpi/call; printf '\n'

where 0x0 stands for off and 0x1 stands for on.

Also see the note

Battery Conservation

Battery Conservation Mode is a feature that limits battery charging to 55-60% of its capacity to improve battery life, being most useful when the laptop tends to run on external power much of the time.

Turn on:

# echo '\_SB.PCI0.LPC0.EC0.VPC0.SBMC 0x03' | tee /proc/acpi/call

Turn off:

# echo '\_SB.PCI0.LPC0.EC0.VPC0.SBMC 0x05' | tee /proc/acpi/call

To verify your setting:

# echo '\_SB.PCI0.LPC0.EC0.BTSG' | tee /proc/acpi/call
# cat /proc/acpi/call; printf '\n'

where 0x0 stands for off and 0x1 stands for on.

There is also an alternative way to control the conservation mode of the battery.

Note

It is worth noting that the Lenovo Vantage software for Windows when turning on Battery Conservation mode also turns off #Rapid Charge (if it was on). The same is also valid for the #Rapid Charge: turning it on will bring the battery conservation mode down. The aforementioned acpi calls (#Rapid Charge and #Battery Conservation) will not do this for you. So it is possible to get the state where both battery conservation and rapid charge modes are active. You generally do not want this, as Rapid Charging puts more strain on the battery than regular charging, defeating the purpose of Battery Conservation Mode. The ideapad-perf script will prevent you from doing this.