Lenovo IdeaPad 5 14are05

From ArchWiki
Jump to navigation Jump to search

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

Reason: Stub (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)

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. This is unfortunately not the case for this Lenovo laptop.

Solution

  • 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), using this patch:
$ 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.

Tips and tricks

System Performance Mode

There are 3 modes available: Intelligent Cooling, Extreme Performance and Battery Saving. To toggle it, you 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

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

Make sure you have set up acpi_call.

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

Similarly to the #Rapid Charge, make sure you have set up acpi_call.

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's possible to get the state where both battery conservation and rapid charge modes are active.