Linux Kernel Monkey Log

Random bits from Greg Kroah-Hartman

Hardware, Past, Present, and Future.

Here’s some thoughts about some hardware I was going to use, hardware I use daily, and hardware I’ll probably use someday in the future.

Thunderbolt is dead, long live Thunderbolt.

Seriously, it’s dead, use it as a video interconnect and don’t worry about anything else.

Ok, some more explanation is probably in order…

Back in October of 2012, after a meeting with some very smart Intel engineers, I ended up the proud owner of a machine with Thunderbolt support, some hard disks with Thunderbolt interfaces, and most importantly, access to the super-secret Thunderbolt specification on how to make this whole thing work properly on Linux. I also had a MacBook Pro with a Thunderbolt interface which is what I really wanted to get working.

So I settled in and read the whole spec. It was fun reading (side note, it seems that BIOS engineers think Windows kernel developers are lower on the evolutionary scale than they are, and for all I know, they might be right…), and I’ll summarize the whole super-secret, NDA-restricted specification, when it comes to how an operating system is supposed to deal with Thunderbolt, shhh, don’t tell anyone that I’m doing this:

Thunderbolt is PCI Express hotplug, the BIOS handles all the hard work.

Seriously, it’s that simple, at least from the kernel point of view. So, it turns out that Linux should work just fine with Thunderbolt, no changes needed at all, as we have been supporting PCI hotplug in one form or another for 15+ years now (you remember CardBus, right?)

Some patches were posted to get the one known motherboard with Thunderbolt support to work properly by the engineers at Intel (it seems that the ACPI tables were of course wrong, so work-arounds were needed), and that should be it, right?

Wrong.

It turns out that that Apple, in their infinite wisdom, doesn’t follow the specification, but rather, they require a kernel driver to do all of the work that the BIOS is supposed to be doing. This works out well for them as they can share the same code from their BIOS with their kernel, but for any other operating system, that doesn’t know how to talk directly to the hardware at that level, you are out of luck. So, no Thunderbolt support on Apple hardware for Linux (at least through May 2013, maybe newer models will change this, but I’m not counting on it.)

But wait, what about Thunderbolt support on other hardware? I was in Hong Kong in early 2013, and of course found the chance to find the local computer stores. I saw, on one wall of a shop, all of the latest motherboards that were brand new, and would be sold all around the world for the next 6+ months. None of them had Thunderbolt support on them. It’s almost impossible to find Thunderbolt on a motherboard these days, and that doesn’t look to change any time soon.

Then I read this interesting article that benchmarked Thunderbolt mass-storage devices with USB ones. It turns out that the speeds are the same. And that’s with the decades-old USB storage specification that is so slow it’s not funny. Wait for manufacturers to come out supporting the latest UAS specification (and the USB host controller drivers to support it as well, Linux doesn’t yet because there is no hardware out there, wonderful chicken-and-egg problem…) When that happens, USB storage speeds are going to be way above Thunderbolt.

So Thunderbolt is dead, destined for the same future that FireWire ended up as, a special interconnect that almost no one outside of Apple hardware circles use, with USB ending up taking over the mass-market instead.

Note, all of this is for Thunderbolt the PCI interconnect, not the video connection. That works just fine on Linux as it isn’t PCI Express, but just a video pass-through. No problems there.

Present

I’ve been lucky to be using a Chromebook Pixel for the past few months, thanks to some friends at Google who got it for me. It’s the best laptop I’ve used in a very long time, and I love the thing. I also hate it, and curse it daily, but wouldn’t give it up at all.

I’m running openSUSE Tumbleweed on it, not Chrome OS, so of course that is the main reason I’m having the problems listed below with it. If you stick with Chrome OS, it’s wonderful, seriously great. My day-job (Linux kernel work) means that I can’t use Chrome OS as I can’t change the kernel, but almost everyone else can use Chrome OS, especially if your company uses Google Apps for email and the like. Chrome OS is really good, I like it, and I think it is the way forward for a large segment of laptop users. My daughter weekly asks me if I’m willing to give the laptop to her to reinstall Chrome OS on it, as that’s her desktop of choice, and this laptop runs it better than anything I’ve seen.

Here’s the things that drive me crazy:

  • small disk size. It’s ok for normal kernel work, but when I was trying to build some full-system virtual machines for testing, I quickly ran out of space.
  • slow disk speed. It’s a “SSD”, but I’m used to a real SSD speed, not this slow thing, where I can easily max out the I/O path doing kernel builds, as the processor quickly outraces it.
  • USB 2 ports, I could get around the disk size and speed if I had USB 3.0, and I totally understand why there are only USB 2 ports in the laptop, but hey, I can wish, right?
  • various EC issues, the Embedded Controller in the laptop is “odd” and when you run a different operating system than Chrome OS, the quirks come out. I’ve learned to live with them, but I would love to see an update for the BIOS that fixes the known problems that are already resolved within the code trees. It’s just up to Google to push that out publicly.

Here’s the things that make me love this laptop:

  • the screen
  • the screen
  • the screen
  • seriously, the screen. It’s beautiful, and is worth any problem I’ve had with this laptop.
  • wireless just works, no issues at all, great Atheros driver / hardware.
  • it’s the best presentation laptop I’ve ever had. Gnome 3 works wonderfully with it, the external display adaptor can easily handle a different resolution. LibreOffice’s presentation mode, with the speaker notes on the laptop, with it’s huge screen looks wonderful, and the slides at a much lower resolution is just great. No problems at all with this, just plug the laptop into the projector and go.
  • very fast processors. Full kernel builds in less than 5 minutes, no problem.

There are some things that originally bothered me, but have been fixed, or I’m now used to:

  • suspend / resume didn’t work, that’s fixed in 3.10-rc kernels.
  • resume used to throttle the CPU to only half speed, again, fixed in 3.10-rc kernels.
  • keyboard backlights don’t survive suspend/resume, there are fixes out there that hopefully will get into 3.11, it doesn’t bother me at all.
  • lack of PgUp/PgDown/Home/End/Delete keys. The ever-talented Dirk Hohndel made a patch for the PS/2 driver (seriously, a PS/2 keyboard?) that overloads the right Alt key and arrow keys to provide this fix, so this is solved, but it would be good to get it merged upstream, hopefully one day this will get there for others to use.
  • trackpad was annoying at first, but now I’m used to the three-finger tap for middle click. Oh, and I got a good wireless mouse to make it easier.

It’s a great laptop, built really solid. I’d recommend it to anyone who uses Chrome OS, and for anyone else if you like tinkering with your own kernels (a small market, I know.) Later this year new hardware should be coming out, with the same type of high-resolution display, and beefier processors and bigger storage devices. When that happens, I’ll get one of them, and my daughter will greedily grab this laptop and install Chrome OS, but until then, this is what I use to travel the world with.

The future is glass

A few weeks ago, a friend of mine came over with a newly acquired Google Glass device. I played with it for a few minutes, and was instantly amazed at the possibilities it will provide. I, like probably lots of you, have been reading books that describe different types of heads-up or “embedded computers” for many many years, and I’ve always been waiting for the day that this will become a reality.

Google Glass might not be the device described in science fiction books, but it’s the closest I’ve seen so far. The interface is completely natural, the display is amazing, and the potential is huge.

And yes, you do look like a dork while wearing them, but that will either become acceptable, or the device will shrink over time. I’m betting on a combination of both of them.

But what I found even more amazing is what happened when the kids put them on. The youngest put them on, and, as I explained on Google+ after it happened, his responses went, in order:

  • “You could watch movies with this in class!”
  • “Google Glass, what is Iron Man?”
  • “Google Glass, what is 7 * 24”

So that was YouTube time waster, to to movie background information, to homework solver in a matter of minutes. Total acceptance, no hesitation at all, I think that’s proof of just how big this will be eventually.

Later that day, we went to a neighborhood yogurt shop, and my friend ended up stalling the checkout line for a long time as the teenagers running the store insisted on trying them out and taking pictures of each other and doing google searches to see just how popular their store was (hint, it wasn’t the highest ranking, which was funny.) After we finally paid for our dessert, my friend was stuck demoing the device for about everyone who came in the shop for the next 20 minutes. People of all ages, kids to retirees, all instantly got the device and enjoyed it.

So, if you’ve made fun of Google Glass in the past, try one out, and consider the potential of it.

And of course, it runs Linux, which makes me happy.