Project

General

Profile

Upstream » History » Version 61

Denis 'GNUtoo' Carikli, 01/07/2019 10:58 PM

1 12 Denis 'GNUtoo' Carikli
h1. Upstream Linux
2 1 Denis 'GNUtoo' Carikli
3 57 Denis 'GNUtoo' Carikli
{{>toc}}
4
5 11 Denis 'GNUtoo' Carikli
h2. Benefits of using Upstream Linux
6 2 Denis 'GNUtoo' Carikli
7 11 Denis 'GNUtoo' Carikli
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).
8 2 Denis 'GNUtoo' Carikli
9
Benefits:
10
* 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.
11 46 Denis 'GNUtoo' Carikli
* 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 also enable Replicant to support devices that are not currently supported by LineageOS with a lot less work.
12 11 Denis 'GNUtoo' Carikli
* It would enable the support for devices that are or will be added to upstream Linux.
13 2 Denis 'GNUtoo' Carikli
14 22 Denis 'GNUtoo' Carikli
As GNU/Linux expects standard kernel interfaces, this would also enable to run GNU/Linux out of the box on such devices.
15
This has some interesting outcomes:
16 46 Denis 'GNUtoo' Carikli
* The device specific work could be shared between GNU/Linux communities and Replicant communities. This could result in less work to do to support individual devices. Since Android libraries depends on Android's libc, non-standard proprietary libraries might be harder to reuse than the free software implementations, so we might get even more collaboration thanks to that.
17
* It would enable GNU/Linux distributions to more easily support smartphones and tablets, which would hopefully enable FSDG distributions to be able to focus on usability instead of hardware support. This way, if one day Android devices stop using the Linux kernel, stops being free software, or if the code takes directions that are too much problematic, already having GNU/Linux based Android alternatives would reduce the amount of work needed to be able to get again a fully free software distribution for smartphones and tablets.
18 23 Denis 'GNUtoo' Carikli
* Older devices with less amount of RAM than Replicant current minimum requirements could be used with GNU/Linux and possibly repurposed for other usages, reducing the amount of electronic devices waste.
19 22 Denis 'GNUtoo' Carikli
20 2 Denis 'GNUtoo' Carikli
h2. Requirements
21
22 11 Denis 'GNUtoo' Carikli
* For the other standard interfaces (like ASLA, etc) a device running a upstream Linux Kenrel with as few patches as possible is required.
23 2 Denis 'GNUtoo' Carikli
24 4 Denis 'GNUtoo' Carikli
h2. Devices
25
26 5 Denis 'GNUtoo' Carikli
It is best to use a device that requires the least amount of work to be functional under Replicant.
27
More precisely we want to minimize:
28 11 Denis 'GNUtoo' Carikli
* The work needed to have the device usable with upstream Linux.
29 5 Denis 'GNUtoo' Carikli
* The work porting or writing Android hardware abstractions layers.
30
31
To achieve that we can choose a device that:
32
* requires no or very minimal work to be fully supported by Linux.
33
* have less hardware features (so we don't need to support them in Linux and in the HALs).
34
* is easy to buy, so the work can be shared among multiple people.
35 53 Denis 'GNUtoo' Carikli
* doesn't have more freedom flaws than the devices currently supported by Replicant
36 5 Denis 'GNUtoo' Carikli
37 54 Denis 'GNUtoo' Carikli
It is also a good idea to keep one image per device at first, as trying to make a single image that
38 55 Denis 'GNUtoo' Carikli
would work on all ARM device supported by upstream Linux is complicated: Even GNU/Linux
39
distributions have a hard time doing that for ARM devices.
40 6 Denis 'GNUtoo' Carikli
41 58 Denis 'GNUtoo' Carikli
h2. Linux upstream status
42
43 11 Denis 'GNUtoo' Carikli
h3. Smartphones and tablets with a free software bootloader and work in progress upstream Linux support
44 4 Denis 'GNUtoo' Carikli
45 59 Denis 'GNUtoo' Carikli
|_. Formfactor |_. Vendor |_. Product  |_. Linux dts |_. Linux status | Verdict |
46
| Smartphone | LG | Optimus Black | "omap3-sniper.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap3-sniper.dts | no display(no driver), very few peripherals | Too much work required |
47
| Tablet | Amazon | Kindle Fire (first generation) | "omap4-kc1.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap4-kc1.dts | no display(no driver), very few peripherals | Too much work required |
48 60 Denis 'GNUtoo' Carikli
| Smartphone | | GTA04 A3 | "omap3-gta04a3.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap3-gta04a3.dts |/3. http://projects.goldelico.com/p/gta04-kernel/page/UpstreamStatus/ |
49
| Smartphone | | GTA04 A4 | "omap3-gta04a4.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap3-gta04a4.dts |
50
| Smartphone | | GTA04 A5 | "omap3-gta04a5.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap3-gta04a5.dts |
51 31 Denis 'GNUtoo' Carikli
52 4 Denis 'GNUtoo' Carikli
h3. Replicant supported Samsung Exynos devices
53
54 43 Denis 'GNUtoo' Carikli
|_. Formfactor |_. Vendor |_. Product |_. Linux dts | Linux status page | Issues |
55
| Smartphone | Samsung | Galaxy S II (i9100)  | "exynos4210-trats.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/exynos4210-trats.dts  | | Probably has a signed bootloader |
56 61 Denis 'GNUtoo' Carikli
| Smartphone | Samsung | Galaxy S III (i9300) | "exynos4412-trats2.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/exynos4412-trats2.dts |/2. https://blog.forkwhiletrue.me/pages/midas-mainline/ | signed bootloader |
57
| Smartphone | Samsung | Galaxy Note 2 (N7100) | "exynos4412-n710x.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/exynos4412-n710x.dts | signed bootloader |
58 1 Denis 'GNUtoo' Carikli
59 27 Denis 'GNUtoo' Carikli
h3. Other devices with some upstream support.
60
61 33 Denis 'GNUtoo' Carikli
|_. Formfactor  |_. Vendor |_. Product |_. Linux dts |_. Linux status page |_. Issues |
62 51 Denis 'GNUtoo' Carikli
| Smartphone | Samsung | Galaxy SIII 4G (i9305) | "exynos4412-i9305.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/exynos4412-i9305.dts | https://blog.forkwhiletrue.me/pages/midas-mainline/ | Signed bootloader |
63 30 Denis 'GNUtoo' Carikli
| Smartphone | Nokia | N900 | "omap3-n900.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap3-n900.dts | https://elinux.org/N900 | Has a signed bootloader |
64
| Smartphone | Nokia | N9 | "omap3-n9.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap3-n9.dts | https://elinux.org/N9 | Probably has a signed bootloader |
65
| Smartphone | Nokia | N950 | "omap3-n950.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap3-n950.dts | https://elinux.org/N950 | Probably has a signed bootloader |
66 45 Denis 'GNUtoo' Carikli
| Smartphone | Motorolla | Droid 4 (XT894) | "omap4-droid4-xt894.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap4-droid4-xt894.dts | http://elektranox.org/droid4/ | Probably has a signed bootloader, may have a signed kernel requiring kexec |
67 33 Denis 'GNUtoo' Carikli
| Smartphone | | Nexus 7 (2012) | "qcom-apq8064-asus-nexus7-flo.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts | | Qualcomm SOC (signed bootloader, shared memory) |
68 35 Denis 'GNUtoo' Carikli
| | | | "qcom-apq8064-sony-xperia-yuga.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts |  | Qualcomm SOC (signed bootloader, shared memory) |
69
| | | | "qcom-msm8974-sony-xperia-amami.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/qcom-msm8974-sony-xperia-amami.dts | | Qualcomm SOC (signed bootloader, shared memory) |
70
| | | | "qcom-msm8974-sony-xperia-castor.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/qcom-msm8974-sony-xperia-castor.dts |  | Qualcomm SOC (signed bootloader, shared memory) |
71
| | | | "qcom-msm8974-sony-xperia-honami.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/qcom-msm8974-sony-xperia-honami.dts |  | Qualcomm SOC (signed bootloader, shared memory) |
72 36 Denis 'GNUtoo' Carikli
| Smartphone | | Nexus 5 | "qcom-msm8974-lge-nexus5-hammerhead.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts | | Qualcomm SOC (signed bootloader, shared memory) |
73 37 Denis 'GNUtoo' Carikli
| Smartphone | Samsung | Galaxy S5 | "qcom-msm8974-samsung-klte.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts | | Qualcomm SOC (signed bootloader, shared memory) |
74 39 Denis 'GNUtoo' Carikli
| | | Fairphone 2 | "qcom-msm8974-fairphone-fp2.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/qcom-msm8974-fairphone-fp2.dts | | Qualcomm SOC (signed bootloader, shared memory) |
75 27 Denis 'GNUtoo' Carikli
76 1 Denis 'GNUtoo' Carikli
h3. Allwinner devices
77 13 Denis 'GNUtoo' Carikli
78
Devices with Allwinner SOCs are an interesting targets because:
79
* Many of them do not use signed bootloaders.
80
* Many of the SOCs and various devices using them have good Linux and u-boot mainline support
81
82
For instance the Lime 2 from Olimex is pretty well supported and is easy to find.
83
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.
84
85
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.
86
87
A good tablet for this task should have:
88
* A SOC that has good mainline support, see "the Linux mainlining effort page on linux-sunxi":https://linux-sunxi.org/Linux_mainlining_effort for more details.
89
* A Free software bootloader, or the ability to easily add support for the tablet to a free software bootloader.
90
* The ability to power and use an USB WiFi card or chip that is compatible with the ath9k_htc driver.
91
92
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.
93 1 Denis 'GNUtoo' Carikli
94
h2. See also
95
96
* [[Google Summer of Code 2018]]
97 12 Denis 'GNUtoo' Carikli
98 19 Denis 'GNUtoo' Carikli
h1. Userspace
99
100
h2. Upstream userspace hardware support libraries
101 1 Denis 'GNUtoo' Carikli
102 17 Denis 'GNUtoo' Carikli
|_. Usage |_. Replicant |_. GNU/Linux |_. comments |
103
| Bluetooth stack | BlueDroid | Bluez | |
104 47 Denis 'GNUtoo' Carikli
| GPS hardware support | ? | gpsd | |
105 16 Denis 'GNUtoo' Carikli
106 20 Denis 'GNUtoo' Carikli
h2. Upstream non-hardware specific userspace
107 18 Denis 'GNUtoo' Carikli
108
|_. Usage |_. Replicant |_. GNU/Linux |_. comments |
109
| Unix command line tools | ? | Busybox, Coreutils | |
110 44 Denis 'GNUtoo' Carikli
111
h2. Other projects interested in using upstream Linux and/or contributing to it
112
113
* "Postmarketos":https://wiki.postmarketos.org/wiki/The_Mainline_Kernel