Jump to content

# Lenovo IdeaPad Flex 3 CB 11IGL05 Chromebook

From ArchWiki

Hardware | PCI/USB ID | Working?
--- | --- | ---
GPU | `8086:3185` | Yes
MicroSD card reader |  | Yes
Keyboard |  | Yes
WiFi | `8086:31dc` | Yes
Bluetooth | `8087:0aaa` | Yes
Audio | `8086:3198` | Yes
Touchpad | `04f3:00a2` | Yes
Touchscreen |  | Yes
Webcam | `30c9:001c` | Yes

## Firmware

This device is not supported by fwupd. To change or update the firmware, follow the instructions in Chrome OS devices/Custom firmware.

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 before the installation.

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 (use original power supply) or using SuzyQable.
2. Enable Developer Mode.
3. Use MrChromebox's Firmware Utility Script.

## Accessibility

The appearance of the SeaBIOS is pretty simple and not very colorful, so it might work well with OCR software because it is completely in text mode.

Note: Blind users should request the help of a sighted person to change BIOS settings

## Installation

Note:

- Use UEFI-compatible boot loaders.
- The MMC disk is `/dev/mmcblk0`.

Use auditctl(8) to suppress audit messages that appear every second:

    # auditctl -e0

Follow the Installation guide.

## Audio

The factual accuracy of this article or section is disputed.

Reason: PulseAudio is a hardware-independent thing. If there is a reason for its recommendation—such reason should be stated, or PulseAudio recommendation should be removed, or replaced with a list like "JACK, PipeWire, PulseAudio". (Discuss in Talk:Lenovo IdeaPad Flex 3 CB 11IGL05 Chromebook)

Install the following packages:

- sof-firmware — sound driver
- alsa-ucm-conf — contains ALSA configuration profile for `sof-glkda7219max` device
- pulseaudio — PulseAudio
- pulseaudio-alsa — required to connect ALSA with PulseAudio
- acpid — required to correctly respond to headset plug in
- pulseaudio-bluetooth — optional, required for Bluetooth headsets
- alsa-utils — optional, can be used to control the sound from a terminal (e.g. alsamixer(1))

Create the following script to switch sinks with acpid when plugging in a 3.5mm jack headset:

    /etc/acpi/headphones_jack.sh

    #!/bin/bash
    case "$1" in
        jack/headphone)
            case "$2" in
                HEADPHONE)
                    case "$3" in plug)
                        for i in `users` #adjust the sink for all active users
                        do
                            userid=`id -u $i` #get the ID for a user
                            sudo -u "$i" XDG_RUNTIME_DIR=/run/user/$userid pacmd set-default-sink alsa_output.pci-0000_00_0e.0-platform-glk_da7219_mx98357a.HiFi__hw_sofglkda7219max_1__sink
                        done
                        ;;
                    esac
                    ;;
            esac
            ;;
    esac

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.

## Function keys

### Default assignment

This Chromebook model [1] has many of the Chromebook special keys and they are mostly assigned correctly. The `Search` key is assigned to `Super` by default.

Key | Visible? | Marked? | Effect
--- | --- | --- | ---
`previous` | Yes | Yes | Previous/Back
`next` | Yes | Yes | Next
`refresh` | Yes | Yes | Refresh/Reload
`full screen` | Yes 1 | Yes | No default action -> adjust to `F11`
`overview` | Yes | Yes | "Scale" action --> adjust to `PrintScreen`
`decrease brightness` | Yes | Yes | Decrease Brightness
`increase brightness` | Yes | Yes | Increase Brightness
`mute` | Yes | Yes | Mute toggle
`decrease volume` | Yes | Yes | Decrease Volume
`increase volume` | Yes | Yes | Increase Volume
`lock` | Yes | Yes | Sleep
`Search` | Yes | Yes | Assigned "Left Meta" = `Super`

1. This key is visible to kernel/udev but not within X11.

The following table gives an overview of the underlying default keycodes. This information is needed to change the configuration.

See Keyboard input for more information

Chromebook special key | Scancode | Keycode | Keysym
--- | --- | --- | ---
`previous` | ea | 158 | KEY_BACK
`next` | e9 | 159 | KEY_FORWARD
`refresh` | e7 | 173 | KEY_REFRESH
`full screen` | 91 | 372 | KEY_ZOOM
`overview` | 92 | 120 | KEY_SCALE
`decrease brightness` | 94 | 224 | KEY_BRIGHTNESSDOWN
`increase brightness` | 95 | 225 | KEY_BRIGHTNESSUP
`mute` | ea0 | 113 | KEY_MUTE
`decrease volume` | ae | 114 | KEY_VOLUMEDOWN
`increase volume` | b0 | 115 | KEY_VOLUMEUP
`lock` | 5d | 142 | KEY_SLEEP

### Adjust non-responsive keys for Xorg

There is only one key that is completely unresponsive in Xorg, because the keycode is above 255: `KEY_ZOOM` has a keycode of 371. By changing this key to an unused key with a lower keycode we can resolve this issue.

Create the following file as root:

    /etc/udev/hwdb.db/60-keyboard.hwdb

    evdev:atkbd:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
     KEYBOARD_KEY_91=coffee

rebuild the database

    # systemd-hwdb update
    # udevadm trigger

After reboot you will see this change in the table above:

Chromebook special key | Scancode | Keycode | Keysym
--- | --- | --- | ---
`full screen` | 91 | 152 | KEY_SCREENLOCK

### Create additional key bindings

To also have function keys, Chromebook shortcuts (page-up, home, delete, ...) by using a combination of the Search key (that is assigned meta or `Super` by default) as an overlay, there are many options:

xbindkeys, sxhkd, desktop environments keyboard shortcuts,...

A good option is keyd, because this way all the bindings work in console, Xorg and Wayland without any delay.

After installing, create the following file:

    /etc/keyd/chromebook.conf

    [ids]
    *

    [main]
    coffee = f11 # reassign the coffee/scrollock key to F11 to emulate full-screen within most window managers
    scale = print # reassign the scale key to printscreen

    [meta] #assign the leftmeta (search) key as an overlay key, do not forget to hold the "search" key to use the shortcuts below
    back = f1
    forward = f2
    refresh = f3
    coffee = f4
    scale = f5
    brightnessdown = f6
    brightnessup = f7
    mute = f8
    volumedown = f9
    volumeup = f10
    up = pageup
    down = pagedown
    left = home
    right = end
    backspace = delete

Enable/start `keyd.service`.

This makes it possible to go to a console tty by holding `Ctrl+Alt+Search+Back` (which is translated to `Ctrl+Alt+F1`) And also to come back to graphical mode by holding `Ctrl+Alt+Search+BrightnessUp`(which is translated to `Ctrl+Alt+F7`)

## See also

- Lenovo » Product Specifications Reference (PSREF) - IdeaPad Flex 3 CB 11IGL05
- Lenovo » Hardware Maintenance Manual - Flex 3 CB-11IGL05

Categories:

- Lenovo
- Chrome OS devices

Hidden category:

- Pages or sections flagged with Template:Accuracy