Project

General

Profile

Upstream » History » Version 256

Kurtis Hanna, 08/21/2019 06:44 AM
grammar changes

1 12 Denis 'GNUtoo' Carikli
h1. Upstream Linux
2 1 Denis 'GNUtoo' Carikli
3 57 Denis 'GNUtoo' Carikli
{{>toc}}
4
5 100 Denis 'GNUtoo' Carikli
h2. Existing work
6
7
The issue #1882 has some documentation on where the work is being done
8
9 11 Denis 'GNUtoo' Carikli
h2. Benefits of using Upstream Linux
10 2 Denis 'GNUtoo' Carikli
11 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).
12 2 Denis 'GNUtoo' Carikli
13
Benefits:
14
* 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.
15 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.
16 11 Denis 'GNUtoo' Carikli
* It would enable the support for devices that are or will be added to upstream Linux.
17 2 Denis 'GNUtoo' Carikli
18 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.
19
This has some interesting outcomes:
20 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.
21
* 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.
22 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.
23 22 Denis 'GNUtoo' Carikli
24 2 Denis 'GNUtoo' Carikli
h2. Requirements
25
26 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.
27 2 Denis 'GNUtoo' Carikli
28 4 Denis 'GNUtoo' Carikli
h2. Devices
29
30 5 Denis 'GNUtoo' Carikli
It is best to use a device that requires the least amount of work to be functional under Replicant.
31
More precisely we want to minimize:
32 11 Denis 'GNUtoo' Carikli
* The work needed to have the device usable with upstream Linux.
33 5 Denis 'GNUtoo' Carikli
* The work porting or writing Android hardware abstractions layers.
34
35
To achieve that we can choose a device that:
36
* requires no or very minimal work to be fully supported by Linux.
37
* have less hardware features (so we don't need to support them in Linux and in the HALs).
38
* is easy to buy, so the work can be shared among multiple people.
39 53 Denis 'GNUtoo' Carikli
* doesn't have more freedom flaws than the devices currently supported by Replicant
40 5 Denis 'GNUtoo' Carikli
41 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
42 55 Denis 'GNUtoo' Carikli
would work on all ARM device supported by upstream Linux is complicated: Even GNU/Linux
43
distributions have a hard time doing that for ARM devices.
44 6 Denis 'GNUtoo' Carikli
45 58 Denis 'GNUtoo' Carikli
h2. Linux upstream status
46
47 11 Denis 'GNUtoo' Carikli
h3. Smartphones and tablets with a free software bootloader and work in progress upstream Linux support
48 4 Denis 'GNUtoo' Carikli
49 59 Denis 'GNUtoo' Carikli
|_. Formfactor |_. Vendor |_. Product  |_. Linux dts |_. Linux status | Verdict |
50
| 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 |
51
| 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 |
52 64 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/ |/3. Good fit: Free software bootloader, very few parts not upstream  |
53 60 Denis 'GNUtoo' Carikli
| 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 |
54
| 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 |
55 31 Denis 'GNUtoo' Carikli
56 4 Denis 'GNUtoo' Carikli
h3. Replicant supported Samsung Exynos devices
57
58 65 Denis 'GNUtoo' Carikli
|_. Formfactor |_. Vendor |_. Product |_. Linux dts | Linux status page | Issues | Verdict |
59 247 Denis 'GNUtoo' Carikli
| Smartphone | Samsung | Galaxy S (i9000)  | "s5pv210-galaxys.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/s5pv210-galaxys.dts  | https://github.com/PabloPL/linux/wiki (needs verified, but looks right) | * Probably has a signed bootloader. See the [[Upstream#Bootloader-status|bootloader status below]] for more information on it.
60 102 Denis 'GNUtoo' Carikli
* Has shared memory between the modem and the processor running Replicant
61 103 Denis 'GNUtoo' Carikli
* Is supported by Replicant 4.2 but not Replicant 6.0 
62 1 Denis 'GNUtoo' Carikli
* Barely meets Android 9 requirements | |
63 115 Denis 'GNUtoo' Carikli
| 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 (devboard or i9100?) | We don't know of anyone working to mainline the kernel, but an older kernel was updated that can run Android Pie https://github.com/rINanDO/android_kernel_samsung_smdk4412 | Probably has a signed bootloader | |
64 235 Denis 'GNUtoo' Carikli
| Smartphone | Samsung | Galaxy S III (i9300) | "exynos4412-i9300.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/exynos4412-i9300.dts |/3. https://blog.forkwhiletrue.me/pages/midas-mainline/ + "patch required for Samsung bootloader":https://github.com/fourkbomb/linux/commit/2a6027178ae40c1d3baa965fe21b19cbf09493ce ("reference":http://lkml.iu.edu/hypermail/linux/kernel/1212.1/01610.html) |/3. The first stage is signed. See the [[Upstream#Bootloader-status|bootloader status below]] for more information on it. | Good fit: Only the modem, touch keys, and small parts are missing upstream but are available as patches on top of it |
65 233 Kurtis Hanna
| Smartphone | Samsung | Galaxy Note 2 3G (N7100) | "exynos4412-n710x.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/exynos4412-n710x.dts (needs to be modified to exynos4412-n7100.dts via "this patch.":https://github.com/fourkbomb/linux/commit/8ce0752f2cc22b8f8fa980c21be802ea387f9a86) | Good fit: the LCD, the modem, touch keys, and small parts are missing but are available as patches on top of it |
66
| Smartphone | Samsung | Galaxy Note 2 4G (N7105) | "exynos4412-n710x.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/exynos4412-n710x.dts (needs to be modified to exynos4412-n7105.dts via "this patch.":https://github.com/fourkbomb/linux/commit/8ce0752f2cc22b8f8fa980c21be802ea387f9a86) | Good fit: the LCD, touch keys, and small parts are missing but are available as patches on top of it. The modem "might be in mainline":https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/clk/qcom/gcc-mdm9615.c?h=v5.2.7, but probably lacks firmware loading. |
67 248 Denis 'GNUtoo' Carikli
| Tablet | Samsung | Galaxy Note 8.0 (N51XX) | The platform is kona, not midas, but it might be fairly easy to port to mainline since it uses the same SoC, same fuelgauge, same audio, same radio chip, and maybe other parts apart from LCD and touchscreen as the i9300 and n7100 | * The bootloader is most probably signed. See the [[Upstream#Bootloader-status|bootloader status below]] for more information on it.
68 149 Denis 'GNUtoo' Carikli
* Soldered battery => Shops might be able to replace it
69
* Need to find a way to get access to the serial port => The special connector might have serial on it  |
70 1 Denis 'GNUtoo' Carikli
71 153 Denis 'GNUtoo' Carikli
h4. [PATCH] ARM: decompressor: Flush tlb before swiching domain 0 to client mode
72
73
Background on that patch:
74
* "v3.4 worked without that patch.":http://lkml.iu.edu/hypermail/linux/kernel/1212.1/02089.html This means that even with the patch, newer kernel could break at any time, which would force us to (1) understand from where problem comes from (2) look where it broke (3) try to find a way to fix it.
75
* It's needed because the proprietary bootloader turns on the MMU.
76
* It's possible to replace part of it by u-boot, avoiding the issue, but it's a tricky operation as the first part of the bootloader is signed, and needs to be replaced by a version that doesn't check the signatures.
77
* The boot order probably makes it difficult to recover the device if something went wrong replacing the bootloader.
78
* There is no procedure yet to get back to the original bootloader
79
80
"A response to the patch":http://lkml.iu.edu/hypermail/linux/kernel/1212.1/02099.html states:
81
<pre>
82
Yes. The MMU is suppose to be turned off by boot-loader before jumping
83
to the kernel. That explains the problem. No need to patch
84
the kernel here.
85
</pre>
86
87 154 Denis 'GNUtoo' Carikli
However it might still be possible to solve that as:
88
* Some arm CPUs require the Linux kernel to turn off the MMU like in "head-xscale.S":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/compressed/head-xscale.S
89
* Support for some specific bootloader do exist, for instance in "head-sharpsl.S":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/compressed/head-sharpsl.S
90 153 Denis 'GNUtoo' Carikli
91 143 Denis 'GNUtoo' Carikli
h3. Replicant supported Texas Instruments OMAP4 devices
92
93
|_. Formfactor |_. Vendor |_. Product |_. Linux dts | Linux status page | Issues | Verdict |
94 144 Denis 'GNUtoo' Carikli
| Smartphone | Samsung | Galaxy Nexus (I9250) | None | * "Status on PostmarketOS wiki":https://wiki.postmarketos.org/wiki/Google_Galaxy_Nexus_GSM_(samsung-maguro)#Mainline_Kernel_Status
95
* "mainline fork":https://github.com/drebrez/linux/commits/samsung-maguro | ? | Need to write a DTS |
96 148 Denis 'GNUtoo' Carikli
| Tablet | Samsung | Galaxy Tab 2 7.0 (P31xx) |/2. None |/2. ? |/2. * Soldered battery => Shops might be able to replace it
97
* Need to find a way to get access to the serial port => The special connector might have serial on it |/2. ? |
98 147 Denis 'GNUtoo' Carikli
| Tablet | Samsung | Galaxy Tab 2 10.1 (P51xx) |
99 143 Denis 'GNUtoo' Carikli
100 27 Denis 'GNUtoo' Carikli
h3. Other devices with some upstream support.
101
102 68 Denis 'GNUtoo' Carikli
|_. Formfactor  |_. Vendor |_. Product |_. Linux dts |_. Linux status page |_. Issues |_. Verdict |
103 82 Denis 'GNUtoo' Carikli
| Tablet | Difrnce | DIT4350 | "sun5i-a13-difrnce-dit4350.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun5i-a13-difrnce-dit4350.dts | | | |
104 83 Denis 'GNUtoo' Carikli
| Tablet | Empire Electronix | D709 tablet | "sun5i-a13-empire-electronix-d709.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun5i-a13-empire-electronix-d709.dts | | | |
105 86 Denis 'GNUtoo' Carikli
| Tablet | Empire Electronix | M712 tablet | "sun5i-a13-empire-electronix-m712.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun5i-a13-empire-electronix-m712.dts | | | |
106 81 Denis 'GNUtoo' Carikli
| Tablet | Gemei | G9 Tablet | "sun4i-a10-gemei-g9.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun4i-a10-gemei-g9.dts | "TODO in the dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun4i-a10-gemei-g9.dts#n66 | | "Missing touchscreen":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun4i-a10-gemei-g9.dts#n71 |
107 108 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/ + "patch required for Samsung bootloader":https://github.com/fourkbomb/linux/commit/2a6027178ae40c1d3baa965fe21b19cbf09493ce | Signed bootloader | Good fit:
108 232 Kurtis Hanna
* Not fully supported by Replicant because of its modem but the work can be reused by the Galaxy SIII, Galaxy SII, Note 2, Note 8.0, and Note 10.1 (2012 edition). 
109 69 Denis 'GNUtoo' Carikli
* touch keys, and small parts are missing upstream but are available as patches on top of it. |
110 73 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
111
* Has only 256M of RAM | Bad fit: not enough RAM |
112 75 Denis 'GNUtoo' Carikli
| 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 |/2. * Probably have a signed bootloader
113
* Needs investigation to see if the touchscreen firmware is mandatory |/2. Would need investigation to see if the touchscreen firmware is mandatory |
114
| 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 |
115 72 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 | Bad fit: requires a signed Linux kernel in the boot chain |
116 71 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 | |/8. Qualcomm SOC (signed bootloader, unknown modem isolation) |/8. Bad fit:
117
* Would need more guarantees requarding the modem isolation on recent qualcomm SOCs
118
* Would need more research to on the state of free software for more recent qualcom SOCs
119
* Not enough support in the Linux kernel for devices with Qualcomm SOCs |
120 70 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 |  |
121
| | | | "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 | |
122 85 Denis 'GNUtoo' Carikli
| Tablet | Sony | Xperia Z2 Tablet | "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 |  |
123 70 Denis 'GNUtoo' Carikli
| | | | "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 |  |
124
| 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 | |
125
| 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 | |
126 80 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 | |
127 92 Denis 'GNUtoo' Carikli
| Tablet | MSI | Primo81 | "sun6i-a31s-primo81.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun6i-a31s-primo81.dts | | | |
128
| Tablet | Yones TopTech | BS1078 v2 Tablet | "sun6i-a31s-yones-toptech-bs1078-v2.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts | | | |
129 88 Denis 'GNUtoo' Carikli
| Tablet | Allwinner? | Q8 A13 Tablet | "sun5i-a13-q8-tablet.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun5i-a13-q8-tablet.dts | | | |
130
| Tablet | Utoo | P66 | "sun5i-a13-utoo-p66.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun5i-a13-utoo-p66.dts | | | |
131 1 Denis 'GNUtoo' Carikli
| Tablet | Primux | INet-98V Rev 02 | "sun5i-a13-inet-98v-rev2.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun5i-a13-inet-98v-rev2.dts | | | |
132 93 Denis 'GNUtoo' Carikli
| Tablet | Primux | INet-86DZ Rev 01 | "sun8i-a23-inet86dz.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun8i-a23-inet86dz.dts | | | |
133 90 Denis 'GNUtoo' Carikli
| Tablet | Wondermedia? | WM8650-MID Tablet | "wm8650-mid.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/wm8650-mid.dts | | | |
134 91 Denis 'GNUtoo' Carikli
| Tablet | Wondermedia? | WM8850-W70v2 Tablet | "wm8850-w70v2.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/wm8850-w70v2.dts | | | |
135 89 Denis 'GNUtoo' Carikli
| Tablet | Colorfly | E708 Q1 tablet | "sun6i-a31s-colorfly-e708-q1.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun6i-a31s-colorfly-e708-q1.dts | | | |
136 94 Denis 'GNUtoo' Carikli
| Tablet | Polaroid | MID2407PXE03 tablet | "sun8i-a23-polaroid-mid2407pxe03.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun8i-a23-polaroid-mid2407pxe03.dts | | | |
137
| Tablet | Polaroid | MID2809PXE04 tablet | "sun8i-a23-polaroid-mid2809pxe04.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun8i-a23-polaroid-mid2809pxe04.dts | | | |
138 95 Denis 'GNUtoo' Carikli
| Tablet | Allwinner? | Q8 A23 Tablet | "sun8i-a23-q8-tablet.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun8i-a23-q8-tablet.dts | | | |
139
| Tablet | Allwinner? | Q8 A33 Tablet | "sun8i-a33-q8-tablet.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun8i-a33-q8-tablet.dts | | | |
140 96 Denis 'GNUtoo' Carikli
| Tablet | TBS Biometrics | A711 Tablet | "sun8i-a83t-tbs-a711.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts | | | |
141 97 Denis 'GNUtoo' Carikli
| Tablet | iNet Tek | iNet Q972 tablet | "sun6i-a31s-inet-q972.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun6i-a31s-inet-q972.dts | | | |
142 98 Denis 'GNUtoo' Carikli
| Tablet | Allwinner? | GT90H Dual Core Tablet (v4) | "sun8i-a23-gt90h-v4.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun8i-a23-gt90h-v4.dts | | | |
143
| Tablet | Allwinner? | GA10H Quad Core Tablet (v1.1) | "sun8i-a33-ga10h-v1.1.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun8i-a33-ga10h-v1.1.dts | | | |
144 99 Denis 'GNUtoo' Carikli
| Tablet | Allwinner? | INet-D978 Rev 02 | "sun8i-a33-inet-d978-rev2.dts":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun8i-a33-inet-d978-rev2.dts | | | |
145 27 Denis 'GNUtoo' Carikli
146 1 Denis 'GNUtoo' Carikli
h3. Allwinner devices
147 13 Denis 'GNUtoo' Carikli
148
Devices with Allwinner SOCs are an interesting targets because:
149
* Many of them do not use signed bootloaders.
150
* Many of the SOCs and various devices using them have good Linux and u-boot mainline support
151
152
For instance the Lime 2 from Olimex is pretty well supported and is easy to find.
153
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.
154
155
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.
156
157
A good tablet for this task should have:
158
* 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.
159
* A Free software bootloader, or the ability to easily add support for the tablet to a free software bootloader.
160
* The ability to power and use an USB WiFi card or chip that is compatible with the ath9k_htc driver.
161
162
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.
163 1 Denis 'GNUtoo' Carikli
164 78 Denis 'GNUtoo' Carikli
h3. Rockchip devices
165
166 79 Denis 'GNUtoo' Carikli
* There is a "Linux upstream status page":http://opensource.rock-chips.com/wiki_Status_Matrix#Mainline%20Kernel%20Status%20Matrix in the "opensource.rock-chips wiki":http://opensource.rock-chips.com
167
* There is also "some information on u-boot":http://opensource.rock-chips.com/wiki_U-Boot in the "opensource.rock-chips wiki":http://opensource.rock-chips.com/
168
169 113 Kurtis Hanna
|_. Formfactor  |_. Vendor |_. Product |_. Linux dts |_. Linux status page |_. Issues |_. Verdict |
170 114 Kurtis Hanna
| Tablet | Acer | Chromebook Tab 10 D651N-K9WT | "rk3399-gru-scarlet.dtsi":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi | | "device specs":https://www.acer.com/ac/en/US/content/model/NX.H0BAA.001 Not many android devices use Coreboot as their bootloader, like this device has, but we likely can use Google's Depthcharge payload in Coreboot to boot into Android. Google "did this":https://www.chromestory.com/2016/01/pixel-c-uses-a-chrome-os-boot-image-not-android/ with the Pixel C. "coreboot support for this board":https://review.coreboot.org/cgit/coreboot.git/tree/src/mainboard/google/gru/devicetree.scarlet.cb "android specific code in depthcharge":https://chromium.googlesource.com/chromiumos/platform/depthcharge/+/master/src/boot/android_dt.c | |
171 78 Denis 'GNUtoo' Carikli
172 134 Denis 'GNUtoo' Carikli
h1. Bootloaders
173 1 Denis 'GNUtoo' Carikli
174
h2. Bootloader status
175
176
|_. Formfactor |_. Vendor |_. Product  |_. signatures |_. Source code |_. u-boot status |_. Verdict |
177 254 Kurtis Hanna
|/9.Smartphone |/9.Samsung | Galaxy S - i9000  | The bootloader is probably signed | "downstream u-boot":https://github.com/xc-racer99/u-boot-galaxys4g/ | * u-boot mainline was placed in BL2, copying much of the bootloader work done on the i9300 and n7100
178 246 Denis 'GNUtoo' Carikli
* That u-boot also supports being installed in place of the Linux kernel, leaving the stock bootloader in place | * Probably signed
179
* The port to run instead of the Linux kernel seem interesting as it could be used on "midas" to disable the MMU and caches |
180 254 Kurtis Hanna
| "Galaxy S 2 - I9100":https://redmine.replicant.us/projects/replicant/wiki/GalaxyS2I9100 | Signed, see "emulating-exynos-4210-bootrom-in-qemu.html":https://fredericb.info/2018/03/emulating-exynos-4210-bootrom-in-qemu.html | ? | ? | ? |
181 253 Kurtis Hanna
| "Galaxy SIII - I9300":https://redmine.replicant.us/projects/replicant/wiki/GalaxyS3I9300 |/7. * The first stage is signed.
182 1 Denis 'GNUtoo' Carikli
* The stock first stage checks the second stage signatures.
183 253 Kurtis Hanna
* A signed first stage that doesn't enforce subsequent signatures exists but it's nonfree and non-redistributable|/4. "downstream u-boot for the second stage":https://github.com/fourkbomb/u-boot |/4. * That u-boot version is meant to be used in combination with a nonfree and non-redistributable first stage bootloader.
184 244 Denis 'GNUtoo' Carikli
* This combinaison doesn't load the nonfree TrustZone OS
185 253 Kurtis Hanna
* Replicant 9 can run on devices with this bootloader, but the current Replicant 6 kernel expects a TrustZone OS to work. |/7. * We need to find a way to completely replace the first bootloader stage (BL1) as the one that is used to run u-boot is nonfree and non-redistributable. 
186 245 Denis 'GNUtoo' Carikli
* More details on that issue can be found in the [[Exynos4_Bootrom]] wiki page. |
187 253 Kurtis Hanna
| "Galaxy SIII 4G - I9305":https://redmine.replicant.us/projects/replicant/wiki/GalaxyS3I9305 |
188
| "Galaxy Note 2 - N7100":https://redmine.replicant.us/projects/replicant/wiki/GalaxyNote2N7100 |
189
| Galaxy Note 2 4G - N7105 |
190
| "Galaxy Note 8.0 - N51XX":https://redmine.replicant.us/projects/replicant/wiki/GalaxyNote80N51xx |/2. ? |/3. Has the same System On a Chip (SOC) as the Galaxy SIII and Note 2, but slightly modified u-boot likely needs to be written. |
191
| "Galaxy Note 10.1 - N8000":https://redmine.replicant.us/issues/1946 |
192
| "Galaxy Camera 2 - EK-GC200":https://en.wikipedia.org/wiki/Samsung_Galaxy_Camera_2 | "First Exynos4412 device to get u-boot support":https://www.xda-developers.com/samsung-galaxy-camera-gets-open-source-bootloader/ in 2012 |
193 254 Kurtis Hanna
| Smartphone | Google and Samsung | "Galaxy Nexus - I9250":https://redmine.replicant.us/projects/replicant/wiki/GalaxyNexusI9250 | | "downstream u-boot for the second stage":http://ksyslabs.org/ukernels/gnex_uboot/ | |
194 231 Kurtis Hanna
| Smartphone | LG | "Optimus Black":https://redmine.replicant.us/projects/replicant/wiki/OptimusBlack |/5. unsigned | "upstream u-boot":https://git.denx.de/?p=u-boot.git;a=blob;f=configs/sniper_defconfig | no display(no driver), very few peripherals but enough to be usable | |
195 138 Denis 'GNUtoo' Carikli
| Tablet | Amazon | Kindle Fire (first generation) | "upstream u-boot":https://git.denx.de/?p=u-boot.git;a=blob;f=configs/kc1_defconfig | | |
196 139 Denis 'GNUtoo' Carikli
|/3. Smartphone |/3. | GTA04 A3 |/3. "downstream u-boot and xloader":http://projects.goldelico.com/p/gta04-uboot/  |/3. |/3. |
197 137 Denis 'GNUtoo' Carikli
| GTA04 A4 |
198
| GTA04 A5 |
199 121 Denis 'GNUtoo' Carikli
200 1 Denis 'GNUtoo' Carikli
h2. See also
201
202
* [[Google Summer of Code 2018]]
203 12 Denis 'GNUtoo' Carikli
204 140 Kurtis Hanna
h1. Upstream GNU/Linux
205 19 Denis 'GNUtoo' Carikli
206 182 Denis 'GNUtoo' Carikli
h2. Modem support
207 1 Denis 'GNUtoo' Carikli
208 183 Denis 'GNUtoo' Carikli
|_. Protocols |_. Implmentation |_. comments |
209 190 Denis 'GNUtoo' Carikli
| QMI | Android <-> RIL <-> libqmi-ril to be completed <-> libqmi | |
210 184 Denis 'GNUtoo' Carikli
|/2. * QMI
211 1 Denis 'GNUtoo' Carikli
* AT
212 190 Denis 'GNUtoo' Carikli
* Other | Android <-> RIL <-> libraries to be written | 
213 226 Denis 'GNUtoo' Carikli
| "android_frameworks_opt_telephony_ril_ofono":https://github.com/scintill/android_frameworks_opt_telephony_ril_ofono + ofono + ofono backend (AT, QMI, etc) | * Using ofono would enable us to share more effort with upstream GNU/Linux and support many other protocol like AT for the GTA04 or qmi-ril for the Galaxy SIII 4G (I9305) or the Galaxy Note II 4G (N7105)
214 228 Denis 'GNUtoo' Carikli
* According to the "README":https://github.com/scintill/android_frameworks_opt_telephony_ril_ofono/blob/master/README.md, it has already been tested with most of Replicant 6 code but on a smartphones not yet supported by Replicant. Calls, Audio, SMS, etc are knwon to work.
215 225 Denis 'GNUtoo' Carikli
* "BuildRilWrapper.java":https://github.com/scintill/android_frameworks_opt_telephony_ril_ofono/blob/master/build/java/net/scintill/ril_ofono/BuildRilWrapper.java seems to use introspection to automatically generate the API between the Framework Java RIL and itself (which replaces rild) (See the "official documentation":https://source.android.com/devices/tech/connect/ril for background information on the Android architecture) |
216 198 Denis 'GNUtoo' Carikli
|/5. samsung-ipc | Ofono (rilmodem backend/driver) <-> rild <-> libsamsung-ril <-> libsamsung-ipc | * Might be usable for GNU/Linux distributions with "libhybris":https://en.wikipedia.org/wiki/Hybris_%28software%29
217 197 Denis 'GNUtoo' Carikli
* Could be usable for testing Replicant as ofono could run on the host computer and the rild socket could be exported with adb
218
* Some forks exist: check if they still have interesting patches
219
** https://github.com/rilmodem/ofono|
220
| Android <-> rild <-> libsamsung-ril <-> libsamsung-ipc | * Currently in use in Replicant |
221 189 Denis 'GNUtoo' Carikli
| Android <-> Ofono <-> libsamsung-ipc | * "An ofono fork with libsamsung-ipc support is available":https://github.com/fourkbomb/ofono
222 195 Denis 'GNUtoo' Carikli
"Patches":https://lists.ofono.org/pipermail/ofono/2012-September/013777.html to add that upstream were "refused":https://lists.ofono.org/pipermail/ofono/2012-September/013778.html because upstream didn't want to make the project become GPLv3 (libsamsung-ipc was GPLv3 at the time) but now libsamsung-ipc has been relicensed to GPLv2+ |
223 185 Denis 'GNUtoo' Carikli
|
224 197 Denis 'GNUtoo' Carikli
| FSO <-> libsamsung-ipc | * Probably not easily usable in Replicant
225 194 Denis 'GNUtoo' Carikli
* Is FSO still actively maintained?
226 193 Denis 'GNUtoo' Carikli
* Was used by SHR and potentially other GNU/Linux distributions supporting the Openmoko GTA04 smartphones |
227 182 Denis 'GNUtoo' Carikli
228
h2. Upstream userspace hardware support libraries
229
230
|_. Usage |_. Replicant |_. GNU/Linux |_. comments |
231
| Bluetooth stack | BlueDroid | Bluez | |
232
| GPS hardware support | ? | gpsd | |
233
234 16 Denis 'GNUtoo' Carikli
235 20 Denis 'GNUtoo' Carikli
h2. Upstream non-hardware specific userspace
236 18 Denis 'GNUtoo' Carikli
237
|_. Usage |_. Replicant |_. GNU/Linux |_. comments |
238 151 Denis 'GNUtoo' Carikli
| Unix command line tools | ? | * Busybox
239
* Coreutils | * Busybox already has Android specific code in it but no Android.mk 
240
* Busybox build is very similar to Linux, and Linux can be built by Android |
241 44 Denis 'GNUtoo' Carikli
242 229 Denis 'GNUtoo' Carikli
h2. libc
243
244
|_. Feature |_. Advantages |_. Disadvantages |_. sustainability |
245
| glibc + libhybris | * You just need an Android.mk to compile GNU/Linux software | * You need to link the Android part that need bionic functions to libhybris | TODO: Evaluate how close to bionic is libhybris |
246
| bionic | Android default | * You spend lot of time trying to run GNU/Linux debug tools like evtest on Android:
247
* Parabola cannot be used on old kenrels (FATAL: kernel too old)
248
* GuiX and libreCMC might not have the package and might need tweaking to be recompiled with an old glibc and kernel headers
249
* TODO: try crosstool-ng
250 230 Denis 'GNUtoo' Carikli
* Most of the other GNU/Linux distributions are not FSDG compliant or do not support ARM
251
* The software might not work on Android due to missing bionic functions like versionsort(...) |
252 229 Denis 'GNUtoo' Carikli
253 44 Denis 'GNUtoo' Carikli
h2. Other projects interested in using upstream Linux and/or contributing to it
254
255
* "Postmarketos":https://wiki.postmarketos.org/wiki/The_Mainline_Kernel
256 116 Denis 'GNUtoo' Carikli
257 150 Denis 'GNUtoo' Carikli
h1. Upstream Android
258 1 Denis 'GNUtoo' Carikli
259 150 Denis 'GNUtoo' Carikli
h2. LineageOS
260 141 Denis 'GNUtoo' Carikli
261 117 Denis 'GNUtoo' Carikli
* See "device-support-requirements.md":https://github.com/LineageOS/charter/blob/master/device-support-requirements.md for more information on LineageOS expectations.
262 120 Denis 'GNUtoo' Carikli
263
The devices "initially supported by LineageOS 16":https://lineageos.org/Changelog-22/ have either:
264
* Qualcomm SOCs
265
* An 'HiSilicon Kirin 970" SOCs for the "Huawei Honor View 10":https://wiki.lineageos.org/devices/berkeley or the "Huawei P20 Pro":https://wiki.lineageos.org/devices/charlotte
266
267 1 Denis 'GNUtoo' Carikli
It may be because they rely on nonfree software to support devices, which has not been ported to Android 9, or may be because they need more time to add devices with other SOCs like exynos.
268 141 Denis 'GNUtoo' Carikli
269 150 Denis 'GNUtoo' Carikli
h2. AOSP and LineageOS
270 141 Denis 'GNUtoo' Carikli
271
| Feature | AOSP | LineageOS |
272
| Code quality | Better than LineageOS | |
273 142 Denis 'GNUtoo' Carikli
| Documentation | Better than LineageOS | |
274 141 Denis 'GNUtoo' Carikli
| root | Not sure if supported or not | Supported |
275 200 Denis 'GNUtoo' Carikli
| Minor release versioning | supported with Git tags | Not supported.
276 202 Denis 'GNUtoo' Carikli
For instance frameworks/native has no LineageOS tags (only cm-1x tags) and has no other branch for lineage OS 16.0 than the lineage-16.0 branch, as the other branches name are for other things. This was confirmed after running 'git fetch github' in frameworks/native to fetch the other branches that are not fetched by repo by default.
277 200 Denis 'GNUtoo' Carikli
Despite that, some code was even merged in after the lineage-16.0 release:
278
<pre>
279
commit 22abc3cf4077644463a2dc1c59a5a74e9518ea16
280
Merge: 9e96d54 8a6b6c3
281
Date:   Sat Jul 13 18:57:45 2019 +0200
282
283
    Merge remote-tracking branch 'aosp/pie-gsi' into lineage-16.0-pie-gsi
284
</pre> |
285 141 Denis 'GNUtoo' Carikli
| GUI features for developers
286
* Advanced reboot | ? | Supported |
287 155 Denis 'GNUtoo' Carikli
288
h2. Design decisions
289
290 256 Kurtis Hanna
Some decisions have been taken by upstream projects, for instance the the Android Open Source Project (AOSP) is pushing device manufacturers to use "signed bootloaders":https://source.android.com/security/verifiedboot/device-state#root-of-trust and not give the users the ability to replace those bootloaders. Therefor it is best to revisit such decisions and decide whether or not to implement a given feature.
291 1 Denis 'GNUtoo' Carikli
292 210 Denis 'GNUtoo' Carikli
h3. Various
293
294 1 Denis 'GNUtoo' Carikli
| Feature | Advantages | Disadvantages |
295
| adb and root at boot | Easier to debug:
296
* We get the logs at boot
297
* May be able to diagnose non-booting devices (partition not mountable, etc) | Way less secure:
298
* Vulnerable to "Juice_Jacking":https://en.wikipedia.org/wiki/
299
* Vulnerable to an attacker that just connect an usb cable to a running phone
300
* Breaks the user's expectation of security (lock screen etc) |
301 210 Denis 'GNUtoo' Carikli
302
h3. root filesystem related
303
304
|_. Feature |_. Advantages |_. Disadvantages |_. sustainability |
305
| System as root | * The kernel size can be bigger
306
* You have to hardcode the root partition in the cmdline or use PARTLABEL which might be a security issue: if a microSD has a partition named SYSTEM, the kernel may boot on it instead | having an initramfs adds some flexibility:
307
* Selecting partitions can potentially be more  flexible | |
308
| System as root + dm-verity + "dm-init":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/device-mapper/dm-init.txt | * The kernel size can be bigger
309
* The partition selection is flexible and secure  | | |
310
| read-only /system | * more secure and more easily understandable by users and developers | * need to ship in replicant user-scripts or add them to vendor/ | |
311 160 Denis 'GNUtoo' Carikli
312
h3. Gatekeeper HAL backend
313
314 209 Denis 'GNUtoo' Carikli
*Background information*: Gatekeeper is a daemon that is used to store passwords and other secrets.
315
316 1 Denis 'GNUtoo' Carikli
| Backend used | Advantages | Disadvantages |
317 161 Denis 'GNUtoo' Carikli
| simple userspace implementation | * Fast to do
318 213 Denis 'GNUtoo' Carikli
* Simple to understand 
319
* Good enough for most use cases| |
320 164 Denis 'GNUtoo' Carikli
| kernel keyring (man 7 keyrings) | * Secure
321 163 Denis 'GNUtoo' Carikli
* The Linux kernel is well known and updated regularily
322 215 Denis 'GNUtoo' Carikli
* Some users are already used to the userspace/kernel security model
323
* Probably fun to implement, can learn how t implement Android daemons and how to use the keyring along the way |
324 1 Denis 'GNUtoo' Carikli
| Free software Trusted Execution Environment (TEE) | * Android does it | * Require access to TrustZone, which doesn't work for all SOCs
325 212 Denis 'GNUtoo' Carikli
* Unfamiliar to users and developers (it's supposed to tick in suspend, knowledge aobut TrustZone is less spread than Linux, etc)
326 214 Denis 'GNUtoo' Carikli
* Probably requires to port a TrustZone OS to every SOC or phone 
327 215 Denis 'GNUtoo' Carikli
* The Linux kernel is well known and updated regularily |
328 165 Denis 'GNUtoo' Carikli
| Proprietary software Trusted Execution Environment (TEE) | None: we really want to get rid of it if possible | 
329 160 Denis 'GNUtoo' Carikli
Cannot be trusted:
330
* Not free software
331
* Not under the user control |
332 203 Denis 'GNUtoo' Carikli
333
h3. Handling dynamic major/minor /dev/ nodes
334
335 219 Denis 'GNUtoo' Carikli
*Background information*: We can manage to avoid this use case for now.
336 207 Denis 'GNUtoo' Carikli
337 203 Denis 'GNUtoo' Carikli
| Backend used | Advantages | Disadvantages | sustainability |
338 205 Denis 'GNUtoo' Carikli
| Android default + Upstream Linux | | * does not work by default, probably impossible to make it work as-is |
339 204 Denis 'GNUtoo' Carikli
| Android default + Upstream Linux + very dirty userspace scripts | * Minimal changes | * Not robust
340
* Might eat up resources
341
* Already implemented cleanly in mdev | |
342
| Android default + hacked drivers to use fixed major/minor | * Minimal changes in Linux
343
* No changes required on Android side | * Require to change userspace software (libsamsung-ipc) | * Not upstreamable in Linux |
344 211 Denis 'GNUtoo' Carikli
| devtmpfs + hacked Andrdroid init | * Minimal changes if upstreamed
345 219 Denis 'GNUtoo' Carikli
* Init is hard to debug | * Complex to do as debugging at this stage is complicated | * Need to be usptreamed in Android |
346 1 Denis 'GNUtoo' Carikli
| Stock Andrdroid init + mdev (busybox) | * Bad integration in the Android build system | * Changes are minimal | * Android build system integration need to be upstreamed or maintained |
347 219 Denis 'GNUtoo' Carikli
348
h3. Firmware loading
349
350
| Backend used | Advantages | Disadvantages | sustainability |
351
| system/core/init/firmware_handler.cpp | * Stock Android implementation | None | Already upstream in Android |
352
| Something else | None | The stock Android implementation is good enough and firmware loading is trivial anyway | Not upstream in Android |
353 220 Denis 'GNUtoo' Carikli
354
h1. Tools
355
356 221 Denis 'GNUtoo' Carikli
|_. Tool |_. Upstream |_. Comments |
357 222 Denis 'GNUtoo' Carikli
| Heimdall | Heimdall | Packaged in most GNU/Linux distributions |
358 223 Denis 'GNUtoo' Carikli
|/4. Fastboot, adb, etc | Android | Requires the Android build system |
359 221 Denis 'GNUtoo' Carikli
| Archlinux | |
360
| Debian | |
361
| GuiX | |