Lenovo IdeaPad Flex 5 13IML05 Chromebook

This article or section does not follow the
Laptop page guidelines
.
Reason:
Missing hardware information, Accessibility, Firmware and Function Key sections (Discuss in
Talk:Lenovo IdeaPad Flex 5 13IML05 Chromebook
)
Hardware
PCI/USB ID
Working?
GPU
8086:9b41
Yes
SSD
144d:a809
Yes
MicroSD card reader
Yes
Keyboard
Yes
Keyboard backlight
Yes
Wi-Fi
8086:02f0
Yes
Bluetooth
8087:0026
Yes
Speakers
8086:02c8
Yes
Microphone
Yes
3.5mm jack
Partial
Touchpad
06cb:cde1
Yes
Touchscreen
27c6:0e32
Yes
Stylus
27c6:0e32
Untested
Webcam
174f:244f
Yes
Installation
This Chromebook does not support Legacy Boot Mode. Even if you try to invoke it by pressing
CTRL+L
on the Developer Mode boot screen, it will show two options without a choice. Therefore it is necessary to flash a custom firmware.
UEFI firmware flashing
Warning
This step relies on third-party scripts and firmware and may damage your hardware or data.
After performing this step, it will not be possible to use ChromeOS (unless you flash the original firmware back).
Note
If you decide to boot without the battery to disable Firmware Write Protection, remove the battery according to
the official manual
and do not connect it back until the new firmware is flashed.
If your Chromebook has turned into a brick, you can try to
unbrick
it by flashing the original firmware with a special cable called
SuzyQable
.
Disable Firmware Write Protection by booting without battery or
using SuzyQable
.
Enable Developer Mode
.
Use MrChromebox's
Firmware Utility Script
.
Arch Linux installation
Note
Use UEFI-compatible bootloaders (e.g.
systemd-boot
).
The SSD disk is
/dev/nvme0n1
.
Use
auditctl(8)
to suppress audit messages that appear every second:
# auditctl -e0
Follow the
Installation guide
.
Lid sensor
As of kernel version 5.19.16 or perhaps earlier, the lid sensor causes the system to wakeup shortly after suspending, regardless of whether the lid is closed.
A workaround is to disable wakeup events from the lid sensor. An example udev rule:
/etc/udev/rules.d/lid.rules
# Disable wakeups from lid sensor
ACTION=="add", SUBSYSTEM=="acpi", KERNEL=="PNP0C0D:00", ATTR{power/wakeup}="disabled"
Sound
Note
The 3.5mm jack will only work with headphones. In all cases will be used Chromebook's microphone.
Headphones connected to the 3.5mm jack will have minor noise, so it is recommended to use Bluetooth instead.
Install the following packages:
sof-firmware
- sound driver
pulseaudio
-
PulseAudio
pulseaudio-alsa
- required to connect
ALSA
with
PulseAudio
acpid
-
acpid
is required to make work the 3.5mm jack
Describe the sound card using the
ALSA
configuration file:
/etc/asound.conf
# Devices for PulseAudio
pcm.speakers "hw:0,5"
pcm.microphone "plughw:0,1"
pcm.headphones "hw:0,0"

# Force ALSA based applications (e.g. speaker-test(1)) to use PulseAudio
pcm.!default pulse
ctl.!default pulse
Force
PulseAudio
to use the devices defined above:
/etc/pulse/default.pa.d/devices.pa
# This line is required for Bluetooth
load-module module-switch-on-connect

load-module module-alsa-sink device=speakers sink_name=speakers
load-module module-alsa-source device=microphone
load-module module-alsa-sink device=headphones sink_name=headphones
Find and delete or comment out the following block of code to prevent conflicts:
/etc/pulse/default.pa
### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev support)
load-module module-detect
.endif
Create the following script to automatically switch sinks with
acpid
because of the 3.5mm jack:
/etc/acpi/headphones_jack.sh
# License: 0BSD

#!/bin/bash

function get_active_pulseaudio_users_ids {
    active_pulseaudio_users_ids=`ps -C pulseaudio -o ruid=`
}

function set_up_environment {
    local user_id="$1"
    export HOME=`getent passwd $user_id | cut -d: -f6`
    export PULSE_RUNTIME_PATH="/var/run/user/$user_id/pulse"
}

function set_sink {
    local user_id="$1"
    local sink_name="$2"
    sudo -u "#$user_id" -E pacmd set-default-sink $sink_name
}

if [ "$2" == "HEADPHONE" ]; then
    get_active_pulseaudio_users_ids

    for user_id in $active_pulseaudio_users_ids; do
        set_up_environment $user_id
        if [ "$3" == "plug" ]; then
            set_sink $user_id "headphones"
        else
            set_sink $user_id "speakers"
        fi
    done
fi
Make the script
executable
.
Register the script as a listener:
/etc/acpi/events/headphones_jack
event=jack/headphone
action=/etc/acpi/headphones_jack.sh %e
Enable
acpid.service
The sound should work after reboot.
Touchscreen
As of January 12, 2022, the Linux kernel (5.15.13) uses the wrong module for the touchscreen due to
a bug
.
Therefore, it is necessary to block it:
/etc/modprobe.d/blacklist.conf
blacklist elants_i2c
The kernel will load the correct module after reboot.
See also
Gentoo:Lenovo IdeaPad Flex 5 13IML05 Chromebook
Lenovo » IdeaPad Flex 5 CB 13IML05 Platform Specifications
Lenovo » Hardware Maintenance Manual - Flex 5 CB-13IML05