Invest in the Future You Want to See.

A First Public Offering of Purism Stock on StartEngine. Minimum $500.

Invest Now



Beautiful, Secure, Privacy-Respecting Laptops, Tablets, PCs, and Phones

End of the Year Report – Librem 5 – Things are awesome

Hello everyone! We have accomplished so much in the last 3 months and need to share, so prepare yourself for a dense update on the Librem 5 phone, PureOS, and software applications.

As you know, we have a number of important components in the Librem 5 that we will try outline.


Let’s start off with the Calls application.  The calls application is what allows us to place phone calls and what makes the phone a
phone.  In these past few months, we’ve been making this application work wonderfully.  Below is a demo of the calls application receiving a phone call.  So the basic support for the calls application is complete and we’re working making a great design.  We’ve successfully implemented important basic features like ring tones.

If you’re interested in following the work, we’ve included the merge
requests for calls below and important issues that were created:

Merge Requests – flatpak: enable access to dconf config – new-call: set input hints and purpose of SearchEntry – mm-provider: clarify warning a bit – history-box: add empty view – add i18n support – add test for origin and calls – add calls-application class – add a call window and header bars – display dialer on startup – post ui change cleanups – add call window and header bars – flatpak support – fixed memory leak – pay attention to the addition and removal of a modem – flatpak: Don’t build the libhandy Glade catalog – cleaned up ringtone ringer – providers in calls are now plugins – updated calls icons – flatpak building – changes to support impending call history changes

Issue Requests – memory leak in find_call_holder – memory leak in set_focus – memory leak in calls_call_window_add_call – transferred TODO list to gitlab issues – investigation into evolution data server/sqlite – DTMF fails with error Rejected send message


Hægtesse is a daemon to transfer audio data between a modem and PulseAudio.  It currently only supports the SIMCom SIM7100 modem but may be useful for other modems.  The purpose of Hægtesse is to monitor the modem and when a call is initial to configure PulseAudio automatically for a phone call.  This is a necessary component for phone calls.

Issues – fills log when /dev/tty4 is not present

Merge Requests – Hægtesse listen to udev for the appearance of the audio TTY – Add full GPLv3 text – Build with gitlab-ci – fix build on PureOS


Libhandy is a library that extends GTK+ to be used on mobile profiles.  With libhandy, you can port any GTK3 or higher app that you have into a mobile profile.  If you have an application written in GTK3, reach out and we’d be happy to help you port it to libhandy.  To find out more about libhandy go here: for our roadmap.

Here is an example of GNOME Web (epiphany) ported libhandy

Documentation and example code.

Libhandy has had made significant advancements these months with several releases made.

Libhandy is currently being used to port many core GNOME apps to the librem5

Merge requests: – HdyDialer: Apply ‘keypad’ style class – Don’t invoke signal handlers on finalized HeaderGroups – add i18n support – doc fix – HdyHeaderGroup signal disconnections – few documentation fixes – enabling l10n – g_auto* documentation – drop Jenkinsfile – Syntax highlight HACKING – Init public GObject types in hdy_init() – fixes to MacOS Build – Add measure() methods – drop direct access to event fields – renaming margins for GTK4 support – make HdyDialer a descendant of GtkBin – fix a mention of a HdyLeaflet in the docs – unstability acknowledgement documentation improvements – normalize and document private header guards – adding hdysearchbar – remove useless libhandy options from example flatpak – document more coding style – reproducible build of libhandy – hdy_init() docs improvements – add transfer none to hdy_init() –  fix HdyHeaderGroup references – example: put the content in a scrolled window – add many row widgets – leaflet: clear the children list on disposal – build: set the shared object install directory – update for MinGW compatibility – build: dont’ use -fstack-protector-strong on mingw64 – update docs skeleton

Issues: – HdyTitleBar broken with .devel window in org.gnome.Sdk//master – issues compiling on OSX


Librem5 devkit tools are the set of tools to enable the devkit that was recently shipped out to crowdfunding supporters.


Virtboard is our virtual keyboard used on the Librem 5.  Work has been on-going in enabling the virtual keyboard mostly focusing on making this input working under wayland.  The UX experience is still on-going.  Feedback is of course encouraged.

Merge requests Unbreak virtboard crashing when using GCCs stack protector Update input-method protocol make virtboard fully hidden virtboard translations convert to glib mainloop added multiple layouts


Chatty is our combination SMS and encrypted communication app.  Chatty currently works with SMS and with the help of libpurple we can also have E2E encrypted communication as promised before.

We currently can successfully send SMS between phones.  Below is a demo of the chatty doing some emoticons.  You might recall last post we showed chatty doing real SMS.  The UX experience is still on-going and continues to evolve.  Follow along in this issue –

Chatty's proposed Icon
Chatty’s proposed Icon for how the UX is coming along.

Merge requests Add some basic gitlab-ci fixing the Flatpak manifest porting the window to Glade Remove arm special casing don’t access inexistent header bar Use glib’s logging Don’t ignore compiler warnings Fix build with a default set of warnings enabled Enable and fix more compile warnings Fix crash during message parsing Make text in chat bubble copyable Fix new messages not being displayed Prepare chatty for translations Fix time format display Add Debian packaging – add Debian packaging – don’t use network when verifying appdata files Suggested closing the old project – improve chatty UI


Most of our design is being done in GNOME upstream except of course for the UX experience in the Librem 5 specific component.  Purism believes deeply in working in the upstream and we work closely with GNOME’s designers.  Below are a number of design mockups that were conceived for various GNOME apps to work with libhandy.

Adaptive View Switcher Design mockups


GNOME TODO Mobile Mockup
GNOME TODO mobile mockup


GNOME Notes Mockup
GNOME Notes Mockup Adaptive Mockups for GNOME TODO – Adaptive Mockups for GNOME Notes – proposal for adaptive view switching modes (commited to implement by Adrien) – new app icons for GNOME

In addition, a lot of work has gone in to designing parts of GNOME like the control center to work in a mobile context.


WLroot is the Wayland implementation for the Librem5 and which phosh our UX shell runs on.  Mostly working on getting libinput working.  We did some investigations on using rust bindings, but turned out that it was more work with very little advantage.

Merge requests: – update debian packaging – input-method and text-input support to the Librem5 – wlroots update

Issues: – rootston freezes on ssh log out – rootston often freezes


Phosh is the actual visual look and feel of the Librem 5.  The most significant work here is being able to detect idle and dim the screen automatically when not on battery power.  Some work on the lock shield was also done and various UX fixes and features.
For more information see the merge requests before.

Merge requests Update translations from zanata – Drop hard coded weston-terminal from favorites – Add a poweroff button to the settings menu – use actual values for transform instead of looking at rotation property – make sure setting buttons stay circular

Issues  – look into full screen blank support on lock

Upstream Work

Purism knows it stands on the shoulders of giants.  We would not be be successful without our upstream partners.  We make sure that our technical debt is as small as possible, preferring to work in upstream as much as a matter of course.  Below is a list of the work we have done in the various upstreams that we depend on.  This is not an exhaustive list of projects since we do other upstream work for our laptops as well.

We are very proud of our upstream work and being part of these upstream projects. – Debian’s libgtk-4-dev Needs to depend on libvulkan-dev – Kept pushing making the WiFi panel adaptive – Moving the app menu – contact deselection on creation fix – using HdyHeaderGroup – using HdyTitleBar – Suggested to not show dashed border in keyboard-navigable selected elements when no keyboard is available – Helped Javier set up the initiative – don’t let the wlr_output handle the fullscreen view in case – Support input method and text input  – reviewed fix for text input protocol – fixed a text flickering – GtkActionBar for the commit tool bar – fixing the diff options sliding direction – Suggested to not destroy existing property bindings – Suggested to support property bindings – Fix bug with full screen views and overlays (otherwise it will cause trouble with full screen video/pdf vs the lock screen – xwayland spurious crashes – securing wayland protocols – start of adaptive – supplementary call operations – tried to solve input method complications in gnome-shell – librem 5 clock application – blog post on Capitole du libre conference – transient window notification fix to 3.24 – flatpak build fix for lollypop – make title bar more adaptive – make search bar adaptive – 4 adaptive panels for GNOME settings – make shell more adaptive – Wifi panel adaptive – icon mismatch – implement new network connection editor design – policy: call method name should be SendDtmf rather than SendTone – make debug less verbose – WIP: Update 0.2 – rework wwan plugin after upstream feedback


This effort can never survive without documentation.  In that regard, welcome David Boddie to the Librem 5 team working on documentation for the Librem 5.  The whole team, while focusing on their development, are equally aware of the role of documentation and have worked diligently in making sure that people create applications for the Librem 5.  With two members working exclusively on documentation and developer experience, we hope to make writing applications for the Librem 5 as easy as it can be.  Feedback in improving our documentation would be most welcome!

A lot of focus was made on creating documentation on how to create Librem 5 applications with sample code.

Issues – Upate GNOME Builder section

Merge requests – GTK+ limit the documentation to libhandy 0.0.3 – update qemu – update email lists to be – add stack picture and more intro – GTK+: add links to the GTK+ and libhandy docs – GTK+: Note to adjust label’s xalign when ellipsized – collection of simple PyGObject examples – document phosh’s supported DBus APIs – document some trivial phosh apis – added small descriptions of KDE-related technologies

Phone hardware/Dev Kit

The recent shipping of the Librem 5 dev kit represents countless hours of work with an aggressive schedule.  Nicole, Eric, and Petra, along with dedicated operations staff, worked continuously for a week to package all the dev kits to be shipped out to our dev kit backers.

When it comes to software and hardware freedom, we not only do the talk, we do the walk.  Everything in the dev kit, is licensed under the GNU GPL v3+.  We have released the schematics for the dev kit and all source files.  We encourage you to participate and bring your talents and join us!

By now everyone who ordered a dev kit would have received it and are working on the hardware to get it fully enabled from the LCD panel to user-controlled LEDs.  We will be sharing more photos and videos of the dev kits in action as more and more community members advance the software around them.

In the meanwhile, our matrix channel has become a hot bed of activity as people prod and poke their dev kits, asking questions and following along with the devleopment of the phone.

As for the phone, we have confirmed the BOM (Bill of Materials) and the sourcing of parts, we are only finalizing the I.MX 8M or 8M Mini by benchmark testing. Once we have approved the design (also planned in January) we can create the necessary molds and stamps.

January is going to be really busy for Purism as we split time between the dev kit advancements and then pivoting to the Librem 5 phone hardware, but we welcome the excitement around what we’re doing.  We will have a retrospective post on the dev kit tomorow (2019-01-09), so stay tuned for that!

Short Summary of the work:
– Moved to Kernel 4.18.11
– Reworked device tree for dev kit
– add texture support on GC7000,
– PureOS now building on our build server using Laniakea build system
– a mechanical issue was discovered with the M.2 module not sitting flush against the board so a taller M.2 connector was used on the final dev kit design
– RedPine fixing the W_DISABLE# issue, they will use a bodge wire for our 340 dev kit units so that the HKS works as anticipated
– Fixed various issues in the nwl-dsl (mipi) driver
– picture of working HDMI –
– Fixup several bugs in the imx8ms mipi dsi layer

– Initial (WIP) LCD panel driver
+ Look at haptic sensor. Driven by the kernel’s joystick force feedback
interface (and therefore exposed to userspace as an input
device). We’ll need write a tiny driver for that.

Purism in the Public

Purism employees are not hermits and you can find them at various conferences.  Here are some of the things our employees have done.

– Dorota: Gave a talk based on Rust+Wayland research, dutifully credited Purism (video incoming… at some point):

– Adrien and Francois were at Capitole du Libre, running the GNOME booth there.

FOSDEM – A number of us will be at FOSDEM doing talks and hanging out.  More information on what our plans are for FOSDEM in another post.


That’s all for now!  Stay tuned on these pages for new applications, the retrospective on the dev kit, and other features!  Things are rolling fast!  Thank you to our fans for making 2018 a wonderful year and looking forward to 2019!  It’s going to be awesome!  Thank you for a great year!

Recent Posts

Related Content