diff options
author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2019-11-20 17:16:31 +0100 |
---|---|---|
committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2019-12-26 00:52:15 +0100 |
commit | cb49f5a3d70116668869e091da81eac6665b7b04 (patch) | |
tree | 0dd0d64d0f13172eafd44abef5863aebb95034f4 | |
parent | 05bd0ea4ce6e44aeefa1c2c088fc145aeb50ef66 (diff) | |
download | presentations-cb49f5a3d70116668869e091da81eac6665b7b04.tar.gz presentations-cb49f5a3d70116668869e091da81eac6665b7b04.tar.bz2 presentations-cb49f5a3d70116668869e091da81eac6665b7b04.zip |
Last changes
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rw-r--r-- | 36c3/Replicant_sustainability/Makefile | 10 | ||||
-rw-r--r-- | 36c3/Replicant_sustainability/Replicant_sustainability.tex | 343 |
2 files changed, 140 insertions, 213 deletions
diff --git a/36c3/Replicant_sustainability/Makefile b/36c3/Replicant_sustainability/Makefile index 20fbd5c..7bc95ec 100644 --- a/36c3/Replicant_sustainability/Makefile +++ b/36c3/Replicant_sustainability/Makefile @@ -1,5 +1,8 @@ TEXFLAGS ?= -halt-on-error -output-format pdf -output-directory output TITLE = Replicant_sustainability +IMAGES := \ + output/i9300_hardware.png \ + output/virtuous_circle.png \ .PHONY: all clean test medias all: output/$(TITLE).pdf @@ -7,16 +10,17 @@ all: output/$(TITLE).pdf output: mkdir -p output -output/$(TITLE).pdf: output $(TITLE).tex output/i9300_hardware.jpeg +output/$(TITLE).pdf: output $(TITLE).tex $(IMAGES) pdflatex $(TEXFLAGS) '\providecommand\locale{en}\input{$(TITLE).tex}' # pdflatex $(TEXFLAGS) '\providecommand\locale{en}\input{$(TITLE).tex}' output/%.png: dot/%.dot output dot -T png $< > $@ -output/i9300_hardware.jpeg: images/i9300_hardware.svg +output/i9300_hardware.png: images/i9300_hardware.svg convert $< $@ - +output/virtuous_circle.png: images/virtuous_circle.dot + dot -T png $< > $@ clean: rm -rf output diff --git a/36c3/Replicant_sustainability/Replicant_sustainability.tex b/36c3/Replicant_sustainability/Replicant_sustainability.tex index 6280e18..8432351 100644 --- a/36c3/Replicant_sustainability/Replicant_sustainability.tex +++ b/36c3/Replicant_sustainability/Replicant_sustainability.tex @@ -21,13 +21,13 @@ } } -\newcommand{\qtmokopictureframe}[2] { +\newcommand{\devicespictureframe}[3] { { \begin{frame} - \noindent - {\includegraphics{#1}} - {\includegraphics{#2}} - \hspace*{-\textwidth} + \center{#1} + {\includegraphics[scale=0.5]{../../external_resources/replicant_website/images/supported-devices/#2.png}} + {\includegraphics[scale=0.5]{../../external_resources/replicant_website/images/supported-devices/#3.png}} + \hspace*{-\textwidth} \end{frame} } } @@ -53,6 +53,12 @@ \maketitle +%% \begin{frame} +%% \begin{itemize} +%% \item Context +%% \end{itemize} +%% \end{frame} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} @@ -65,7 +71,7 @@ \end{frame} \begin{frame} - \center{Some context} + \center{Quick Facts} \begin{itemize} \item Website: replicant.us \item Exists since September 2009 @@ -76,11 +82,12 @@ \item Replicant 9: Android 9, work in progress\cite{porting-to-android-9} \end{itemize} \item Supports $\sim$ 10 devices (smartphones and tablets) + \item $\sim$ 2 full time equivalent contributors and a big community \end{itemize} \end{frame} \begin{frame} - \center{Minimum feature set required to support a device} + \center{Minimum feature set required to support a device:} \begin{itemize} \item Display working and graphics fast enough \item sound working @@ -90,134 +97,21 @@ \end{itemize} \end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{frame} - \center{A very short introduction on hardware} - \begin{itemize} - \item System on a chip - \item Smartphones and the modem - \end{itemize} -\end{frame} - -\pictureframe{output/i9300_hardware.jpeg} - -\begin{frame} - \center{picture of the hardware + link to GSM tower} -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} - \center{A short introduction to Android} -\end{frame} - -\begin{frame} - \center{Android: Time to market driven architectures?} - \begin{itemize} - \item SOCs - \begin{itemize} - \item Write the code work as fast as possible - \item Support as much hardware features as possible - \item $\rightarrow$ Varying code quality - \item $\rightarrow$ Example: One driver rewritten 3 times - \end{itemize} - \item To smartphones and tablets - \end{itemize} -\end{frame} - -\begin{frame} - \center{Freedom and companies image} - \begin{itemize} - \item Having the source code under free software licenses, even if the code quality is bad is crucial for freedom: - \begin{itemize} - \item Hardware bringup is often made that way anyway - \item Things can be improved later: - always be cleaned up later or if the code quality is too bad, rewritten from scratch - \item Having the source code under a free software license is very important - \item Worst case: use the source code as documentation or reverse engineer it (add prints) - \end{itemize} - \end{itemize} -\end{frame} - -\begin{frame} - \center{Android Architecture} - \begin{itemize} - \item Examples of the worst API changes: - \begin{itemize} - \item Audio driver: Incompatible interface: Qualcomm DSP (MSM7K) - \item Modem driver: Out of tree driver, with changing interfaces (Samsung IPC) - \item Backlight driver: uses LED interfaces instead (HTC Dream) - \item WiFi driver: Has a highly modified Wext interface (Broadcom, TI, etc) - \item Display driver: Has a custom panel refresh interface (MSM7k, Optimus black) - \item Camera driver: uses custom ioctl to make it work - \item Accelerometer driver: output custom protocol + custom ioctl - \item Kernel core: has different power management API - \end{itemize} - \end{itemize} -\end{frame} - -\begin{frame} - \center{Image of the Android framework} -\end{frame} - -\begin{frame} - \center{Android Framework} - \begin{itemize} - \item Device manufacturers can break the Linux API completely - \item It can take time (years) to bring in a new framework in Linux - \item API and ABI guarantees (modulo kernel configuration and build) - \end{itemize} -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} - \center{Replicant phase 1: Quick and dirty hacks} -\end{frame} - -\begin{frame} - \center{Introduction} - \begin{itemize} - \item Replicant History: short version - \end{itemize} -\end{frame} - -\begin{frame} - \center{Before the Openmoko} -\end{frame} - -\begin{frame} - \center{Picture of various hardware} -\end{frame} - -\begin{frame} - \center{The Openmoko: a GNU/Linux smartphone} -\end{frame} - -\begin{frame} - \center{Pictures of the openmoko} -\end{frame} +%% \begin{frame} +%% \center{A very short introduction on hardware} +%% \begin{itemize} +%% \item System on a chip +%% \item Smartphones and the modem +%% \end{itemize} +%% \end{frame} -\begin{frame} - \center{Many GNU/Linux distributions were available for it} - \begin{itemize} - \item Debian - \item SHR - \item QtMoko - \end{itemize} -\end{frame} +\pictureframe{output/i9300_hardware.png} -\begin{frame} - \center{Issues:} - \begin{itemize} - \item Hardware - \item Software - \end{itemize} -\end{frame} \begin{frame} - \center{Comparison with GNU/Linux} \\ + \center{Why Android?} \begin{itemize} - \item Advantages + \item Advantages: \begin{itemize} \item GUI and applications adapted to big fingers \item $\rightarrow$ run on devices that: @@ -229,7 +123,7 @@ \end{itemize} \item Issues \begin{itemize} - \item GNU/Linux software architecture is light years ahread + \item Part of the GNU/Linux software architecture is light years: Package management and build system, Graphics, audio, etc \item Huge unknown code from google \item Meant to run proprietary software \item Not meant to empower users @@ -238,65 +132,97 @@ \end{frame} \begin{frame} + \center{Android: From time to market driven architecture to substainability} \begin{itemize} - \item Like a proprietary OS (Microsoft Windows) - \item Let's replicate it and make a free software version - \item $\rightarrow$ Replicant - \end{itemize} -\end{frame} - -\begin{frame} - \center{Replicant, SHR and the HTC Dream} \\ - \begin{itemize} - \item SHR: GNU/Linux on the first Android device - \begin{itemize} - \item Took more than one year of hard work - \item by 3 or 4 people (not full time) - \item Not reliable - \item Incomplete (audio) or missing features (rotation) - \end{itemize} - \item Replicant - \begin{itemize} - \item Took very few hours/week - \item 1 person (not full time) - \item Way more reliable - \end{itemize} + \item SOCs, WiFi chips, smartphones and tablets + \begin{itemize} + \item Write the code work as fast as possible + \item Support as much hardware features as possible + \item $\rightarrow$ Varying code quality + \item $\rightarrow$ Example: One driver rewritten 3 times %% TODO: reference + \end{itemize} + \item Breaking Kernel API and ABI + \begin{itemize} + \item It can take time (years) to bring in a new framework in Linux + \item Example of API breakage: HTC dream audio driver + \item Solution: Apps$\leftarrow$ $\rightarrow$ Android framework $\leftarrow$ $\rightarrow$ HAL $\leftarrow$ $\rightarrow$ Kernel + \item Getting better in Android: Trebble and Generic Kernel images + \end{itemize} \end{itemize} \end{frame} \begin{frame} - \center{HTC Dream: Bad for freedom} + \center{Freedom and companies image:} \begin{itemize} - \item Qualcomm MSM7k - \item The modem controlled: + \item Having the source code under free software licenses, even if the code quality is bad is crucial for freedom: \begin{itemize} - \item The boot, RAM and storage of the device - \item The audio (and most probably the microphone) + \item Hardware bringup is often made that way anyway + \item Things can be improved later: + always be cleaned up later or if the code quality is too bad, rewritten from scratch + \item Having the source code under a free software license is very important + \item Worst case: use the source code as documentation or reverse engineer it (add prints) \end{itemize} - \item We leanred about it while working on Replicant. + \item $\rightarrow$ We depend on that source code \end{itemize} \end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} - \center{Replicant phase 2: Better devices} -\end{frame} +%% \begin{frame} +%% \center{What affect a device lifetime in Replicant?} +%% \begin{itemize} +%% \item Upstream support $\leftarrow$ We're working on it +%% \item Android RAM consumption VS device RAM size $\leftarrow$ Very little leverage from Replicant +%% \item Removable batteries and developers being able to get the device $\leftarrow$ We don't support devices without removable batteries +%% \item Freedom issues (Chinese whispers) $\leftarrow$ Conflicting interests +%% \end{itemize} +%% \end{frame} -\begin{frame} - \center{Newer devices} - \begin{itemize} - \item Nexus one - \begin{itemize} - \item The audio (and most probably the microphone) - \item Required nonfree audio firmware for having working calls - \end{itemize} - \end{itemize} +\begin{frame}[plain,allowframebreaks]{title} +\begin{xtabular}{ll} + \hline + Device dropping cause & Replicant leverage \\ + \hline + Upstream support & We're working to improve it \\ + \hline + Android RAM consumption & negligeable \\ + %% Most device we want to support have similar-ish RAM size + %% Cannot increase much the device lifetime by choosing devices with bigger RAM size + %% => We have no impact on it and have to endure it + \hline + Lack of removable batteries & don't support devices with non-replacable batteries \\ + \hline + Freedom issues & Conflicting interests \\ + %% Chinese whispers => Better keeping it simple + %% We drop the least free devices + %% Conflicting interest + \hline +\end{xtabular} \end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\devicespictureframe{Replicant phase 1: Quick and dirty hacks}{dream_sapphire}{passion} +%% Context: [Replicant 1.5 -> Replicant 2.2] +%% Talk about: +%% - Qualcomm +%% - MSM7K: The modem controlled: +%% - The boot, RAM and storage of the device +%% - The audio (and most probably the microphone) +%% - QSD8K: issues: +%% - Nexus one required nonfree audio firmware for having working calls +%% - The audio (and most probably the microphone) +%% - No strong guarantee about the modem isolation +%% - Too much nonfreee libs +%% - Mainline status +%% - Too much proprietary libs nowadays +%% - We leanred about all that while working on Replicant. +%% TODO: +%% - Make a picture of the HTC Dream with the keyboard open +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% TODO: Backup slide with list of proprietary libs of a modern qualcomm SOC \begin{frame} \center{Code substainability} \begin{itemize} - \item Required verry little maintenance and time (quick and dirty hacks) + \item Required very little maintenance and time (quick and dirty hacks) \item Porting to a new Android version: \begin{itemize} \item 3D acceleration: @@ -316,20 +242,19 @@ \begin{itemize} \item Removable batteries \item Little RAM - \item Nightmare-like freedom issues + \item Nightmare-like freedom issues: \begin{itemize} \item $\rightarrow$ Very strong incentive to discontinue support for them \item $\rightarrow$ negligeable freedom gained by installing Replicant - \item $\rightarrow$ Replicant was still useful as support for better devices was added later + \item $\rightarrow$ Replicant was still useful as support for better devices were added later \end{itemize} \end{itemize} \end{frame} \begin{frame} - \center{Better devices} + \center{Replicant phase 2: Replicant 2.3 $\rightarrow$ Replicant 4.0} \begin{itemize} - \item More freedom - \item But required more work + \item More freedom but required more work \begin{itemize} \item Required to continue reverse engineering the modem protocol (easy but long) \item Nonfree libraries to replace varies across devices. Examples: Camera, audio, etc @@ -338,20 +263,29 @@ \end{frame} \begin{frame} - \center{Freedom blockers} + \center{Devices substainability and freedom blockers} \begin{itemize} - \item All currently supported devices have nonfree bootloaders - \item The nonfree bootloaders are not easy at all to replace as the code is usually signed + \item Nonfree and signed bootloaders that are very hard or impossible to replace + \item Devices without modem isolation guarantees %% Have been dropped later + \item WiFi, Bluetooth, GPS + \item Enough RAM (1GB or more) on all the supported devices %% TODO: check with tablets \end{itemize} \end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} - \center{Replicant phase 3: Focus on devices with free software bootloaders} + \center{Code substainability} + \begin{itemize} + \item Porting to a new Android version can take quite some time: + \begin{itemize} + \item Still need to make it fast without 3D acceleration + \item Still have Total dependency on Android upstream (Linux code not upstream) + \end{itemize} + \end{itemize} \end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} - \center{First attempt to change focus} + \center{Replicant phase 3: GNU/Linux devices on Replicant 4.2} \begin{itemize} \item The GTA04 from Golden Delicious has a free software bootloader \item The Optimus black (p970) from LG has a bootloader that is not signed @@ -374,7 +308,7 @@ \item Required a lot of work by Paul Kocialkowski\cite{freeing-a-phone-from-the-ground-up} \item Bootloader: The code is now upstream in u-boot \item Linux: Very minimal support upstream - \begin{itemize} + \begin{itemize} \item working: microSD, USB \item lacking: No display driver, sound etc \end{itemize} @@ -382,22 +316,9 @@ \end{itemize} \end{frame} -\begin{frame} - \center{Optimus black} - \begin{itemize} - \item Long work to add support in upstream u-boot - \item Very basic upstream Linux support (lacking a display driver etc) - \item See Paul's blog for more details\cite{freeing-a-phone-from-the-ground-up} - \end{itemize} -\end{frame} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \center{Replicant phase 4: Back to supported devices} -\end{frame} - -\begin{frame} - \center{Replicant 6 status} \begin{itemize} \item Android 6 outdated \item Samsung devices still supported @@ -405,18 +326,18 @@ \end{frame} \begin{frame} - \center{Samsung devices that are or can be supported by Replicant} + \center{Samsung devices that are or can be supported by Replicant 6.0} \begin{itemize} \item Exynos or OMAP System on a chip \item The modems in it have been customized by samsung use the same vendor-specific protocol - \item Very large number of unit sold: + \item Very large number of unit sold: \begin{itemize} \item 70 million units for the Galaxy SIII \item Easy to find second hand \end{itemize} \item Isolated modem for currently supported devices \item Removable battery for smartphones and somewhat removable for tablets - \item Nonfree bootloader + \item Nonfree and signed bootloader \item WiFi doesn't work out of the box \end{itemize} \end{frame} @@ -551,11 +472,7 @@ \end{itemize} \end{frame} -\begin{frame} - \center{TODO: Not vicious circle + image} - %% GNU/Linux ----benefits----> Replicant - %% Replicant ----benefits----> GNU/Linux -\end{frame} +\pictureframe{output/virtuous_circle.png} \begin{frame} \center{Effects of using Linux upstream} @@ -591,10 +508,16 @@ \end{frame} \begin{frame} - \center{Extra readings} + \center{How to not drop devices:} \begin{itemize} - \item OpenMoko History: \url{https://www.vanille.de/blog/openmoko-10-years-after-mickeys-story/} - \item Paul's blog for on freeing the Optimus black\cite{freeing-a-phone-from-the-ground-up} + \item Get to the same freedom than future devices: + \begin{itemize} + \item Free software bootloader + \item Free WiFi and Bluetooth firmwares + \item GPS (library + firmware) + \end{itemize} + \item Enough RAM or obtimisations + \item Hardware documentation and repair guides under a free license \end{itemize} \end{frame} @@ -607,7 +530,7 @@ \item SHR pictures: \url{http://wiki.openmoko.org/wiki/SHR_User_Manual} \end{itemize} \item HTC Dream: \url{https://commons.wikimedia.org/wiki/File:HTC_Dream_opened.jpg} - Creative Commons Attribution 3.0 Unported + Creative Commons Attribution 3.0 Unported \item \url{https://creativecommons.org/licenses/by-sa/4.0/} for the rest. \end{itemize} \end{frame} |