Things are as awesome as usual.

Hi again, everyone! A lot has happened during these last few months of work, so get ready for a thorough Librem 5 hardware update report.


Springtime seems to bring both nicer weather and plenty of events, and this year’s was no exception: Guido and Nicole went to Embedded World and met some very interesting people, while Tobias went to a GNOME Design Tooling Hackfest and worked on a number of ways to improve the workflow for those making GNOME app icons – including previewing hicolor and symbolic from a single template, auto-generated nightly icons and a new symbolics library app. Other team members attended LibrePlanet and saw a lot of excitement in the community about the devkit.


In terms of design, the GNOME mockup templates were updated to include mobile screens, and thanks to Alexander Mikhaylenko from the community we now have a more realistic interactive mockup of the gestures for phosh; and GNOME 3.32 was released, containing many interesting things for our Librem 5 phone, such as a new app icon style and some adaptive core apps. There is now an initial adaptive mockup for Nautilus, and a nice tutorial blog post was written to serve as an introduction to designing apps for the Librem 5. See below for a preview of the Librem 5 shell mockups:



We have the new kernel builds integrated with the image-builder scripts, and finished flash-kernel and initrd rollout. The changes have been submitted upstream. Bug fixes included fixing an issue upstream when attempting to grow the root filesystem on first boot, which has been included in Debian buster – and this gives the root file system enough space to install Flatpaks. We also made some minor cleanups around the clocks and audio subsystem.


We have had some issues with stability and texture corruption with the GC7000, and there is an ongoing investigation to resolving this. Two upstream bugs were found and fixed: a segfault in GALLIUM_TRACE and a segfault in GALLIUM_DDEBUG.


Thanks to Benjamin Berg and his review on the initial wwan plugin, we are now much closer to having this functionality in GNOME Settings.


We also started experimenting with our own forked compositor, after some additional bug fixes – and even added features – and are just waiting for a few more pieces to fall into place before releasing it, so stay tuned! Concerning upstream wlroots bug fixes, we have made some functions static, fixed a build issue, uploaded wlroots v0.4.1 and wlroots v0.5.0-1 to Debian experimental, added support for supplying the preferred mode to the drm backend, and fixed layer shell popups in rootston.

Voice Calls

Concerning voice calls, our focus right now is testing call audio. In aid of this, we have been debugging DMA operations in the kernel, in order to discover why the audio buffer isn’t being filled quickly enough during playback through the SGTL5000 audio codec. The SIM7100 modem and the i.MX8’s SAI interface are also being investigated; while the latter is receiving PCM data, DMA transactions aren’t reading said data.


As far as Libhandy is concerned, a new expander row property was added, and it is useful to reveal external widgets depending on the state of the row. We are now working on adding a new adaptive view switcher, released version 0.0.9 and uploaded it to Debian. The team has also updated the libhandy version being used in GNOME settings, contacts, and web to v0.0.9 (see below for an example of the prototype of HdyPreferences window). Last but not least, the team fixed a regression bug, improved compatibility with glade and cleaned up style handling.

Text Messaging

We worked on enhancing the color scheme: from now on, all messages from unknown contacts will be colored red in the “Chats” list messages (but it can be disabled in the settings). A menu entry for adding unknown users to the contacts list and a “Leave Chat” entry in the main menu were also added. Chat logs are now preserved after chats are left, and chats remain when “Start Chat” (with the same contact) is opened. The “Delete Chat” behavior was improved – it now removes both the chat history and the chat. We have also worked with the design team to update, and improve, the UI – and, in terms of bug fixes, a severe issue that led to a segfault when the member list was updated was fixed, as was an issue that prevented new chats from being shown in the ‘Chats’ list. See bellow for a preview of the Librem 5 Chatty color scheme:



Linux 4.18

The userspace firmware load helper has been disabled since it is not needed and can be problematic; a magnetometer was added and the power key was enabled.

Linux 5.X

We submitted the devkit’s LCD panel driver upstream, found and fixed an issue in the device tree where SAI6_RXD0 and SAI6_TXD0 needed to be swapped for the WWAN module, moved the redpine driver to the 5.0 kernel; we also posted a patchset to add initial support of the Mixel DPHY and a patchset to add initial support for the NWL MIPI DSI host controller, as found on the i.MX8MQ SoC. A patch to enable the updated TMU driver was submitted, and a VCNL404 light and proximity sensor driver added, as found on the Librem5 devkit. We have also submitted the librem5-devkit devicetree upstream – and the proposed change to OpenOCD, in order to add a m4 target, was accepted. Our upstream bug fixes included correcting some examples in the dt-bindings docs.


When it comes to hardware, the team has continued working on our schematic of the Librem 5, tested an antenna patch with a recent build of U-Boot with the 5.0 kernel and generally continued the hardware devkit testing, especially around power and testing a prepaid SIM card showing a phone call is able to be placed. We also fixed a U-Boot issue that changes the charge controller’s slave address properly be 0x6B, and thanks to Hugo from the community, u-boot has been refactored. The team is now reviewing camera choices.

Our Community

Regarding community outreach, there was a mention of the Librem 5 devkit on the KiCad page; the troubleshooting section related to devkits in the documentation got some additions, and it was reorganized so users can find what they are looking for even quicker. Clayton from the community added the UART pinout table (which is very useful for debugging) to the documentation, and Bhushan Shah updated the tutorial on installing Plasma mobile in the documentation (thank you); an adaptive UI tutorial, a guide to sandboxing permissions, an example regarding network state and a very a nice example on writing an application were also added to the documentation.
A big “Thanks!” to all the external teams that have helped review and merge changes into upstream projects. Your time and contribution are much appreciated.

That’s all for now, folks – stay tuned for more exciting updates to come!