 So, good afternoon. My name is Josebli and I work in Brno and I live in Kuzim and I'm one of two and a half developers of Nemo Mobile. This talk topic is the question. The question is if the Nemo Mobile is suitable for automating. So, first of all, are here some automotive professionals? Okay, so I apologize. You will see why. It's not really professional or for professional use probably or maybe we will see. Let's try to answer that question. To answer that question we have to look what is actually in Nemo Mobile. I will go through current status of the project. I will tell a little bit about its architecture. And I have some automotive demo also. And yeah, I have few details about project. You can hear mobile in the name of the project and it can tell you that we are focusing on the mobile phones. So, we would like to have mobile phone with all Linux distribution to make phone calls etc. Currently we are developing that on PinePhone. I have one device here. So, let's try it, play with that. There are no sensitive data so you can do whatever you want. If it crashes, then it crashes. If you don't return it to me, you have to develop it instead of me. So, be careful. You can try to run it also on PinePhone Pro. I have proof of concept on QT Pi tablet. I have image it was running but right now I don't have device. I'm using it in my KVM virtual machine. You can find in ARM profiles, repository list of devices which are supported so you can try other device. Some people was trying to run this distribution on Android devices or they are using Halion layer which allows to run distribution with Android device. So, on the picture you can see the VolaPhone. So, the code name is Iqtrasil. I've seen some Xiaomi, Redmi devices and others. If you are interested, you may try your own device but it's more work to do. So, the operating system looks like this. It's basically open source rework of Sailfish OS UI. We have three screens, one with notification, one with task list and one is up launcher. So, we have some UI. We are using mallet keyboard to be able to write something. It's great that you can connect to Wi-Fi and debug it. Not only with serial cable but also with Wi-Fi or through Wi-Fi. USB networking also works quite good. We can control the phone using buttons so you can turn it off, you can change volume. Of course, as geeks we need terminal. And while at terminal you can install applications using Pacman. You can see Pacman. It means we are using distribution based on Arc Linux, namely Manjaro. Manjaro provides to us many packages as kernel, auto tools, CMake, GCC and others. With Nemo Mobile, we are extending that with roughly 150 packages. Roughly 70% are taken from Mareproject. If you don't know Mareproject, it's MeGo, Resurrected. It is part of stack which is used in Sailfish OS. And Viola is maintaining a big part of those libraries, which is great. You can see some examples of those libraries. We have our own for Ophono. As you can see, we are not using Network Manager and Modern Manager. We are using Conman instead of Network Manager. We are using Ophono instead of Modern Manager. Yes, again some examples of applications. So this is setting application and browser. If you know Sailfish OS, then you know that Sailfish OS is using Qt-56, which is, I would say, ancient. One of the reasons to move to Manjaro was to use up-to-date Qt. So currently we are using Qt-515. We have our own Qt-Quick controls. Those Qt-Quick controls are based on Qt-Quick controls 1, which are incompatible with Qt-6. We are working on port for Qt-6 right now. It is a lot of work. We are moving slowly because it is a weekend project. It is not our day job, so it is really slow. We are pushing back patches to Sailfish OS, to YOLA, and they are merging it mostly. We are using some middleware or wrappers around other libraries, which are named Nemo QML plugin, which is basically interface into QML to use other things, like TimeDemon, which can provide backups and so on. We have our own UI application, we call it Glacier, and those are examples of user experience you can have. 80% of screens you can see on the device. That was Nemo itself, and now let's try to answer the questions. Is this ready for automotive? No, that's a short answer. I unfossed them this year, and there were some stand-with automotive demo, and they told me, if you expect that you will get that device and put it into the car, you shouldn't do that, you shouldn't expect that. It's platform, it's 80% ready. I told to myself, okay, now we are speaking about percentage of matching of some expectations. Let's try to do that with Nemo. I think we have at least few percent of match with automotive expectations. I have found some paper from Qualmar, Anders and Wikingson, and they have this picture of architecture, and if you look carefully, I know the letters are small, you can see, okay, home screen. We have home screen, so one point for us. Bluetooth, Wi-Fi. Okay, we can connect to Bluetooth, we can connect to Wi-Fi. Wow, move so much. AM, FM, we don't have that. Actually, behind the whole stack in Nemo for telephony, it's actually necessary to work with audio profiles, because when you want to make phone call on mobile phone, you need to switch profile. When you receiving phone call, you have to switch the profile back after the phone call is over. You need to support Bluetooth headsets and so on. So we have quite a lot of packages which are managing those audio profiles. So I expect we can be close to that requirement. We have some media browser, telephone contacts, navigation sort of. I don't know why social media apps are mentioned twice. Maybe more social media is better, but we don't have them. And the email application doesn't work quite well right now, so I would say we don't have it so far. Yeah, we can go deeper in the stack, so we have some native HMI, we have some other things like location services, we have some kernel for sure. So we have many components in Nemo and it is hard to say if it's like 50% of match or how much. It's up to you actually that you should provide answer to me if you think if it fits. For sure, Nemo mobile needs a lot of love. There are a lot of bugs, but it can be platform for also for automotive. And now the question is to you, what are your expectations? Do you have some like fast boot of device boot up in two seconds or something? No, no one. Okay, let's move forward. I made some demonstration application with that OBD2 Bluetooth thing for $10 or something. And yeah, I was trying to make it work and I did actually fail and I don't know why, so maybe some expert can help me. I connected to device, paired it, made it trusted, connected to that. Using ARF command, I have created block device and that and sent ATZ command using Minicom and nothing happened. When I tried on other device like on x86, it was working, but not on the phone, not on ARM and I don't know why. So maybe someone can help me. I was not successful in that way. For the demonstration, I was trying to make GPS work in. And it is also not so easy. There are many combinations how you can connect it together. Modern distributions are using GALP2 interface in version 2 and it has some provider in QT, maybe most probably also in GTK and if you call some, it's QT location, if you call some positioning source, start updates, you can get data from GPS. For some reasons, we realized that GALP2 doesn't work for us as we needed. We had some issues with Mozilla location service, the GALP2 provider and therefore we switched to GALP1, which is not good thing. I think we need to change it back to GALP2, but it needs some time and some laugh. And as a consequence, we are taking QT from Manjaro. It has all shared objects for all providers, so GALP1 and GALP2, but it prefers GALP2 for some reasons. If you want to do it on the device right now, you need to remove user-related QT providers, GALP2.so file, then you restart device, probably, or application which is using provider, and then you can get to GALP1, and from GALP1 you need to get to GPSD or Mozilla location services, so MLSDB provider inside. Then you will have the position. If you want to go from the other side because the provider goes then to GPSD, then you can start GPSD and debug it using CGPS and you will get data. As far as I know, the GALP2 access directly to GPS, and it is a little bit easier, and Mozilla location service should work somehow, but I haven't dig into it deeply so far. Okay, that was about my proof of concept application. If you want to start developing a mobile, we have a pretty nice website which contains the description how you can install that on PinePhone, it's basically you will take the SD card and you will copy image on the SD card, then you put it into PinePhone and it boots, so it's pretty easy. We have description how to install SDK. Well, it means that you will install those packages to Manjaro virtual machine and then you can compile everything. Yeah, we have some description of our Qt quick controls because they have specific API and the most important is that you need to know the names of components to be able to choose the right one. Please try to contribute with code, that is the best option for me. I was writing some blog posts about progress of distribution, so every month one blog post with news about project. I was adding always section back to start with, but there are so many bugs that we need to solve them first, so you may look into those blog posts and you will find what is not working as we need. As I said, we are using Manjaro, so it is using package build scripts to rebuild instead of spec files, but it is very easy to understand if you can work with RPM. It is simply batch script which contains functions and each function corresponds to section in RPM spec file. It has some limitations, but it is much simpler than RPM I would say. If you want to start, you will probably need to go to NEMO packaging repository. It contains package builds for all our 150 packages, so you can start if you want to debug calendar, then you will start with Glacier calendar repository, you will see how it is built, what dependencies it has and you can track it down to issue. Then when you have package, you can build it locally using make package or build ARM package for cross compilation. Then you will probably build some image, so build ARM image will take the repository you will provide and will produce the image you can install on your device. There is a git repository which is called ARM profiles and it contains lists of devices which are supported by Manjaro. We are happy if you contribute also with something else than code, you can translate it, you can make some documentation, we are looking for some user interface drafts to implement, so if you are graphical designer you can draw something for us and we will be happy that we can try to implement it. If you spread the information, if you find some other developer who can help with project, if you write a review of operating system, again we will be happy that people will know about project. Money for living is also important, but it is like weekend project so it is not so important. We spent money for those strange devices, we are buying them for those money, so more money means more devices to hack. OK, demo time. It boots. I'm cheating a little bit. Now we put it. It says virtual machine. So the demo looks like this. So you can see the last screen. I can go to the second screen, gesture, third screen and back again to the first one. We have some nice applications like browser which is basically, oh it's broken. So when you want to close the applications you are going over the edge, same visual as the sphere and you just pull the application away. Then we have some settings. I have done. I have probably switched the scheme somehow incorrectly. I have some automotive demo. Nothing works. Strange. If you try camera on the blindfold, this is virtual machine so I can redirect USB and start camera on the device. And I have reached a bit more speed with some integrated camera on the laptop. And it's probably on drivers because a buying phone has a damp camera which needs a lot of things to compute. Like wide balance and those things need to be computed by software. You need to control switching of resolution because when you stream video you need lower resolution to be able to store it, compress it. In case of photo you need big resolution like you want to store 10 megapixel or something like that. So therefore it's difficult task and this is done somehow with live camera but it's not so easy to connect it to Qt application. Or the standard video or Qt multimedia API doesn't work with it so well. But there are drivers directly to live camera. And actually in Selfish OS they are having camera application which works with live camera and we are trying to have working applications for phone calls and those things opens door to automotive usage. So we have a lot of stack which tries to be prepared for those advanced use. We have also media player and so on. We have that for Qt 5, 15 so far and Qt 6 will be soon. So time for questions. We have 10 minutes. For discussion what do you expect, what do you want? Yes, that's good question. I am trying to use it in automotive. Well I know that Red Hat started recently with automotive and I wanted my talk to be accepted on Defcon. So that's answer. Yes please. The question is why the Selfish OS is stacked with old Qt version. I think the answer is licensing but it is not question on me, it's question on Yola. So I don't know exact reasons but I think the license in Qt 5, 6 was LGPL or something and in newer Qt it changed to GPL or commercial. So the expensive one or that could be answer but I'm not sure. Maybe they want stable environment because they have like big community of people and if they migrate to new Qt then everyone needs to update the application which can be travel. I'm not sure if anyone can hear me. So some other questions, if no, I hope that I will be... Oh okay, go ahead. What's your focus on process separation and picture? The question is how do we handle security in Nemo Mobile if we use Selenux and I didn't catch all the technologies you mentioned. Separation of processes etc. So that's good question. One of differences of Nemo Mobile right now from Sailfish OS is that we removed some security mechanism they have so they have some sale jail if I remember correctly and few others. And we are not using them but we expect to implement Selenux to be closer to desktop usage like to have Selenux based security. Speaking of process separation I don't know. One of things which Sailfish does is also, well it's nasty trick to reach performance. They are doing or they are launching application which loads all Qt Quick components on the beginning and on the startup of device and then it is using shared memory to access those components which is pretty fast but little bit insecure. So we moved from that approach also because of Manjaros have I think Fpicts flag the other is randomization flag in GCC or as default so this approach is not possible with that flag. So the answer is we are trying to move forward to move closer to traditional desktop distributions we are considering those options but I think we are really not security experts so it's hard to say if we are doing that correctly and it would be great if someone who is security expert can tell us this should be done differently. Thank you again for question, very good question. Go ahead please. The question is if Sailfish OS have full disk encryption I don't know I think yes it is there but we don't have it we don't have it in our system so far but we plan it. It's one of plant features. I'm not sure how do we want to do the encryption how do we enter the pin code as far as I remember PostmarketOS does that with some LVGL tiny application which is in a tramFS I don't know how Sergei plans to do that. Okay so if you don't have any other questions I will be here on DevCon also tomorrow and also today so feel free to grab me. I will try to do some mobile stand again tomorrow so I will try to bring my device, the pine phone with other operating systems than I had before I hope Pavel will borrow me the LibreM5 again to see other devices and yeah feel free to grab me, ask me, I will try to answer you and please contribute to the mobile, fix my bugs, I need that to work in. So thank you.