Subscribe:   RSS icon   twitter icon

Running full Linux on a Google Chromebook Pixel

Lee Phillips
October 4th, 2017

I’ve been using the 2013 Google Chromebook Pixel as my only laptop for a few years. I don’t use it as a Chromebook, however. It’s running a regular install of Ubuntu Linux.

You can get these used, and sometimes unused, for under $500 now. The hardware is excellent: a very bright, high-resolution touchscreen with good colors and a practical aspect ratio designed for doing things rather than for watching movies; a thin, totally solid and good-looking metal case; SSD; a keyboard that I like (but tastes vary); surprisingly good and loud stereo speakers; and a superb touchpad. This machine is a pleasure to use all day long and is easy to carry, but it only runs for a few hours on its battery. The only other hardware deficiency is an alarming degree of image persistence; this is not permanent, but fades slowly. I’ve seen reports that the problem doesn’t affect all specimens of this model, but certainly does in the two that I’ve used.

Here are a few fragmentary notes from my experiences, offered here in case anyone else finds them useful. I have no idea how much of this transfers to the later models (but let me know):


I used chrx to install. If I planned to use ChromeOS as well I would probably go with Crouton. I installed the Xubuntu flavor. I did use Gnome for a while, but it was too heavy and slow. Xubuntu runs very well, and setting up the keyboard shortcuts carefully allows me to use it like a simple tiling window manager.

See https://github.com/longsleep/pixel-linux for some slightly older general information.

Suspend-and-resume using the lid doesn’t work. I use the power key.

After waking from suspend I need to press a (any?) key on the keyboard to turn on the backlight.

Keyboard backlight

After you reboot the keyboard backlight will be on full-blast, but after a suspend/resume it will be off. https://gist.github.com/stefansundin/7003429 has a lot of good ideas. For now I’ve just installed, through the Ubuntu package manager, the acpi-call-dkms package. This installs a kernel module. Then, as instructed in the above, the command echo "\_SB.KBLT.KBCM x" > /proc/acpi/call adjusts the keyboard backlight, where you substitute a number between 0 and 100 (inclusive) for x. The link above discusses some strategies for turning this into a keyboard shortcut. The keyboard light goes out when the screen blanks, and comes back on when you wake up the screen. Add the line

acpi_call

to /etc/modules so that the kernel module is installed on reboot. If there is no file /proc/acpi/call then you must do

depmod
modprobe acpi_call

(all as root).

Dealing with high resolution

To make menus and window decorations legible on the Pixel’s high resolution screen, do two things:

From the Whisker Menu, the little mouse head on the upper left of the screen, you can access the Settings, from the list in the column on the right of the panel that appears when you click on the mouse. In

Settings → Appearance → Fonts

you will see a setting for Custom DPI. Set this to 239, the resolution of the Pixel. If you prefer menus smaller or larger, you can set this to anything you want.

This does not change the size of the window decorations. For this, go to

Settings → Window Manager → Style tab

and select the Theme

Default-xhdpi

The default for the behavior of windows is to bring them to your current workspace when they are activated (in other words, if you type a command in the terminal for the web browser to open a URL, the browser window will be brought to your current workspace, covering the terminal in which you are typing). I prefer the windows to stay where they belong and to switch workspaces. To get this behavior, open

Settings → Settings Editor → Channels → general → activate_action

and change that setting to “switch”, or to “none” if you want nothing to happen.

While you’re in there you can turn off “zoom_desktop”, unless it helps you. This zooms the screen if you do a mouse or trackpad scroll while holding down the alt key, and is easy to activate accidentally, causing confusion. There’s a bunch of other interesting stuff you can change in this dialog, as well.

The trackpad pointer is a bit hard to see using the default xfce settings. Go to

Settings → Mouse and Touchpad → Theme

and choose “DMZ (Black)“ (or something else to your liking). I don’t know how to make the pointer larger, which would be nice.

Some applications, such as the Gimp, will have tiny user interface elements. I don’t know how to tell these applications about the screen resolution. (To be more specific, you can fix the Gimp, I’m told, by installing a special theme; but I don’t know of a simple setting to fix this.)

Fan

After upgrading to Xubuntu 19.10, I noticed I was not hearing the fan. I monitored the temperature sensors while putting the CPU under load, and the CPU never got above about 96°C - so not hot enough to shut down the computer, but hot enough to lead to problems and shorten the mechine’s life if the problem is not remedied. Also, hot enough to make it uncomfortable to use. After taking the load off the CPU, it took a long time for temperatures to return to normal - 10s of minutes.

I solved this problem by installing the coretemp kernel module (see above for how to do this kind of thing). After restarting, the fan rides the temperature curve relentlessly, keeping the CPU nice and cool. After taking the load off, it cools down quickly.

Even with no load, the fan seems to be always running at low speed; you can hear it if you put your ear to the keyboard. If you don’t hear anything, you could have a problem.

(My method for heating up the CPU is to write a little python program that’s an infinite loop with floating point operations inside, and to run it four times in parallel. htop shows all four logical cores at 100%.)

Sound

To make sound switch between speakers and headphones when the latter are plugged in I unmuted the “HP/Speaker Auto Detect” output in alsamixer.

USB

To get the USB ports going, use these commands:

echo -n "0000:00:1a.0" | tee /sys/bus/pci/drivers/ehci-pci/unbind
echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/unbind
echo -n "0000:00:1a.0" | tee /sys/bus/pci/drivers/ehci-pci/bind
echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/bind

You will need to repeat this upon reboot, and possibly after some other actions.

Also, after doing the above you will have to reissue the xmodmap command (see below), so do this first.

Keyboard

If you put this in a file (~/.xmodmap is conventional) and do “xmodmap .xmodmap” after loggin in:

clear control
clear mod4
keycode 105 = dead_greek dead_greek dead_greek dead_greek
keycode 133 = Super_L
add control  = Control_L Control_R Super_L
add mod4 = Hyper_L Super_R

then the “super” key (in the usual caps-lock location, sporting a magnifier icon) will be a left-control key, the the right-alt key will be the “compose” key, and the right-ctrl key will be the dead_greek key.

You can also go to

settings → keyboard → layout

to set the compose key and [?] set “super” key to cntrl, but you won’t have to if you use xmodmap.

Also, we seem to need to use xmodmap to set the dead_greek key.

If you reset the USB ports as above, then, I’ve found, you’ll need to issue the xmodmap command again (so do the USB thing first).

The hardware keys on the top row all work.

Application notes

Recent versions of Google Chrome have severe problems, using huge resources, periodically bringing the machine to its knees. One fix is to disable hardware acceleration, but this causes other problems. Firefox seems fine.

Later (6APR2020): I’m on Xubuntu 19.10 now. Sound stopped working in Firefox, because that browser now only works with pulseaudio. I remove pulseaudio from my machines, because I find that having two audio systems (pulse and alsa) fighting it out sometimes leads to problems, and one can’t really remove alsa.

Recent versions of Chrome perform much better than Firefox in this environment, especially when it comes to memory consumption. Firefox continually leaks memory until I need to restart it, while Chrome seems to release memory used for inactive pages, and does not have this problem. I found it necessary to disable hardware acceleration in the Chrome settings for reasonable performance. I noticed also that there is now no perceptible difference in typography between the two browsers, although I haven’t looked at this systematically.


Share with Facebook Share with Twitter Share with Reddit Share with StumbleUpon Share with Digg Share with Slashdot
▶ Comment
lee-phillips.org is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com.
Quotilizer ... loading ...

Tenuously related:

The best tool for CVs with publication lists.