<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>
</p>
<p>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<title>Librem Mini Sale</title>
<meta name="description" content="PureOS for Creatives series by
guest blogger Tre Scranton">
<style>
*{box-sizing:border-box}body{font-family:helvetica,arial,sans-serif;font-size:18px;line-height:1.4;margin:0 auto;width:100%}.align-center{text-align:center}.align-right{text-align:right}ul.list-unstyled{list-style:none;padding-left:0}ol.list-unstyled{list-style:none;padding-left:0}p.sub-heading{font-size:24px;margin-top:0}h1,h2,h3,h4,h5,h6{margin-top:0}h3{margin-top:2rem;}h4{text-transform:uppercase}blockquote{background:rgba(255,255,255,.3);border-left:4px solid currentColor;margin:0;padding:20px 20px 20px 30px}blockquote p{font-size:24px;margin:0 0 10px 0;padding:0}blockquote cite{font-weight:600}ol li,ul li{margin-bottom:10px}video{width:100%;}i{font-style:normal;font-weight:100}a,a:visited{color:#333}img{height:auto;max-width:100%}figure{margin:40px 0;}figcaption{font-style:italic;}.button,.button:visited{background:linear-gradient(#396afc 0,#2948ff 100%);border-color:#2948ff;border-radius:7px;color:#fff;display:inline-block;font-size:20px;font-weight:700;margin:20px 0;padding:13px 18px 10px;text-decoration:none}.button:hover{background:linear-gradient(#7194fc 0,#2948ff 100%)}.main-wrapper,footer{margin:0 auto;max-width:640px;padding:40px 20px}.grey-wrapper{background-color:#ededed}.black-wrapper{background-color:#2d2d2d;color:#fff}.black-wrapper a{color:#fff!important;}footer img{opacity:.5;width:120px}pre{background:rgba(0,0,0,0.2);overflow:auto;padding:10px;}</style>
<div class="main-wrapper">
<h1>Librem Mini Sale</h1>
<p>You can grab the <strong>Librem Mini for $100</strong> off
until the end of September!</p>
<p>Pre-orders for the all-new Librem 14 are $100 off and the
Librem 15 is currently $200 off. So many options!</p>
<img
src="09-23-2020-librem-mini-sale_files/librem-mini-left-angle.png"
alt="Librem Mini"> <a href="https://shop.puri.sm/"
class="button cta">See All Sales</a>
<hr> <br>
<h2>In This Issue</h2>
<p>In today's newsletter we cover a large range of topics from
privacy concerns, GPS tuning and Anbox on the Librem 5,
porting postmarketOS to the Librem 5, making 3D graphics with
open software, and Librem 14 shipping updates.</p>
</div>
<div class="grey-wrapper">
<div class="main-wrapper">
<h2>Your Phone Is Your Castle</h2>
<img
src="09-23-2020-librem-mini-sale_files/arundel-castle-1367174186Irw-1024x695.jpg"
alt="Castle">
<h3>A Brief History Lesson</h3>
<p> There is a saying “A man’s home is his castle” that
derives from an even older British saying “an Englishman’s
home is his castle” from hundreds of years before. Putting
aside the history of male and female ownership of property
for the past few hundred years, this statement came about as
a matter of common law in the 17th century that enforced the
right that no one–even the King–may enter a British person’s
home without their invitation. As stated famously by Prime
Minister William Pitt in 1763: </p>
<blockquote>
<p> "The poorest man may in his cottage bid defiance to all
the forces of the crown. It may be frail – its roof may
shake – the wind may blow through it – the storm may enter
– the rain may enter – but the King of England cannot
enter." </p>
</blockquote>
<p>This right influenced the United States founding fathers
and became a right against unreasonable search and seizure
enshrined in the fourth amendment in the US Bill of Rights.</p>
<p> Ultimately this statement is one about personal
sovereignty over your property: that you should be able to
control what happens with your property, should be able to
control who is allowed to enter it, and should be allowed to
defend it from intrusion. </p>
<h3>Your Phone Is Your Castle</h3>
<p> If your home is your physical castle, your phone is your
digital castle. More than any other computer, your phone has
become <strong>the most personal of personal computers</strong>
and holds the most sensitive digital property a person has,
including: </p>
<ul>
<li>Detailed contact lists of friends and colleagues</li>
<li>The contents of private communications</li>
<li>Personal photos (sometimes including very intimate ones)</li>
<li>Personal files (sometimes including financial documents)</li>
<li>Health and biometric information (sometimes including
personal heart rate, blood pressure and exercise regiment)</li>
<li>Passwords to online accounts</li>
<li>Often even a database (if not multiple databases) of
everywhere the phone has (and therefore you have) been.</li>
</ul>
<p>So to extend the metaphor, if your phone is your digital
castle, it means you should be able to control what happens
with it, who is allowed to enter it, and should be allowed
to defend it from intrusion.</p>
<h3>Well, Maybe Not <em>Your</em> Phone</h3>
<p> The unfortunate fact is, for most of the people reading
this article, <strong><em>your</em> phone is <em>not</em>
your castle</strong>. In many ways, your phone isn’t yours
at all, at least if we are using these same traditional
definitions of property. Instead, you happen to live in a
castle owned by your phone’s vendor. It’s Apple or Google,
not you, who decides what is allowed to enter the castle,
and what happens inside its walls. They are the ones who are
allowed to defend it from intrusion, and more importantly
they are the ones who define what counts as intrusion to
begin with. <strong>Your phone is <em>their</em> castle</strong>,
you just happen to live inside their walls subject to their
rules. </p>
<p> The<a
href="https://arstechnica.com/gaming/2020/09/apple-accuses-epic-of-theft-in-countersuit-over-ios-fortnite/">
recent epic battle between Apple and Epic</a> over the
tariff Apple charges for merchants to sell goods inside the
castle walls illustrates how Apple markets their castle’s
defenses as protecting the castle residents when in reality
it’s about controlling all that goes on inside the castle. </p>
<p> If you haven’t been following the case, Epic is objecting
to the 30% cut of their revenue that Apple gets from
processing payments within the App Store. Epic has added an
alternate payment processor within their popular game
Fortnite that competes with Apple’s App Store payment
processor by charging a lower price for purchases made
through the game since Epic avoids Apple’s 30% processing
fee. Apple has responded by threatening to remove Epic’s
software from the App Store as well as revoking their
ability to use Apple’s development infrastructure. </p>
<p> A customer can only install apps that are in the App
Store, so by removing Epic’s app from the App Store, Apple
removes them from the full iOS ecosystem. Customers who own
iPhones and who have paid for and installed Fortnite would
then have the application removed from their phones. In a
court filing, Apple argues that the requirement that
customers may only install software through the App Store is
needed “for security and privacy.” </p>
<p> There is some truth to this statement. Because iOS
software, backed by iPhone hardware, actively prevents a
customer from installing <em>any</em> software on an iPhone
outside of the App Store, it does also prevent attackers
from installing <em>malicious</em> software. Because the
App Store has rules about how applications (outside of their
own) can access customer data, if Apple discovers a
competitor like Google or Facebook is violating its privacy
rules <a
href="https://www.macrumors.com/2019/01/30/apple-disables-facebook-internal-apps/">it
can remotely remove their software</a> from iPhones, even
internal corporate versions of software owned by Google or
Facebook employees. </p>
<p> In all of these examples, though, the “security and
privacy” of customers happens to also coincide with
restricting a competitor. While Apple markets themselves as
welcoming competition on the App Store, Apple has a long
history of resisting competition with their own products
from the App Store such as when it banned parental control
apps around the same time it released its own, <a
href="https://www.nytimes.com/2019/06/03/technology/apple-parental-control-apps.html">only
to remove the ban a few months later after its own app had
sufficient market share</a>. </p>
<p> I should note that Apple isn’t the only company that does
this, it’s just that their control is a bit more advanced
than Google’s. In my <a
href="https://puri.sm/posts/consent-matters-when-tech-takes-remote-control-without-your-permission/">Consent
Matters series</a> I elaborate on a number of different
companies that take remote control of customer computers
including the now-famous example where Google was forced by
the US Government to <a
href="https://www.techradar.com/news/huawei-suffers-major-android-setback-as-google-pulls-access-to-core-apps-and-services">remove
Huawei’s ability to update Android on their own hardware</a>.
Huawei has since responded by <a
href="https://www.cnbc.com/2020/09/10/huawei-opens-harmonyos-to-third-party-smartphone-makers-after-google-ban.html">building
their own OS</a> so they have control over their own
castle (and subjects). </p>
<h3>Well, Maybe Not Their <em>Castle</em></h3>
<p> If you live inside a strong, secure fortification where
someone else writes the rules, decides who can enter, can
force anyone to leave, decides what things you’re allowed to
have, and can take things away if they decide it’s
contraband, <strong>are you living in a castle or a prison</strong>?
There is a reason that bypassing phone security so you can
install your own software is called <em>jailbreaking</em>.
</p>
<p> These companies have built very sophisticated and secure
defenses all in the name of protecting you from the world
outside their walls, yet in reality the walls are designed
to keep you inside much more than they are designed to keep
attackers out. The security community often gets so excited
about the sophistication of these defenses backed by <a
href="https://puri.sm/posts/your-own-personal-enclave-the-smart-card-reader-on-the-librem-5/">secure
enclaves</a> and strong cryptography that their singular
focus on what those defenses mean for attackers blinds them
from thinking about what they mean for everyone else. </p>
<p> The biggest threat to most people ends up not being from
uninvited hackers, it’s from the apps Apple and Google <em>do</em>
invite in that capture and sell your data. This has resulted
in a <a
href="https://puri.sm/posts/mobile-app-stores-and-the-power-of-incentives/">multi-billion-dollar
app ecosystem built around capturing and selling your data</a>.
If Apple or Google let someone in you didn’t invite, whether
through pre-installed applications or new features embedded
in an OS update, you can’t tell them to leave. Your security
and privacy aren’t really protected inside these walls
because the main point of these security measures is to
enforce control, security against attackers and protecting
your privacy is mostly marketing spin. </p>
<h3>Make Your Phone Your Castle</h3>
<p> It doesn’t have to be this way. We believe your phone
should be <em>your</em> castle and that <a
href="https://puri.sm/posts/with-purism-products-you-are-in-control/">you
should be in control</a> of your own computer, not us and
not any other vendor. This doesn’t mean sacrificing security
or privacy, on the contrary it means putting your security
and privacy in your own hands by building a strong
foundation of trustworthy free software anyone can audit,
while rejecting security measures that build a stronger cage
around you than attackers. It means controlling your
hardware with hardware kill switches so you can disable your
camera and microphone, your WiFi and Bluetooth, and even
your cellular modem and <a
href="https://puri.sm/posts/lockdown-mode-on-the-librem-5-beyond-hardware-kill-switches/">all
of the sensors on your phone</a> and know they are truly
off. </p>
<p> You should decide which software is allowed on your
system, not Purism. While other vendors often are paid to
bundle third-party applications you aren’t allowed to
remove, all of the software on the Librem 5 including
pre-installed software is fully under your control. There’s
no “rooting” or “jailbreaking” required to install or remove
the software of your choice or even to install a different
OS. While we will provide you with a list of trusted,
curated free software in our <a
href="https://puri.sm/posts/purism-announces-pureos-store/">PureOS
Store</a>, if you want to invite some other software into
your home, even software that violates <a
href="https://puri.sm/about/social-purpose/">Purism’s
Social Purpose</a>, you can. </p>
<p> The current phone market is centered on vendor control and
is only getting worse with each iteration and advancement.
We had to <a href="https://puri.sm/posts/breaking-ground/">design
and build the Librem 5 from scratch</a>, because no other
combination of hardware and software on the market met our
high standards for freedom, security, privacy, and user
control. What we have built with the <a
href="https://puri.sm/products/librem-5/">Librem 5</a> is
a phone that works the way your most personal of personal
computers <em>should</em> work–your own digital castle
where you can store your most sensitive digital property,
control what happens with it, and decide who’s invited in. </p>
</div>
</div>
<div class="black-wrapper">
<div class="main-wrapper">
<h2>GPS Tuning the Librem 5 Hardware</h2>
<img
src="09-23-2020-librem-mini-sale_files/spacex-TV2gg2kZD1o-unsplash-1024x683.jpg"
alt="Space">
<h3 id="phone-hardware-debugging-in-a-duopoly">Phone Hardware
debugging in a duopoly</h3>
<p>Society is getting pretty used to the idea that the data
and applications on phones are completely controlled by
large corporations.</p>
<p>Purism is working hard to change that with the Librem 5.</p>
<p>Because of the market capitalization and duopoly control of
the phone OS vendors, the hardware tool vendors use are
trapped into one of those two OSes (Android or iOS).</p>
<h3 id="gps-debugging-as-a-case-example">GPS debugging as a
case example</h3>
<p>We’ve been working on antenna tuning in the Librem 5 for
awhile to get the best possible reception. The GPS antennas
are especially important because their signal level is so
close to the noise floor.</p>
<p> The available GPS antenna tuning procedure is a <a
href="http://www.generaltest.com/en/ProductDetail/2517909.html">GPS
simulator</a>, but the simulator requires feedback from
the phone OS to help tune the antenna. If you are on Android
the simulator vendor provides an apk that converts the NMEA
to a format that the tools can use to do the tuning. </p>
<p>So now we have a tool to do the tuning but no way to use
it.</p>
<h3 id="option-1-get-anbox-running">Option 1 get anbox running</h3>
<p>So I did seriously consider trying to use anbox to get the
apk running on the Librem 5. I didn’t think this would be
workable for a couple of reasons.</p>
<ol>
<li>The GNSS chip doesn’t use a /dev/ttyS0 device but a
/dev/gnss0 so I had no idea how well Android or anbox
would deal with that.</li>
<li>There are a lot of moving parts to get anbox running
smoothly enough for productive development and my todo
list is already pretty lengthy.</li>
</ol>
<h3 id="option-2-re-the-apk">Option 2 RE the apk</h3>
<p>So the next thing I figured I’d reverse engineer the apk so
that I could provide the feedback tool. I didn’t have a lot
of faith that this would work as reverse engineering a
protocol can be very time-consuming.</p>
<p>Loading up the apk on an Android device the first thing it
asks for is an IP and port. Ok, this might be workable. I
whipped up a little python program to try and capture the
apk output.</p>
<pre><code>#!/usr/bin/python
import socket
UDP_IP = "192.168.0.2"
UDP_PORT = 8080
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024)
print("received message: %s" % data)</code></pre>
<p>Immediately I started receiving GPS location and satellite
S/N ratio numbers. Perfect so now I just need to figure out
what each of the fields meant.</p>
<h3 id="writing-a-gps-test-tool">Writing a GPS test tool</h3>
<p> I began by capturing all of the JSON strings output by
gpsd and trying to fit them into the correct fields for the
GTS 1800 test tool. Almost immediately I started hitting
some kind of mismatch between the gpsd output and the json
libraries installed on the phone. I’m not sufficiently
pythonic to understand what the issue was. </p>
<p> Ok, I really don’t need that additional abstraction that
gpsd provides so I installed the python-nmea2 library and
started working directly with the NMEA strings. In short
order, I had a script that would take the NMEA and convert
it into something I thought the GTS 1800 could digest. I’d
guessed at a couple of the fields but I hoped it was close
enough to start the GPS antenna tuning. </p>
<p> Unfortunately, it wasn’t until a few screens captures from
the antenna testing engineer running a Windows tool that I
was able to refine the test tool to a point that the GTS
1800 would accept the strings. The biggest problem was that
I guessed wrong about the first field which turned out to be
a message length. Ooops, should have figured that one. </p>
<p> Once I reformatted the fields the GTS tool would accept
the strings but it still wasn’t running the tuning algorithm
so there was still some kind of error in the fields. This is
when the test tool vendor figured out what I was trying to
accomplish and sent me a protocol specification. Better late
than never. So 2 more minor fixes and we now have a <a
href="https://source.puri.sm/Librem5/librem5-devkit-tools/-/merge_requests/166/diffs?commit_id=1d0e26a0d0a8ff986ad26c383f3960d8c33db378">tool</a>
that can be used on any box that runs python to tune GPS
antennas. </p>
<p>So duopolies aren’t just bad for software, they aren’t any
good for hardware development either.</p>
</div>
</div>
<div class="grey-wrapper">
<div class="main-wrapper">
<h2>Tourists on Tech's Toll Roads</h2>
<img src="09-23-2020-librem-mini-sale_files/honeymoon3.jpg"
alt="Walking up stairs">
<p> When I read Shira Ovide's piece “<a
href="https://www.nytimes.com/2020/09/15/technology/apple-watch-is-a-private-road.html">Apple
Watch Is a Private Road</a>” in the New York Times, I was
reminded of my honeymoon in Cancun. Like many people who
honeymoon in Cancun, we stayed at an all-inclusive resort
along the ocean. In addition to enjoying the resort, we also
rented a car so we could visit some of the surrounding
areas, in particular the famous Mayan ruin Chichen Itza. </p>
<p> When we set off to visit Chichen Itza, the map featured a
main route via a toll road and an indirect route that winded
through the jungle and passed through a number of villages.
I didn’t want to get lost, so I opted for the direct route
through the toll road. The road was wide, freshly paved, no
stop signs, and almost entirely empty–it was a smooth trip
with the only stop being the toll booth we hit when we got
on the road. </p>
<p> I had assumed the toll would be $1 or so–everything else
up to that point had been relatively affordable in
Cancun–but was shocked when I slowed down and discovered <strong>the
toll was $10</strong>! This was about three times what the
Golden Gate Bridge charged back then! I felt taken advantage
of, yet once we got to the toll booth, there was no easy way
to turn around or avoid it, so we just paid the fee and I
blamed myself for being a dumb tourist who should have
researched things better. </p>
<p> We spent the day in Chichen Itza and on the way back I
vowed I would not be taken advantage of again. This time we
would take the indirect, free route through the jungle. I
was so glad I made that choice as I passed through one
village after another and saw local people living their
lives. While it wasn’t as fast or smooth a road as the toll
road, I felt like less of a tourist on a curated tour of
someone else’s property and more like I was seeing what
“real” Cancun was like. </p>
<p> This was before GPS navigation was common so I carefully
followed the paper map and wooden road signs as I moved from
one village to another, always ensuring I would avoid the
toll road. As I followed the signs to the final road that
would take me to the resort, I found myself back on the toll
road! I was infuriated but I realized I was so close to the
resort, perhaps the toll booth was already behind me. It
didn’t matter in any case because now that I was on this
private road there was no way to get off. Sure enough, a
mile later there was the toll booth. With no way to turn
around and no way to get off the private road, <strong>I
had no choice</strong> but to pay another $10 to get back
to my room. </p>
<h3>All Signs Point to Private Roads</h3>
<p>The crux of Ovide’s article is that diversity and openness
in computing has brought us many tech advances, but today so
many of tech’s most recent advancements are closed and
tightly controlled by the vendor:</p>
<blockquote>
<p> Think about the last quarter-century of computers and
the internet like a highway. The companies that made
gadgets and software systems controlled the roads, and
cars made by other companies drove (with some
restrictions) on those roads. Computer devices would be
meh if we couldn’t have access to a diversity of apps,
websites and software — and vice versa. </p>
<p> But newer technologies for interacting online — smart
watches like the Apple Watch, voice activated speakers,
internet-connected televisions and robot-piloted cars —
mostly pull us into digital features the device maker
creates or tightly controls. They are more like private
roads than the open highways of the smartphone and PC
eras. </p>
</blockquote>
<p> Ovide is right to point out that the recent trend is
toward systems that are increasingly more closed.
Unfortunately it’s only the latest in an ongoing cycle
throughout the history of computing between open highways
and private roads. Each swing in the pendulum moves from
public, open, shared innovation that lays the open roads to
private companies who use those public roads to build their
for-profit toll roads. Those companies fight to ensure that
no matter what signs you follow, you end up on their private
road. </p>
<h3>A Brief History of Open Computing</h3>
<p> You can find many examples of this pendulum swing in the
history of computing. Open software development in the late
1960s and early 1970s led to closed development on
proprietary UNIX operating systems by the late 1970s. This
spawned the GNU project to forward the goals of Free
Software along with the advent of free BSD UNIX operating
system variants. UNIX systems were among the first nodes on
the Internet as it was being created with open protocols and
standards in a collaborate academic environment. Because of
this, even though Microsoft would come to dominate the home
PC market in the 1990s, it didn’t share the same dominance
on the server side, so when Windows PCs finally connected to
the Internet, they had to do so with open protocols like DNS
and TCP/IP instead of Microsoft’s proprietary NetBIOS
protocol. Eventually even local Microsoft-dominated networks
began to speak the open protocols of the Internet. </p>
<p> As more PCs got on the Internet in the late 1990s, many
Internet Service Providers (ISPs) such as AOL fought to gain
private control over this public network in the form of <strong>private
roads to the Internet called “portals”</strong>–a custom
web browser that provided a curated view of the Internet
along with proprietary chat clients and games. Customers
could chat and play games with each other as long as they
used the same ISP. Fortunately outside of these ISPs, email
and other web protocols were open, so you could use
alternative ISPs and see a complete, unfiltered view of the
web and use open protocols to chat and game with whomever
you chose regardless of what ISP they used. </p>
<p> This open Internet accelerated collaboration on free
software as well, resulting in the full set of GNU tools
that led to the Linux kernel and the Apache web server,
among other prominent free software applications. This
spawned a new golden era of open software development and
collaboration throughout the early aughts that laid the
foundation of free software libraries and utilities that a
majority of our web frameworks and cloud software is based
on today. Many startups used these open libraries as a
jumping off point for their own tools (even Google used
Jabber/XMPP technology in initial versions of Google chat
applications) . </p>
<p> As the aughts progressed, because the new tech giants were
making their money by selling user data, the focus shifted
back into creating portals. This time Google and Facebook
were the dominant players and set out to ensure that you saw
the rest of the web curated through their websites and
chatted with your friends using their proprietary services.
This “portalization” got worse as people shifted to using
smartphones as their primary computers so that <strong>most
apps became in essence a closed, mini-portal</strong> into
the wider Internet you’d otherwise access from an open web
browser. Now you have five different incompatible apps on
your phone you use to chat with different people. Big tech
companies can’t even manage to be compatible with
themselves: Facebook alone owns three different incompatible
chat apps– <a
href="https://arstechnica.com/gadgets/2020/05/google-unifies-messenger-teams-plans-more-coherent-vision/">Google
owns six</a>! </p>
<h3>Private Roads Paved With Bad Intentions</h3>
<p> Smartphones provided tech companies with a blank slate to
re-imagine how they approached software. The iPhone in
particular rewrote the rules for how tightly a vendor can
control a platform. While Apple has always held tight
control over their platforms, in the past it didn’t get as
much notice since they were a minority player compared to
Microsoft’s dominance of the home PC market. Even with
Apple’s tight control over MacOS, third parties could still
write an application for a Mac without Apple’s permission
and Apple customers could install and run it outside of
Apple’s control. </p>
<p> The iPhone changed all of this. From the beginning, a
developer must have Apple’s approval before a customer is
allowed to use their application. To reinforce this control,
Apple has advanced their security restrictions on the phone
itself so that with each generation of iPhone and iOS,
“jailbreaking” or “rooting” the phone so that you can run
the software of your choice becomes more and more
challenging. With the recent versions of the phone this is
reinforced by custom, proprietary hardware and strong
cryptography. Even hardware accessories for the iPhone
require Apple’s approval or else you will get a warning <a
href="https://www.howtogeek.com/240407/why-your-iphone-or-ipad-is-saying-this-cable-or-accessory-is-not-certified/">that
the device is not certified</a>. These measures are always
marketed as being for security from hackers and more
recently also in the name of privacy, but from the beginning
it has always been about ensuring that Apple can control
which applications and accessories are allowed on the
iPhone, in particular when those applications compete with
their own offerings. </p>
<p> Seeing Apple’s success, competitors followed their lead so
that now Android employs many of the same restrictions
(again in the name of security and privacy) so that they can
control the software that runs on Android devices. In the
case of Android, this also ensures that cellphone vendors
can not only pre-install their own vendor software that
customers can’t remove, they have also made a side business
out of selling software placement on their phones to third
parties who often use the access to harvest customer data. </p>
<p> As Ovide’s article states, this closed approach has
defined the next generation of computers (smart watches,
smart speakers, smart TVs) already. There’s no attempt by
these vendors to build open platforms when they design new
technology. It’s rare when these platforms play well with
each other. Will your smart watch work with your smart
phone? Can you control your smart TV with your smart
speaker? The only way to ensure technology is compatible is
to <strong>buy it all from the same vendor</strong>. That’s
by design. </p>
<p> Traditional computers are on the same path. Google has
already extended this same approach–in the name of
security–to Chromebooks to ensure that the only applications
allowed on their laptops are those Google explicitly
approves. Apple is moving quickly to extend these same
security measures to their laptops as well. The goal of each
of these vendors is to have no open highways, <strong>only
private toll roads</strong>, leading only to their tourist
attractions. </p>
<h3>Where We’re Going, We Don’t Need (Private) Roads</h3>
<p> Think about the future of computers over the next fifty
years. Computers will become even more ubiquitous, not just
embedded in all of the things around us, but <em>embedded
inside us</em>. With advances in neural-computer
interfaces, there is a high likelihood that we will be
connecting computers directly to our brains within our
lifetimes. <strong>Which tech company would you trust to
control your neural implant</strong>? </p>
<p> If a computer can read and write directly to your brain,
does it change how you feel about vendors controlling which
software you can use or whether you can see the code? Does
it change how you feel about vendors subsidizing hardware
and software with ads or selling data they access through
your computer? Does it change how you feel about government
regulation of technology? </p>
<p> One promise of neural technology is to supplement humans
with apps that provide instant skills and knowledge. Imagine
<a
href="https://arstechnica.com/gaming/2020/09/apple-accuses-epic-of-theft-in-countersuit-over-ios-fortnite/">Apple
and an app company get in a dispute</a>, Apple removes the
apps from that company from their neural implant OS, and you
lose the ability to speak Mandarin, drive, cook, play
guitar, or write software? </p>
<p> We can’t accept being a tourist on tech’s toll road, the
future demands open highways accessible by everyone, where
you can freely go where you want, how you want. Now is the
time to disrupt these closed platforms locked to and
controlled by a single vendor. Openness and diversity are
advantages, not weaknesses, and the future demands more
openness, more collaboration, and more freedom and control
given to individuals over their own computers. </p>
<p> The solution is to invest in technologies and companies
that are building the open highways we need for the future.
With <a href="https://puri.sm/products/">Librem computers</a>
and the <a href="https://puri.sm/products/librem-5/">Librem
5 phone</a> running <a href="https://pureos.net/">PureOS</a>,
we are working to build platforms founded on free software
and open standards that put users <a
href="https://puri.sm/posts/with-purism-products-you-are-in-control/">back
in control</a>. Help us build the future we all want to
see. </p>
</div>
</div>
<div class="white-wrapper">
<div class="main-wrapper">
<h2>Anbox on the Librem 5</h2>
<p> Anbox now runs on the Librem 5, getting you access to many
additional free software apps that are packaged only for
Android. We are also working on streamlining the install
process. Soon you’ll just need to: </p>
<ul>
<li>Install Anbox</li>
<li>Put android.img into /var/lib/anbox/</li>
<li>Reboot</li>
</ul>
<video controls="controls"> <source
src="09-23-2020-librem-mini-sale_files/Anbox.webm"
type="video/webm"> Sorry, your browser doesn’t support
embedded videos.</video>
<p> In addition to simplifying the install process, while
testing Anbox we also identified and fixed a few bugs such
as how <a
href="https://source.puri.sm/Librem5/phoc/-/merge_requests/189">maximized
X11 applications</a> (such as Anbox) displayed on the
Librem 5. </p>
<figure id="attachment_69335"> <img
src="09-23-2020-librem-mini-sale_files/full_screen.png"> <figcaption
class="wp-caption-text">xwayland auto-maximization test.</figcaption>
</figure>
<p> With Android emulation unlocked on the Librem 5, the
number of usable mobile apps has once again jumped. It’s
time to start thinking about which apps you have to keep for
now, and which apps could use the ad-free respectful PureOS
touch. </p>
</div>
</div>
<div class="grey-wrapper">
<div class="main-wrapper">
<h2>Adventures of porting postmarketOS to the Librem 5</h2>
<div class="cl-preview-section">
<p> I’ve been longing to drop the shackles of Android ever
since I made the decision to stop using my Nokia N900.
Nokia had given up on Linux phones, and it was clear that
there would be no further security patches for my favorite
smartphone of all time. Shaking Google out of Android had
been my mission for years, and I had resorted to running
my own builds of “<a
href="https://en.wikipedia.org/wiki/DeGoogle">de-Googled</a>”
LineageOS. I was longing for something better. I was out
of the country when I first read about <a
href="https://postmarketos.org/blog/2017/05/26/intro/">postmarketOS</a>
(“pmOS”) in May 2017. postmarketOS is a Linux distribution
based on <a href="https://alpinelinux.org/">Alpine Linux</a>,
that strives to provide a Linux distribution running the
mainline Linux kernel, as a means to revive old
smartphones long forgotten by their manufacturers. My
beloved N900 was one device with (rough) support! I
quickly jumped on eBay to order a second N900 to meet me
at home when I arrived back, because obviously two are
needed. Obviously… Thus began my relationship with
postmarketOS, one that continues to this day. </p>
</div>
<div class="cl-preview-section">
<p> Things were not all rosy though… After some time it
became clear that the older N900 CPU wasn’t going to get
any faster for running “modern” applications and that
there would never be a free userspace graphics driver for
its GPU, so I was quite excited when I first learned about
the Librem 5. Sure, it didn’t have a physical slide-out
keyboard, but the promise of a device from a company that
would treat Linux support as a first-class citizen was too
good to pass up. I promptly pre-ordered a developer kit
(“devkit”) and phone, with the full intention of porting
postmarketOS to the device and eventually using it full
time to replace the heaping pile of Android in my pocket.
</p>
</div>
<div class="cl-preview-section">
<h3 id="some-assembly-required">Some assembly required</h3>
<figure id="attachment_69346"> <img class="wp-image-69346
size-full"
src="09-23-2020-librem-mini-sale_files/devkit.jpg"> <figcaption
class="wp-caption-text">Photo showing the Librem 5
devkit</figcaption> </figure>
</div>
<div class="preview__inner-2">
<div class="cl-preview-section">
<p> The devkit couldn’t have arrived at a better time
(sarcasm); right before the holiday season! After
spending the first few days still in the box due to my
“other obligations,” it was rapidly de-boxed and I
started planning my next move. Some cursory research
told me that the devkit used an SoC from NXP, used the
bootloader u-boot, and was flashed with a utility called
<code>uuu</code>. Since I wasn’t completely sure how <code>uuu</code>
worked, and expected trouble once I started to
experiment with using it to flash pmOS, the first task
was to solder on headers for using the UART. </p>
</div>
<div class="cl-preview-section">
<p> This, as I suspected, proved to be a very worthwhile
step. Purism should consider just adding the header next
time, though it was very simple to DIY at any rate. The
only other modification I made to the devkit (completed
a few days later) was adding an external 40mm fan right
over the SoC’s heatsink. It wasn’t necessary, but I did
cause the device to reboot at least once compiling Mesa,
so I figured it couldn’t hurt. A photo of this fan
(shown later on) ended up causing some <a
href="https://latenightlinux.com/late-night-linux-episode-57/">angst
on the Internet</a>. Oops. After adding a battery, per
Purism’s recommendation, I was now ready to get some
work done! </p>
</div>
<div class="cl-preview-section">
<h3
id="“don’t-reinvent-the-wheel-just-realign-it”-anthony-j.-dangelo">“Don’t
reinvent the wheel, just realign it” (Anthony J.
D’Angelo)</h3>
</div>
<div class="cl-preview-section">
<p> Being new to using NXP (and Emcraft) devices, a large
part of the first day was spent trying to gather as much
information as possible about how this device boots, how
to push images to it for booting, where in the image it
expects a bootloader (u-boot) to be “installed,” and the
required format and locations for the kernel and device
tree file. Emcraft had a surprising amount of
information on their website, along with some examples
in the form of out-of-tree kernel patches and
pre-compiled binaries. By far the greatest breakthrough
was discovering Purism’s Jenkins CI instance. Being
familiar with picking apart Jenkins output because of
$daily_job, I was able to figure out how Purism was
building all the major components. By searching Purism’s
Gitlab instance for the script names run in CI, I could
locate the appropriate repositories and source code for
those scripts to use as a model for the Alpine Linux
packages I’d have to create for supporting the devkit
and phone in pmOS. </p>
</div>
<div class="cl-preview-section">
<p> Armed with a basic idea of what I’d need to make an
attempt at booting a custom u-boot and kernel, I started
looking in-depth at <code>uuu</code>. This was a
completely new tool to me, but it was very easy to
package for pmOS/Alpine Linux. The <code>uuu</code>
utility can be passed a script with arbitrary commands
to execute, and once again, Purism’s prior work on this
provided me with a helpful template to use later on when
I had created a pmOS image for flashing to the device. I
was able to use the u-boot image from Purism’s devkit
artifacts to verify that my packaged <code>uuu</code>
worked </p>
</div>
<div class="cl-preview-section">
<p> The next step was to look at building/packaging the
u-boot, the Arm Trusted Firmware (ATF), and the Cortex
M4 firmware for DDR training. These were generally
fairly straightforward to create an Alpine Linux package
for, though, since none of these components used
upstream/mainline source, the packages had to diverge
from any that may already exist in Alpine Linux (e.g.,
can’t use their u-boot) in order to use the sources with
any patches from Purism/Emcraft/NXP/etc. The biggest
hurdle here was that the M4 firmware needed to be a
32-bit ARM binary, while everything else was compiled
for AArch64. The package repository specific to pmOS
(pmaports) includes cross compilers, so I was able to
compile/assemble the single image bootloader into one
Alpine Linux package. Not exactly ideal, and would
almost certainly be rejected by upstream Alpine, but it
was quick/easy, and simple to debug. Purism’s CI and
supporting scripts were heavily utilized in order to
figure out the right sequence of steps to build things,
where to “install” resulting binaries, and how to
generate a correct image with them all included. </p>
</div>
<div class="cl-preview-section">
<p> Getting to the point of having a working
u-boot/firmware image required some trial and error,
some of which was no fault but my own, and having that
UART header on the devkit was absolutely required for me
to resolve all of those early, pre-Linux kernel boot
issues. </p>
</div>
<div class="cl-preview-section">
<h3 id="anatomy-of-a-mobile-device-in-postmarketos">Anatomy
of a mobile device in postmarketOS</h3>
</div>
<div class="cl-preview-section">
<p> Devices in postmarketOS are supported by
device-specific Alpine Linux packages that are
responsible for installing any additional configuration
unique to the device, and providing parameters to the
tool (<code>pmbootstrap</code>) responsible for building
pmOS images for flashing to the device. Common
components of a device package in pmOS include things
like configuration files for setting up audio, and
parameters for specifying where to “install” u-boot in
the image that is generated. <code>pmbootstrap</code>
makes it very easy to <span class="mx_MTextBody
mx_EventTile_content"><span class="mx_EventTile_body"
dir="auto">create a skeleton device package</span></span>,
by just specifying the new device when running <code>pmbootstrap
init</code>. The hard part is collecting all of the
various configuration files that help enable and set up
hardware for the device. Once again, Purism’s public
repositories to the rescue! By grepping my way around
their public repos (e.g.,<a
href="https://source.puri.sm/Librem5/librem5-base">librem5-base</a>),
most functionality on the Librem5 present in PureOS
could be enabled in pmOS early on. Most devices in pmOS,
unfortunately, require downstream kernels. The devkit
and phone (as of today) are no exception, though it is
close enough to mainline that I didn’t have to apply any
of the various hacks that pmOS includes for dealing with
ancient, abandoned downstream kernels. As a result, it
was relatively straightforward to create an Alpine Linux
package for building/installing Purism’s kernel fork.
The last major piece was graphics. I could have ignored
this if I only wanted to boot to a console using the
framebuffer, but that’s no way to use a smartphone in
2020! (/troll) </p>
</div>
<div class="cl-preview-section">
<p> I wanted to run Plasma Mobile and Phosh, and the only
way I could do that was with a version of Mesa that
supported the GPU on the devkit. At the time, support
for this GPU was upstream in Mesa, but it had lots of
issues. If I wanted to have a decent chance of running a
hardware accelerated graphical environment, I would have
to package Purism’s Mesa fork. This would end up
creating all sorts of issues later with package
dependency resolution in Alpine Linux (conflicts with
Alpine’s Mesa package and subpackages were frequent), so
thankfully this was only temporary until Purism landed
all of their patches in upstream Mesa. </p>
</div>
<div class="cl-preview-section">
<h3 id="going-the-extra-mile">Going the extra mile</h3>
</div>
<div class="cl-preview-section">
<p>I now had everything needed to generate my first
bootable postmarketOS image for the devkit, and flash it
to the device!</p>
</div>
<div class="cl-preview-section">
<p> Except I didn’t. Flashing the device manually with <code>uuu</code>
was fine for me, but I expected anyone with a Librem 5
to be able to easily use <code>pmbootstrap</code> to
build and flash pmOS to the device. The first change was
teaching <code>pmbootstrap</code> to automate <code>uuu</code>.
<code>pmbootstrap</code> has had support for flashing
devices directly with external tools for quite some
time. Most devices originally shipped with Android using
fastboot for flashing, which isn’t an option for the
Librem 5. Having image flashing support isn’t a
requirement, but it’s much nicer than trying to use
scary tools like <code>dd</code> to <del>destroy</del>
flash disks, or requiring folks to run some other
command/script separate from <code>pmbootstrap</code>
to get pmOS on their device. Shoehorning <code>uuu</code>
automation into <code>pmbootstrap</code> was basically
just adding some new <code>pmbootstrap</code>
configuration parameters to the device package that can
be used to tell <code>pmbootstrap</code> to use <code>uuu</code>,
and then patching <code>pmbootstrap</code> to call <code>uuu</code>
with the right parameters when instructed to flash the
image to the device. </p>
</div>
<div class="cl-preview-section">
<p> The Librem 5 devkit (and phone) require two firmware
files for booting, as mentioned previously: u-boot and
M4 firmware. <code>pmbootstrap</code> knows how to deal
with embedding u-boot firmware (used by some devices
supported in pmOS), but did not know how to embed two
separate firmware into the flashable pmOS image. Another
patch adding this functionality, and some more device
package config parameters were all it took. <em>Now</em>
I was ready for… </p>
</div>
<div class="cl-preview-section">
<h3 id="first-boot">First boot!</h3>
</div>
</div>
<div class="cl-preview-section">
<figure id="attachment_69347"> <img class="wp-image-69347
size-full"
src="09-23-2020-librem-mini-sale_files/first_boot_devkit.jpg"
alt=""> <figcaption class="wp-caption-text">Photo
showing first boot of postmarketOS on the Librem 5
devkit</figcaption> </figure>
</div>
<div class="cl-preview-section">
<p> At the time, the devkit’s onboard display was not
functional, so I had to make do with HDMI to an external
display which, fortunately, worked perfectly. XFCE is a
fairly lightweight desktop environment with (most)
Batteries Included by default, so it’s a favorite of mine
for the first boot of pmOS on a device. </p>
</div>
<div class="cl-preview-section">
<p>Plasma Mobile largely worked out of the box too, though I
did get some help from KDE developer Bhushan Shah. Nothing
says success like a dark, slightly blurry photo taken at
1:49am.</p>
</div>
<div class="cl-preview-section">
<figure id="attachment_69351"> <img class="wp-image-69351
size-full"
src="09-23-2020-librem-mini-sale_files/plamo_birch.jpg"
alt=""> <figcaption class="wp-caption-text">Photo
showing Plasma Mobile on the Librem 5 Birch</figcaption>
</figure>
</div>
<div class="cl-preview-section">
<p> A lot of folks in the Purism Matrix channels are excited
about “device convergence,” in particular using your phone
with an external keyboard/mouse/monitor as you would a
desktop PC. Not to be the one left out, I thought it might
be fun to play Elder Scrolls 3: Morrowind (via <a
href="https://openmw.org/en/">OpenMW</a>), which
basically requires a keyboard/mouse to use. After
packaging OpenMW in Alpine Linux, I was now able to play
one of the best RPGs ever made on the devkit. Albeit, not
at a super smooth frame rate, but that was to be expected
given how early this hardware was and the current state of
its support in Mesa. </p>
<p> <img class="aligncenter wp-image-69348 size-full"
src="09-23-2020-librem-mini-sale_files/openmw_devkit.jpg"
alt=""> </p>
</div>
<div class="cl-preview-section">
<h3 id="a-linux-distribution-meets-a-linux-phone">A Linux
distribution meets a Linux phone</h3>
<figure id="attachment_69349"> <img class="wp-image-69349
size-full"
src="09-23-2020-librem-mini-sale_files/first_boot_phone.jpg"
alt=""> <figcaption class="wp-caption-text">Photo
showing first boot of postmarketOS on the Librem 5 phone</figcaption>
</figure>
</div>
<div class="preview__inner-2">
<div class="cl-preview-section">
<p> Fast forward a few weeks, and Purism is starting to
ship their first phones to the general public. I
deferred receiving the phone I ordered until the
“Evergreen” batch, because I wanted a higher quality
device to use for years. I was bummed that I was stuck
using a devkit with pmOS, and was starting to regret my
decision when Purism was kind enough to lend me a Birch
phone to play with. No time was wasted deleting the
PureOS image on it (sorry Purism!) to make room for
pmOS. Luckily the same SoC was chosen for the phone, so
only minor changes were needed to the device package in
postmarketOS since the phone shared the same kernel and
u-boot source code as the devkit. The u-boot
configuration was different, but that was just a matter
of selecting the appropriate defconfig at compile time.
</p>
</div>
<div class="cl-preview-section">
<h4 id="uarts-uarts-everywhere-but-not-enough-to-use">UARTs
UARTs everywhere, but not enough to use</h4>
</div>
<div class="cl-preview-section">
<p> One thing that was worrisome from the start was the
lack of readily accessible UART on the phone for
debugging issues pre-Linux boot. Now, this wasn’t
something most users of the phone would care about, but
I had relied on this extensively on the devkit to find
the right combination of configuration parameters for
booting pmOS. The schematics for the phone show there
are 4 UARTs, but none of them have headers
pre-installed, and 2 of them are available in the super
tiny test point pads under the back cover. A few devices
that we’ve used with postmarketOS support serial console
out via a 3.5mm headphone jack. That would have been a
nice feature for the Librem 5, but wishing for it
wouldn’t help my current situation. </p>
</div>
<div class="cl-preview-section">
<p> Eric Kuzmenko from Purism pointed me to an M.2 debug
breakout board that apparently Purism was using in-house
at one point, and provided me with a version of the
layout that exposed only UART. I had this board fabbed,
but still (as of today) have not succeeded in getting
u-boot to output a serial console over it. So, if there
are pre-Linux u-boot-related issues, I’ve had to fall
back to using the devkit to debug them. Luckily I
haven’t yet had any pre-Linux boot issues specific to
the phone. </p>
</div>
<div class="cl-preview-section">
<p>It’s worth noting that this is largely a problem for me
and anyone else who wants to port an OS to run on this
device. The vast, <em>vast</em> majority of users won’t
miss having easy UART serial console access.</p>
</div>
<div class="cl-preview-section">
<p> Fortunately for my first attempt at booting on the
phone, the only issue I ran into was accidentally using
the u-boot image built for the devkit. Oops. And,
fortunately, that didn’t result in any magic smoke being
released! </p>
</div>
<div class="cl-preview-section">
<h3
id="if-it-looks-like-a-phone-and-acts-like-a-phone-it-must-be-a-phone">If
it looks like a phone and acts like a phone, it must be
a phone</h3>
</div>
</div>
<div class="cl-preview-section">
<figure id="attachment_69350"> <img class="wp-image-69350
size-full"
src="09-23-2020-librem-mini-sale_files/sms_phone.jpg"
alt=""> <figcaption class="wp-caption-text">Photo
showing SMS on a Librem 5 phone running postmarketOS</figcaption>
</figure>
</div>
<div class="cl-preview-section"> It wasn’t long after this
that Purism was demonstrating the modem work they had
enabled in their PureOS distribution. Enabling the phone’s
modem with ModemManager was easy, but audio was not being
routed correctly during a phone call. Purism released a
small application called <code>wys</code> that handles
audio routing during phone calls, so after packaging this
application for Alpine Linux (so it was then available in
pmOS), I was able to make and receive phone calls to some
degree. Audio quality and proximity sensor support still
needed a little work, but the makings of this being an
actual phone were already there. SMS just worked on pmOS
with no changes at all, which was a very pleasant surprise
after having spent a lot of time in the past figuring out
how to send and receive an SMS using ofono test scripts on
the N900. Mobile data connections also just worked in pmOS
with Phosh and ModemManager; another very pleasant surprise!
</div>
<div class="cl-preview-section">
<figure id="attachment_69352"> <img class="wp-image-69352
size-full"
src="09-23-2020-librem-mini-sale_files/dogwood_pmos.jpg"
alt=""> <figcaption class="wp-caption-text">Photo
showing postmarketOS running on a Librem 5 Dogwood</figcaption>
</figure>
<div class="preview__inner-2">
<div class="cl-preview-section">
<h3 id="so…what-now">So…what now?</h3>
</div>
<div class="cl-preview-section">
<p> postmarketOS on the Librem 5 is off to a great start
but there’s still much more work to be done (both
upstream in PureOS and postmarketOS) before I’m
comfortable depending on the Librem 5 full time to
replace my current mobile phone. For those interested
in playing along, the current status of postmarketOS
support on the Librem 5 can be seen on <a
href="https://gitlab.com/groups/postmarketOS/-/milestones/5">this
Gitlab milestone</a>, and you can drop by <a
href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">our
IRC/Matrix channels here</a>. </p>
</div>
<div class="cl-preview-section">
<p> While there’s always room for improvement, working
with the Librem 5 devkit/phone and Purism has been
super refreshing. I would not have been able to move
as quickly to port postmarketOS to the Librem 5
without the tremendous amount of help from Purism;
both implicit by way of public repos and CI, and
explicit from Purism employees responding to my
queries. Many devices booting postmarketOS are largely
ignored or forgotten by the manufacturers that made
them, and use some super old downstream kernel
originally meant to run with Android, so the effort to
get pmOS working on them is a much larger hill to
climb. I welcome this new age of devices with first
class Linux support! </p>
</div>
</div>
</div>
</div>
<div class="black-wrapper">
<div class="main-wrapper">
<h2>Making a 3D graphics video for the Librem 5</h2>
<p> At Purism, we do all our videos and other promotional
material internally, with Librem hardware and free
software only. This is part of our policy and I think it’s
important, when I believe in something, to act in
accordance with it. </p>
<p>A few days after releasing the video of the Librem 5
hardware design, I was asked by a few people to publish an
article describing the process of making this video.</p>
<p> In early 2019, we shot a funny commercial for Librem One
and I made a <a
href="https://puri.sm/posts/see-your-junk-behind-the-scenes/">blog
post</a>, along with a video, to explain the process of
making this kind of commercial with Librem hardware and
free software. I was not going to do a “behind the scenes”
blog post again but the Librem 5 video is entirely made
with 3D graphics and the workflow is quite different so I
think that it is interesting to describe that process in a
new post. </p>
<video controls="controls"> <source
src="09-23-2020-librem-mini-sale_files/l5-hardware-design.webm"
type="video/webm"> Sorry, your browser doesn’t support
embedded videos.</video>
<h3>Making the 3D model</h3>
<p>The goal of this video is to show the design and features
of Librem 5 hardware. So, in other words, to disassemble
the phone and to show what’s inside it in terms of
hardware.</p>
<p>In order to achieve that in a visually elegant way, I
decided to go through a 3D model and do the entire video
with computer graphics.</p>
<p> <img class="aligncenter size-full wp-image-69401"
src="09-23-2020-librem-mini-sale_files/l5-video-exploded-view.png"
alt=""> </p>
<p> Modeling the phone and all its electronic components was
a long task, that, done in parallel with other projects,
took me a few months to complete. I started just after the
release of the Chestnut batch and completed it a few weeks
before the release of the Dogwood batch that had a
slightly different design. The key points being the same
between Chestnut and Dogwood, I decided to release the
video anyway, without going through the long process of
modeling again. </p>
<p> I used Blender and as I am not a proper 3D modeler, I
had to learn while I was advancing the 3D model. Blender
and its community are so great, that it is not difficult
to find the right information. I learned a lot during this
project. </p>
<p> <img class="aligncenter size-full wp-image-69402"
src="09-23-2020-librem-mini-sale_files/l5-video-blender-modeling.png"
alt=""> </p>
<h3>Animating the model</h3>
<p>Once modeling was done, came the fun part of animating! I
love animating because it feels like giving life to
something. There is something magical in animations in
general.</p>
<p> To do so, I put the 3D model in its own Blender file, in
order to reuse it whenever I need to, and linked it into
another file that would hold my animation’s main scene. I
am not sure if that is the best approach for this
particular animation but it worked for me. From there, I
put up a simple scene with a few lights, a touch of color,
and I started animating. </p>
<p>Even though, I divided the video into several scenes in
the script, I ended up animating the whole sequence in a
single timeline, as a unique sequence shot.</p>
<p> <img class="aligncenter size-full wp-image-69403"
src="09-23-2020-librem-mini-sale_files/l5-video-blender-animation.png"
alt=""> </p>
<p>I ended up rendering the animation as a PNG image
sequence with the new EEVEE render engine from Blender,
which is very fast on my Librem 13 while producing a
pretty realistic output.</p>
<h3>Adding the audio</h3>
<p> Although we do visual art internally at Purism, we don’t
do music. Therefore, I had to find an existing track for
this project. Finding the right music is always pretty
difficult. I know that music tastes are subjective and I
usually try to find a track that matches the rhythm and
the mood of the video. I also look for music that is
released under a free license in order not to be in
conflict with the free license of the video itself (all
the website’s visual material is released under a CC-BY-SA
4.0 license). </p>
<p>Thankfully, there are some amazing artists in the world
of free art and I ended up using the beautiful track
“Sphere” by Creo, which is modern, full of energy and
happiness.</p>
<p> <img class="aligncenter size-full wp-image-69404"
src="09-23-2020-librem-mini-sale_files/l5-video-kdenlive.png"
alt=""> </p>
<p> I used Kdenlive to edit the music with the image
sequence that I generated from Blender. I didn’t know
which music I would use while doing the animation so I had
to slightly edit the image sequence for it to nicely match
the rhythm of the music track. </p>
<h3>Conclusion</h3>
<p>I love working on this kind of video project. It makes me
put my head in my dreams, my creativity, like when I was a
kid, but this time with the tools to bring this creativity
to life.</p>
<p> Lately, I have been working on another project that was
very special to me. It is a traditional hand made
animation, that is not for Purism but that I made with
both my Librem 13 and Librem 15 along with two graphics
tablets, free software and lots of love. I will come
through the details of making this project in a future
blog post. Stay tuned! </p>
</div>
</div>
<div class="white-wrapper">
<div class="main-wrapper">
<h2>Librem 14 Shipping in December</h2>
<img
src="09-23-2020-librem-mini-sale_files/librem-14-main-header-image.png"
alt="Librem 14">
<p> We set out to build our <a
href="https://puri.sm/posts/librem-14-thoughts-from-a-librem-13-early-adopter/">dream
laptop</a> with the <a
href="https://puri.sm/products/librem-14/">Librem 14</a>
and that meant adding new features such as: </p>
<ul>
<li><a href="https://puri.sm/posts/librem-14-launch-faq/">Two
SO-DIMM slots with up to 64GB RAM</a></li>
<li><a
href="https://puri.sm/posts/librem-14-features-bios-and-ec-write-protection/">Write-protected
BIOS and EC chips with an internal switch</a></li>
<li><a
href="https://puri.sm/posts/librem-14-adds-microphone-kill-switch-enhancements/">Microphone
kill switches that extend protections to the headphone
jack</a></li>
<li><a
href="https://puri.sm/posts/librem-14-features-enhanced-wifi-m-2-key-e-slot/">Enhanced
WiFi M.2 slots for hardware hacking</a></li>
<li><a
href="https://puri.sm/posts/librem-14-enhancements/">Extra
control over the embedded controller, and a new
user-controlled notification LED</a></li>
</ul>
<p> The Librem 14 is going to be a powerhouse with a six
core, twelve thread, 4.70Ghz i7-10710U tenth generation
Intel CPU. When we first announced the Librem 14
pre-order, we estimated shipping would begin in early Q4
2020 but unfortunately Intel has industry-wide supply
issues with the i7-10th gen CPUs which has moved the ship
date for the Librem 14 to December 2020. </p>
<p> That’s the bad news. The good news is that the current <a
href="https://shop.puri.sm/shop/librem-14/">$100
pre-order sale</a> will continue for a bit longer. We
also hope to finish some fresh Librem 14 prototypes in
about a week, so we can share new pictures of the design.
</p>
</div>
</div>
<div class="black-wrapper">
<div class="main-wrapper">
<h2>Pre-Order Your Librem 14 Today!</h2>
<p>Get Purism's powerful, private, secure Librem 14 laptop.</p>
<p><em>Currently $100 off!</em></p>
<a href="https://shop.puri.sm/shop/librem-14/" class="button
cta">Pre-Order Librem 14</a> </div>
</div>
<footer class="align-center"> <img
src="09-23-2020-librem-mini-sale_files/brand.svg"
alt="Purism">
<p>Thanking you for your support,<br>
— the Purism team <span>(feedback at puri.sm)</span></p>
<hr>
<p>Note: contents of this email are CC-by-SA; feel free to
forward it to friends!</p>
<p><i>To remove yourself from our announcements list, simply
email <a href="mailto:announce-leave@announce.puri.sm">announce-leave@announce.puri.sm</a>
and you will automatically be instructed how to
unsubscribe.</i></p>
</footer>
</div>
</p>
</body>
</html>