Category: Ubuntu
Feb 20, 2019

The Wacom Intuos is a common tablet used for creating digital artwork and vector drawings. It works surprisingly well on newer Ubuntu machines using built-in drivers and xsetwacom–perhaps even easier than on Windows, where support for the factory software can be lacking (Windows 7) or somewhat difficult to install (Windows 10).

xsetwacom scaling and multiple monitors

The Intuos will immediately begin working when plugged in; however, if the tablet input isn’t proportional to your screen or you’re using multiple monitors, you may need to tweak its resolution so the pen only maps to the right area. You can easily do this with xsetwacom, which should already be installed by default.

First, open your terminal and determine which devices you have connected. Note the ID of “Wacom Intuos S Pen stylus.”

<pre class="CodeMirror cm-s-monokai" data-setting="%1$s">xsetwacom --list devices</pre>

On my machine, this command outputs the following:

<pre class="CodeMirror cm-s-monokai" data-setting="%1$s">Wacom Intuos S Pen stylus       	id: 15	type: STYLUS    
Wacom Intuos S Pen eraser       	id: 16	type: ERASER    
Wacom Intuos S Pen cursor       	id: 17	type: CURSOR    
Wacom Intuos S Pad pad          	id: 18	type: PAD</pre>

Next, get the resolution of your stylus. This will output the vertices that currently map to the top left and bottom right of your screen(s).

<pre class="CodeMirror cm-s-monokai" data-setting="%1$s">xsetwacom --get 15 area</pre>

On my machine, this tells me 0 0 15200 9500. Think of this like two points: The upper left is at 0,0, and the bottom right is at 15200,9500, or the width is 15200 and the height is 9500.

Since I have three monitors of the same size, we can ignore the Y axis–it’s already working properly. Touching the pen to the top of the pad goes to the top of the screen, and same with the bottom. The X axis isn’t how I’d like, though. With an X of 15200, currently the pointer goes all the way to the right side of the third monitor. I need to make the X of 15200 only at the far right of my first monitor. Since my monitors are the same size, this is rather simple: I just incorrectly report that the area is 3x as wide as it is, then X of 15200 becomes the far right-hand side of my first monitor.

<pre class="CodeMirror cm-s-monokai" data-setting="%1$s">xsetwacom --set 15 area 0 0 45600 9500</pre>

Another way to think of this is you’re telling the tablet it’s 3x as wide as it really is. The empty spot where you’re saying there’s more tablet is mapping to the other screens. If you need help visualizing this, check out this helpful post by james00000001 on the Ubuntu MATE community. If I wanted to use the tablet on my middle monitor, I’d still make it 3x as wide, but I’d offset it by its width:

<pre class="CodeMirror cm-s-monokai" data-setting="%1$s">xsetwacom --set 15 area -15200 0 30400 9500</pre>

If I wanted it to map to my third monitor, the same concept applies:

<pre class="CodeMirror cm-s-monokai" data-setting="%1$s">xsetwacom --set 15 area -30400 0 15200 9500</pre>

If your monitors aren’t the same resolution or your input area isn’t matching up to your monitor size, you’ll have to do a little math. Hopefully you’ve brushed up on your fractions! Just remember on each axis if your cursor is going farther than you want then you need a bigger number, and vice versa.

Wacom Intuos Tablet

Inkscape input method

Even though your cursor is now showing up in the correct location, your lines in Inkscape may not. To fix this, go to Edit > Input Devices. A pane will pop out on the right with your current devices. You should see your tablet with an expander to its left. If not, make sure “Use pressure-sensitive tablet (requires restart)” is clicked below the list and restart Inkscape.

Expand your list of Wacom inputs. Click into each one and set its Mode to “Screen,” then click Save.

Inkscape Edit > Input devices…

Next, go to Edit > Preferences and find “Input Devices” under “Input/Output.” Ensure “Switch tool based on tablet device (requires restart)” is checked, then restart Inkscape.

Inkscape Edit > Preferences… > Input/Output > Input devices

Once Inkscape reloads, your lines should match up with your pen location on the screen.

Customizing the pad buttons

The buttons on your Intuos pad can be set to anything you like with a single command each. First, figure out the keystrokes you want each button to do. For my setup, I want the four buttons across the top to be “Draw Bezier curves and straight lines,” “Select and transform objects,” “Raise object,” and “Lower object.” The key combinations for each of these are Shift-F6, F1, Page Down, and Page Up. Using xsetwacom, these can be assigned with one command each.

First, get the ID of your pad from your device list again using xsetwacom --list devices. Mine is 18.

<pre class="CodeMirror cm-s-monokai" data-setting="%1$s">Wacom Intuos S Pen stylus       	id: 15	type: STYLUS    
Wacom Intuos S Pen eraser       	id: 16	type: ERASER    
Wacom Intuos S Pen cursor       	id: 17	type: CURSOR    
Wacom Intuos S Pad pad          	id: 18	type: PAD</pre>

Now using one command for each button, assign a key sequence to it beginning with the word “key.” For multiple keys, leave a space between the keys.

<pre class="CodeMirror cm-s-monokai" data-setting="%1$s">xsetwacom --set 18 button 1 "key shift f6"
xsetwacom --set 18 button 2 "key f1"
xsetwacom --set 18 button 3 "key PgDn"
xsetwacom --set 18 button 8 "key PgUp"</pre>

This part can be fiddly since the button numbers don’t line up with exactly what you’d expect. The four buttons on my Intuos CTL-4100 are 1, 2, 3, and 8, and buttons 4, 5, 6, and 7 don’t exist. The reason for that is a little deeper than this article needs to go–just know that if you try to set a command on a button that isn’t there, it will tell you “Unsupported offset into ‘Wacom Button Actions’ property” and nothing bad will happen.

Jul 21, 2018
Update: Please be aware these instructions are very old. This method worked great in 2018, but I haven’t had a Chromebook in years now and can’t guarantee this is still how the install works. Please verify with other, newer sources. Thanks!

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 MrChromebox.tech using the following command (the -LO is a capital O, not a zero):

cd; curl -LO mrchromebox.tech/firmware-util.sh
sudo install -Dt /usr/local/bin -m 755 firmware-util.sh
sudo firmware-util.sh

You should see the following screen:

Dell Chromebook 11 3120 Firmware Update Script

Note: If instead you see an error like “error mounting boot partition; cannot proceed.” or “mount /tmp/boot: wrong fs type, bad option…” don’t worry, you’re not out of luck yet! Create recovery media and do a full reset, then redo this tutorial. I’m not sure why this happens, but that seems to fix it.

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
Apr 12, 2014

I’m a huge fan of the default background for Ubuntu 13.10, but my current setup involves two 1280×1024 monitors and setting the same background for both doesn’t look quite how I’d like.  With that in mind, I created a 2560×1024 image with a similar color palette and style in GIMP, and decided to share it […]

Continue reading...
Apr 4, 2014

Credit for this solution goes to an excellent forum post by scouser73 on Ubuntu Forums, which was in turn adapted from instructions by mc4man. Google has packages for Google Earth in 32- and 64-bit .deb variants available for download, but they seemingly inexplicably don’t work once installed, assuming they install at all.  The 64-bit version […]

Continue reading...
Fork me on GitHub