Asus Chromebook Flip C101PA

The Asus Chromebook Flip C101PA (bob) is a convertible touchscreen laptop powered by an ARMv8 Rockchip RK3399 hexa-core processor and 4GB RAM, measuring 10.4" x 7.2" x 0.6" and weighing 2 lbs.

Features:

  • Rockchip RK3399 (OP1) dual-core 2.0GHz Cortex-A72 and quad-core 1.4GHz Cortex-A53 processor
  • 4GB LPDDR3 RAM
  • 10.1" 1280x800 LED display
  • Mali T860MP4 GPU
  • 16GB eMMC
  • 38 Whrs battery
  • 2x USB 3.1 Type-C ports
  • 1x USB 2.0 Type-A port
Architecture
ARMv8 Cortex-A72
Processor
Rockchip RK3399 2.0GHz
RAM
4GB
eMMC
16GB
SD
Micro SD
USB
3
Wireless
B/G/N/AC
  • These instructions will create a dual-booting environment where you can switch between booting Arch Linux ARM and the stock ChromeOS. No changes are made to the internal eMMC drive, and your new Arch Linux ARM install will run completely from external storage. This is the recommended setup for those that just want to take a test drive, or don't want to give up ChromeOS.
  • You must be running the latest ChromeOS prior to installation.

Switch to developer mode

  1. Turn off the laptop.
  2. To invoke Recovery mode, you hold down the ESC and Refresh keys and poke the Power button.
  3. At the Recovery screen press Ctrl-D (there's no prompt - you have to know to do it).
  4. Confirm switching to developer mode by pressing enter, and the laptop will reboot and reset the system. This takes about 10-15 minutes.

Note: After enabling developer mode, you will need to press Ctrl-D each time you boot, or wait 30 seconds to continue booting.

Enable booting from external storage

  1. After booting into developer mode, hold Ctrl and Alt and poke the T key. This will open up the crosh shell.
  2. Type shell to get into a bash shell.
  3. Type sudo su to become root.
  4. Then type this to enable USB booting:
    crossystem dev_boot_usb=1 dev_boot_signed_only=0
  5. Reboot the system to allow the change to take effect.

Create a root USB or SD for dual booting

These instructions are written for installing to a USB drive with the sda device, assuming no other USB drives are plugged in. For an SD card, click here to magically adjust the instructions for the mmcblk1 device that an SD card will register as.
  1. Get a root shell as described in the previous section.
  2. Since ChromeOS will automatically mount any partitions it finds, unmount everything now:
    umount /dev/sda*
  3. Start fdisk to create a GPT partition table:
    fdisk /dev/sda
  4. At the fdisk prompt:
    1. Type g. This will create a new empty GPT partition table.
    2. Write the partition table and exit by typing w.
  5. Partition the micro SD card:
    cgpt create /dev/sda
    cgpt add -i 1 -t kernel -b 8192 -s 65536 -l Kernel -S 1 -T 5 -P 10 /dev/sda
  6. To create the rootfs partition, we first need to calculate how big to make the partition using information from cgpt show. Look for the number under the start column for Sec GPT table which is 15633375 in this example:
    localhost / # cgpt show /dev/sda
           start        size    part  contents
               0           1          PMBR
               1           1          Pri GPT header
            8192       65536      1   Label: "Kernel"
                                      Type: ChromeOS kernel
                                      UUID: E3DA8325-83E1-2C43-BA9D-8B29EFFA5BC4
                                      Attr: priority=10 tries=5 successful=1
    15633375 32 Sec GPT table 15633407 1 Sec GPT header
  7. Replace the xxxxx string in the following command with that number to create the root partition:
    cgpt add -i 2 -t data -b 73728 -s `expr xxxxx - 73728` -l Root /dev/sda
  8. Tell the system to refresh what it knows about the disk partitions:
    partx -a /dev/sda
  9. Format the root partition:
    mkfs.ext4 /dev/sda2
  10. Download and extract rootfs tarball:
    cd /tmp
    curl -LO http://os.archlinuxarm.org/os/ArchLinuxARM-gru-latest.tar.gz
    mkdir root
    mount /dev/sda2 root
    tar -xf ArchLinuxARM-gru-latest.tar.gz -C root
  11. Flash the kernel to the kernel partition:
    dd if=root/boot/vmlinux.kpart of=/dev/sda1
  12. Unmount the root partition:
    umount root
    sync
  13. Reboot the computer.
  14. At the splash screen, instead of pressing Ctrl-D to go to ChromeOS, press Ctrl-U to boot to the external drive.
  15. After logging in as root (password is "root"), you can connect to a wireless network by running:
    wifi-menu
  16. Initialize the pacman keyring and populate the Arch Linux ARM package signing keys:
    pacman-key --init
    pacman-key --populate archlinuxarm

Mainline Kernel

The installation above will use the ChromeOS 4.4 kernel. The mainline kernel can be used instead, though some hardware may not be working yet.

  1. Install linux-aarch64 packages, replacing the linux-gru package:
    pacman -S linux-aarch64 linux-aarch64-chromebook
  2. Type y and hit enter when prompted to flash the kernel to the kernel partition.
  3. Reboot.

Xorg

  • The Mali T860MP4 GPU is not supported at this time. Therefore, no particular Xorg drivers are needed. The built in modesetting driver will correctly detect the display.
  • xf86-input-libinput is preferred over evdev and synaptics for the best experience with the touchpad and touchscreen.

Audio

Use alsaucm (part of the alsa-utils package) to set up the sound card:

ALSA_CONFIG_UCM=/opt/alsa/ucm alsaucm -c rk3399-gru-sound set _verb HiFi

Note that the port will display as "Headphones" despite using the speakers. When paired with pulseaudio and pulseaudio-alsa, be aware that the full volume range is addressed through levels 0-9 of the Master volume control. Levels 10-100 provide no additional gain.

Backlight control

Add this udev rule at /etc/udev/rules.d/backlight.rules, and add your user to the video group.

SUBSYSTEM=="backlight",RUN+="/usr/bin/chgrp video /sys/class/backlight/%k/brightness /sys/class/backlight/%k/bl_power",RUN+="/usr/bin/chmod 664 /sys/class/backlight/%k/brightness /sys/class/backlight/%k/bl_power"

This will allow you to change the backlight brightness by writing values from 0 to 65535 to /sys/class/backlight/backlight/brightness.


Copyright ©2009-2022 Arch Linux ARM
The registered trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis.
The Arch Linux™ name and logo are used under permission of the Arch Linux Project Lead.