2 Years of Mobian
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 287 | |
Author | ||
Contributors | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/56927 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 202286 / 287
2
4
6
8
12
17
21
23
31
35
37
41
44
45
46
47
50
62
65
66
67
68
71
73
81
84
85
86
90
92
94
100
102
105
111
114
115
116
117
118
121
122
124
127
131
133
135
137
139
140
141
142
145
149
150
156
164
165
167
169
170
171
172
174
176
178
180
183
184
189
190
192
194
198
205
206
207
208
210
218
220
224
225
229
230
232
235
236
238
239
240
242
243
244
245
246
249
250
253
260
262
264
267
273
274
277
282
283
287
00:00
Software maintenancePhysical lawWordEmbedded systemContext awarenessRootIndependence (probability theory)Presentation of a groupProjective planeMedical imagingMultiplication signCountingTouch typingMereologyNeuroinformatikDistribution (mathematics)BootingPoint (geometry)Computer hardwareOcean currentNormal (geometry)Physical systemRootKernel (computing)SpacetimeWeb 2.0Computer fileProcess (computing)Software developerTelecommunicationCompilerSoftware repositoryMultilaterationOrder (biology)Cartesian coordinate systemBitWordFreewareSoftwareGoodness of fitDifferent (Kate Ryan album)Term (mathematics)outputSoftware maintenanceFile systemInformation privacyOperating systemExterior algebraAndroid (robot)CoprocessorGraphical user interfaceCASE <Informatik>Software engineeringLine (geometry)Keyboard shortcutSmartphone19 (number)PlanningComputer configurationDevice driverConnectivity (graph theory)DataflowNetwork topologyRoutingFocus (optics)Integrated development environmentWebsiteTable (information)Traffic reportingAxiom of choiceForcing (mathematics)NumberFlow separationDiscrete element methodBeat (acoustics)Open setDiagramMeeting/Interview
10:08
Latent heatComputer hardwareDigital rights managementOrder (biology)ModemLink (knot theory)Personal identification numberBefehlsprozessorDistribution (mathematics)Hacker (term)Latent heatMereologyComputer hardwareInterface (computing)Device driverDefault (computer science)BitPower (physics)SoftwareMathematicsSource codeFile archiverKeyboard shortcutRevision controlPulse (signal processing)Cartesian coordinate systemAsynchronous Transfer ModePatch (Unix)BootingRepository (publishing)Physical systemProcess (computing)FirmwareKernel (computing)Overlay-NetzSoftware testingFunction (mathematics)CASE <Informatik>Streaming mediaSystem callSlide ruleLine (geometry)DemonCodeUtility softwareMultiplication signRoutingCausalityModule (mathematics)VideoconferencingAudio file formatReal numberForcing (mathematics)Food energyForm (programming)Network topologyLevel (video gaming)InternetworkingMatching (graph theory)Traffic reportingTouch typingPoint (geometry)Metropolitan area networkEndliche ModelltheorieRight angleDirection (geometry)Configuration spaceTouchscreenGastropod shellStatuteMeeting/Interview
20:02
Scripting languageGamma functionDew pointMessage passingInclusion mapConfiguration spaceMeta elementCore dumpLevel (video gaming)Multiplication signWordSoftware maintenanceSoftware repositoryAdditionCASE <Informatik>Focus (optics)Binary codeBootingFirmwareAsynchronous Transfer ModeSource codeBitTask (computing)Gastropod shellOrder (biology)Physical systemServer (computing)ArmComputer architectureBridging (networking)Process (computing)Group actionEmulatorInstance (computer science)VideoconferencingOcean currentMereologySoftwareOnline helpMatrix (mathematics)BuildingMedical imagingPolar coordinate systemBasis <Mathematik>Projective planeCoprocessorHacker (term)PlanningWeb 2.0Software developerKernel (computing)Patch (Unix)FreezingFrequencyWhiteboardLatent heatComputer hardwareSurfaceTablet computerMoment (mathematics)Vapor barrierFile archiverFlow separationKeyboard shortcutMusical ensembleShared memoryBeat (acoustics)Traffic reportingRing (mathematics)System callLine (geometry)Shift operatorPoint (geometry)Normal (geometry)Form (programming)Military baseMeeting/Interview
29:56
CodeMereologyCrash (computing)Latent heatLine (geometry)NumberModemPatch (Unix)Different (Kate Ryan album)Kernel (computing)Scripting languageBootingBitComputer animationMeeting/Interview
31:55
CodeScripting languageShape (magazine)Term (mathematics)Line (geometry)Source codeLatent heatDiscrete element methodMeeting/Interview
32:29
Personal digital assistantCore dumpDigital rights managementConfiguration spaceModemLink (knot theory)Functional (mathematics)SoftwareArmMatching (graph theory)Term (mathematics)Existential quantificationMeeting/Interview
33:53
Integrated development environmentQuicksortCore dumpAdditionPlanningMereologyGraphical user interfaceGastropod shellMeeting/Interview
34:54
System callPlanningCondition numberNormal (geometry)Cartesian coordinate systemRight angleMereologyMeeting/Interview
35:49
Point (geometry)Goodness of fitCASE <Informatik>Process (computing)Insertion lossSummierbarkeitMultiplication signBitInstance (computer science)Meeting/Interview
36:45
Software developerMultiplication signBasis <Mathematik>BitNumberMeeting/Interview
37:23
Projective planeRight angleMultiplication signMereologyGraph coloringSource codeOpen source2 (number)Meeting/Interview
38:08
Group action2 (number)Meeting/Interview
38:40
Computer animation
Transcript: English(auto-generated)
00:15
Hello everyone and welcome to this presentation. My name is Arnaud and I'm the founder of the Mobion project.
00:22
I talked to you about how Mobion was born and evolved over the last two years. First I'll talk to you a bit about the history of Linux on mobile device, highlighting the recent rise of Linux first phones. Then I'll continue with how I went on to run Debian on a pine phone.
00:45
Along with the main issues we had to solve in order to be able to use a pine phone as a daily driver phone. next I'll present you the Mobion infrastructure and workflow, basically how we develop and maintain this distribution,
01:04
along with our plans for the future. But first a few words about myself. I've been an embedded software engineer working on embedded Linux software for almost 10 years and part of my job is actually to create and maintain Debian based distributions for the embedded industry.
01:24
I've been a longtime free software enthusiast and Debian user which led me to create Mobion about two years ago and I eventually became a Debian maintainer later in 2020.
01:40
So first, what about the current mobile OS market? For now, as you probably know, it's effectively an iOS Android duopoly. There are very few alternate choices and even fewer free software available as an alternative to both these big operating systems.
02:04
And this raises concerns about privacy due to the use of proprietary software and long-term support because basically the hardware is supported only as long as the vendor is willing to do the effort
02:20
to support it. So having community driven mobile operating systems would be an answer to that. And there were actually a few previous attempts at making Linux phones. One, I won't go through them all but mostly they evolved into community driven
02:45
projects, for example WebOS became Loon OS, Maimo, which was Debian based, evolved into Maimo Lestre, which is based on Dev1, Debian fork. Selfish OS gave birth to Nemo Mobile and he wouldn't to touch is now maintained by the community
03:06
and more specifically the UBports Foundation. Only Tizen, I don't think they were picked up by any community, but anyway, all of those attempts were mostly backed by
03:22
corporations and while things didn't end very well as they were all dropped at one point or another. But then something happened and in 2017, Purism announced the Librem 5,
03:41
which was to be a Linux first device using a general purpose system and chip, one of the NXP IMX series, so they envisioned using the IMX 6 in the beginning and finally switched to using the IMX 8, which is a 64-bit processor and so is
04:04
probably better for the future. These system chips have pretty good mainline kernel support, so we don't rely on a vendor-only kernel, which too much difference is from mainline to be able to support it in the long term.
04:22
And they're very friendly to community development and basically, they develop the software for the Librem 5 in the open and are completely willing to accept external contributions. It took quite a bit of time to actually ship
04:42
from the initial announcement, but then something else happened, which is that Pine64 announced the PinePhone in 2019, which is also a Linux first device, also using a general purpose SoC, in this case the Allwinner A64, which is also quite well supported by mainline Linux kernels.
05:06
And one major difference is that Pine64 doesn't do any software development themselves, and they completely rely on the community for that. So, with these two new phones,
05:23
could I be able to run Debian on my smartphone, the same way I use Debian on all my computers for quite a few years? My PinePhone arrived a few days before for the M20, so basically two years ago.
05:41
There were already several distros available for it, but no Debian image was available at the time. I don't count Ubuntu Touch because it's indeed Debian-based, but it's quite different from a normal
06:01
Linux distribution, desktop Linux distribution. So this wasn't an option for me, even though I tried it and quite appreciated this system. But anyway, the Librem 5 happens to run a Debian derivative, which is pure OS, so how hard can it be?
06:23
The first steps were to get the bootloader and kernel to boot on the PinePhone. And actually, the Pine64 community did a great job at making those available from the beginning, so I just had to clone the repos and cross-compile
06:43
both components, and I was able to pretty much easily boot on the PinePhone. Then I stacked a basic stripped-down Debian user space root file system on top of it,
07:00
which was generated using debos, which is an amazing tool for that, using yaml files to configure how you want your rootfs and just generate the image pretty easily. So in the end, booting Debian on the PinePhone was quite easy, surprisingly easy even.
07:22
And then I should go on and try to run some mobile environment, some graphical environment on this phone. So, as I was pretty hyped by all the purism communication about the Librem 5, I wanted to
07:41
try out and run Foch on my PinePhone. And as I figured that pure OS was a Debian-based distribution, I wondered if I could use directly the binary packages without doing any recompiling and something like that.
08:02
So unfortunately, that wasn't possible because at the time, pure OS was based on Debian Buster, which was the stable release at the time, and my work was being based on Debian unstable and later on Debian Bullseye, which was testing.
08:22
So I quickly ran into major dependency issues, and in the end, I resulted to cross-compiling everything for Bullseye, which was not that difficult because while all the Debian packaging was already
08:41
designed for a Debian-based distribution, but still it was a manual process, quite long and tedious, but in the end, it did not work. And I had Debian running on my PinePhone and booting into Foch and being actually quite usable.
09:03
So I decided to distribute the images and set up a repo on my personal web server, built the image locally and then uploaded them. It was a manual process at the time, things improved a bit over time, but I'll get back to it a bit later.
09:21
And overall, there was a great reception from the community for these images, and that led me to carry on development on Mobian, or at least what was to become Mobian. It was just called Debian plus Foch at the time. And so we had to
09:42
think about and solve a few issues in order to be able to daily drive such phones. The first one was call audio. I'll get back to it in a minute. Then the battery life was a bit short in the beginning.
10:02
And finally, we needed usable applications. We were in order to install them easily on the phone. So we got with two audio routings. There are mainly two use cases.
10:21
On the phone, you have the normal use, which outputs audio from the integrated speaker, and all the audio streams are generated on the device itself, so to say.
10:41
So, either it's a music file you have on your phone or a video you're streaming on the internet, the actual audio stream is generated on the device itself. And then you have phone calls when you want to output audio in general from the earpiece speaker,
11:04
and the one of the audio streams, because it's obviously a bi-directional stream, one of those streams is generated from the modem, and the other one when you speak on the phone is to be sent to the modem.
11:23
So that brings a lot of complications and pretty specific processing to get all of this right. And obviously we want to switch automatically between those use cases, and not forget to switch
11:41
to detect and switch to the headset when one is plugged in. So in the beginning there were no way to root cause using only Pulse Audio, and actually some of the Pulse Audio modules would get in the way of how we would expect things on a phone.
12:05
So we first had to patch some of the Pulse Audio source code. We also used software that Purism had developed for the Librem 5, which is WISS. It's a small daemon which detects
12:23
the status of phone calls and basically creates software streams, audio streams between the modem and the main audio interface. This is something that only applies to the Librem 5 because on the PinePhone and the PinePhone Pro
12:42
there's only one audio interface available to the system and this one has to be configured in order to root audio to and from the modem or to simply output the system sounds. So we heavily modified WISS
13:00
so it would switch the audio routing use case based on the call status and then had to modify also the calls application because it used hard-coded system calls to the Pulse Audio command line utilities in order to switch to the speaker or to mute the microphone for example.
13:27
And actually the title of this slide is an actual line of code extracted from an old version of the Pulse application.
13:42
So we came up with Core Audio D, which isn't a very original name, but still it basically handles all the audio routing changes and provides a simple D-Bus interface for doing so. So it doesn't do much automatically,
14:03
only headset detection and switching actually. All the other changes it can do such as selecting the audio routing use case, enabling the speaker or muting the microphone during call,
14:21
all must originate from another piece of software which we call the D-Bus interface for Core Audio D and then it will act depending on the request. Core Audio D has been integrated into the FORGE ecosystem and actually it originated from some discussions with
14:43
Purism developers. So it's now the default for any FORGE-based mobile distribution. and the next topic was the battery life. The A64 is naturally a power efficient system and chip.
15:03
The modem includes its own sock actually running a full Linux system. And we also have the Wi-Fi adapter which consumes quite a bit of power due to being also a separate chip. So in the end we had to suspend the system as frequently as possible so we can save battery.
15:27
And yeah, in this regard, Samuel Holland did a great job at creating the CRUST firmware which allows to run the PinePhone in a very minimal energy mode.
15:45
So it can be suspended and actually wake from suspend when a phone calls arrives or when you press the power button. But suspend had some issues on the PinePhone mostly related to the modem.
16:03
Basically what was happening is that when resuming from suspend the modem wasn't always recognized and we would need to reset the USB link. On top of that we had to act on some pins of the CPU in order to start
16:24
and shut down the modem when we were booting or shutting down the phone. And there were a bunch of commands we needed to set to the modem once it was powered on in order to configure it properly for the PinePhone.
16:41
So with all those issues in mind I created EG25 Manager which basically addresses all these points. It's a system daemon running in the background and when the phone boots it starts up the modem,
17:01
checks when the modem is fully booted and then configures it. And over time it monitors the modem status so that it can reset the USB link in case the modem doesn't come back from the suspend.
17:21
It's now widely adopted on the PinePhone and also works on the PinePhone Pro. So still another valuable contribution from Mobian to the mobile ecosystem. And finally in order to reach daily driver status we needed to package a bit more mobile friendly software.
17:46
This actually happened in as part of the DBN on mobile team which is an actual DBN team bootstrapped by Guido from Purism. And so as a team we maintain a whole lot of mobile friendly software.
18:05
For now these are all the FORGE packages for the compositor, the shell, the on-screen keyboard. We also maintain modem manager as part of the DBN on mobile team, colodod and a whole lot of other mobile specific software.
18:25
So in the end the packages we want for Mobian go directly to DBN whenever possible, mostly through the DBN on mobile team. And Mobian only holds a few very specific packages.
18:40
There are around 60 source packages for now in the Mobian archive. And one quarter of those is packages which we need to patch and such patches cannot be unstreamed in any way. So we have to carry on a boot downstream version in our own repository.
19:07
Packages which are not accepted into DBN yet or they haven't migrated into testing. As you may know Mobian is only a small overlay on top of DBN testing which is currently Bookworm.
19:25
And so the packages which are only in DBN unstable are waiting for approval before being included in the DBN archive. They are not available to Mobian users so we have to carry those packages too.
19:43
And there's about 15 of them at the time. And finally half the specific packages we carry are Mobian specific hacks or hardware specific patches. This includes kernel packages, boot loaders.
20:02
We also have a few binary firmware packages and the Mobian tweaks and meta packages which we also carry as part of our package. So what's the current stages of Mobian and what are we doing for developing it?
20:29
First a few words about the infrastructure. As I mentioned previously, originally I only did a quick and dirty repo on my personal web server
20:41
and over time I improved things a bit by automating some tasks with shell scripts, small hacks and all of this was driven through cron jobs. But then at the end of last year, at the beginning of last year sorry,
21:02
we had we released the Mobian community edition Pinefall which was a special edition sold by Pine64 and came with Mobian pre-installed on it. So this was a major milestone for the project. It allowed us to grow as a community and it resulted in a substantial donation from Pine64
21:27
as they gave us basically $10 out of each Mobian Pinefall sold. This allowed us to buy a norm64 build server.
21:42
Basically before that we only had an x86 server and so we had to resolve to emulation in order to build foreign packages and we had to integrate it into the
22:01
build system and the current infrastructure at the time. So we figured that we would distribute builds using the GitLab CI and simply make our servers BCI runners so that way we would have the x86 packages built on the x86 server
22:26
and all the ARM architecture packages would be dispatched by GitLab to the ARM64 server. It's really working well and it actually saved us a lot of time in the past few months.
22:42
We also have automatic package publishing when we push specific tags to the source code repo. So it builds the packages basically for all the three architectures we support and then uploads the resulting binary packages to the repo.
23:03
We also have a few interesting things basically generating Docker images on a regular basis. These are used both for development and for CI to use and recently we also moved the image build process to CI.
23:24
Mobian currently supports all the Linux-first phones currently on the market which are the original Pinefall, the Pinefall Pro and the Librem 5. We also support the PineTab obviously and we provide images for x86 devices
23:45
so that standard PCs and x86 tablets can be supported quite seamlessly. Actually it was successfully tested on several Surface Pro and Surface Go tablets.
24:02
And we also have support for a few Android devices using the Snapdragon 845 processor and these devices are the OnePlus 6 and Pocophone F1. So for the future, our first plan is to make Debian great for mobile devices,
24:27
obviously support more devices as much as possible and maybe have you on board for contributing to Mobian. So the first thing of importance is that we want to improve Debian
24:43
so it's more mobile-friendly which means we need to import a few more packages into Debian and also contribute to some existing Debian packages which is well underway at the moment. We also need to rework our specific tweaks and hardware specific patches
25:06
so they can be acceptable to Debian and finally migrate into the main Debian archive. And all of this will hopefully be done during the year because next year, early next year,
25:23
the Bookworm freeze period will start prior to the release of Bookworm as the next Debian stable release. So we need to reduce the Mobian versus Debian delta in the meantime and we'll hopefully be able to make Bookworm the first fully mobile compatible Debian release ever.
25:49
So that's our goal for this year and we hope it will all go well. We also want to support more devices so for that we have some improvements to the build system being worked on.
26:05
It should make it easier for external contributors to port Mobian to other devices. However, a few words about the quote-unquote core Mobian team priorities.
26:24
We're a very small team and so we don't have time to support many devices so we decided we would focus on mainline based on lead devices. So no vendor kernel will be allowed into Mobian and all the devices we'll support will need to have
26:51
a valid mainline based kernel in order to be included into Mobian. We'll obviously make the priority for the Linux-first devices
27:06
and so I mentioned those a bit earlier but in case other Linux-first phones are released later this year or in the coming years we will very much like to support them.
27:24
And finally we'll focus on a few Android devices mainly those from vendors with which we share some ethics. Such vendors are for example Fairphone and Shiftphones and actually we have
27:46
currently been able to boot Mobian into text mode on the latest Fairphone 4 so we expect great news to come in the coming year. But obviously we welcome external contributions
28:02
and especially for devices which would not fit into the core team priorities. So Snapdragon 410 based devices would be great candidates for Mobian support but as we don't have the time to support them ourselves we would welcome any external contribution
28:25
aiming at bringing those to Mobian. So feel free to talk to us and hopefully any device will be welcome as long as we have maintainers for those. So in addition to device support maintenance
28:44
you could also help with the baseline maintenance which is basically packaging new software for Mobian and helping us update existing packages and we also need a lot of help on QA
29:00
and more generally testing. So feel free to reach out to us on one of those channels we're mostly active on Matrix but our channel is bridge to IRC2 and you can monitor development on both the Mobian GitLab and the Debian Mobile group on Salsa which is Debian's GitLab instance.
29:32
Thank you for watching this video and I'll be available in the chat to answer the questions you might have about this talk. Thanks!
30:18
Okay we are live. Thanks for the interesting talk and we have a couple of questions
30:24
starting from the most popular. Where do you see the most potential to reduce the delta between Mobian and Debian? Well there are two aspects to it. The first one is obviously upstream patches so that the few packages we have to carry with downstream patches are able to reach
30:49
upstream and therefore trickle down to Debian but one of the most important parts what we need improvements is the older Mobian specific tricks and mostly the device specific tricks. So
31:03
there are a few leads for example we could have some one single package which would hold a few different tricks per device and have a script running on first boot identifying the device and basically making sure everything is configured properly for the for the time being.
31:23
And also obviously mainlining a bit more devices and making sure that actually part of the upstream work but making sure we can get our downstream patches into the kernel as well so we can use the Debian kernel in the future. Maybe it's worth clarifying how big are the
31:49
tweak packages and how much code we are talking about? I don't have any precise numbers but we're talking about 30 source packages basically and most of those only holds a few scripts and
32:07
specific tricks so I'd say it's about 50 lines of code per device so just have to figure out a way to either upstream those or get them into a shape which is acceptable to Debian but it's not
32:24
much work in terms of lines of code themselves. Thankfully they are very small thank you. Next question is about ege25 manager. Is it going to be a long-term solution for the pine phone or are there ways to upstream its functionality into something else like modern manager?
32:44
I'm afraid the ege25 manager is here for the long run because it pretty much goes way beyond the scope of modern manager itself. We have lots of custom configuration going into it such as 80 commands being sent to the modem on the once it's booted so that we get
33:07
proper audio configuration for the pine phone or the pine phone pro this is very device specific there are also 80 commands for uploading the GNSS assistance data
33:21
and a whole lot of custom things and basically the core of ege25 manager is to reset the usb link when the modem fails to come back from suspend and this is basically a giant hack which I believe would never be acceptable to software like modern manager
33:41
so unfortunately I don't think it will go away anytime soon. Thank you. Moving on to the next question. Are the other environment like sxmo in scope as well? We would be very thrilled to
34:02
support other environments and that include Lomiri that include plasma mobile sxmo and swmo as well and maybe moi shell in the future and so on the only thing that's missing for us to do so is basically packaging manpower. We're really a small team we focus
34:25
mostly on the core mobian packages and also as part of the jibian on mobile team on all the foesh ecosystem but we would really much welcome anyone willing to contribute support
34:41
and packages for other graphical environments and that would be a really really nice addition to mobia. Thank you and then last question. Do you have plans to package foesh anti-spam?
35:02
We didn't package it initially because I seem to remember it was the ultimate plan for foesh anti-spam is to be merged into norm calls itself or at least developed as part of this application and this package so we basically pushed back on that depending on
35:27
how fast it's going to evolve with upstream good on course we might eventually provide a transitional foesh anti-spam package as a standalone application but that's something we could
35:41
discuss yeah. Thank you again I think these are all the questions I have from the chat right now and if anybody wants to ask more questions please don't be shy. Some people are pointing out
36:20
that packaging can be time expensive especially for devian maybe here is worth pointing out that
36:26
some of the packages are currently maintained only for mobian and they live on the salsa github instance and in that case it can be a little bit easier as an entry point to
36:41
get things started with packaging. Indeed and I'd like to add that devian packaging can be challenging in the first times when you don't really know about it but you it's not that difficult and once you get the basis and you get a bit more practice it becomes it feels way
37:03
easier and you just get automatisms and it shouldn't something you should be afraid of honestly and you get a great community to mentor you and help you with any questions you might have especially in the devian mobile team. A new question popped up is the development
37:25
funded by collabora? Partly it's there's no official project on the collabora side but it's a company that allows me to spend some of my working hours working on any open source
37:43
projects so basically I think the last for the last year 2021 I spent in total about two weeks full-time waiting working on mobian on collabora time and that's part of the company
38:01
policy so I'm really glad that could happen. Thanks we have 30 seconds for a very last question. If there is a specific reason for having a group named mobian one instead of mobian on gitlab? Yeah the mobian name was already taken on gitlab and it's probably a corporate
38:24
group because it's not it's private it's not available publicly so we had to use the mobian one name. Okay we have five seconds left thank you very much. Thank you all bye.