Currently running Meego/Mer/Nemo/etc on the N900 requires a number of
closed blobs.
This message is aimed at discussing the efforts to replace those blobs and
to make people aware of replacements for them where such things exist or
are being done. (the ultimate aim would be to have as little binary code as
possible I guess)
1.Bluetooth and WiFi settings modules (wl1251-cal-bin, libppu-bin,
libwl1251-bin, sysinfod-rx51)
Code is here
http://maemo.org/community/maemo-developers/replacement_for_bluetooth-sysinfo-and_plans_for_libcal_and_wl1251-cal/
and here
http://maemo.org/community/maemo-developers/replacement_for_wl1251-cal/
that will replace all of the above mentioned packages and do complete
bluetooth and WiFi wl1251 initialization.
Will need cleanup and creation of packaging though.
Replacing this stuff would allow the kernel drivers to be cleaned up so
that they don't need to expose non-standard APIs anymore (e.g. the
Nokia/Maemo specific Netlink stuff).
2.Pulseaudio (pulseaudio-modules-nokia)
Newest Mer/Nemo PulseAudio does not use these blobs anymore. However, there
may still be value in identifying which algorithms exist in these blobs
(including speaker protection) and writing (or finding) open-source
replacements where necessary/possible.
3.BME (contextkit-maemo-battery-rx51-bin and bme-rx-51-bin)
Code is here (including kernel drivers and stuff) to completly replace
bme-rx-51-bin and its contents
https://gitorious.org/rx51-bme-replacement
contextkit-maemo-battery-rx51-bin may need to be updated to work with this
(source for contextkit-maemo-battery-rx51-bin is available but it was
provided as pre-compiled because it links to libbmeipc which for various
reasons didn't have a public -dev package)
Would probably need a bit of cleanup to fit Mer/Nemo and its kernel and its
not 100% clear to me if this thing is 100% feature complete or not (e.g.
are there things in the BME CAL area that need to be handled)
Advantage of using this is that there is no longer a need to use a big
binary blob that no-one understands.
4.CAL (libcal-rx-51-bin)
Replacement exists here
https://gitorious.org/cal
that should be a drop-in replacement for libcal-rx-51-bin.
Will need cleanup/creation of makefiles, packaging etc though.
See #1 for the advantages of replacing this.
5.Camera (gst-nokia-camera)
The camera as currently implemented uses a binary blob (libomap3camd), a
module that links to it (the module is open source but the headers for
libomap3camd are not available so the module cant be rebuilt) and a couple
other modules that are 100% open.
Best way to replace this would be to port the 100% open FCam-n900 work.
That or write a new module that does similar things to libomap3camd only open.
Advantage of replacing this is that we no longer need binary omap camera
libraries (presumably they are closed because TI wrote the code for them,
not Nokia)
6.GPS (location-adaptation-rx-51, liblocation-headers)
GPS is handled through the cellular modem over ISI (same as calls, SMS etc)
There is a header file out there (in a Nokia QT SDK among other places)
called pn_location_isi.h that contains details of the ISI/phonet packets
and data necessary to talk to the GPS chip.
As far as I know, no-one has yet started working on an open GPS setup for
the N900. The way to replace this bit then would be for someone to take
pn_location_isi.h and from there write a new GPS system (or a plugin for an
existing GPS system)
Advantage for replacing this is possibility to plug directly into existing
GPS system without all the extra blobs being required.
I might have another poke at the GPS stuff (e.g. location-daemon, liblas,
libisi) if I get some free time to do it.
7.GPU (ti-omap3-sgx)
Again, as far as I know no-one is working on open source PowerVR drivers
(although the FSF has said its a high priority project due to the number of
mobile devices out there with PowerVR GPUs in them).
Advantage of replacing this would be that we are totally independent with
regards to kernel and X version etc.