<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
Tive a oportunidade de ver um no CCC deste ano e é uma máquina doce,
doce, doce... :P<br>
1ab,<br>
André Esteves<br>
<h1 style="box-sizing: initial; margin: 28px 0px 18px; font-size:
34px; font-family: Theinhardt-Medium, sans-serif; font-weight:
normal; line-height: 36px; color: rgb(0, 0, 0); font-style:
normal; font-variant: normal; letter-spacing: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 1; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255);">-----<br>
</h1>
<h1 style="box-sizing: initial; margin: 28px 0px 18px; font-size:
34px; font-family: Theinhardt-Medium, sans-serif; font-weight:
normal; line-height: 36px; color: rgb(0, 0, 0); font-style:
normal; font-variant: normal; letter-spacing: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 1; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255);">Novena: A Laptop With No Secrets</h1>
<h2 style="box-sizing: initial; font-family: Theinhardt-Regular,
sans-serif; font-weight: normal; line-height: 30px; color: rgb(87,
87, 87) !important; margin-top: 20px; margin-bottom: 10px;
font-size: 26px; font-style: normal; font-variant: normal;
letter-spacing: normal; orphans: auto; text-align: start;
text-indent: 0px; text-transform: none; white-space: normal;
widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 255);">How we built a laptop with
nothing but open-sourced hardware and software</h2>
<div class="metadata" role="contentinfo" style="box-sizing: initial;
display: inline-block; padding: 0px 0px 14px; font-family:
Theinhardt-Regular, sans-serif; font-size: 14px; width: 620px;
color: rgb(0, 0, 0); font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; orphans: auto;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 1; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255);">
<div class="metadata" role="contentinfo" style="box-sizing:
initial; display: inline-block; padding: 0px 0px 14px;
font-family: Theinhardt-Regular, sans-serif; font-size: 14px;
width: 620px;">
<div class="byline" style="box-sizing: initial; float: left;
width: 372px;">By Andrew “bunnie” Huang & Sean Cross
<div style="box-sizing: initial;">Posted<span
class="Apple-converted-space"> </span><label datetime=""
style="box-sizing: initial; display: inline-block;
max-width: 100%; margin-bottom: 5px; font-weight: normal;
cursor: default;">27 Oct 2015 | 21:00 GMT</label></div>
</div>
</div>
</div>
<span style="color: rgb(0, 0, 0); font-family: Georgia, serif;
font-size: 16px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: 24px;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: 1;
word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline
!important; float: none; background-color: rgb(255, 255, 255);"></span>
<div id="artBody" style="box-sizing: initial; color: rgb(0, 0, 0);
font-family: Georgia, serif; font-size: 16px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: 24px; orphans: auto; text-align: start; text-indent:
0px; text-transform: none; white-space: normal; widows: 1;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 255);">
<div class="articleBody entry-content" style="box-sizing:
initial;">
<figure class="xlrg" role="img" style="box-sizing: initial;
display: inline-block; margin: 0px 0px 26px; width: 620px;
height: auto;"><img
alt="/img/011ExplodedviewBuildupTeardownScottTorborgCrowdSupplyFM7A2296-EditV2-1445881964242.jpg"
src="cid:part1.05090800.01070409@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;">
<div class="ai" style="box-sizing: initial;"><figcaption
class="hi-cap" style="box-sizing: initial; display: block;
color: rgb(86, 86, 86); font-family: Helvetica, Arial,
sans-serif; text-align: left; min-height: 18px; max-width:
100%; font-size: 12px; line-height: 16px; margin: 0px 0px
4px;">Photo: Scott Torborg/Crowd Supply</figcaption></div>
</figure>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;"><strong style="box-sizing: initial;
font-weight: 700;">Has the computer become a black box, even
to experienced electrical engineers?</strong></p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Will we be forever reliant upon
large, opaque organizations to build them for us? Absolutely
not, we say. And to prove our point,<span
class="Apple-converted-space"> </span><a
href="http://www.kosagi.com/w/index.php?title=Novena_Main_Page"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">we built</a><span
class="Apple-converted-space"> </span>our very own laptop,
from the circuit boards on up.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Admittedly, we did not delude
ourselves that we could build a laptop that would be faster,
smaller, or cheaper than those of Apple, Dell, or HP. However,
we did set out to build a machine powerful and convenient
enough to use every day. Fortunately, our dream inspired
enough people to crowdfund the effort. Our laptop, which we
call Novena, started shipping to backers in January 2015.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Events favored our quest.<span
class="Apple-converted-space"> </span><a
href="http://spectrum.ieee.org/semiconductors/design/the-death-of-moores-law-will-spur-innovation"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">Because Moore’s Law is slowing down</a>,
garage innovators can take a couple of years to develop a
high-tech gadget without discovering that the completed
version is obsolete. It has been three years since we started
the Novena project and yet the 40-nanometer process on which
our central microprocessor is based continues to occupy a
sweet spot between cost and performance.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Also, the economic malaise of 2008
left a lasting mark on global supply chains. Even today,
manufacturers are no longer too busy printing money to make
the time for producing small, boutique projects like ours;
instead, they see us as an opportunity to gain an edge over
their competition. Owners of small factories in China turned
out to be eager to learn our agile approach to engineering, so
they, too, could take on the challenge of low-volume
production and address the growing market of hardware
startups.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;"><strong style="box-sizing: initial;
font-weight: 700;">We started by considering</strong><span
class="Apple-converted-space"> </span>the constraints of the
most complex and brittle pieces of any such system: the
software. We wanted to build a complete computer, one with a
long-term-support road map, and we had neither the resources
nor the manpower to negotiate with vendors of proprietary
hardware and software. We wanted to be able to inspect and
understand as much of the system and its components as we
could, so if we came across bugs or other anomalous behavior,
we could rely on our wits to figure it out, rather than on the
profit-motivated (and often empty) promises of a vendor‘s
sales team. As a result, we decided to produce a laptop that
was as free as possible of closed-source embedded firmware.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Firmware is basically software (such
as drivers, kernels, and bootloaders), installed at the
factory, that<span class="Apple-converted-space"> </span><a
href="https://en.wikipedia.org/wiki/Bare_machine"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">runs on “bare iron”</a>—the computer itself,
not its operating system. It’s found not only on the main CPU
in your laptop but also on about a dozen embedded
controllers—small, special-purpose processors that take care
of such things as managing the battery, keeping your hard disk
free of errors, and maintaining your Wi-Fi connection. Each of
these processors runs a bit of firmware; sometimes the
firmware can be updated or modified, typically for the purpose
of fixing bugs or adding features. But such updates can also
introduce bugs or security flaws, and if you haven’t got the
ability to inspect the firmware, then you, the user, must
depend utterly on the vendor to take care of security.</p>
<figure class="rt med" role="img" style="box-sizing: initial;
display: inline-block; margin: 7px 0px 26px 20px; float:
right; width: 300px; height: auto; clear: both;"><img
alt="/img/HRLaptopKeyboardremoved-1445884800912.jpg"
src="cid:part5.09040400.05060208@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;"><img
alt="/img/041LaptoprearCampaignimagesScottTorborgCrowdSupplyNovena-1089-1445884407092.jpg"
src="cid:part6.03080809.02000408@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;">
<div class="ai" style="box-sizing: initial;"><figcaption
class="hi-cap" style="box-sizing: initial; display: block;
color: rgb(86, 86, 86); font-family: Helvetica, Arial,
sans-serif; text-align: left; min-height: 18px; max-width:
100%; font-size: 12px; line-height: 16px; margin: 0px 0px
4px;">Photos: Scott Torborg/Crowd Supply</figcaption><figcaption
style="box-sizing: initial; display: block; color: rgb(86,
86, 86); font-family: Helvetica, Arial, sans-serif;
text-align: left; min-height: 18px; max-width: 100%;
font-size: 16px; line-height: 20px;">
<p style="box-sizing: initial; margin: 0px 0px 1em;
font-size: 16px; line-height: 20px;"><strong
style="box-sizing: initial; font-weight: 700;
font-family: Helvetica, Arial, sans-serif !important;">Laptop,
Open Wide:</strong><span class="Apple-converted-space"> </span>The
Novena opens to reveal the circuit boards; when it’s
closed, the outward-facing display lets you use it like
a tablet.</p>
</figcaption></div>
</figure>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">This open-source requirement of ours
ended up influencing the selection of almost every piece of
hardware, including the main CPU, the battery controller, and
the Wi-Fi module. For example, we couldn’t use Intel’s x86
microprocessors because they can accept firmware updates that
we cannot debug or inspect. Instead we chose an ARM-based
Freescale i.MX6<span class="Apple-converted-space"> </span><a
href="https://en.wikipedia.org/wiki/System_on_a_chip"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">system-on-a-chip</a>, which has no such
updatable code embedded. (A system-on-a-chip, or SoC, is
similar to a microprocessor except it has more of the
supporting hardware, such as memory and peripheral interfaces,
needed to make a complete computer.) The i.MX6 does have some
code burned into it to coordinate the computer’s boot-up
process, but this firmware can’t be changed, and its
unencrypted binary code can be read out and analyzed for
possible security problems.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Another advantage was Freescale’s
policy of distributing a very detailed reference manual
covering most of the chip’s real estate without requiring a
nondisclosure agreement. That’s important because such an
agreement would have gotten in the way of the community
involvement that our strategy for long-term support required.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Our next choice had social
repercussions. When you adopt a CPU/operating-system
combination, you also adopt its developers. We decided against
Google Android because it’s optimized for phones and tablets,
its graphical display typically shows only one application at
a time, and its touch-screen paradigm is too imprecise for
computer-aided design work. Therefore, in order to create a
system that our target market of developers and creators could
use, we decided to run on our ARM chip a version of Linux
called GNU/Linux. GNU, which authored both the OS libraries
and the license that the Linux kernel uses, is a coder’s
organization, right down to the self-referential acronym
itself (it stands for “Gnu’s Not Unix”).</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Unfortunately, most Linux versions
for ARM were not designed for personal computing but rather
for routers and the set-top boxes that convert signals for
viewing on televisions. Manufacturers that use Linux generally
build their own, highly customized system around what’s called
the Linux kernel—the core framework of the OS. That way, they
ensure that their customers, who integrate the software into a
larger system, never see so much as a Linux command prompt.
Examples include TiVo and airline in-flight–entertainment
systems. On top of that, vendors use an old “snapshot” of
Linux—that is, they copy whichever kernel is around at the
time of chip release. Then they add a lot of patches to it to
create a board support package (BSP) for their product, which
is a kind of “quick start” kit for hardware developers who
don’t want to muck around too much with Linux kernel minutiae.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Frequently these BSPs contain
proprietary bits that developers can’t copy, that don’t take
advantage of features that came with the original kernel, and
don’t even follow the standard formatting procedures for Linux
code. These undisciplined shortcuts may speed a product to
market, but they make the kernel impossible to maintain,
update, or improve. As a result, most systems that are based
on Linux run kernels that are years out of date. This is not a
plan for long-term customer support.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Therefore, we adopted the latest
kernel available. We patched and extended Freescale’s
open-source BSP code to comply with Linux community standards,
then submitted our changes to the managers of the Linux
community at large. They reviewed our code and provided
feedback over several months of iterations.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">At that point, our code was finally<span
class="Apple-converted-space"> </span><a
href="https://en.wikipedia.org/wiki/Upstream_%28software_development%29"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">ready to be “upstreamed”</a><span
class="Apple-converted-space"> </span>into mainline Linux.
It’s a time-consuming and laborious process, but when it’s
over the Linux community can adopt our version and maintain
it. The main advantage of this upstreaming process is that
features that come with future Linux kernels can be unlocked
by simply downloading the latest version of the operating
system and compiling it, without having to repeat the
code-review process.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Hardware-accelerated graphics proved
to be another challenge. Most modern desktop computers assign
each application or graphical widget an off-screen memory
buffer to render their output on the screen. Only then does
the graphics processing unit (GPU) “composite” the various
outputs to make the seamless image seen on the screen.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">This two-step process decouples the
application’s drawing rate from the screen’s refresh rate,<span
class="Apple-converted-space"> </span><a
href="https://en.wikipedia.org/wiki/Race_condition"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">preventing a “race condition,”</a><span
class="Apple-converted-space"> </span>in which two input
signals compete to be the first to affect the output. Such
racing can produce artifacts such as “tearing,” in which the
attempt to drag a window ends up moving only the top part by
the time the screen refreshes. The newly redrawn half of the
window closest to the cursor thus looks torn off from the
lower half. Also, the two-step decoupling process can be used
to create subtle cues, such as transparency and blur, where
foreground windows and title bars can take on the character of
frosted glass, providing a hint of what content might lie
underneath them.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Unfortunately, the integrated GPU on
the Freescale i.MX6 chip is closed source. Remember how we
said that the vendor-supplied BSPs are typically snapshots of
older kernels? The code that Freescale provided for
drivers—that’s the software that controls various peripheral
devices, like printers and GPUs—is compatible only with an
out-of-date version of Linux. And this driver has an
unfortunate quirk: It requires any application that talks to
it to do all floating-point calculations in software! That’s
far slower than doing the calculations in hardware.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">This example nicely illustrates why
closed-source products can be so frustrating. If we’d used
this closed-source driver, we would have locked ourselves into
an outdated version of Linux and forced other applications to
do floating-point calculations in software. But if we’d gone
open source to exploit all the features and benefits of the
latest Linux version and to allow floating-point calculations
done in hardware, users would have had to reverse-engineer the
GPU to create compatible open-source drivers.</p>
<figure class="lt med" role="img" style="box-sizing: initial;
display: inline-block; margin: 7px 20px 26px 0px; float: left;
width: 300px; height: auto; clear: both;"><a class="zoom"
href="http://spectrum.ieee.org/img/161MotherboardtopviewBuildupTeardownScottTorborgCrowdSupplyFM7A2260930-1445968001188.jpg"
rel="lightbox" style="box-sizing: initial; color: rgb(0, 0,
0); text-decoration: underline; outline: 0px;
background-color: transparent;"><img alt="img"
src="cid:part10.01030201.05030209@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;"><span class="magnifier" style="box-sizing:
initial; display: block; position: relative; float: right;
width: 24px; height: 26px; z-index: 1000; cursor: pointer;
margin: -44px 6px 0px 0px; clear: both; background:
url(http://spectrum.ieee.org/assets/spriteSheet-2e4ccc5ae1119db5c96894c2de1e391a.png)
-272px -14px no-repeat;"> </span></a>
<div class="ai" style="box-sizing: initial;"><figcaption
class="hi-cap" style="box-sizing: initial; display: block;
color: rgb(86, 86, 86); font-family: Helvetica, Arial,
sans-serif; text-align: left; min-height: 18px; max-width:
100%; font-size: 12px; line-height: 16px; margin: 0px 0px
4px;">Photo: Scott Torborg/Crowd Supply</figcaption><figcaption
style="box-sizing: initial; display: block; color: rgb(86,
86, 86); font-family: Helvetica, Arial, sans-serif;
text-align: left; min-height: 18px; max-width: 100%;
font-size: 16px; line-height: 20px;"><strong
style="box-sizing: initial; font-weight: bold;
font-family: Helvetica, Arial, sans-serif !important;">The
Novena’s Heart:</strong> A view of the custom-designed
internal circuit boards. Underneath the red heat sink is
the CPU, and to its immediate right, the FPGA. The white
high-speed expansion connector at the top right enables
users to easily expand and modify the hardware’s
capabilities.</figcaption></div>
</figure>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">We decided to stick to our guns and
reject the closed-source GPU altogether, which meant we would
have to render graphics in software.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Unlike Windows and Mac OS, Linux
gives you a choice of how your computer appears to the user.
This appearance is governed by a software utility called a
desktop window manager. You can select this appearance by
picking a particular “distribution” of Linux and coupling it
with a particular window manager. We couldn’t use the popular
Ubuntu and RedHat distributions because they basically require
GPU hardware acceleration, which we had rejected. Instead, we
used a slightly older-looking but more open-source-friendly
distribution called Debian. We coupled it with a desktop
window manager option called Xfce4, which is explicitly
designed to run well on systems without GPUs and thus is
particularly good at software rendering.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">But that arrangement, we hope, is
merely a stopgap. The user community behind Novena is trying
to create, through reverse engineering, open-source drivers
that would allow the built-in GPU on the i.MX6 chip to render
graphics directly. At the moment, we have drivers that can
accelerate the drawing of 2-D figures on the screen, which
makes scrolling and window dragging much smoother. We hope
eventually to figure out enough of the GPU to let us do 3-D
graphics with acceleration sufficient to produce a user
experience much like that of any mainstream laptop.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;"><strong style="box-sizing: initial;
font-weight: 700;">As the software evolved,</strong><span
class="Apple-converted-space"> </span>the hardware evolved
with it. The most extraordinary step we took was to include a
field-programmable gate array (FPGA), a type of processor chip
that can be reconfigured by its user to change the chip’s
specs and capabilities. Basically, this reconfigurability
allows the chip to do things in hardware that would otherwise
have to be done in software.</p>
<figure class="xlrg" role="img" style="box-sizing: initial;
display: inline-block; margin: 0px 0px 26px; width: 620px;
height: auto;"><img
alt="/img/081LaptopChassisNoScreenBuildupTeardownScottTorborgCrowdSupplyFM7A2306-Edit-1445885708498.jpg"
src="cid:part12.08090802.06080900@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;">
<div class="ai" style="box-sizing: initial;"><figcaption
class="hi-cap" style="box-sizing: initial; display: block;
color: rgb(86, 86, 86); font-family: Helvetica, Arial,
sans-serif; text-align: left; min-height: 18px; max-width:
100%; font-size: 12px; line-height: 16px; margin: 0px 0px
4px;">Photo: Scott Torborg/Crowd Supply</figcaption><figcaption
style="box-sizing: initial; display: block; color: rgb(86,
86, 86); font-family: Helvetica, Arial, sans-serif;
text-align: left; min-height: 18px; max-width: 100%;
font-size: 16px; line-height: 20px;">
<p style="box-sizing: initial; margin: 0px 0px 1em;
font-size: 16px; line-height: 20px;"><strong
style="box-sizing: initial; font-weight: 700;
font-family: Helvetica, Arial, sans-serif !important;">Novena’s
Peek Array:<span class="Apple-converted-space"> </span></strong>The
brass nuts in the open area at the left constitute the
Peek Array, a number of points on which users may attach
expansion boards of their choice. Standard-issue laptops
lack this trick for making the hardware more hackable.</p>
</figcaption></div>
</figure>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">For instance, if you wanted to
accurately control a dozen motors, you’d have a lot of trouble
doing that in software. Motion control requires exquisite
real-time control over waveforms, and if you try to get your
operating system to do that it would constantly be shifting
from one task to another and back again, adding too much
timing jitter. Imagine that stutter you see in your Web
browser but in a self-driving car or a drone: instant wreck.
However, it’s a relatively simple matter to create hardware
that runs the fussy timing and key control loops, and it’s
also trivial to replicate variations of that hardware again
and again in an FPGA.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">And at one point, we did in fact
want to control a lot of motors. We had the wacky notion of
mounting Novena in a quadcopter chassis so that our laptop
could hover and follow us around the office; we figured we’d
use the FPGA to interface with the requisite motors and
sensors. Consequently, the FPGA’s input-output connectors were
originally targeted toward servos and motors.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Cooler heads eventually prevailed.
We instead optimized the FPGA for data acquisition by adding a
bank of local high-speed DDR3 RAM chips, a form of high-speed
dynamic access memory. This upgrade allowed developers to
implement a variety of expansion cards, including one for<span
class="Apple-converted-space"> </span><a
href="http://spectrum.ieee.org/geek-life/hands-on/a-40-softwaredefined-radio"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">software-defined radio</a><span
class="Apple-converted-space"> </span>and another that
worked as a digital sampler, which could allow engineers to
use our laptop as a portable oscilloscope.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Because we developed the project on
a shoestring budget and with no solid requirement other than
to build the laptop we ourselves would want to use, the laptop
evolved organically. Instead of designing circuits into the
motherboard specific to a particular battery or LCD—typical
for most consumer laptops—we modularized the system. We linked
subsystems using generic connectors with pin-outs that were
merely educated guesses as to what users would end up hooking
onto those pins.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">As a result, the final incarnation
of the laptop includes specialized adapter boards for the
battery pack, LCD, and front-<a
href="http://www.computerhope.com/jargon/b/bezel.htm"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">bezel</a><span class="Apple-converted-space"> </span>arrangement
(the frame for the display). The good thing about this
modularity is that users can adapt the system to meet their
own needs. We’re delighted to have received reports of users
changing out LCDs and building custom battery packs. And users
can add the keyboard of their choice. We don’t include one.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Aside from the inclusion of an FPGA,
our hardware decisions were fairly lackluster, even when
compared with what comes in a low-end Intel laptop. Our i.MX6
SoC contains a quad-core ARM CortexA9 running at 1.2
gigahertz—a 32-bit processor, which means the system is
limited to 4 gigabytes of RAM. We did, however, choose a
fairly decent 1920-by-1080 display, which is the spec limit
for the i.MX6 chip. Our battery life is acceptable, at a bit
over 6 hours.</p>
<figure class="stacked lt med" role="img" style="box-sizing:
initial; display: inline-block; margin: 7px 20px 26px 0px;
float: left; width: 300px; height: auto; clear: both;"><img
alt="/img/201MainboardProcessorandFPGACampaignimagesScottTorborgCrowdSupplyNovena-853-1445887393061.jpg"
src="cid:part15.03040603.04050508@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;"><img
alt="/img/191LaptopeDPadaptorandRAMdetailCampaignimagesScottTorborgCrowdSupplyNovena-1125-1445887322440.jpg"
src="cid:part16.08010802.03080505@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;"><img
alt="/img/221MyriadRFsoftwaredefinedradioexpansionboardBuildupTeardownScottTorborgCrowdSupplyFM7A6229-1445887436697.jpg"
src="cid:part17.00040800.02060801@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;"><img
alt="/img/091LaptopcablesCampaignimagesScottTorborgCrowdSupplyNovena-1114-1445887278613.jpg"
src="cid:part18.08050506.00000607@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;"><img
alt="/img/261OscilloscopeboardtopCampaignimagesScottTorborgCrowdSupplyFM7A7390-1445887531303.jpg"
src="cid:part19.03070104.04070701@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;"><figcaption class="hi-cap" style="box-sizing:
initial; display: block; color: rgb(86, 86, 86);
font-family: Helvetica, Arial, sans-serif; text-align: left;
min-height: 18px; max-width: 100%; font-size: 12px;
line-height: 16px; margin: 0px 0px 4px;">Photos: Scott
Torborg/Crowd Supply</figcaption><figcaption
style="box-sizing: initial; display: block; color: rgb(86,
86, 86); font-family: Helvetica, Arial, sans-serif;
text-align: left; min-height: 18px; max-width: 100%;
font-size: 16px; line-height: 20px; margin-bottom: 0px;"><strong
style="box-sizing: initial; font-weight: bold;
font-family: Helvetica, Arial, sans-serif !important;">Soup
To Nuts:</strong><span class="Apple-converted-space"> </span>At
top are the CPU’s red heat sink and the FPGA; next is the
LCD signal adapter [2nd from top] and the battery board [3rd
from top]; next, the optional software-defined-radio module;
then the port farm; at bottom is the digital sampler
expansion card, which can turn the laptop into an
oscilloscope.</figcaption></figure>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">We included a few extra features
just for the fun of it. We built in an accelerometer, although
we really don’t know what we’re going to do with it.
Accelerometers are cheap, and there are a lot of fun things
you can do with your computer when it’s aware of being tilted,
hit, or dropped. For instance, you could make your laptop<span
class="Apple-converted-space"> </span><a
href="https://www.youtube.com/watch?v=-ZwximsB55w"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">play a sound clip</a><span
class="Apple-converted-space"> </span>of “Goodbye, Cruel
World!” when it detects that it is in free fall.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Most laptops have one Ethernet port
at the most, which means that they can act only as endpoints
in a network. But we gave Novena two ports to let it sit
between nodes, filtering and monitoring traffic for security
purposes. The ports also allow our laptop to function as a
Wi-Fi router and as an Internet firewall for other wired
devices—a handy feature when on the road. And although<span
class="Apple-converted-space"> </span><a
href="https://www.youtube.com/watch?v=4G60hM1W_mk"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">20 hertz is considered the low end</a><span
class="Apple-converted-space"> </span>of human hearing, one
of us (Huang) has a broader hearing range, so we took the
unusual measure of extending the analog frequency response of
the headphone jack to below 20 Hz.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">These little features are never
included on a consumer laptop. But it’s these customizations
that make the project fun and unique. They add cost—but it’s
our cost overrun! The fully loaded laptop sold for US $2,000
during the crowd campaign. So far, we’ve sold about 500.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;"><strong style="box-sizing: initial;
font-weight: 700;">Initially, we didn’t plan on</strong><span
class="Apple-converted-space"> </span>going as far as
building a mass-producible case. In fact, we made our first
case by hand out of leather, bound like a book. The warm
reception it got on social media led us to attempt a
crowdfunding campaign via<span class="Apple-converted-space"> </span><a
href="http://www.crowdsupply.com/" style="box-sizing:
initial; color: rgb(0, 0, 0); text-decoration: underline;
outline: 0px; background-color: transparent;">Crowd Supply</a>,
a site that takes the idea of Kickstarter and turbocharges it
with a Web store and logistics services.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">One thing we learned in that brush
with the mainstream consumer was that most people were not
prepared for the experience we were delivering. Our laptop
won’t run Windows or Mac OS, nor is it particularly fast or
thin. So in order to differentiate our laptop and make it more
attractive to true techies, we decided to add some of the
things that developers prize. These included mounting
bosses—an internal array of metal nuts—which we call the Peek
Array (<a
href="http://fab.cba.mit.edu/classes/S62.12/people/nadya.peek/"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">after Nadya Peek, of FabLab fame</a>).</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Typical laptops are unhackable
because there’s no place to put other...stuff. If you can find
the empty space in a laptop, you’d have to glue your expansion
board in place or drill a hole through the case to mount your
custom hardware. Not so with the Peek Array! Its dozens of
threaded nuts allow users to screw all manner of small project
boards into the laptop case. Want to add a pulse oximeter to
Novena so you can measure the<span
class="Apple-converted-space"> </span><a
href="http://www.bunniestudios.com/blog/?p=3472"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">level of oxygen in the blood</a>running
through the capillaries of your finger? Or maybe a barometer
so you can monitor your airliner’s cabin pressure? With just a
few screws you can mount your customization inside Novena’s
laptop case.</p>
<figure class="rt med" role="img" style="box-sizing: initial;
display: inline-block; margin: 7px 0px 26px 20px; float:
right; width: 300px; height: auto; clear: both;"><img
alt="/img/392BunnieArticleImagesScottTorborgCrowdSupplyFM7A2344-1445885285362.jpg"
src="cid:part25.07010107.09090000@netvisao.pt"
style="box-sizing: initial; border: 0px; vertical-align:
middle; max-width: 100%; margin-bottom: 5px; display:
block;">
<div class="ai" style="box-sizing: initial;"><figcaption
class="hi-cap" style="box-sizing: initial; display: block;
color: rgb(86, 86, 86); font-family: Helvetica, Arial,
sans-serif; text-align: left; min-height: 18px; max-width:
100%; font-size: 12px; line-height: 16px; margin: 0px 0px
4px;">Photo: Scott Torborg/Crowd Supply</figcaption><figcaption
style="box-sizing: initial; display: block; color: rgb(86,
86, 86); font-family: Helvetica, Arial, sans-serif;
text-align: left; min-height: 18px; max-width: 100%;
font-size: 16px; line-height: 20px;"><strong
style="box-sizing: initial; font-weight: bold;
font-family: Helvetica, Arial, sans-serif !important;">Andrew
“bunnie” Huang</strong><span
class="Apple-converted-space"> </span>visits the
Portland, Ore., workshop of collaborator Kurt Mottweiler,
who is working on the Heirloom version of the Novena
laptop. This special configuration features a hand-crafted
wood-and-aluminum case.</figcaption></div>
</figure>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">We also designed the case to open
easily under the impetus of an air spring, like the ones used
to raise the seat on ergonomic office chairs. With the flick
of a switch, the lid (with the screen) opens automatically. We
preferred this to a conventional clamshell design on the
theory that any laptop that exposes its guts to the user will
particularly appeal to users prepared to hack the guts.
(People who fear naked circuit boards shouldn’t buy our laptop
anyway!)</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">The case is designed to serve
through generations of electronics hardware. For instance, to
hold the liquid-crystal display in place we used computer
numerically controlled (CNC) machining to make an aluminum
bezel. Anyone with access to an entry-level machine shop can
fabricate a custom bezel to accommodate a different LCD, as
well as mount additional sensors (such as a camera or a
microphone) or additional buttons and knobs.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">By putting most of the ports on a
single edge, which we call the Port Farm, we made it easy to
replace the panel covering it. That way the user can keep the
case itself even as the motherboard and the Port Farm evolve.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">We took into account the total costs
of manufacturing tooling as well. For instance, though
injection-molded plastic is very cheap on a per-unit basis,
the steel tools that produce it are not. You need an
oil-cooled block weighing about a ton, capable of handling
pressures found at the bottom of the Mariana Trench, machined
internally to a tolerance less than the width of a human hair,
with a moving clockwork of dozens of ejector pins, sliders,
lifters, and parting surfaces separating and coming back
together again smoothly over thousands of cycles. It<span
class="Apple-converted-space"> </span><a
href="http://medicaldesign.com/contract-manufacturing/changing-face-injection-molding"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px; background-color:
transparent;">can easily cost $250,000</a>, which is why the
injection molding process can pay for itself only in very
large manufacturing runs. We instead used a combination of CNC
aluminum, optimized plastic design, and family molds (whose
various parts each form a different aspect of a given
product). We needed just 10 machine tools to produce the case,
for an up-front investment of about $50,000.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">As we write this, we’ve shipped all
of our standard laptop and desktop units to our crowdfunding
campaign backers. We’ve marshaled nearly a thousand components
from dozens of vendors, from Shenzhen, China, to Fremont,
Calif.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Thanks to the magic of crowdfunding
and a slowdown of Moore’s Law, a two-person team was able to
have the funds and the time to implement an everyday-use
laptop. Furthermore, this laptop’s schematics, circuit board
layouts, mechanical design files, kernel, drivers, and
application programs are all open source and available for
anyone to download.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;">Such transparency is unprecedented.
We hope it will encourage other engineers to follow in our
footsteps and help users reclaim their technological
independence.</p>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;"><em style="box-sizing: initial;">This
article originally appeared in print as “A Laptop With No
Secrets.”</em></p>
<div id="biogrp" style="box-sizing: initial;">
<h2 style="box-sizing: initial; font-family:
Theinhardt-Medium, sans-serif; font-weight: normal;
line-height: 24px; color: rgb(87, 87, 87) !important;
margin-top: 0px; margin-bottom: 10px; font-size: 22px;">About
the Author</h2>
<p style="box-sizing: initial; margin: 0px 0px 1em; font-size:
18px; line-height: 25px;"><span style="box-sizing: initial;
display: inline !important;"><a
href="http://www.bunniestudios.com/blog/?tag=novena"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px;
background-color: transparent;">Andrew Huang</a></span><span
style="box-sizing: initial; display: inline !important;"><span
class="Apple-converted-space"> </span>and<span
class="Apple-converted-space"> </span><a
href="https://twitter.com/xobs" style="box-sizing:
initial; color: rgb(0, 0, 0); text-decoration:
underline; outline: 0px; background-color: transparent;">Sean
Cross</a></span><span style="box-sizing: initial;
display: inline !important;"><span
class="Apple-converted-space"> </span>are self-employed
American computer scientists living in Singapore.<span
class="Apple-converted-space"> </span><a
href="http://spectrum.ieee.org/semiconductors/design/the-death-of-moores-law-will-spur-innovation"
style="box-sizing: initial; color: rgb(0, 0, 0);
text-decoration: underline; outline: 0px;
background-color: transparent;">Huang wrote on the death
of Moore's Law</a></span><span style="box-sizing:
initial; display: inline !important;"><span
class="Apple-converted-space"> </span>for our April
issue. <br>
</span></p>
</div>
</div>
</div>
</body>
</html>