Because of persistent wireless issues ever since Chrome OS 0.12 was released, which could have been fixed long ago simply by updating the compat-wireless ath9k driver, I reflashed the BIOS — taking care to save a backup copy of the original, should I want to try Chrome OS again — and installed the upcoming Ubuntu Oneiric Ocelot (11.10 Beta 2), completely overwriting the disk (including the partition table).
If you choose to follow in these footsteps, be aware that this completely blows away Chrome OS; it doesn't run in a dual-boot or parallel configuration. It's possible to go back, but how to do so is not covered here; you will need to reflash the BIOS to the original, then use a Chrome OS recovery disk.
I should also be very clear that Ubuntu 11.10 is a pre-release OS and is bound to have bugs. So tread at your own risk. It's due out next month (actually, in a couple weeks), but as with any newly released software, expect something to break in unexpected ways.
Finally, before describing what I did, note that this isn't for the light-hearted. If you want to try this, I hope you've done at least one install of a Unix-like OS (Linux, BSD, etc.) in the past.
So why not Ubuntu Natty (11.04)? Well, I tried that at first. However, there's several important kernel hardware fixes that are part of in Oneiric, which is based on Linux 3, that I didn't want to backport to earlier versions. It also includes all the updated 802.11 Wi-Fi driver updates I mentioned above, built-in.
I was not able to install Oneiric via SD card; the install kernel apparently doesn't recognize the SD slot, though it works after install. However, a USB disk worked. Installation for me went through smoothly, but I did choose the "Other" disk option during installation. I wanted to delete all the CrOS partitions by hand and partition the disk myself — in particular, I intentionally did not create a swap partition. I imagine that the standard options to overwrite the whole disk might work fine, though.
After install, out-of-the-box, nearly everything works. I ensured that I did a complete system package update as soon as possible (
sudo apt-get update && sudo apt-get dist-upgrade), as the Beta 2 binaries have plenty of bugs.
As I always do with systems using SSDs, I immediately edited
/etc/fstabto add the oh-so-speed-critical option to disable tracking file access times. This meant changing the string
Ubuntu 11.10 does, unfortunately, push users very hard into using Canonical's new Unity desktop system. I'm trying to work with it, but I cannot bring myself to accept the top-of-screen menu bar as anything but archaic and abnormal.* I tried getting to a GNOME 2 based environment instead via the allegedly-supported method (
sudo apt-get install gnome-session-fallback)... but it is extremely buggy as of this writing, and editing the panels frequently causes crashes.
Hopefully this will be fixed soon after this post, so I can ditch Unity for something more sane. (I may have to end up moving to Kubuntu if it has a working network manager applet... Edit: It didn't take long to annoy me into switching. I replaced the install with Kubuntu Oneiric; see the follow-up post.)
Otherwise, so far, it seems to be stable. I'll continue to kick the tires and post an update later with other findings: hardware issues; getting GNOME working; and most of all, making decent use of the function key row and providing needed extra keys (PgUp/PgDn/Home/End/Delete).
One last note: The search key, which replaced Caps Lock on the Cr-48, is actually a Meta key (technically, it produces a "left-Windows" keycode). It's possible to remap this to something else, but chances are that my solution to beefing up the keyboard will involve using the search key as Meta after all. Besides, I'm going to need that keycode for use with
...No, I didn't forget.
The title of this post teased you with something extra. One glaringly missing bit of hardware support is 3G (CDMA/GSM/UMTS) wireless. With only a minor bit of wrangling, and mimicing part of the official Ubuntu
gobi-loaderpackage (which doesn't work with the Cr-48's modem), I came up with a way to get it working automatically and make it continue to work properly after a suspend/resume.
Note: This information does not provide a way to activate service with Verizon Wireless after Ubuntu is installed. If you intend to use the free Verizon 3G that comes with the Cr-48, make sure you activate under Chrome OS before switching.
Brad Gearon did most of the work in this area, and these instructions make use of parts of his driver and firmware distributions. The versions posted here are slightly re-bundled, as the integration I provide is much deeper. This bundle hooks into udev, which means that the firmware loader will be called automatically at boot time, and as needed after suspend/resume. (I may try to make this installable via a Launchpad PPA to make installation easier in the future. Stay tuned.)
First, grab the serial driver source code. Extract and build it with the following commands:
tar -xzf QCSerial2k.tar.gz cd QCSerial2k make && sudo make installThose familiar with Brad's installer will note that this does not install the QCUSBNet driver; that's unnecessary under the newer kernel in Oneiric, as far as I can tell. Also note that as Oneiric receives updates, it may be necessary to reinstall the driver (at least until the kernel becomes "stable" at the final release of 11.10).
Now get the Qualcomm firmware and loader. This is the same one distributed with Chrome OS, but this archive includes an extra file that will be installed to
/lib/udev/rules.dto make the firmware loading automatic. Extract it to the system with:
sudo tar -C / -xzf QCLoader.tar.gzReboot. Upon next login, new options will appear on the network menu: Enable Mobile Broadband and New Mobile Broadband connection. When you suspend and resume, these options will disappear temporarily, but should reappear within 30 seconds of resume. You may have to re-enable mobile broadband from the network menu after a resume (I don't know if this is a bug or intentional behavior).
If you want to make use of the Verizon 3G support that came with the Cr-48, do the following:
- Click Enable Mobile Broadband.
- Click New Mobile Broadband (CDMA) connection...; a window will appear.
- Click Continue (on the first page, there are no options)
- Choose United States and click Continue
- Choose Verizon and click Continue
- Finally, click Apply.
As for other providers, I don't yet know how to set them up completely — but the setup wizard will probably work as designed with some tweaks. There are firmware images for other types of networks and regions of the world included in the firmware bundle. To try them out, you will need to edit
/opt/Qualcomm/QDLService2k/Options2kNovatel.txtto point to the proper images.
For instance, editing that file, changing the directory name
apps.mbnentries should allow connecting to GSM/UMTS networks in the US and Canada after a reboot (presuming you have installed a SIM card under the battery). Feel free to talk about your experience in the comments, but please be careful to keep the image names in the same order (
uqcn.mbn) when trying new configurations.
* I've used the menu-bar-at-top GUI arrangement before: I grew up with the UIs of GEOS and the Commodore Amiga. However, modern large displays force the user to move the pointer a lot more in order to use menus that aren't attached to a window, something that can be painful on a trackpad. IMO, the bar-at-top scheme should have been relegated to history long ago.