Below is a post I made to Reddit on September 17, 2016 to thank the people involved in my success in running Windows 10 Pro and Linux Mint 18 (and later GalliumOS 2.0 and CloudReady) on my Dell Chromebook 13 (i3/4GB-Model). My collection of notes also served as a way to give back to the community and provide a handy reference.
Big Thanks to Coolstar, MrChromebox, and ReddestDream with UEFI Firmware on My Dell Chromebook 13 Running with Windows 10 Pro and Linux Mint 18 self.chrultrabook
I wanted to give a big thank you very much to Coolstar, MrChromebox, and ReddestDream (as well as everyone else in the community)!
I’ve upgraded my Dell Chromebook 13’s (i3/4GB) SSD to a 256 GB MyDigitial SuperBoot Drive and flashed the UEFI firmware (and its multiple updates).
I’m now dual booting Windows 10 Pro and Linux Mint 18. I’m hoping to eventually triple boot by getting macOS (OS X) installed and fully functional when the accelerated graphics and trackpad drivers are stable/available, as well as replacing the Intel WiFi/Bluetooth module with a known good Broadcom one.
For anyone else’s benefit, I’ve pasted my notes below that describes some of the issues I’ve experienced and links I’ve found that helped me resolve most of them.
Thank you again!
Installed CoolStar’s and later MrChromebox’s UEFI Firmware
- UEFI Update for Haswell/Broadwell chromebooks!
- UEFI Firmware Available for all Broadwell chromebooks!
- Coolstar’s firmware flashing script, run from Linux:
cd ~; curl -L -O https://coolstar.org/chromebook/setup-firmware.sh; sudo bash setup-firmware.sh
- New UEFI/Legacy compatible ROMs available for all Haswell/Broadwell devices!
- MrChromebox’s firmware flashing script, run from Linux:
cd; curl -L -O http://mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh
- Commands to flash firmware with original firmware to restore Chromebook:
flashrom --wp-disable
flashrom -w filename.rom
Installed Windows 10 Pro
Installed Linux Mint 18
- Ran updates, including new kernel
- Installed Grub Customizer to easily edit the boot menu
Because it is available via PPA, installing Grub Customizer 4.0.6 on the listed Ubuntu, Linux Mint And Elementary OS systems is easy. All you have to do is add the ppa to your system, update the local repository index and install the grub-customizer package. Like this:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizerOptional, to remove grub-customizer, do:
sudo apt-get remove grub-customizer
Or, if you want to uninstall grub-customizer, disable the recently added PPA and downgrade all the packages that got updated via the PPA, do:
sudo apt-get install ppa-purge
sudo ppa-purge ppa:danielrichter2007/grub-customizer
Fixed display backlight brightness controls by following:
opened terminal…
inspiron@DELL-INSPIRON-3543 ~ $ ls /sys/class/backlight/
acpi_video0 intel_backlight
inspiron@DELL-INSPIRON-3543 ~ $to confirm graphics card is Intel
then I created following configuration file, after checking it does not exist:
ls /usr/share/X11/xorg.conf.d # file does not exist
so create new file…
sudo touch /usr/share/X11/xorg.conf.d/20-intel.conf
then I edited this file using gedit … (is it ok to use gedit?)
sudo gedit /usr/share/X11/xorg.conf.d/20-intel.conf
Added the following lines to this file:
Section "Device"
Identifier "card0"
Driver "intel"
Option "Backlight" "intel_backlight"
BusID "PCI:0:2:0"
EndSectionSaved it and reboot.
Updated Intel drivers by following:
sudo apt-get install --install-recommends xserver-xorg-lts-utopic libqt5gui5 libgles1-mesa-lts-utopic libgles2-mesa-lts-utopic libgl1-mesa-glx-lts-utopic libgl1-mesa-glx-lts-utopic:i386 libglapi-mesa-lts-utopic:i386 libegl1-mesa-drivers-lts-utopic
Also installed Chrome for Linux by following the same link above:
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt-get update
sudo apt-get install google-chrome-stable
WiFi Issues
- Every once in a while, likely after I’ve installed some software that conflicts with wireless networking stability, I’ve had to run the command below that I found by following:
sudo systemctl restart network-manager.service
- Another potential resource for improving wireless stability was found at the following link, but I haven’t used the solution there yet:
Re: Mint 18, Wilreles issues (again), booting from “suspend” mode
Postby JeremyB » Wed Aug 24, 2016 5:36 amYou may have to replace gedit with xed
sudo -H gedit /etc/systemd/system/root-resume.service
Put the following in the file
[Unit]
Description=Turn off wlan power management
After=suspend.target
[Service]
Type=simple
ExecStartPre= /bin/sleep 10
ExecStart= /sbin/iwconfig wlp4s1 power off
[Install]
WantedBy=suspend.target
Save and exit text editor
sudo systemctl enable root-resume
It should be fine
Trackpad driver information
Touchpad
The Pixel 2 has an ATMEL touchpad. By default, Ubuntu will be using a Synaptics driver for this device. The linux-samus repo also contains a script with some improvements for the touchpad.
However, neither of these help as much as @hugegreenbug’s xf86-input-cmt drivers which were ported from ChromiumOS. There is a PPA; unfortunately, for 16.04 Xenial, we’re gonna have to roll our sleeves up and compile it.
xf86-input-cmt depends on two other packages, libevdev and libgestures. We’ll have to compile both of those as well. Make sure that you’ve installed sudo apt-get install build-essential first!
Compile libevdevc
This one is probably the simplest, in terms of dependencies.
git clone https://github.com/hugegreenbug/libevdevc.git
cd libevdevc
make
sudo make install
Compile libgestures
This library will require you to install some packages first.
sudo apt-get install libjsoncpp-dev libglib2.0-dev
git clone https://github.com/hugegreenbug/libgestures.git
cd libgestures
make
sudo make install
Compile xf86-input-cmt
Similarly, xf86-input-cmt has a unique dependency, this time on the X11 xorg_lib.
sudo apt-get install xorg-dev libx11-dev
git clone https://github.com/hugegreenbug/xf86-input-cmt.git
cd xf86-input-cmt
./configure --prefix=/usr
make
sudo make install
Disable Synaptics Driver
This step is perhaps the most important. If Synaptics driver is enabled, our new driver code won’t have any effect. To disable the Synaptics drivers, we want to rename the
50-synaptics.conf
to anything that doesn’t end in .conf. This file is located in/usr/share/X11/xorg.conf.d
. You can also simply delete the .conf file. Your call.Copy New Config Files
Now we need to copy over the new device configuration files for the xf86-input-cmt driver. These files come in the
xf86-input-cmt/xorg-conf
folder. We are going to be installing them the same/usr/share/X11/xorg.conf.d
folder as where the Synaptics driver was. Assuming you are already in that destination directory, the installation instructions would be something like:
cp /path/to/xf86-input-cmt/xorg-conf/20-mouse.conf 20-mouse.conf
cp /path/to/xf86-input-cmt/xorg-conf/40-touchpad.conf 40-touchpad.conf
cp /path/to/xf86-input-cmt/xorg-conf/50-touchpad-cmt-samus.conf 50-touchpad.confNow, after a reboot, Ubuntu should begin using the provided driver instead of Synaptics. You’ll notice a reduction in unresponsive behaviour and unwanted cursor jumps.
- X11 cmt input driver
- X11 ChromiumOS touchpad driver ported to Linux
- X11 ChromiumOS touchpad driver ported to Linux (GalliumOS branch)
- chromium / chromiumos / platform / xorg-conf / master / . / 50-touchpad-cmt-lulu.conf
Section "InputClass"
Identifier "touchpad lulu synaptics"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
MatchProduct "SYNA"
Option "Integrated Touchpad" "1"
Option "Touchpad Stack Version" "2"
# Pressure calibration results:
# Probe Diameter Measured Expected Calibrated
# 0 3.90 39.31 11.95 7.78
# 1 5.70 40.03 25.52 10.43
# 2 7.70 50.45 46.57 48.76
# 3 9.90 58.97 76.98 80.13
# 4 11.70 70.19 107.51 121.41
# 5 13.90 80.38 151.75 158.90
# 6 17.80 120.61 248.85 306.98
Option "Pressure Calibration Offset" "-136.896426947"
Option "Pressure Calibration Slope" "3.68015979309"
Option "Palm Pressure" "300.0"
Option "Max Allowed Pressure Change Per Sec" "1250.0"
Option "Max Hysteresis Pressure Per Sec" "1000.0"
EndSection
Package Details: xf86-input-cmt-setup 1-2
Resources for getting the keyboard backlight to work in Linux
Chromebook Keyboard backlight driver for Linux 3.x. / 4.1.x
Since the newest Linux Kernel(3.12) ships with Chromebook Pixel support, both touchscreen and touchpad all work fine, but kernel doesn’t include the keyboard backlight driver. So I pick the driver form https://github.com/brocktice/pixel_linux and make it standalone, easy to use.
Thanks to brocktice DaveM
Requirements
Google Chromebook Pixel, Toshiba Chromebook 2 (2015) (Gandof) or Dell Chromebook 13 (Lulu) with Linux installed.
Build toolchains.
Known issueIf we register the keyboard backlight device as backlight to Linux system, Gnome will be confused with LCD backlight and Keyboard backlight, In system setting panel, display brightness adjust will be operated on Keyboard Backlight. So, we register it as leds devices to system to make Gnome happy.
How to install
Clone the code
if you want the keyboard backlight works like an backlight then edit pixel_kb_backlight.c
#ifdef KB_BACKLIGHT
#define DEVICE_NAME "chromeos-keyboard-backlight"
#else
#define DEVICE_NAME "chromeos-keyboard-leds"
#endifChange these and the driver will act as backlight or leds.
Build with:
make
You will get 3 drivers: chromeos_keyboard_bl.ko #backlight class driver chromeos_keyboard_leds.ko #leds class driver chromebook_kb_backlight.ko #keyboard backlight device driver
Now, you can load the drivers:
if you choose
backlight
sudo insmod chromeos_keyboard_bl.ko
sudo insmod chromebook_kb_backlight.koif you choose
leds
sudo insmod chromeos_keyboard_leds.ko
sudo insmod chromebook_kb_backlight.koOK, check whether the drivers load successfully:
if you choose
backlight
ls /sys/class/backlight
if you choose
leds
ls /sys/class/leds
If you can see
keyboard_backlight
orchromeos::kbd_backlight
from ls output, It works!How to use
I have put a helper shell script to adjust the backlight level You need edit the script if you choose backlight, to use the correct path
# turn on the backlight
sudo ./keyboard_brightness.sh on
#turn off the backlight
sudo ./keyboard_brightness.sh off
#turn up
sudo ./keyboard_brightness.sh up
#turn down
sudo ./keyboard_brightness.sh down
For
leds
as sample:Make it load automatically while system boot
I install Ubuntu 13.10 with Linux kernel 3.12.0-031200-generic, so I do the following:
#copy our drivers to the kernel's modules dir
sudo cp chromeos_keyboard_leds.ko /lib/modules/3.12.0-031200-generic/
sudo cp chromebook_kb_backlight.ko /lib/modules/3.12.0-031200-generic/
#tell system we have new modules
sudo depmod -a
sudo modprobe module
then edit
/etc/modules
and add two lines:
chromeos_keyboard_leds
chromebook_kb_backlightJust reboot the laptop, the keyboard backlight driver will load automatically.
Enjoy!
- Running lulu with the coolstar “Full ROM” presents with DMI System
- Keyboard Backlight control issues: LULU, GANDOF, …
Resources for reassigning media keys and regaining Chromebook keyboard functionality:
Remap Volume and Brightness Keys
The top row of keys all have a specific purpose and directly map to F1, F2, etc on a regular keyboard, they are merely obscured here. Once your Linux environment is installed some of these keys won’t work, namely the volume and screen brightness controls. To fix this open the keyboard application and select the Application Shortcuts tab. Add a new command for each key you want to map as shown below then choose the corresponding key.
amixer set Master 10%+ (Volume up key/ F10)
amixer set Master 10%- (Volume down key/ F9)
amixer set Master toggle (mute key/ F8)
brightness down (small sun key/ F6)
brightness up (large sun key/ F7)
- Crouton 4 Chromebook: Fix Your Brightness and Volume Controls On The Keyboard
- Media keys and default keybindings
- How To Change The Linux Mint Cinnamon Keyboard Shortcuts
Resources for Logitech Trackball customization, since I use a Logitech M570 Wireless Trackball
- Logitech Marble Mouse
- How to configure extra buttons in Logitech Mouse
- Scroll Like A Ninja – Logitech M570 Trackball & Linux Mint
- Logitech M570 – Linux pointer acceleration settings
- HOW TO CHANGE THE MOUSE SCROLL WHEEL SPEED IN LINUX USING IMWHEEL [QUICK TIP]
- Evdev mouse smooth scroll
Power management
General application information