Maemo Leste - New Year update: May 2022 - January 2023

Merlijn Wajer, Thu 12 January 2023, News

bullseye, calls, chimaera, contacts, conversations, droid4, funding, mesa, performance, pinephone, rtcom, sphone, telepathy

First of all, happy new year to everyone following along.

This is probably our last blog post before our Beta release. This latest update focuses heavily on cellular software and drivers as well as other communication features, but there's also a healthy amount of bugfixes and performance improvements mixed in.

(Also check out our previous update in case you missed it).

Highlights:

Images and upgrading

Devuan accidentally let their signing key expire (something which has happened to us in the past as well). This meant that any Devuan (and thus, Maemo Leste) user would no longer get updates from the Devuan repositories unless they manually took some action. Our packages were unaffected, so we have just imported the devuan-keyring package into our repository. By simply updating and upgrading twice, you should be all set again.

Some of our images failed to build for a while, but this issue has now been resolved.

Funding

Back in August 2022 we applied for funding in the "NGI0 Entrust" fund of NLNet, and they have approved our proposal, which focuses on improving our mobile effort in a few key areas:

The project page of our proposal can be found on the NLnet website, along with our now finished previous proposal. (And don't forget, we've also finished a project with DAPSI in 2022)

Hardware & Drivers

Pinephone

Pinephone support has been greatly improved with the help of freemangordon on the graphics side and rafael2k on the kernel and camera side. rafael2k is our pinephone kernel maintainer.

The pinephone kernel will move to Linux 6.1 for Chimaera. pine64-kernel PR #4 added a newer kernel and initial camera support, pine64-kernel PR #5 then added v4l support, pine64-kernel PR #6 added some more fixes. pine64-kernel PR #8 and pine64-kernel PR #9 made the usbnet work again.

Graphics

In one of our previous updates we had mentioned we fixed the graphics corruption bug at the expense of some performance. We have since fixed the problem properly in clutter by adding support for the buffer age extension and now the performance is once again great. There are still some issues to be tackled: landscape mode is not as snappy as portrait, hitting some slow path in glamor.

We believe users may find Maemo Leste in portrait mode one of the snappiest experiences they might have seen yet on the pinephone.

Camera

We have imported libcamera and the ov5640 firmware thanks to the work of rafael2k, who is also working on packaging a V4L-based camera application which is also used on Sailfish, called Harbour Advanced Camera - so we might soon have a (default) camera application.

Mapphones (Droid 4, Bionic, etc) and Nokia N900

Our kernel for the mapphones and Nokia N900 is now at version 6.1, with various changes to the graphics and modem stack, as well as some other changes.

Modem

The modem support has been greatly improved by freemangordon, to the point where all known bugs seem to be fixed. In the past, calls to the modem would sometimes time out or simply not happen, which would lead to all kinds of problems. It would also take a long time for the modem to show up, and sometimes required restarting ofono, which would also occasionally crash. All of these problems are now resolved. Issue #445 and issue #530 describing those problems are thus now resolved. The commits can be found in this ofono branch, and kernel commits 64655c0c, 977de3af and 1b2a0860 are also required.

The latest kernel also contains a commit to work around the kernel suspending the audio in a call, which combined with the latest sphone, make calls work with headphones, earpiece and speakers on the mapphones and Pinephone.

Some intermediate development kernels broke the modem on the N900, causing the device to bootloop - this remained broken for quite some time, but has since been fixed - apologies for the inconvenience caused by this.

Graphics

The X11 (DDX) driver now supports Xv video acceleration, which (as the name implies) accelerates the playing of videos.

The driver now also implements a cache for buffer objects, which drastically improves the scrolling speed in various applications that do not use 3D rendering, see xf86-video-omap PR #1.

There are also some fixes for some crashes and memory leaks that were occuring before. All of the commits can be found in the xf86-video-omap github repo.

Previously it wasn't possible to use GLES1 due to Debian disabling it by default (?), but we have now fixed this in our mesa package, see issue #606.

Miscellaneous

We now use the IIO driver for the accelerometer on the Nokia N900, rather than the input device based driver (see droid4-linux PR #3 - the IIO (Industrial I/O) subsystem is a better fit for the accelerometer, and we already support this.

Additionally, the N900 could no longer use USB networking and more importantly, could no longer charge because it did not detect when connected to a charger. This was also fixed in the kernel.

In the past we had reverted some commits to the Linux kernel that caused dramatic power consumption, but now this is no longer necessary as the interval can be changed via sysctl, see leste-config PR #32.

Bluetooth

Maemo Leste does not currently ship with any bluetooth UI, but blueman can be installed. Once the right kernel modules are also loaded, bluetooth ought to work. Wizzup tried to have his car connect to his Maemo Leste phone recently, but found various things still had to be fixed. The work described below is not yet integrated, as we don't have a (proper) Maemo UI for bluetooth yet.

The Class value in /etc/bluetooth/main.conf has to be set to 0x005a020c, which will make devices recognize your device as an actual phone. If you don't do this, some devices (like cars) won't even "see" your device.

After that, the car would connect to the device. From this point on, module-bluetooth-discover had to be loaded in pulseaudio if not already:

pactl load-module module-bluetooth-discover

Then, just running mpris-proxy will cause the car to detect any media player that supports mpris, for example mpd with mpdris2 installed. Furthermore, ofono and bluez will now also collaborate and handle calls correctly - making it possible to accept phone calls from your car!

The video below shows this in action:

Device porting

As of this news post, we have Maemo Leste booting on a Razr XT910 device after some Linux kernel changes by uvos and tmlind - but the display doesn't fully refresh properly yet. Most other things seem to work, though, see leste-config PR #33 and leste-config PR #34.

tmlind added kexecboot support for the Razr XT910/XT912, and Xyboard tablets model MZ609 and MZ617, which will allow us to boot Maemo Leste. The tablets also require some further work on the display bridge, but we're hoping that otherwise most things will start to work relatively soon on those too.

The devices already have kexecboot support, with this commit adding support for xt910, mz609 and mz617 and this commit fixing xt912 support.

While we already have initial support for the Droid 3 (XT862), it is not yet stable and the device very frequently resets - we hope to address this soon, but we don't have a clear idea about what exactly causes it yet.

Core Software additions and changes

rtcom (real time communication) framework

The "presence" UI is now ready, allowing one to change their presence from status menu.

Note the green circle in the status area:

which shows as a status applet here as well:

which can be clicked to get to this dialog:

We have also added support for wildcard matching queries that search all the messages in the rtcom databases, allowing for fast message history searching in the conversations UI, see rtcom-eventlogger PR #1 and rtcom-eventlogger PR #2.

On top of that, we figured out how to have rudimentary multi-user and group chats work in Telepathy in conversations, but this is not yet available for testing for the general public.

The phone application also has seen various improvements. For example, after a call is finished, the window doesn't disappear immediately, but rather stays around for a few seconds so that the user can understand what happened.

The rtcom framework now allows setting up not just IRC and XMPP accounts, but also SIP (internet telephony) accounts, and during our testing we were even able to utilise slack-libpurple - but this is not currently packaged or well tested.

slack

Using slack-libpurple in telepathy-haze (a telepathy connection manager that can load libpurple/pidgin plugins), we got Slack to work, at least in a very basic fashion, on Maemo Leste. We were able to send direct messages to folks, including ourselves:

Here is the other side of that conversation (in the browser):

And here is an overview of the recent communications (names removed):

The telepathy-haze processes use about 8MB of RAM, which is a nice change from the many gigabytes that Slack typically uses in a browser tab.

cellulard

A new daemon was introduced to our mobile operating system, called cellulard. Its main task is to deal with the modem on a high level: it will, for example power and online the modem via ofono on startup, or offline the modem in case flight mode is selected.

This was necessary because nothing else configures the modem, but also to ensure that we would be able to show SIM PIN entry dialogs on start of the device, as there was previously no program putting the modem in the right state. If no PIN is required and flight mode is not on, the modem will just be put in the online mode upon start of the device.

As a result, flight mode now also works as intended.

maemo-ringtones

The maemo-ringtones package that we used to import from Fremantle contained some wrong paths and configuration files, which rafael2k has fixed in maemo-ringtones PR #1. This makes it so that in the near future the new images will actually use a ringtone out of the box (i.e. without any changes required by the user) when being called.

alarms

Alarms now work well. Before, alarms could be set, but they wouldn't actually vibrate the phone and play sounds, but this is all fixed now. To achieve this, we had to fix problems in our gst 1.0 port in the notify plugin and fix a crash. We also had to perform the same gstreamer work for the Qt gst 1.0 code.

calendar

With the addition of the address book as a default application, we have now also updated our instructions on how to synchronise your contacts, calendar and notes on the Sync wiki page.

notifications

hildon-home PR #2 provides a more up to date and compatible implementation of notifications as defined by freedesktop.org's org.freedesktop.Notifications DBUS specification.

input for gtk3

Thanks to the work of freemangordon, we now support the Hildon virtual keyboard in Gtk 3 (issue #537) - this is great news in particular for devices that lack a hardware keyboard, such as the pinephone and the Droid bionic. In addition, this also allows for switching keyboard layouts from Gtk 3 applications using hildon-input-method.

Gtk3 text input is shown below on the Droid 4:

(if you happened to see a mouse cursor, that's just how ffmpeg captures the touch screen events)

mobile data improvements

The libicd-network-ofono package (for mobile data) has seen a lot of improvements, see all the commits from September 18th - making it now a quite usable plugin.

DHCP for mobile data has been fixed now (see libicd-network-ipv4 PR #4, and one of the shell scripts is now also more sh compliant (see libicd-network-ipv4 PR #6).

Additional Software changes

hildon-application-manager

The Hildon application manager no longer shows debug symbol packages, which was quite pointless for most users and showed every package twice - once for the actual package, and once for its debug symbols.

Furthermore, in the process of porting hildon-application-manager to Chimaera (which was actually quite a sizeable undertaking), we have fixed the problem that made the application crash when the "Details" button was being pressed.

There are also updates to the Bulgarian translation.

qtwebbrowser

In Chimaera, we have a custom qtwebengine build to ensure that qtwebbrowser can use 3D acceleration (unfortunately qtwebengine has a hardcoded list of Qt platforms that it supports, so we had to add "maemo" to this list). As a result, the browser is now much snappier. Additionally, the browser now also supports portrait mode in Chimaera. We'll be working on further integrating the browser in Maemo so that it's easier to interact with.

osso-xterm

osso-xterm now opens the browser when a link is touched / clicked upon.

Chimaera porting

As mentioned in other places in the post, we're actively working on porting Maemo Leste from Devuan Beowulf (Debian buster) to Devuan Chimaera (Debian bullseye).

Following Debian stable brings along the benefits of up to date software, timely security updates and in general new things that the free software ecosystem brings. In addition, we will also need to maintain less 'forks' of software: sometimes we have to provide a newer package of some software, which requires us to fork it to our own repositories and then build it in our CI, which in turns takes time and also requires us to stay on top of updates and fixes.

The Chimaera image will be our first image that provides working phone calls out of the box on several supported devices. Previously various cellular packages were hidden in the development repositories -- so our beowulf images never even powered on the modem by default.

The main remaining challenge for supporting Chimaera fully is supporting elogind compatible sessions, which we hope to finish in one or two weeks.

Progress can be tracked in issue #644 and pkgweb already shows the packages in Chimaera and the image builder has been updated to support building Chimaera images.

We do not yet encourage users to switch - we plan to have the full release ready in February and more details will emerge by then.

Community and supporting software updates

OpenFest 2022

Maemo Leste had a presence at the open and free software conference in Sofia, Bulgaria, in October of 2022. Wizzup gave a talk on Sunday, and we also had a very well visited stand during both days of the conference. Here we were showing off various devices that Maemo Leste runs on (anticlockwise from bottom left):

  • Allwinner LIME20 tablet in a metal enclosure with wifi and a LTE modem attached over USB
  • Motorola Bionic
  • Motorola Droid 4
  • Pinephone
  • Raspberry pi with a HDMI/USB touchscreen attached
  • Allwinner A33 tablet
  • Two more Droid 4

The Nokia N900 was missing from the stand as we forgot to bring one.

The photos below show off parts of the stand, starting with an overview of the stand:

Here is the tablet that freemangordon has made Leste work on (there are no dd'able images online at the moment):

Below is an OLIMEX LIME2 (Allwinner A20) board with a resistive 7" screen (800x480px) in a LCD Metal Frame box, with both a USB wifi dongle and an OLIMEX USB LTE module. This device was actually quite cool, since it was able to send SMSes and make phone calls, just without the audio routing that one would usually expect from a phone call (the USB LTE module doesn't allow for this). As such, it was basically a Maemo Leste tablet that can make phone calls. Various attendees used the device to call themself and noticed that indeed worked.

In this photo, it is showing a Jabber chat in Conversations.

We also had some cool propaganda stickers made for the conference, which were quite popular.

Documentation

We're working with a few folks to develop a centralised and organised place for developer documentation, and also to create a user guide. Hopefully we'll have something to share in a month or two.

Jenkins

Our Jenkins CI (Continuous Integration) setup, which we use to build all the packages for Maemo Leste was running into problems where its hard disk was filled up. We realised that every single build we ever did was saved to disk, which was causing it to fill up. Going forward, only the last three successful builds of each package are now saved.

Themes

We've been looking at using AI to upscale some of the background images of our themes using Real-ESRGAN. Most of themes were developed only for the Nokia N900, with a screen resolution of 800x480 - this makes many of the theme backgrounds looks a little ugly on the larger devices that we have. We've made pretty good progress with this, and hopefully in the next few weeks we'll push out a few 'upscaled' themes that genuinely look better on higher resolution screens.

The work on the beta theme can be examined in this directory.

Tor Hidden Service

Maemo Leste now has a Tor hidden service for its package repository. The URL is: http://maemopkgove3kc2xxzyuk26j3ict6qzbqi3govge3s6h5aokr2uo6eqd.onion

See issue #570 for a list that also includes the Devuan hidden service URL. Users will have to install apt-transport-tor for this to work.

Lapdock

Blago received a Motorola Lapdock and he managed to hook the Motorola Droid 4 up to it. Here is a frontal view:

A view from the side, with the Motorola Droid 4 being visible in the back:

Another view, but of the back of the lapdock:

Blago is still working on turning all of this into a package, but we will eventually have support for lapdocks (and other external displays, since this just attached to the HDMI port on the phone).

Extra packages

norayr has contributed various new packages:

translation gui

sanderfoobar is working on an offline machine-based (neural network) translation tool, with both command line and user interface, for Maemo. It is based on the same models and code that are used by Firefox Translations - he hopes to present this work in some shape in the next few weeks. Currently it can translate a sentence in under a second from and to various European languages. The project welcomes any projects that provide these cool features without relying on cloud services.

What's next

The author of this news post has made it a personal goal to switch from his Nokia N900 Fremantle phone to a Maemo Leste Droid 4 phone on February 1st, 2023 - exactly five years after the first Maemo Leste post. At that point, his contacts and messages will be imported onto the Droid 4 and the SIM will be moved.

For this to be achieved, a few tasks will still need to be completed:

Interested?

If you have questions, are interested in specifics or helping out, or wish to have a specific package ported, please see our bugtracker.

We have several Nokia N900, Motorola Droid 3, Droid 4 and Bionic units available for interested developers, so if you are interested in helping out but have trouble acquiring a device, let us know...

Please also join our mailing list to stay up to date, ask questions and/or help out. Another great way to get in touch is to join the IRC channel.

If you like our work and want to see it continue, join our effort!