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.
BeagleBoard
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...
Chromebooks
When Google launched the Chromebook product line, they were initially all x86-based.
Samsung Series 3
But eventually, Samsung released the Series 3,
and apart from the risk of setting your crotch on fire, the Crouton project
made it quite easy to convert this to a Linux laptop-ish.
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.
Marvell/SolidRun MacchiatoBIN
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).
- USB3.
- 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!
New laptop
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.
x86-emulation
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!
Browser support
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.
PuTTY
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?
I'm me!
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.