Most of the code in linux-me176c is not specific to one Linux distribution. In fact it is already being used for Android, Arch Linux and postmarketOS. This page explains how to apply it to an other Linux distribution.
Most of the necessary patches for full functionality have been submitted upstream. However, the battery/charging drivers have been ported from the downstream stock (3.10) kernel. Even though they went through major cleanup already, they are not even closely in a state that is suitable for upstreaming.
This is why it is necessary to run a Linux kernel fork ("linux-me176c") for full functionality. Compared to other downstream kernel it only carries a couple of patches that can be easily rebased on top of newer kernel versions.
Usually, linux-me176c tracks the latest LTS kernel and is available from one of the branches in this repository.
Unfortunately, there are a few closed-source components required for full functionality. Some of them (e.g. me176c-acpi and CPU Microcode) will be running anyway through the BIOS. Therefore, replacing them with updated/fixed versions will not add new unfree code.
- me176c-acpi: For full functionality (e.g. touchscreen, Bluetooth, ...)
- Firmware:
- linux-firmware
(available as package for almost all distributions):
- WiFI:
brcm/brcmfmac43362-sdio.bin - Sound:
intel/fw_sst_0f28.bin
- WiFI:
- Additional firmware from the ASUS stock ROM (
UL-K013-WW-12.10.1.36-user.zip):- WiFI:
/system/etc/nvram.txt->brcm/brcmfmac43362-sdio.txt - Bluetooth:
/system/etc/firmware/BCM2076B1_002.002.004.0132.0141_reduced_2dB.hcd->brcm/BCM2076B1.hcd
- WiFI:
- linux-firmware
(available as package for almost all distributions):
- Userspace:
- Battery Daemon (
/sbin/upi_ug31xxin theboot.imgramdisk of the ASUS Stock ROM):
May be needed for battery driver to work correctly. Appears to be used for calibration/backup purposes.- Running it avoids
User space daemon no responsespam in the kernel log. - Requires mounting the
configpartition at/config, although the mount point can be changed by usingsedon the binary. - Example extraction: Arch Linux (AUR)
me176c-firmwarepackage - Example systemd service: Arch Linux (AUR)
me176c-batterypackage
- Running it avoids
- Battery Daemon (
- CPU Microcode Update: Not included in Intel's Linux microcode update package.
- Download: From platomav/CPUMicrocodes
- Pack it into an initrd for use with the Linux CPU microcode updater.
- Example package: Arch Linux (AUR)
intel-ucode-byt-t-c0package
See also: Tips and tricks (ArchWiki)
- WiFi / Bluetooth do not use the same MAC address as the stock (ASUS) system by default
- Bluetooth needs to be configured with an unique MAC address from userspace to make it work
- me176c-factory can be used to apply the ASUS WiFi/BT MAC address from the factory partition
Consider setting up a Thermal Daemon (e.g. thermald) to monitor device temperature and to throttle the CPU performance early when the device gets too hot.
- Custom configuration for thermald is provided in this repository.