Lenovo IdeaPad Flex 5 13IML05 Chromebook - ArchWiki

Jump to content

# Lenovo IdeaPad Flex 5 13IML05 Chromebook

From ArchWiki

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
WiFi | `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.

1. Disable Firmware Write Protection by booting without battery or using SuzyQable.
2. Enable Developer Mode.
3. Use MrChromebox's Firmware Utility Script.

### Arch Linux installation

Warning

If you plan to use F2FS, read about the power management issue first.

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

Categories:

- Lenovo
- Chrome OS devices

Hidden category:

- Pages or sections flagged with Template:Laptop style

Lenovo IdeaPad Flex 5 13IML05 Chromebook
Add topic