Category: Linux
Jul 21, 2018

This post covers installation and usage impressions of GalliumOS on the Dell Chromebook 11 3120. To jump straight in, skip to Before You Start.

Dell Chromebook 11 3120

Why the Chromebook?

With November around the corner, I needed a decent laptop to attend National Novel Writing Month meetups. Much as I love my MSI GS73VR, a gaming laptop of its size doesn’t fit in most backpacks and only manages an hour on battery. It also telegraphs “steal me, I’m expensive” from across the room. The ideal laptop for NaNoWriMo, in my mind, is a highly portable, durable beater with extreme battery life and just enough power for work at the absolute lowest price point possible (preferably while not looking like crap). Luckily, just such a laptop exists, and currently goes for about $100: The Dell Chromebook 11 3120.

Why GalliumOS?

Unfortunately there’s that word “Chromebook” in there, which is great for a whole lot of people, but a deal breaker for me even as a web developer. I love the concept and all, but would be lost without git, apache/nginx, node, Sublime Text, GIMP, and InkScape. Plus the cross-platform novel writing software I’m using, Manuskript, doesn’t have a web version.

Chromebooks can run Linux on top of ChromeOS using a tool like Crouton, but some can go even farther and will run a full-on reinstall or even dual boot. GalliumOS is a distro specifically for Chromebooks. It combines the small size and lightweight memory footprint of Xubuntu (Ubuntu running XFCE as its Desktop Environment) with a collection of drivers, optimizations, and bug fixes specific to Chromebooks. The maintainers keep an excellent hardware compatibility list so you can know in advance which Chromebooks it will work with and what problems you may encounter.

Before You Start

You will need:

  • Small phillips head screwdriver
  • Spudger or other prying device
  • One blank flash drive for GalliumOS image
  • One additional flash drive (may already contain files) for firmware backup

Installation Instructions

The Dell Chromebook 11 3120 can run Linux via Crouton in developer mode, dual boot via a legacy boot mode, run a new OS while retaining ChromeOS’s recovery mode, or have its firmware replaced with a new UEFI ROM which completely removes ChromeOS and effectively makes it a normal computer. This tutorial will cover the last option, as I have no intention of ever using this machine with ChromeOS and it has basically no resale value anyway. The last option also has the benefit of better hardware support, as some services like sound will not work on this machine with RW_LEGACY dual booting.

The short version of the steps, each of which will be covered in more detail below, is:

  • create a bootable GalliumOS flash drive
  • open the Chromebook and remove the firmware write-protect screw
  • enable developer mode
  • download and run the ChromeOS Firmware Utility Script
  • choose Install/Update Full ROM Firmware
  • back up existing firmware
  • reboot and install GalliumOS
  • customize

Creating a GalliumOS Flash Drive

Download the appropriate system image from GalliumOS’s downloads page (the Dell Chromebook 11 3120 uses the “Bay Trail” image) and use your favored method of imaging it as a bootable flash drive. I personally like Etcher since it’s extremely simple and works on Windows, Mac OS, and Linux.

Etcher program flashing GalliumOS .iso file to 16GB flash drive

Once the drive is imaged, set it aside. We’ll come back to it shortly.

Removing the 3120’s Write-Protect Screw

The Dell Chromebook 11 3120 has seven screws on its bottom plate in the following positions:

Dell Chromebook 11 3120 Bottom Cover Screw Locations

Once the screws are out, you will need a prying tool to remove the bottom cover. Start at the sides toward the screen and work your way toward the touchpad on each side with a spudger.

Next, locate the screw labeled WP. This is the firmware write-protect screw. Remove it and… realistically throw it in the trash. Honestly, are you ever really going to revert this thing to factory?

Dell Chromebook 11 3120 Write-protect Screw Locations

Enabling Developer Mode

In order to flash your firmware, your Chromebook will need to be in Developer Mode. With the power on, hold Esc + Reload and then tap the power button. The screen should go blank, then load into Recovery Mode with a message about ChromeOS being “missing or damaged” (don’t worry, it isn’t really–that’s what this mode will always say, and we’re just visiting).

Dell Chromebook 11 3120 ChromeOS Missing or Damaged Screen

Next you turn off OS verification, but first be warned that this will delete all of your data. If you need anything backed up, STOP NOW. Hold Ctrl and tap D to turn off OS verification and press Enter to confirm.

The Chromebook will now reboot. Wait 30 seconds and you’ll hear two beeps, followed by another reboot. It will then factory reset the device, followed by another reboot. Now, the Chromebook will always boot to an “OS verification is OFF” screen for 30 seconds (which you can bypass at any time with Ctrl-D) before booting into ChromeOS.

Dell Chromebook 11 3120 OS Verification Off Screen

Note: If you run into a screen saying “The device owner has disabled developer mode,” you may just need to complete the device setup wizard. Try completely setting up your user, then repeating this section. If you still get this screen, it’s possible your Chromebook was used in a school and not decommissioned properly. See chrome://system and chrome://policy to see if management or device policies have been set up. If they have, it may still be possible to contact the school district and Google support to decommission your device. If not, sorry but you may be screwed. Enjoy your stock Chromebook.

Flashing the Custom Firmware

Once your desktop comes back up in developer mode, connect to the internet in the install tutorial, then hit Ctrl-Alt-F2 (right arrow/forward) to get to a root terminal and log in as “chronos”:

Dell Chromebook 11 3120 Developer Mode Login

Next, download and run the ChromeOS Firmware Utility Script from using the following command (the -LO is a capital O, not a zero):

You should see the following screen:

Dell Chromebook 11 3120 Firmware Update Script

Insert your flash drive to back up your firmware. Choose option 3, “Install/Update Full ROM Firmware” and accept the option to back up your firmware when it is offered. This file should be placed somewhere for safe keeping, so consider moving it to your backup solution once it’s safely onto the flash drive.

Updating the firmware takes about a minute. When the process is finished, insert your GalliumOS flash drive and restart the computer.

Installing GalliumOS

From here the process is much like installing any Linux distro. Let the computer start up with the bootable flash drive, then click the “Install GalliumOS 2.1” icon on the desktop. Once it’s finished, remove the flash drive as instructed and your new Gallium… book? is complete!

All that’s left after that is to customize the desktop to your liking. Here’s a screenshot of my finished desktop, which uses plank for its dock, numix-gtk-theme for its GTK theme, numix-icon-theme and numix-icon-theme-square for its icon themes, and a custom GTK config for the whisker menu from Graeme’s Blog:

Customized XFCE Desktop Screenshot

Usage impressions

Overall, it’s reasonably snappy for what it is. Here’s what $100 got me broken down into data:

  • Boot to desktop: 34.72s
  • Desktop from suspend: 1.20s
  • Open Firefox: 5.28s
  • Open LibreOffice Writer: 2.31s
  • GtkPerf benchmark: 5.12s
  • Real-world battery life: 7h
May 14, 2015

Sometimes you really want to play with a Raspberry Pi, but don’t have a display, keyboard, or mouse handy, and the wifi isn’t configured correctly to just be able to SSH in. Invariably you spend an hour digging around for a keyboard or refreshing a wireless clients list, but this doesn’t have to be the case. After a quick one-time setup, everything you need to use a Raspberry Pi will already be in your pocket.

Android Raspberry Pi display over USBThe idea

Once configured, if you have an Android phone with USB tethering and a cable, you should be well-equipped to use your Pi. Bonus points if you have a bluetooth mouse and keyboard. We’ll be setting up a USB network interface on the Pi and installing a VNC server to pass a session over that interface, thus making your phone a Raspberry Pi display. By the end you should be able to just power up your Pi, plug in your phone, turn on USB tethering, and open up a full desktop.

Setting up the network

Log into your Pi via SSH or open up a terminal in its GUI and pull up your network interfaces.

sudo nano /etc/network/interfaces

Paste the following onto the bottom of the file, then save and exit (ctrl-X, Y):

On your next restart, you should have a new interface when you type ifconfig. We’ve set this interface to have a static IP address, always, which you will later use to start your VNC session or connect via SSH on your phone.

Configuring VNC

VNC, or Virtual Network Computing, is a way of sharing a graphical desktop environment over a network, which in this case happens to be your phone’s USB cable. First, we need to install a VNC server onto the Raspberry Pi. We’ll be using TightVNC since has a tutorial for it and it’s easy to find help on forums.

sudo apt-get install tightvncserver

Next, use the command tightvncserver to configure VNC for your Pi. It should ask you for a password–be aware that TightVNC will truncate your password to eight characters. It does tell you this in the terminal, but it can be easy to miss and lead to many failed login attempts.

Lastly, we need the VNC server to start up every time the Pi starts so that you really do only need your phone. First, change into your /etc/init.d directory.

cd /etc/init.d

Create a new file called vncboot. You’ll need root privileges to change anything in this directory.

sudo nano vncboot

Paste the following into the file (change export USER=’pi’ to your username if not pi, and edit the screen resolution in the start) block if necessary):

Save this file, then update its permissions:

sudo chmod 755 vncboot

Finally, run the following command to add it to your startup:

sudo update-rc.d vncboot defaults

Reboot your Pi and it should be ready to rock.

Getting connected

Now that one side of your setup is complete, you’ll need a VNC client on your phone. VNC Viewer seems plenty quick for this purpose and you can’t argue with the price. Optionally, you may also download an SSH client like JuiceSSH for those times when a GUI just isn’t necessary.

With your app downloaded, power up your Pi and connect your phone via a data USB cable. As your Pi boots up, you should get a notification that the phone is now connected as a media device. Go into your phone’s settings and turn on USB tethering.

Assuming you’ve given the Pi enough time to boot, you should now be ready to pull up your desktop. Open your VNC viewer app, connect to (the :1 is important here), and provide your password. If you just need to SSH, open up your SSH app and connect to

Congratulations! You now have a Raspberry Pi display, keyboard, and mouse even when you don’t physically have those items available.

Apr 15, 2015

Update: The Sendy Invoicing add-on has now been added to Sendy’s API docs as a third party resource! View this add-on and other great supporting software at Our organization has needed a more user-accessible mass email solution for some time, so when we saw Sendy it was a no-brainer to pick up the dead cheap […]

Continue reading...
Nov 23, 2014

As part of an ongoing series of improvements to a remote control car I bought at a thrift store, I needed a stream of GPS data from a Sierra Wireless Overdrive Pro 3G/4G hotspot (which, coincidentally, I also picked up at a thrift store). After registering the device with my carrier, logging into the admin […]

Continue reading...
Fork me on GitHub