Jump to content

Mainline Linux kernel for F(x)tec Pro1X (SM6115) progress


Recommended Posts

Hey F(x)tec Community!

I haven't been here for a while as I was busy with other project and stuffs. Recently I just came back to work on mainline Linux kernel for F(x)tec Pro1X and I'll be using this thread to update everyone on the progress.

Currently only GPIO expander, touchscreen, USB, buttons and flip sensor. Everything else is not configured or doesn't work yet.

I attached dmesg for everyone to see.

bootlog_11282023.txt

  • Thanks 5
Link to post
Share on other sites
4 hours ago, denden said:

how does this differ from Droidian?

Droidian, like all functional alternative OS's for the Pro1X (Ubuntu, Sailfish, Droidian), works by specifically not using the "mainline" (i.e. upstream) Linux kernel. Under the hood, they all run a minimal version of Android 11, including its original (downstream) kernel version and closed-source driver binaries. That hidden Android OS is then interfaced from the GNU userspace via middleware layers like Halium and libhybris. While this technically works well, it also means that critical bugs in the driver blobs are present in these OS's just as if you were running the original Android 11 OS that came with the phone.

Using outdated binary driver blobs in more recent kernel versions is not and will never be possible. That's due to first principles of Linux's architecture. Mainlining is thus the only sustainable way for a hardware to be supported in the long run. Kudos to @Danct12 for their effort.

  • Like 2
Link to post
Share on other sites
16 hours ago, EskeRahn said:

The hardware drivers for both Pro1 and Pro1X are closed source AFAIK, so unless someone finds a clever way to use android drivers, I think it will be close to impossible to get things up completely Android-free.

Honestly with how this device turns out. I am no where near the idea of using this as a phone.

My original goal was to have primarily a pocket computer that just happens to be able to make calls and text. Now, my only use for it is a pocket computer. I only care about the keyboard, screen, and speakers really. I won't be using the camera much as my real phone has a way better one anyway. Fingerprint would be nice, but definitely can do without. I would love to be able to run plain old linux on it (I am seeing that my understanding was correct, that "mainline" linux is just that).

  • Like 1
Link to post
Share on other sites
12 hours ago, denden said:

I would love to be able to run plain old linux on it (I am seeing that my understanding was correct, that "mainline" linux is just that).

No, I think you got me wrong. No offence but, like many, you do not seem to understand what "Linux" really is. Do not worry, you are not alone in this. Especially people with many years of experience in running Linux on x86/64 servers or workstations often make wrong assumptions when it comes to embedded systems, like phones.

Android does use a real Linux kernel, and thus is a true Linux system. You can grab its kernel source from kernel.org, configure it to you liking and create your own custom ROMs based on it. The only limitation is that you practically can only run the single major kernel version (e.g. 4.19.xxx) your phone was shipped with. The profane reason for this is that all those drivers the phone's functions rely on are typically available only in binary form (as *.ko "kernel objects") from the vendor, and will only run together with the one kernel version they were compiled with. There is the purpose of "mainlining": reverse-engineer the driver code so it can be included in the living Linux source tree. Unfortunately that is a tedious process. But if we had the source code of all drivers, Android would be a completely open Linux system.

When you say you want to run "plain old linux", what you really mean is you want to run a "GNU system with a Linux kernel". Before the advent of embedded systems, the "Linux" vs. "GNU/Linux" thing was often seen as a purely philosophical debate. If you are willing to learn, Android can teach you a lot in this respect: While running on the Linux kernel, Android is not a GNU/Linux operating system. This is possible because the difference between a "Linux" and "GNU/Linux" system does not lie in the kernel, but in the C-library! The latter is as important a component of any UNIX system than the kernel itself, and the designers of Android decided not to rely on the GNU C library (glibc) -- as used in all those PC/server Linux distros you are used  to -- but to develop their own C-library: bionic. Almost all of those "Android is not real Linux" arguments collapse to nothingness once you understand that technical background.

Now, you and many others (myself included) have been looking for ways how to run a GNU/Linux-like environment  on their Bionic/Linux phones. That is where all those "Linux-like" alternative OSes (UB Touch, Sailfish, Droidian) come from. All those systems implement a middleware layer (libhybris) in-between their GNU userspace and the vendor-supplied Bionic/Linux base system. That middleware translates system calls from glibc to bionic so you can run all that open-source software we know and love. In my personal view, those systems do qualify as true GNU/Linux systems, even if relying on a vendor-supplied Bionic/Linux system (Android) underneath. My above comments about sustainability of course still hold. 

Edited by claude0001
  • Like 2
  • Thanks 5
Link to post
Share on other sites
2 hours ago, claude0001 said:

No, I think you got me wrong. No offence but, like many, you do not seem to understand what "Linux" really is. Do not worry, you are not alone in this. Especially people with many years of experience in running Linux on x32/64 servers or workstations often make wrong assumptions when it comes to embedded systems, like phones.

Android does use a real Linux kernel, and as such is a true Linux system. You can grab its kernel source from kernel.org, configure it to you liking and create your own custom ROMs based on it. The only limitation is that you practically can only run the single major kernel version (e.g. 4.19.xxx) your phone was shipped with. The profane reason for this is that all those drivers the phone's functions rely on are typically available only in binary form (as *.ko "kernel objects") from the vendor, and will only run together with the one kernel version they were compiled with. That's the purpose of "mainlining": reverse-engineer the driver code so it can be included in the living Linux source tree. Unfortunately that is a tedious process. But if we had the source code of all drivers, Android would be a completely open Linux system.

When you say you want to run "plain old linux", what you really mean is you want to run a "GNU system with a Linux kernel". Before the advent of embedded systems, the "Linux" vs. "GNU/Linux" thing was often seen as a purely philosophical debate. If you are willing to learn, Android can teach you a lot in this respect: While running on the Linux kernel, Android is not a GNU/Linux operating system. This is possible because the difference between a "Linux" and "GNU/Linux" system does not lie in the kernel, but in the C-library! The latter is as important a component of any UNIX system than the kernel itself, and the designers of Android decided not to rely on the GNU C library (glibc) -- as used in all those PC/server Linux distros you are used  to -- but to develop their own C-library: bionic. Almost all the those "Android is not real Linux" arguments collapse to nothingness once you understand that technical background.

Now, you and many others (myself included) have been looking for ways how to run a GNU/Linux-like environment  on their Bionic/Linux phones. That is where all those "Linux-like" alternative OSes (UB Touch, Sailfish, Droidian) come from. All those systems implement a middleware layer (libhybris) in-between their GNU userspace and the vendor-supplied Bionic/Linux base system. That middleware translates system calls from glibc to bionic so you can run all that open-source software we know and love. In my personal view, those systems do qualify as true GNU/Linux systems, even if relying on a vendor-supplied Bionic/Linux system (Android) underneath. My above comments about sustainability of course still hold. 

Wow, that was a fantastic explanation...I know explanations like the above take time, thanks!

no offence taken...I know I don't know much, but I enjoy learning technical things.

Link to post
Share on other sites

@EskeRahn , I think that other thread was much about running desktop-Linux-like systems in chroot environments or similar container techniques that all use the Android Linux kernel.

This one is specifically about mainlining progress. I do not think we have that already.

Edit: Ok see what you mean. This started to mix in the latest posts ...

Edited by claude0001
Link to post
Share on other sites
5 hours ago, EskeRahn said:

I wonder if this thread ought to be merged into the Pro1X with Linux thread, or there are reasons to keep it separate?

 

Haha    Actually it looks like the OP has already started posting his updates for this thread in that old thread.  Merge away!

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Terms