The Librem 5 (and mobile GNU/Linux in general) has matured a lot over the years, but there are still some areas where the software stack is behind the hardware capabilities. Some of them are often talked about, such as camera quality or GPU (GLES3/Vulkan/OpenCL), but there are also lesser known ones in need of some plumbing and middleware infrastructure. Maybe you'll find something interesting to hack on there?

1/N 🧵

The GNSS module has an internal flash that can be used to autonomously store traces, letting the phone suspend and save plenty of power. It can also wake the phone up with geofencing. Right now you need to configure it manually with NMEA commands though, as there's no high-level infra to use at all.

There's also AGNSS to speed fixes up. I wrote a script to generate almanac/ephemeris data, but you need to run it manually and it could be improved with SBAS and GLONASS: source.puri.sm/-/snippets/1207

Show thread
Follow

The touchscreen supports a low-power mode in which it can recognize some predefined gestures. It could be used to wake up the phone by, for example, double tapping the screen. Right now it just gets its power shut down as soon as the screen is blanked.

The audio codec has a quite powerful DSP that can perform frequency linearisation based on speaker's and microphone's impulse response - but it needs to be fed with configuration parameters.

Speaking of audio, since there are two microphones - one on the top and one of the bottom of the phone, they could be utilized for noise cancellation. Right now only the bottom one is used for calls.

Show thread

We're still missing a way to control the notification LED while the phone is suspended. There's a lightweight Cortex-M4 core that can keep running in suspend and some proof-of-concepts have been made to utilize it in the past, but nothing has been properly integrated so far.

Show thread

iio-sensor-proxy still needs some work in order to be able to use the compass: gitlab.freedesktop.org/hadess/

There's also a hall sensor which needs to be exposed to the userspace in some appropriate way: source.puri.sm/Librem5/linux/-

Show thread

That's all I can think of on the spot. Of course there's still the camera and GPU stuff, but these would need their own dedicated threads 😂 Feel free to hit me up if you want to hack on some of these things, I could likely offer some help and guidance.

Show thread

@dos Thanks for this very nice list. I've been using the #Librem5 for nearly three years as my daily, primary phone.

It is great to see that there is still so much potential for improvements. I hope that over time they will be added.

Thank you, and all others contributing to the #MobileLinux ecosystem for your great work!

@dos Would you have more information / some code? I found https://source.puri.sm/Librem5/Cortex_M4 but... If there's way to upload code there at runtime, that would be fun.

@pavel You can upload and launch code via remoteproc interface (/sys/class/remoteproc/remoteproc0)

There's an example code that blinks a LED in Zephyr: source.puri.sm/angus.ainslie/z

AFAIR the current obstacle to overcome is to make it continue running while suspended. It seems to do some weird things to interrupts too.

Sign in to participate in the conversation
Librem Social

Librem Social is an opt-in public network. Messages are shared under Creative Commons BY-SA 4.0 license terms. Policy.

Stay safe. Please abide by our code of conduct.

(Source code)

image/svg+xml Librem Chat image/svg+xml