Benefits of using Upstream Linux¶
Currently, Replicant uses device specific Hardware Abstraction Layers, because device manufacturers implemented non-standard kernel interfaces. However, Android works with upstream kernels and supports plug-n-play hardware nowadays, so it makes sense to have generic Hardware Abstraction Layers for the standard interfaces of the Linux kernel (ALSA, V4L2, etc).Benefits:
- It would allow supporting external WiFi dongles such as the ones supported by the ath9k_htc driver and free firmwares without the need for a specific application or configuration.
- It would make devices last longer by alleviating the device specific maintenance burden: If LineageOS stops supporting a Replicant supported device, Replicant would need to maintain it by its own. This would require a lot of work, unless the device is already supported the upstream Linux kernel and generic hardware abstractions layers. This would enable Replicant to support devices that are not currently supported by LineageOS.
- It would enable the support for devices that are or will be added to upstream Linux.
- Adding a generic WiFi HAL for external dongles only requires a device that is supported by Replicant, and that can provide enough power for the dongle.
- For the other standard interfaces (like ASLA, etc) a device running a upstream Linux Kenrel with as few patches as possible is required.
Devices¶It is best to use a device that requires the least amount of work to be functional under Replicant.
More precisely we want to minimize:
- The work needed to have the device usable with upstream Linux.
- The work porting or writing Android hardware abstractions layers.
- requires no or very minimal work to be fully supported by Linux.
- have less hardware features (so we don't need to support them in Linux and in the HALs).
- is easy to buy, so the work can be shared among multiple people.
It is also a good idea to keep one image per device, as trying to make a single image that
would work on all ARM device supported by upstream Linux is complicated: Even ARM GNU/Linux
distributions still have some issues with that.
Smartphones and tablets with a free software bootloader and work in progress upstream Linux support¶
|Optimus Black||omap3-sniper.dts||no display(no driver), very few peripherals|
Replicant supported Samsung Exynos devices¶
|i9100 (Galaxy S II)||exynos4210-trats.dts|
|i9300 (Galaxy S III)||exynos4412-trats2.dts|
Allwinner devices¶Devices with Allwinner SOCs are an interesting targets because:
- Many of them do not use signed bootloaders.
- Many of the SOCs and various devices using them have good Linux and u-boot mainline support
For instance the Lime 2 from Olimex is pretty well supported and is easy to find.
However this device is a single board computer and, as such it doesn't have the have the usual peripherals that are commonly found in tablets and smartphones. This makes a port on this device less relevant and less useful.
Some research is needed to identify which devices are easiest to work with. Tablets that don't have a modem seem to be better than smartphones, as supporting the modem would require to have it supported in Linux and the userspace libraries. This might even require to write and upstream a Linux driver for the modem.A good tablet for this task should have:
- A SOC that has good mainline support, see the Linux mainlining effort page on linux-sunxi for more details.
- A Free software bootloader, or the ability to easily add support for the tablet to a free software bootloader.
- The ability to power and use an USB WiFi card or chip that is compatible with the ath9k_htc driver.
It would also be better if the chosen tablet doesn't use an AllWinner SOC with a PowerVR GPU, as MALI GPU have more probability to be usable with free software in the future.
Upstream userspace hardware support libraries¶