Free Maemo

Contents

Free Maemo

The purpose of this page is to document efforts to free the Maemo mobile environment as well as document the steps necessary to use the N900 device as a fully free phone.

At the time of writing, the N900 / Maemo 5 ship with a mix of free and nonfree components. Our goal should be to figure out how to use only free components while still maintaining a usable and enjoyable device.

Some discussion is happening at http://maemo.org/community/maemo-developers/double_checking_free-nonfree_packages/.

Components in need of attention

Graph depicting status of free/nonfree components on the n900:

(nonfree components are in red, free components are in black)


(taken from Toplevel Architecture page on the Maemo wiki)

NOTE: This list probably contains some items that are actually at the time of writing, actually free software. There is an email thread aiming to clarify this, and once those clarifications are made certain items will be removed from the following list of non-free packages.

Sharing plugins / libsharing

http://maemo.org/api_refs/5.0/5.0-final/libsharing-plugin/ch07.html

calendar-backend

Appears to be a free version:

http://maemo.gitorious.org/calendar-backend

libtime

Time management service is a new subsystem to provide a common library for all time-related (not alarms, though) services.

http://maemo.org/api_refs/5.0/beta/libtime/

libcityinfo

From [1]:

 Cityinfo library allows to get some informations about set of cities
 from all over the world. Each city is connected with one timezone
 (related to standard linux time zone database) so You can get local
 time in given city by calling functions from libtime (clockd)
 library.

Maemo mapper is apparently a free replacement: http://maemo.org/downloads/product/OS2008/maemo-mapper/

startup wizard

Presumably this is the "wizard" that appears when a user first logs in. This would be nice to be made free but is not critical.

factory store / clear user data

This would be nice to be made free but is not critical.

gypsy daemon

This appears to be free to me:

http://gypsy.freedesktop.org/wiki/

According to cool900: http://cool900.blogspot.com/2009/11/closed-source-components-in-maemo-5.html

(2009-11-13: Gypsy daemon in location framework is in free.)

liblocation / location daemon

Some information here: http://maemo.org/api_refs/5.0/5.0-final/liblocation/LocationGPSDevice.html

outdated stuff here: http://maemo.org/maemo_release_documentation/maemo4.1.x/node10.html#SECTION001027000000000000000

backup

http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Generic_Platform_Components/Using_Backup_Application

Address book / "Contacts" application

http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Using_Generic_Platform_Components/Using_Address_Book_API

Sits on top of evolution backend stuff. So might not be too hard to build a UI replacement that conforms to the the same backend?

Media player

This is allegedly nonfree

mission control

This is a strange one because Mission Control is itself free software, which is a Telepathy component:

http://mission-control.sourceforge.net/

However they apparently have some nonfree bits:

<wjt> paroneayea: MC itself is LGPL [15:13]
<wjt> paroneayea: Maemo uses osso-mission-control, which is upstream MC plus
some proprietary bits

rtcom-eventlogger

Apparently recently freed according to:

http://cool900.blogspot.com/2009/11/closed-source-components-in-maemo-5.html

libaccounts

http://rtcomm.garage.maemo.org/docs/libaccounts/

SSO

????

Not even sure what this is. Supposedly single-signon related?

PulseAudio PEP

From [2]:

 PulseAudio plugin to manage volume levels, re-route streams and
 eventually forcefully shutdown streams.

libplayback

From [3]:

 libplayback is a client API that allows an application to declare
 its playback state. The library uses D-Bus to talk to a central
 component that manages the states. Media applications can use the
 API to synchronize their playback state.

EAP

From [4]:

 The EAP (Entertainment Audio Platform) package is used for audio
 post-processing (music DRC and stereo widening).

AEP

From [5]:

 AEP (Audio Enhancements Package) is a full duplex speech audio
 enhancement package including echo cancellation, background noise
 suppression, DRC, AGC, etc. Both EAP and AEP are implemented as a
 PulseAudio module.

FMTX middleware

From [6]:

 FMTX middleware provides a daemon for controlling the FM
 Transmitter. The daemon listens to commands from clients via dbus
 system interface. The frequency of the transmitter is controlled via
 Video4Linux2 interface. [...]

Funambol SyncML

Claims "Funambol is the leading mobile open source project and leading provider of open source mobile cloud sync and push email for billions of phones."

https://www.forge.funambol.org/DomainHome.html

If it's "open source", is it really nonfree then?

Appears to be under the AGPL? https://core.forge.funambol.org/source/browse/core/trunk/LICENSE.txt?revision=28308&view=markup

xml2wbxml

Appears to be linked to the wbxmllib project, which is under the gpl? http://sourceforge.net/projects/wbxmllib/develop

ICD2

From [7]:

 The Internet Connectivity daemon, ICd2, is responsible for network
 connectivity in the device. It is started at system boot time from
 the init script /etc/init.d/icd2, and stopped with the same script
 at system shutdown.
 Applications requesting network connections do not interact directly
 with ICd2, but instead use the shared libconic library API. The
 libconic library is the stable maintained API for network
 connectivity, which uses internal D-Bus APIs com.nokia.icd and
 com.nokia.icd2 APIs to communicate with ICd2. These D-Bus APIs are
 internal and may change without further notice.

libconic appears to be free though

https://stage.maemo.org/svn/maemo/projects/haf/branches/libconic/0.13/COPYING

Modem Services & Cellular Modem Software

Proprietary, hard to find documentation?

Presumably should be replaced and made free by OFono: http://ofono.org/ http://git.kernel.org/?p=network/ofono/ofono.git;a=summary

softupd

From [8]:

 Program for flashing the eMMC contents 
  - Unpacks a FIASCO image fed to it
  - Copies the unpacked contents to eMMC 

sysinfod

From [9]:

 Provide interface for accessing device information 
 Provide a DBUS interface to device specific information (HW id, WLAN
 MAC, …)

CertMan

Appears to be free or have a free implementation? http://gitorious.org/+mer/mer/certman

OpenGL ES 2.0

Can't seem to find out details about this package

There appear to be some free software implementation tests here, but not really usable?: http://www.khronos.org/developers/resources/opengles/

Vincent 3d is a free software implementation? http://www.vincent3d.com/Vincent3D/index.html

Hm, looks like the problem may be on the driver end: http://forum.openhandhelds.org/viewtopic.php?f=14&t=341

And it does not look likely that this is free or that it will be free soon.

Nolo bootloader

NoLo bootloader not only is proprietary and sucky, there's almost no documentation available for it anywhere.

Some questions here: http://maemo.org/community/maemo-developers/debian_on_the_n900-_configuring_nolo/

Could u-boot be a possible replacement?: http://www.denx.de/wiki/U-Boot

Nobody appears to have tried such a thing and there is no documentation on whether or not that will be possible.

In the meanwhile people seem to be using bootmenu as a workaround for this completely unconfigurable bootloader: http://talk.maemo.org/showpost.php?p=344412&postcount=16

However this isn't ideal, either from a practical or a free software perspective. U-boot is probably the best replacement option?

Flasher

http://wiki.maemo.org/Flasher

Not clear if this needs a free software replacement. If we can replace the bootloader, probably doesn't.

Is this a free software replacement?: http://www.nopcode.org/0xFFFF/

System UI

Part of the "System Control" whatever.

From [10]:

 SystemUI provides services to other components to display UI
 elements (dialogs, notifications, alarms) that does not have native
 UI on their own.

Powerlaunch aims to provide a free replacement: http://powerlaunch.garage.maemo.org/

DSME

Freed according to: http://cool900.blogspot.com/2009/11/closed-source-components-in-maemo-5.htmlci (2009-11-13: DSME is in free).

Part of the "System Control" whatever.

From [11]:

 DSME is responsible of device state management , process lifeguard
 support, watch dogs and thermal management. DSME architecture is
 based on modular plugin architecture. DSME core provides message
 handling capabilities to modules. Each module is dynamically loaded
 library. DSME runs in single process and is single threaded. The
 D-Bus interface provides services to request reboot, shutdown or
 powerup (from acting dead mode), indication of shutdown, thermal
 events and data save.

BME

From [12]:

 Provides battery monitoring and charging service. 
 Provides battery identification, monitoring, charging and BME API.
 TSS interface for A/D converter calibration.
 Emulation libraries for Nokia OS services. 

Clockd

From [13]:

 Provides centralized place for handling time.

MCE

From [14]:

 MCE is responsible of handling display control (active/dim/blank),
 activity monitoring (keys, buttons), keyboard backlight, ambient
 light sensor (ALS), LEDs and device mode control. In addition, MCE
 is responsible for providing interface to proximity, accelometer and
 vibra devices.

Powerlaunch aims to provide a free replacement: http://powerlaunch.garage.maemo.org/

IPHBD

Apparently used for synchronization, according to:

http://cool900.blogspot.com/2009/11/closed-source-components-in-maemo-5.html

Profiled

From [15]:

 Provides centralized place for handling (user) profiles related data
 and notifications.

sounds

icons

fonts

themes

SDK

maemo-scratchbox-install_5.0beta.sh is a shell script that claims to be proprietary software owned by Nokia. So does maemo-sdk-install_5.0beta.sh.