For a very long time now, I have put effort into dogfooding. Back when I first started working at ARM in 2005, all available ARM platforms you might even consider using for normal computing were ridiculously expensive. But finally, in 2008, something changed.
The BeagleBoard was the first fundamental change in how embedded development boards were marketed and sold. It was open hardware. It was backed by open source software. And it was cheap. It was released into a market where it was "simply common sense" that you couldn't turn a profit on a sub-$1000 development board, and it sold for < $200.
It wasn't brilliant - early revisions had serious issues with the USB host port, so a non-standard cable was needed in order to force the OTG port into host mode, and then you had to put networking, keyboard, mouse and any other peripherals you wanted to attach without a soldering iron to a hub connected to the single port. But you could run a normal graphic desktop environment on it!
This opened up for a bunch of follow-ons, including Raspberry Pi, but there was really nothing game changing for a bunch of years until...
When Google launched the Chromebook product line, they were initially all x86-based.
Samsung Series 3
The underlying business model of course meant that it was intentionally short on local storage, and costcutting meant it was short on RAM even for running a web browser a couple of years down the line - but it was an actual thing I could bring instead of an x86 laptop when going to conferences. Both for hacking and for giving presentations.
I remain fairly convinced mine held the only armhf->ia64 cross compilation toolchain the world has ever seen, at least used in anger (for compile testing changes to the Linux EFI subsystem).
Samsung Chromebook 2
A couple of years later, Samsung followed up with the Chromebook 2, offering a model with 4 cores, a larger (and better) screen, and twice the amount of RAM. So I got one of those, but frankly, the shortage of local storage combined with the unreliability of uSD or USB storage across suspend/resume meant I eventually stopped using it for local builds.
Samsung Chromebook Plus
Well, Samsung eventually decided to give up on selling Chromebooks (and possibly even laptops) in Europe, so I had to import one from across the pond. But this one was 64-bit! And the screen was a serious step up from the previous ones, and the chassis was metal instead of plastic. Apart from that, it wasn't that much of an upgrade - but since my work was pretty much exclusively on 64-bit, it was still a useful thing to move to.
The MacchiatoBIN also deserves a mention. It remains the only platform I would recommend to a hobbyist without a list the length of my ARM of caveats. That doesn't mean there isn't such a list, just that it's shorter, and the issues easier to live with. This actually works pretty OK as a primary desktop system, and I used it for that for several months.
Biggest things it got right compared to competition
- Mini-ITX form factor - fits in any regular PC case.
- Onboard SATA.
- Onboard PCIe (one open-ended x4 slot).
- On-board connector for front panel USB2 (which is weird, but there are adapters).
- Unbrickable - can load firmware from uSD.
Biggest issues are
- Very restrictive on which DIMMs are supported.
- EDK2 port not yet fully upstream.
- FTDI serial console flaky (when debugging early system firmware).
- Non-ATX-like handling of power. Turns on as soon as cable inserted. No soft power-off.
Windows on ARM
Then, finally, devices running Windows (not Windows RT) trickled onto the market at the end of Q1 last year (2018). There was allegedly a contender from Asus, but that never materialised as available for me to buy either here in the UK, in the US or in Taiwan - until a couple of weeks ago.
HP Envy X2
So the first one I got to have a look at was the HP Envy X2 - really a tablet that comes with a keyboard built into its screen protector. I had some brief time with one during Linaro Connect in Hong Kong 2018, but then Linaro got me one to have a closer look, shortly before the subsequent Connect in Vancouver.
While it tries to encourage you to use cloud storage, it actually came with 128GB of onboard storage. This was really useful, because it let me get started figuring out how to build EDK2 under Visual Studio (posts to follow on this). It ended up being quite usable on long haul flights (and related time in airports).
But, this first wave of devices were based on the Qualcomm Snapdragon 835, which was slightly lacking in horsepower - something that got even worse once Spectre/Meltdown mitigations were rolled out.
And it still only had 4GB of RAM. The same as the phone I bought early 2017, and the same as the Chromebook I bought in 2014!
So why this retrospective post?
Well, Tuesday this week I noticed that the first of the Snapdragon 850 laptops was finally available to buy in the UK.
Lenovo Yoga C630
Yeah, I may have ordered one of these. I may in fact be typing this post on it. It may also now be out of stock.
The Lenovo Yoga C630 is an octa-core system built like a proper laptop. Solid (and very sleekly stealth looking) metal chassis. The keybord has very short travel, which some people might hate, but I like it better than the Chromebook and Macbook ones.
Screen seems OK, and the machine feels a lot snappier than the Envy X2 did. But even more importantly, it comes with 8GB of RAM. The 128GB (only variant available to buy, although they claim a 256GB one also exists) of onboard storage sits on a UFS interface rather than eMMC like the Chromebooks. This makes a substantial difference for performance.
The Yoga ships with a Windows 10 Home licence. Upgrading that to Windows 10 Pro would set you back another £120 and push the total cost over £1000. If those extra features had been important to me, that may well have turned this device too expensive. They weren't for me, so I'm sticking with Home.
State of Windows on ARM(64)
Well, this is very much at a "first impressions" sort of level but...
Windows in S mode
All of these ARM-based laptops ship in S mode. What this means is basically that you can only install programs from the Microsoft Store. Clearly not very useful for me, but just like the default locked-down-ness of the Chomebooks - it really makes sense for what the majority of computer users need, and it does improve device security.
I'm totally OK with this, because it is optional. But it's also worth noting that unlike Chromebooks there is no way to switch back into S mode once you've made the jump.
What makes these laptops potential replacements to existing Windows users is that they provide dynamic binary translation for existing x86 applications. Worth noting is that only 32-bit applications are supported for this, but it does mean most of your standard applications will just work (albeit more sluggishly than when running natively).
Windows Services for Linux
WSL is available with the default installation. You only need to enable it before going to the Microsoft Store (search for "WSL") to install your (mainstream) distribution(s) of choice.
Excellent, that means I can do work both with Visual Studio and in a proper Linux environment simultaneously? No :( Not yet. As I said, these devices only made it into the hands of real users less than a year ago, so fixes for issues that were picked up by people using them in anger haven't made it into the stable releases yet. This one is currently blocking me from doing my day job on the Yoga; the release version of WSL fails to emulate the userspace variant of cache maintenance, so pretty much any JIT will die from a SIGILL (illegal instruction).
So I guess the way forward for me is to sign up as a Windows Insider and jump on the "slow track", to get early access to new features (but not quite drink from the firehose).
Edit: signed up as a Windows Insider, now running Version 1809, and this problem has gone away!
When I got the Envy X2, I pretty much had the choices of native Edge or emulated Chrome/Firefox. But in a case of excllent timing, there are now native nightly builds of Firefox for arm64. Although it comes with the disclaimer "even nightlier than our normal Nightlies", I have not so far come across any issues.
With WSL you can certainly use your regular Linux ssh command, but if coming from a Windows environment already, it may be useful to know there are already snapshot builds of PuTTY available for both native 32-bit and 64-bit ARM.
Who are you and what have you done with Leif?
And I'm certainly going to look into being able to run Linux directly on this platform.
The nonsense that was "UEFI Secure Boot must not be possible to disable on ARM devices" does not apply to this class of devices, so that is not a blocker preventing this work. And once we have it working, we want to boot Linux with Secure Boot enabled.
But for now I'm going to do some dogfooding on Windows, and try to help find bugs and document my progress.