How can I help?
-
@cliffcoggin hi, i'm way late but i found a nice short explaination of halium that finally made it click for me. i'm posting it here because perhaps @AppLee might find it usefull to add it to his short description:
"Halium is basically a custom version of Android build specifically to run services that speaks to Android hardware"
as these services make use of Android libraries halium also uses a wine-like "compatibility layer" to load those libraries in Linux called "libhybris"
as a closing note i would like to encourage you to not be discouraged when you feel like you don't understand much. i can tell you that few of the regular contributors understand the entire system completely. even the most knowlegable contributors started with zero understanding of the system, nay even the devs at canonical each "specialized" in specific parts of the os, while not knowing much about other part
-
@cliffcoggin @Fuseteam
I know little of the inner workings of my phone, I'm not software savvy, I'm just an Electrical Engineer with a groovy mobile, but I do often need to communicate with developers and system integrators in an industrial environment, so I think of of it like a trifle, with layers.
In this case maybe the bottom layer of sponge and jelly is your phone hardware, the next layer of fruit may be the kernel, followed by the custard layer of the operating system, a sprinkle of broken buscuits are all the apps you load on the operating system, and the user interface is the top layer of chocolate sprinkles and cream. We only see the top layers of chocolate sprinkles and cream, but we taste the whole trifle when we use our phones.
I may have got this all wrong, as I said before I'm not software savvy, and I'm not a chef. But in principle I think some types of sponge don't taste good with the rest of the trifle so developers need to add another layer of flavour to make it bind and work. So I think Halium is a layer added between the sponge and the fruit on some phones to make the whole trifle work. I think the Cosmo that I'm writing this on is a bit of an 'Eton Mess', but it tastes good. -
@Fuseteam and @MonCon
For a good understanding of what is Halium, I'll refer you to the latest Q&A at this day:
https://youtu.be/1OGK2lIV8DQ?t=1920During this question, Florian share a graph explaining how things interact.
https://youtu.be/1OGK2lIV8DQ?t=2055Note: The links have timestamps to the right moment...
So basically if I'm correct, Halium is an open source project based on android that provides the blue parts so Ubuntu Touch can access the hardware (on the graph: GPS, Pulse, Media, Ofono) or more precisely the vendor's firmwares to communicate with the hardware.
Also from the https://halium.org project page, they also include the kernel used by android for a given device... which (as Florian said) can be a very old unpatched kernel.Updating the kernel is very hard because Google and vendors customized the kernel to fit a specific need at the time and this work would have to be done again... but blindfolded and with a skeleton crew.
@cliffcoggin the gap is not that big.
Things have names and within a thing there are other things with more specific names.
To fill the gap you just need to refer to a box diagram like the one shared by Florian and understand roughly what are the main components. If you need to tackle a specific problem you'll be able to identify one or in the worst case two boxes of interest.That's a starting point, then you can focus on the interesting box and build your knowledge from the bottom up.
For instance, I'm an IT engineer for 15 years now and I'm unable to know the difference between TWRP, recovery mode, flash tool and other names like that.
Some are "generic" names, some trademark or tools, but I don't care.
What I understand is that they are needed at some point to deal with the bootloader (that I understand as I worked on embedded software). But even a bootloader is not a clear notion...
For example a PC will have a BIOS (it is technically a bootloader AFAIK) and then you have GRUB (which is another bootloader) then your OS.
But wait, a bootloader is an OS which task is to run another OS...
Embedded architecture can be confusing and there are many technical terms that you have to learn and debunk to understand a thing.To make an analogy with a car, in order to work on a car, customize it or fix things, you don't have to know how to build an engine or how threads on a bolt are made.
You can add an alternative fuel line without knowing how the ignition works.Anyway I think it's important we (the community) can explain how things work so people with no or little knowledge (but with passion) can join the effort and improve our beloved OS.
I will just be explicit that even if I'm a technical guy, my knowledge about Ubuntu Touch is very limited. But I know the broad strokes behind Linux, an OS and embedded software.
And so you know, I learned mostly by trial and error and reading/asking when I felt stuck. Not at the University. -
@applee thanks for the links, i've been following the groups as well, and now i found a short description on telegram that made it click for me:
Halium is basically custom version of Android build specifically to run services that speaks to Android hardware
edit: i just noticed i already posted that did that description not suffice?
edit2: ok so i found an (older) image of the diagram florian showed
my current understanding is that the bluebox is "halium" although in florian's diagram the bluebox is considerably larger hmm -
@fuseteam
Halium is larger than this blue box but it gives the idea...
Halium includes also the kernel and drivers for GPS, accelerometer, screen, cameras as well as oFono.AFAIK (and I'm reaching my limits) a porter can use Halium as a base and add the Ubuntu Touch parts... (Lomiri, system apps, system libraries, ...)
Sorry I don't know the details on this. To know more, I guess the best course of action is to try and get your hands dirty porting...If I had the time, my plan would be to try to make a port for an existing Ubuntu Touch device.
This way you have a final result available for reference. -
-
@applee i'm fairly certain both the kernel and ofono are outside of halium, but i can't say that with absolute certainty. i agree the best way to understand it would be to try porting yes. i too wish i could make time for it
-
@fuseteam
The best source of information I can find is https://halium.orgProject Halium will contain:
- Linux kernel (source provided by device vendor)
- Android services required to talk with hardware
- Libhybris
In addition, Project Halium also aims to standardize the middleware software used by various projects to talk with android daemons and make use of hardware, for instance:
- OFono/RILd
- Camera service
- Pulseaudio / Audiofingerglue
- GPS
- Media codecs
-
@applee ah i need to read more thanks. tho i still don't know if "aiming to standardize middleware to talk to android daemons" means it's a part of halium or not
-
@fuseteam
According to me that would be the case.De facto if they include for example OFono to halium than projects based on halium will not have to integrate OFono on their side hence the standardization.
Of course any project can choose no to and hack off OFono to bring something else instead.
By incorporating OFono within halium they can also move towards less fragmentation by updating OFono for all devices at once aiming to a more plug and play integration.
I guess this is not it yet but that is probably a goal for ease of maintenance when new releases come out. -
@applee the thing is some halium operating systems don't use ofono, they use modemmanager iirc xd