The Librem 5 software team were busy in October, improving power consumption and heat generation through kernel and driver changes. The team also refactored and improved integration between various apps by using libfolks as a common foundation, added new features to keyboard, Settings, Shell and Compositor and squashed many bugs.

Here’s a list of the top things the Librem 5 software team worked on during October:

Note: Some of the changes mentioned below refer to amber (PureOS stable) and amber-phone (PureOS phone specific packages).

Kernel

Our ongoing improvements to frequency management in linux-imx8 and linux-next and general improvements to mxsfb have improved battery life.

S3-suspend/resume has been looked into again and should be functional.

Version v7 of the nwl mipi dsl host controller driver has been submitted for review upstream.

Patches to fix probing of the Rohm bd718x7 power regulator when built as a module were submitted upstream.

Improvements to GPU thermal throttling behavior have been submitted and accepted upstream.

Version v1 of the mxsfb patch to handle nwl timing requirements was submitted for review upstream.

Support for max17055 has been added to the 17042 fuel gauge driver.

Work to enable the devfreq driver for the development kit continues.

Got busfreq (devfreq) kernel, ATF, DDR firmware and U-Boot working, as well as U-Boot booting from eMMC.

To ease the transition to a softpinned Mesa, this change keeps both the old and new memory allocation strategies around so that old and new versions of Mesa will still work.

Some issues with the module that provides Wireless LAN and Bluetooth have been completed, solving problems with firmware version reporting, slow connections and inconsistent throughput.

Keyboard

A new release of Squeekboard brings together efforts in a number of areas, both from the Purism team and from contributors from the forums and elsewhere.

Work on the keyboard layout for landscape screen orientation was completed, which overlaps with the more general problem of adjusting the keyboard to any display size.

The touchable area of buttons were made bigger to make typing easier and less error-prone.

The implementation of the keyboard is now approaching the original design with our first implementation of the language switcher, allowing users to easily switch between keyboard layouts.

Support for multi-codepoint sequences has enabled layouts to be created for more complex writing systems, such as Japanese Kana scripts.

Contributors have been submitting layouts for different languages in the simple YAML format that Squeekboard uses to describe where all the symbols are placed. Here’s a list of layouts that appeared or were updated in October:

Translation activity continues to be discussed in the forum.

Messaging

Chatty has been renamed to Chats to aligne with the naming standard of other GNOME applications.

Interoperability between Chats and Contacts was improved to make it easier to access contacts in Chats.

Translations have been updated from the Zanata translation service.

Flatpak builds of Chats now include libphonenumber and enable it in Evolution Data Server.

We fixed the following issues:

Shell and Compositor

Phosh 0.1.2 has been released. You can find the code, tagged in the repository.

Previously in October, we released Phosh 0.1.1, with contributions from Hysterical Raisins and Bart Ribbers. In tandem with this, Phoc 0.1.1 was also released, with contributions from Simon Ser, Aleksis and Bart Ribbers. Phoc was uploaded to the amber distribution of PureOS, making it available to all PureOS users.

Phoc now handles power button presses to blank/unblank the display.

Unix signal handling were simplified.

Although not purely a shell feature, an on-screen keyboard stub was added to Phosh. The is the final piece to allow the usage of Phosh’s PureOS packages without any special hacks.

On a similar theme, a gbp.conf file was added to the repository to make releases of Phosh simpler.

Meanwhile, Phoc started using its own defines for XWayland selection instead of relying on those from wlroots, and keybinding handling was improved.

A number of fixes were ported between rootston and Phoc, preparing us for switching to a newer version of wlroots. This needed doing because our fork of wlroots was getting old.

To help improve performance, we started packaging a softpinned Mesa that improves performance by employing a different memory allocation strategy.

Looking ahead, a fix to the Debian Bullseye build of Phoc anticipates future updates to the distribution used, and this is also reflected in the work to enable Phosh builds for Bullseye, too.

Also with future features in mind, the display server was turned into a GObject in preparation for dynamic keyboard layout switching.

We fixed the following issues:

missing icons in activity switcher for GNOME apps

GLib signal emission on layer-surface size changes

choosing an existing running application activates it instead of launching another instance now

running in a gdm session is detected to avoid double unlock

We fixed the following issues:

Calls and Audio Subsystems

Initial support for libfolks has been added to Calls, making it easier to integrate the application with others that use contact information.

More of interest to development kit users, Aleksander Morgado’s independent upstream port of SIM7100 voice support has now been merged. We’re very grateful for Aleksander’s efforts to support the SIM7100.

Wys now uses a machine-specific configuration database to discover the audio codec and modem in use. This means we no longer need device-specific packages to provide hardware configuration via systemd unit configuration files, as was previously the case.

Aleksander Morgado’s work on ModemManager emergency call support has been merged upstream, providing low-level support for emergency call provision.

Applications

Efforts to make GNOME Calculator adaptive have begun, though how it should be implemented is being reviewed by the Purism and GNOME designers.

GNOME Settings (Control Center) has seen gradual improvements over the month, with a new design for the information panel, a refactored cellular panel sent upstream. Now that the new gnome-bluetooth module has been packaged, the Bluetooth panel should work as expected. A new D-Bus API also enables the SIM card to be automatically unlocked when the phone starts up.

Since the phone is currently limited to using simple passcodes, a modification to pam (the Pluggable Authentication Modules library) allows simple numeric passwords to be used. This limitation is expected to be lifted in the near future.

Because it was previously very easy to accidentally dim the screen to a level where use of the GUI was very difficult, a fix to set the minimum brightness to 10 percent is much appreciated by those with development kits who were relying on the touchscreen as their only input device.

Support for NetworkManager secrets improves the experience of network authentication and connecting to wireless networks in general.

Some user experience improvements are needed to make the phone easier to use, even if they duplicate functionality that already exists. One of these involves asking the user to unlock the SIM card automatically when the user starts the phone and the modem is enabled using the hardware switch.

Design

The Design team has been reviewing merge requests to the Podcasts application, including one to port it to use HdyViewSwitcher .

Mockups for Phosh landscape mode were created, anticipating how the shell will look in landscape mode.

Infrastructure

Documentation for the available image types is lagging behind the state of the art. Until the developer documentation catches up, see this snippet for hints and tips on the naming scheme in use.

Packages for the phone are being built for PureOS. With that in mind, it’s useful to provide separate debug packages, to keep packages small for users while still providing debugging symbols for developers.

To make things work well on PureOS, we need to work around the use of an older version of systemd in the PureOS amber distribution.

When developing software on a platform, it can be useful to have a collection of tools that assist in development. The librem5-dev-tools package is used to conveniently install such tools in a similar way to the standard Debian/PureOS devscripts package.

Documentation

October is the month where our focus shifted onto the user documentation. Despite this, contributors made sure that parts of the developer documentation were kept up-to-date.

Christophe Roux submitted a documentation hint for downloading Librem 5 system images and Julian Hofer submitted a change to remove direct DConf access from the Flatpak permissions guide.

Initial versions of the phone’s user documentation, including the user guide and quick start guide, were produced. These are expected to evolve over time, especially between batches of phones, as the software and hardware are updated and upgraded.

Until next month!

The Librem 5 Software Team