.mark-christensen.com
Adventures in Computing

Everything About Computers is Simple and Works as Desired

What better way to make up for not posting for months than some sarcasm! I've been debating for weeks about what my get-back-into-blogging article should be about but every attempt to restart got interrupted by one idiotic computer problem or another.

First was the (shouldn't have been a) surprise expiration of my wildcard SSL certificate. Then came an adventure in nowhere having wifi. This last week brought some fun with a overworked wireless router and I decided it would be a fine way to start so here goes!

Caveat Emptor

Full disclosure: I have a fairly strong distaste for Google. Well, "distaste" is probably the wrong word. Let's go with "makes-bile-rise-into-my-throat-when-I-think-about-interacting-with-anything-they-do" instead. Is that a word? I'm going to say it's a word because english can be as fun as german if you use hyphens hard enough.

So it was with a bit of a heavy heart (and a bit of self-loathing) that I finally decided to buy a Chromebook a few months back. The decision to do so was not a straightforward one and it started with Chromebooks not even being on my list of options. To make a long story short, when your main concerns for a laptop are lightweight, good battery life, techie/Linux-friendly, and (most importantly) cheap then Chromebooks end up being one of the main options right now. After throwing in people saying great things about them and refurbished ones coming up on deal sites with some (in hindsight, disturbing) regularity, I felt like I'd being making a right fool of myself if I didn't choose one. Remember kids: marketing works even if you think you're too clever for it.

For the last year and change, I'd been using another Google monstrosity that is the Asus Transformer Pad TF701T. Asus did a fairly decent job with the hardware - good screen + touch, great battery life, decent keyboard - but then they decided to poison their cute, unsuspecting baby by feeding it the operating system equivalent of fast food: Android. Android deserves a decent rant of its own and so I'll skip the details for now but will say that the utter failure of that operating system killed the TF701T for me. I discovered a few other hardware problems that I had been willing to overlook but the idea of having to jam a half-functional version of Linux on top of them (to replace Android) just didn't seem worth the effort.

So, having been tricked once by the G-man I did what any sane person would do: I went back for seconds.

Different but the Same

This time I bought a refurbished Toshiba Chromebook - a Toshiba CB35-B3340 Chromebook 2 to be exact. In the more risk-averse part of my brain I rationalized buying another Google-OS computer by telling myself that it was totally different, that it was developed for a different market, and that it was basically a Linux machine with a web-centric UI on it. These are all absolutely true. They are also absolutely irrelevant from a risk point of view. The issue isn't so much what is being made but rather who is making it.

Google is a big company full of many talented people acquired from many other companies that have done many things well in the past; I've had the pleasure of working with a few of them in the past and think very highly of their skills as engineers. But (there is always a "but") like the majority of talented people, especially those embedded in a massive beauracracy, they make a lot more crap than gold. A few examples: Android started out promising but then wandered steadily into crap-land until even Google decided it should be abandoned; Chrome hovers around sufficient and has a few tiny nuggets of gold (e.g. dev tools) but sometimes jumps suddenly into crap terroritory thanks to (almost) unavoidable background updates; Gmail is sufficient except when it's not; Google search is definitely gold assuming you are searching the surface web and are looking for info that is in the normal realm of peoples' interests, otherwise it's effectively useless. No doubt many of you can think of good counterexamples to this point but I'm arguing that they are in the minority because...

Google predominantly makes products that are some combination of: opinionated; unreliable; and unstable.

When the product you are using is search or something else inherently replacable, these qualities are just annoying and not a real problem. When it's something like email, they are concerning. When it's the operating system, they are a recipe for disaster. Android and ChromeOS both come off as interesting experiments that are missing important elements that would make them worth taking seriously. Android took off as a competitor to iOS before people realized what they were getting into and the real nature of the situation only started catching up to everyone a few years ago. If the limited adoption of ChromeOS is any indicator, it seems most people learned their lesson about buying a Google-built OS. I had to experience it to learn that lesson unfortunately.

Chrome-O-what-now?

ChromeOS is Google's name for their latest experimenting with operating system (OS) software. As far as I've been able to tell, they created it by taking Ubuntu Linux and welding the Chrome browser to its face while simultaneously ripping out much of what made Ubuntu a great OS. It was commercially released approximately 5 years ago but the open-source version of it, Chromium OS, had a bug filed on Aug 30, 2008 and so it has been in development for at least 8 years. Despite starting from a very mature operating system and putting 8+ years of work into it ChromeOS doesn't seem to be used much by Google employees themselves. The occasional Q&A post will off-handedly mention that "sales" or other non-technical employees sometimes use it but that reeks of marketing BS. Google apparently isn't big into dogfooding everything they create.

"Chromebook" is just an informal term of art that refers to any portable computer that uses ChromeOS as its operating system. Maybe Google was copying Apple and trying to create a named family of hardware but they don't seem to have had the interest to maintain the same degree of control over the hardware that Apple does with their devices. It appears Google is happy to let any manufacturer call a new laptop a Chromebook as long as it runs ChromeOS - if they have any kind of quality control beyond that, it doesn't show.

Chromebooks rely on "the cloud" in the way that any number of thin client computers have in the past (with new buzzwords to try and make the idea seem more hip). The difference is that ChromeOS seems to be geared for portable computers connected to the internet whereas traditional thin clients are immobile PCs that are wired into a network which was home to servers running their software for them - in my experience, they are/were rarely seen outside of an enterprise scenario for that exact reason. Before Google started hocking the idea of the Chromebook, I can't recall anyone proposing portable thin clients as a good idea. Then, one day in a flash of genius, Google said thin clients were the new future and everyone got sooooo excited because... Google? I'm not sure why people got excited about it actually.

So, suddenly there is an OS for running a portable thin client that is borderline useless without a connection to the internet. That means they should be hyper-focused on providing a solid foundation for connecting to a network, right? Well, no. And the jokes on you if you believe otherwise.

Chromebooks are wireless-only by design - there may be one or two out there that have an ethernet port but I've been unable to find them and every article talking about this or that model mentions its lack of wired option. Google was smart enough to have ChromeOS come with drivers for USB ethernet devices though! You can buy (pretty much) any one off the shelf, plug it in, and you are good to go. For whatever reason, the same isn't true of USB wifi devices. They don't work with ChromeOS and so you are stuck with the built-in radio. Luckily for you, wireless chips are one of laptop manufacturers' favorite areas to save money!

First Amongst Equals

That brings me to the problem that prompted this post. Before I begin though, to make it clear, I'm not proposing that this is the biggest problem I have had with ChromeOS. Rather, it is just the problem du jour when I felt like writing. I may write up some of the other problems if I feel feisty enough in the future (although I added a few highlights at the end of the article just for fun).

Go looking around at reviews of customers who are less than satisfied with their purchase and you will see the same statements over and over: the wireless doesn't work with my home network; the wireless broke after a few days of using the device; the wireless turns on and off without warning. I can't blame Google for Chromebooks having crappy wireless hardware but I definitely blame them for locking out their customers from using external devices. Wireless hardware has long been a problem for mobile computers (especially cheap ones) and to not consider that when making an OS aimed at laptops is embarrassing for a company like Google.

And that's exactly what my Chromebook suffers from: painfully weak wifi. Since I've purchased this machine I've run into 5 or 6 different wireless access points (APs) that it couldn't connect to. No error message other than one of the usual vague (and wrong) failure messages; my favorite is "out of range" when I'm sitting less than 2 meters from the router and have unobstructed line-of-sight. Every time this has happened has been painful (I'm traveling and rely on wifi to be able to plan, work, and communicate) but this latest time was unacceptable. I'm staying in a small apartment in Kyoto and my laptop is never more than 5 meters from the router with minimal wall volume between the two. There are 3 other devices in the room that have no problem seeing and connecting to AP (two phones and a 2009 Macbook). Yet the Chromebook could only connect for about 5 seconds out of every 60 on average; sometimes it'd work for a full minute and other times it wouldn't work for 10+ minutes.

After several days of not having enough internet connectivity to successfully check email much less answer important questions about upcoming travel plans, I decided I was wasting more time trying to ignore the problem than it would actually take to fix it.

The Solution

So that no one can claim I was being unfair, I didn't go into fixing the problem assuming the Chromebook was the problem. I painstakingly tested every variable I could isolate from software issues like MTU mismatch and abnormal security configurations to physical problems like a contested radio channel. I'm sure there were things I could checked that I didn't but none of that would have changed the fact that the Chromebook could never reliably connect to the AP despite the fact that more than 8 other computers in the apartment complex could. I had to find a way to replace the radio if I wanted to fix the problem.

So I've got a computer that can use an ethernet port connected via USB and no external wifi support but I need it to connect to an AP. How could I turn a wireless signal into an ethernet-compatible output? Did I have time to hack together something with a Raspberry Pi or other microcomputer? What about some special DD-WRT functionality on a router that makes it act like a bridge but without the need to know private info about the source AP? If only someone had invented something like that!

Well, this was a good lesson in doing a bit of research before trying to engineer a solution because someone has invented that. Or rather, many someones and in many different versions. There is a whole category of USB devices that has the capability of acting as a wireless client and passing that connection through to an ethernet cable. Discovering these devices was the first pleasant surprise of this whole endeavour; discovering that Kyoto has one of the largest electronics stores I have ever seen (Yodobashi) was the second.

The next day we took a trip to visit a few places around Kyoto station and stopped into the Yodobashi to grab what I needed: a wifi-to-ethernet device, a ethernet-to-USB device, a short ethernet cable, and a USB hub (my Chromebook only has 2 USB ports). All together it set me back less than 5000 yen and an extra couple 100 grams of weight in my bag. After a few more hours of sightseeing and exploring the city, I was excited to get back and make sure it all worked.

It didn't.

This time it wasn't the Chromebook's fault though. The fine folks at Elecom - maker of the wifi-to-ethernet client I bought - decided they should merge the security setting (e.g. WEP, WPA) with the encryption setting (e.g. AES, TKIP) in the configuration UI for the device. They made it impossible to use the UI to connect to an AP that is using WPA with AES instead of TKIP. This posed a problem since that was exactly the configuration used by the AP I wanted to connect to. Yay!

I count myself very lucky that this error didn't require me to return the device and search for another. It turns out the underlying hardware was engineered correctly and the problem came from sloppy (lazy? cheap?) dev work in the UI. With a bit of experimentation I was able to generate the necessary commands (just POST'd query strings) to send to the device. Another few minutes to write and test a script that uses curl to send them in the right order to the device and I had a way to repeatedly reconfigure it for any other AP in the future. After worrying I was going to have to return the device and roll the dice again by buying another, spending an hour or two figuring out the right commands and making it repeatable seemed like a small price to pay.

Once I had the configuration figured out and everything hooked up to the Chromebook, my internet worked without a problem. I haven't yet had the opportunity to test it on another problematic AP but I expect I'll be presented with the opportunity before long; I have full faith that my clunky USB wireless solution will work as expected though.

And Another Thing!

While writing this, Chrome, running in the background while I type in "Text" (yes, that's the name of the app), decides every 5-ish minutes that it needs to come to the foreground to remind me that I don't have an internet connection. Thanks Chrome; thanks for letting me not forget that I don't get internet while I have my wifi off and ethernet unplugged. Amazingly useful functionality. Good job. You win. Perfect 5 out of 7.

Some more fun (read: idiotic) ideas that ChromeOS users get force fed and cannot disable or avoid:

And one final fun thing about Google: at the time of writing this, their "About Chromebook" page has an error in some Angular.js code that causes most of the media to not load at all. The page is just a hideous beige screen with little snippets of text scattered about. I guess even they don't believe that anyone is looking to be sold on the idea of buying one of these half-assed thin clients any more.