summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--37c3/Replicant_struggle/unfinished-latex-version/Makefile113
-rw-r--r--37c3/Replicant_struggle/unfinished-latex-version/Struggle_for_independence.tex925
-rw-r--r--37c3/Replicant_struggle/unfinished-latex-version/dot/android.dot7
-rw-r--r--37c3/Replicant_struggle/unfinished-latex-version/dot/framework.dot4
-rw-r--r--37c3/Replicant_struggle/unfinished-latex-version/dot/linux.dot10
5 files changed, 1059 insertions, 0 deletions
diff --git a/37c3/Replicant_struggle/unfinished-latex-version/Makefile b/37c3/Replicant_struggle/unfinished-latex-version/Makefile
new file mode 100644
index 0000000..557d109
--- /dev/null
+++ b/37c3/Replicant_struggle/unfinished-latex-version/Makefile
@@ -0,0 +1,113 @@
+TEXFLAGS ?= -halt-on-error -output-format pdf -output-directory output
+TITLE = Struggle_for_independence
+
+TOPDIR = ../../..
+
+.PHONY: all clean medias archive
+
+###############
+# Phony rules #
+###############
+all: output/$(TITLE).pdf
+
+archive:
+ git archive --format=tar --prefix=LibrePlanet2022/ HEAD -o LibrePlanet2022.tar
+
+clean:
+ rm -rf output
+
+################
+# Main targets #
+################
+output:
+ mkdir output
+
+output/$(TITLE).pdf: \
+ Struggle_for_independence.tex \
+ output \
+ output/4-freedoms.jpg \
+ output/android.jpg \
+ output/android_logo.jpg \
+ output/anti_drm_protest.jpg \
+ output/anti_smartphones.jpg \
+ output/electronic_waste_small.jpg \
+ output/framework.jpg \
+ output/freedo.jpg \
+ output/googlag_small.jpg \
+ output/i9300_left.jpg \
+ output/linux.jpg \
+ output/motorola_a780_small.jpg \
+ output/n900.jpg \
+ output/phist.jpg \
+ output/raised_fist_small.jpg \
+ output/replicant_logo.jpg \
+ output/smart_phones_shop_small.jpg \
+ output/tablets.jpg \
+ output/the_leader_of_the_luddites_small.jpg \
+ output/we_can_do_it_small.jpg \
+ output/wifi.jpg \
+ output/worker.jpg
+ pdflatex $(TEXFLAGS) '\providecommand\locale{en}\input{$(TITLE).tex}'
+ pdflatex $(TEXFLAGS) '\providecommand\locale{en}\input{$(TITLE).tex}'
+ du -hs $@
+
+##############################
+# Automatic depdencies rules #
+##############################
+output/%.jpg: dot/%.dot
+ mkdir -p output
+ dot -T jpg $< > $@
+
+output/%.jpg: $(TOPDIR)/common/images/%.jpg output
+ convert $< $@
+
+output/%.jpg: $(TOPDIR)/common/images/%.png output
+ convert $< $@
+
+output/%.jpg: $(TOPDIR)/common/images/%.svg output
+ convert $< $@
+
+# Space saved:
+# - we_can_do_it.jpg: from 61M to 456K
+# - raised_fist.jpg: from 7.9M to 104K
+# - the_leader_of_the_luddites.jpg: from 6.1M to 291K
+# - smart_phones_shop.jpg: from 3.0M to 243K
+# - electronic_waste.jpg: from 2.8M to 168K
+# - googlag.jpg: from 2.4M to 101K
+# - motorola_a780.jpg: from 1.8M to 64k
+output/%_small.jpg: $(TOPDIR)/common/images/%.jpg
+ convert -resize 25% -quality 80 $< $@
+
+#################################
+# Images with specific settings #
+#################################
+# -resize and -quality makes the image go from 1.1M to 48k
+output/anti_drm_protest.jpg: $(TOPDIR)/common/images/anti_drm_protest.jpg output
+ convert $< -crop 50%x0%+1440+0 -resize 25% -quality 80 $@
+
+output/i9300_hardware.jpg: $(TOPDIR)/common/images/i9300_hardware.svg output
+ convert $< $@
+
+output/i9300_left.jpg: output/i9300_hardware.jpg output
+ convert $< -crop 50%x0%+0+0 $@
+
+# -resize and -quality makes the image go from 8.5M to 124k
+output/n900.jpg: $(TOPDIR)/common/images/N900_xterm.JPG $(TOPDIR)/common/images/Nokia_N900-6.jpg
+ mkdir -p output
+ convert -append -gravity center -resize 25% -quality 80 $? $@
+
+output/replicant_logo.jpg: $(TOPDIR)/external_resources/vendor_replicant_artwork/replicant_logo_white.png output
+ convert $< $@
+
+output/tablets.jpg: \
+ $(TOPDIR)/external_resources/replicant_website/images/supported-devices/p3100.png \
+ $(TOPDIR)/external_resources/replicant_website/images/supported-devices/p5100.png
+ mkdir -p output
+ convert -append $? $@
+
+output/wifi.jpg: \
+ $(TOPDIR)/common/images/tehnoetic-n150-mini-wifi-adapter-back-500x500.png \
+ $(TOPDIR)/common/images/tet-otg-side-500x500.jpg \
+ $(TOPDIR)/common/images/Wifi.png
+ mkdir -p output
+ convert -append -gravity center $? $@
diff --git a/37c3/Replicant_struggle/unfinished-latex-version/Struggle_for_independence.tex b/37c3/Replicant_struggle/unfinished-latex-version/Struggle_for_independence.tex
new file mode 100644
index 0000000..3019b91
--- /dev/null
+++ b/37c3/Replicant_struggle/unfinished-latex-version/Struggle_for_independence.tex
@@ -0,0 +1,925 @@
+\documentclass[aspectratio=169]{beamer}
+\usepackage[english]{babel}
+\usepackage{color}
+\usepackage{CJKutf8}
+\usepackage{graphicx}
+\usepackage{ifthen}
+\usepackage[utf8]{inputenc}
+\usepackage{listings}
+\usepackage{longtable}
+\usepackage{pdfpages}
+\usepackage{xtab}
+
+\def\topdir{../../..}
+
+\lstdefinestyle{terminal}{
+ backgroundcolor=\color{black},
+ basicstyle=\scriptsize\color{green},
+}
+
+\newcommand{\devicepicture}[1]{\topdir/external_resources/replicant_website/images/supported-devices/#1.png}
+
+\newcommand{\includedevicepicture}[1]{
+ {\includegraphics[width=.2\textwidth]{\devicepicture{#1}}}
+}
+
+\newcommand{\inline}[3]
+{
+ \ifthenelse{\equal{top}{#2}}{
+ \noindent
+ \resizebox{\textwidth}{\textheight * 2 / 3}{#1}
+ {#3}
+ }{}
+ \ifthenelse{\equal{bottom}{#2}}{
+ {#3}
+ \noindent
+ \resizebox{\textwidth}{\textheight * 2 / 3}{#1}
+ }{}
+ \ifthenelse{\equal{right}{#2}}{
+ \begin{columns}[T]
+ \begin{column}{5cm}
+ #3
+ \end{column}
+ \begin{column}{5cm}
+ #1
+ \end{column}
+ \end{columns}
+ }{}
+}
+
+\newcommand{\inlinepicture}[3]{
+ \ifthenelse{\equal{right}{#2}}{
+ \begin{columns}[T]
+ \begin{column}{5cm}
+ #3
+ \end{column}
+ \begin{column}{5cm}
+ \includegraphics[width=5cm,height=8cm,keepaspectratio=true]{#1}
+ \end{column}
+ \end{columns}
+ }{
+ \inline{\includegraphics[keepaspectratio=true]{#1}}{#2}{#3}
+ }
+}
+
+\usetheme{Singapore}
+
+\title{Replicant struggle: past and present successes and failures}
+\author{Denis 'GNUtoo' Carikli}
+\date{December 28, 2023}
+
+\begin{document}
+
+\maketitle
+
+\begin{frame}
+ \center{Presentation structure:}
+ \begin{itemize}
+ \item Introduction
+ \begin{itemize}
+ \item What is Replicant?
+ \item Why Replicant?
+ \item Why Android?
+ \end{itemize}
+ \item Replicant past and present struggles, successes and failures
+ \begin{itemize}
+ \item Replicant creation and history
+ \item Replicant struggles and phases
+ \end{itemize}
+ \item Future work on the Pinephone
+ \begin{itemize}
+ \item Why porting on the Pinephone?
+ \item Digressions and project management
+ \end{itemize}
+ \item Time for discussions
+ \end{itemize}
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Introduction}
+
+\begin{frame}
+ \center{Introduction}
+\end{frame}
+
+\subsection{What is Replicant?}
+
+\begin{frame}
+ \inlinepicture{output/replicant_logo.jpg}{right}{
+ \center{Replicant:}
+ \begin{itemize}
+ \item Fully free Android distribution approved by the FSF
+ \item But the hardware it runs on is not...
+ \item More details on hardware related freedom issues later %% TODO
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \center{Quick Facts}
+ \begin{itemize}
+ \item Website: replicant.us
+ \item Exists since September 2009
+ \item Two main versions:
+ \begin{itemize}
+ \item Replicant 6:
+ \begin{itemize}
+ \item Android 6, last security update: October 2017
+ \cite{last-android-6-update}
+ \item based on LineageOS
+ \item Supports $\sim$ 10 devices (smartphones and tablets)
+ \end{itemize}
+ \item Replicant 11:
+ \begin{itemize}
+ \item Android 11, partial support for 1 device
+ \item based on official Android source code
+ \end{itemize}
+ \end{itemize}
+ \item $\sim$ About 1 part time equivalent contributor and a
+ community of users.
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \begin{xtabular}{llll}
+ \includedevicepicture{i9100} &
+ \includedevicepicture{maguro} &
+ \includedevicepicture{i9300} &
+ \includedevicepicture{n7000} \\
+ \includedevicepicture{n7100} &
+ \includedevicepicture{n5100} &
+ \includedevicepicture{p3100} &
+ \includedevicepicture{p5100} \\
+ \end{xtabular}
+\end{frame}
+
+\begin{frame}
+ \center{Best (and lot of) effort:}
+ \inlinepicture{output/worker.jpg}{right}{
+ \begin{itemize}
+ \item Display working and graphics fast enough
+ \item Sound working
+ \item Be able to make calls
+ \item etc
+ \item GPS, Camera, and other non crucial hardware may not work, or work in
+ later releases
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \center{Also:}
+ \begin{itemize}
+ \item Freedom privacy security page
+ \item Extensive documentation on the wiki, not always easy to find
+ \item Infrastructure:
+ \begin{itemize}
+ \item OSUOSL: Mailing list, Wordpress, website, Redmine, FTP
+ \item 1 VM @ FSF: git, domain name, contact address, IRC bridge
+ \item Mastodon account on mamot.fr
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
+\subsection{Why Replicant exists?}
+
+\begin{frame}
+ \center{Have clear demands and attainable goal: First steps}
+ \inlinepicture{output/raised_fist_small.jpg}{right}{
+ \begin{itemize}
+ \item 100\% free sofware on the main CPU
+ \item 100\% free sofware distribution(s)
+ \item Usable by people:
+ \begin{itemize}
+ \item Easy to use (command line)
+ \item Hardware easy to find
+ \item Hardware that can last and that is not too expensive
+ \end{itemize}
+ \item Limits the damage:
+ \begin{itemize}
+ \item Add some limits to the invasion of intimacy.
+ \item Hardware lasts longer.
+ \end{itemize}
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \center{How to achieve that?}
+ \inlinepicture{output/we_can_do_it_small.jpg}{right}{
+ \begin{itemize}
+ \item $\rightarrow$ Lot of work by many people over many years.
+ \item $\rightarrow$ Not shipping nonfree firmwares or any nonfree software.
+ \end{itemize}
+ }
+\end{frame}
+
+%% \begin{frame}
+%% \center{A very short introduction on hardware:}
+%% \inlinepicture{output/i9300_hardware.jpg}{top}{
+%% \begin{itemize}
+%% \item System on a chip
+%% \item Smartphones and the modem
+%% \end{itemize}
+%% }
+%% \end{frame}
+
+%% \begin{frame}
+%% \center{Why is the modem an issue?}
+%% \begin{itemize}
+%% \item Nonfree firmware
+%% \begin{itemize}
+%% \item $\rightarrow$ Only 1 free firmware for very old modems (2005)
+%% \cite{OsmocomBB}\cite{motorola-c115}
+%% \item Too much work for Replicant
+%% \end{itemize}
+%% \item Modem isolation
+%% \begin{itemize}
+%% \item $\rightarrow$ Select smartphones with good isolation:
+%% \begin{itemize}
+%% \item HSIC and firmware data controlled by Replicant
+%% \item MIPI
+%% \item USB and free bootloader
+%% \item UART
+%% \item Avoid modem built in the SOCs and shared memory or disable the modem
+%% completely.
+%% \end{itemize}
+%% \item $\rightarrow$ We still help other projects supporting
+%% devices with shared memory and encourage forking Replicant for
+%% that.
+%% \end{itemize}
+%% \item Tracking $\rightarrow$ No real solution
+%% \begin{itemize}
+%% \item Community networks (Indigenous communities in Oxaca)
+%% \item Disable the modem $\rightarrow$ no calls, SMS or data connection
+%% \end{itemize}
+%% \end{itemize}
+%% \end{frame}
+
+%% \begin{frame}
+%% \inlinepicture{output/Wifi.jpg}{right}{
+%% \center{WiFi: No free firmwares for chip used in mobile devices}
+%% \begin{itemize}
+%% \item ath9k compatible adapters consume too much power,
+%% require PCIe $\rightarrow$ not used in devices.
+%% \item We badly need help for free firmwares:
+%% \begin{itemize}
+%% \item Broadcom chips through Nexmon ?
+%% \item Realtek by reverse engineering GPL binary fimrwares?
+%% \end{itemize}
+%% \item USB device used (ath9k\_htc compatible) in the meantime
+%% \end{itemize}
+%% }
+%% \end{frame}
+
+%% \begin{frame}
+%% \inlinepicture{output/i9300_left.jpg}{right}{
+%% \center{Additional issues:}
+%% \begin{itemize}
+%% \item Nonfree bootloader
+%% \begin{itemize}
+%% \item The SOC enforces signatures
+%% \item TrustZone OS on some devices
+%% \item Incompatible with Linux
+%% \item Hard to support in Replicant 11 and GNU/Linux
+%% \end{itemize}
+%% \end{itemize}
+%% }
+%% \end{frame}
+
+\subsection{Why Android?}
+
+\begin{frame}
+ \center{Why Android?}
+ \inlinepicture{output/android_logo.jpg}{right}{
+ \begin{itemize}
+ \item GUI and applications adapted to big fingers
+ \item $\rightarrow$ run on devices that:
+ \begin{itemize}
+ \item Lack keyboard
+ \item Have capacitve touchscreen and no stylus
+ \item Have very small displays with very high number of pixel
+ \end{itemize}
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \center{Issues with Android?}
+ \inlinepicture{output/googlag_small.jpg}{right}{
+ \begin{itemize}
+ \item Part of the GNU/Linux architecture is light years away:
+ package management and build system, graphics, audio, etc
+ \item Huge unknown code from Google
+ \item Meant to run proprietary software, not to empower users
+ \end{itemize}
+ }
+\end{frame}
+
+%% \begin{frame}
+%% \inlinepicture{output/smart_phones_shop_small.jpg}{right}{
+%% \center{In practice: Android architecture}
+%% \begin{itemize}
+%% \item Goals: time to market
+%% \begin{itemize}
+%% \item Write the code that work as fast as possible
+%% \item Support as many hardware features as possible including new hardware
+%% \item $\rightarrow$ Varying code quality
+%% \item $\rightarrow$ Example: One driver rewritten 3 times
+%% %% TODO: reference
+%% \end{itemize}
+%% \end{itemize}
+%% }
+%% \end{frame}
+
+\begin{frame}
+ \inlinepicture{output/framework.jpg}{right}{
+ \center{In practice: Android architecture}
+ %% \begin{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 $\leftrightarrow$ Android framework $\leftrightarrow$
+ %% HAL $\leftrightarrow$ Kernel
+ %% \item Getting better in Android: Trebble and Generic Kernel images
+ %% \end{itemize}
+ %% \end{itemize}
+ }
+\end{frame}
+
+%% \begin{frame}
+%% \center{Ugly vendor code is good as we depend it for freedom}
+%% \inlinepicture{output/freedo.jpg}{right}{
+%% \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 Code can always be cleaned up or rewritten later
+%% \item Worst case: use the source code as documentation or reverse engineer
+%% it (add prints)
+%% \end{itemize}
+%% \end{itemize}
+%% }
+%% \end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Replicant past and present struggles successes and failures}
+
+\subsection{Replicant creation and history}
+
+\begin{frame}
+ \center{Replicant past and present struggles, successes and failures}
+\end{frame}
+
+\begin{frame}
+ \inlinepicture{output/replicant_logo.jpg}{right}{
+ \center{Replicant:}
+ \begin{itemize}
+ \item Replicant creation
+ \item GNU/Linux and Android
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \begin{columns}[T]
+ \begin{column}{5cm}
+ \center{Phase 1: Replicant creation and Qualcomm devices}
+ \end{column}
+ \begin{column}{5cm}
+ \includegraphics[width=5cm,keepaspectratio=true]{\topdir/common/images/htcdream.jpg}
+ \end{column}
+ \end{columns}
+\end{frame}
+
+%% \begin{frame}
+%% \center{Replicant}
+%% \begin{longtable}[!t]{|p{7cm}|p{3cm}|}
+%% \hline
+%% Goal & Success? \\
+%% \hline
+%% Create a 100\% free software Android distribution & Yes \\
+%% \hline
+%% Support the HTC Dream & Yes \\
+%% \hline
+%% Usable & Yes \\
+%% \hline
+%% Low maintenance & Yes (AOSP, LineageOS) \\
+%% \hline
+%% Fast to add new devices & Yes \\
+%% \hline
+%% Hardware keyboard & Yes \\
+%% \hline
+%% Free software applications & Started to appear \\
+%% \hline
+%% \end{longtable}
+%% \end{frame}
+
+%% \begin{frame}
+%% \center{GNU/Linux}
+%% \begin{longtable}[!t]{|p{8cm}|p{2cm}|}
+%% \hline
+%% Goal & Success? \\
+%% \hline
+%% 100\% free software distributions & nonfree firmwares \\
+%% \hline
+%% Support the HTC Dream & broken sound, unstable \\
+%% \hline
+%% Usable & No \\
+%% \hline
+%% Low maintenance & ? \\
+%% \hline
+%% Fast to add similar devices & ? \\
+%% \hline
+%% Hardware keyboard & Yes \\
+%% \hline
+%% Free software applications & Very few were usable \\
+%% \hline
+%% \end{longtable}
+%% \end{frame}
+
+%% \begin{frame}
+%% \inlinepicture{output/i9300_left.jpg}{right}{
+%% \center{Sounds too good to be true?}
+%% \begin{itemize}
+%% \item The modem controlled everything: booting, RAM
+%% initialization, microphone, GPS, some hardware acceleration.
+%% \item Nonfree bootloaders
+%% \end{itemize}
+%% }
+%% \end{frame}
+
+
+\begin{frame}
+ \center{Sounds too good to be true?}
+
+ \begin{columns}[T]
+ \begin{column}{5cm}
+ \begin{itemize}
+ \item The modem controlled everything: booting, RAM
+ initialization, microphone, GPS, some hardware acceleration.
+ \item Nonfree bootloaders
+ \end{itemize}
+ \end{column}
+ \begin{column}{5cm}
+ \includegraphics[width=5cm,keepaspectratio=true]{\topdir/common/images/htcdream.jpg}
+ \end{column}
+ \end{columns}
+\end{frame}
+
+\subsection{Samsung devices}
+
+\begin{frame}
+ \inlinepicture{\devicepicture{crespo}}{right}{
+ \center{Phase 2: Qualcomm devices $\rightarrow$ Samsung devices}
+ \begin{itemize}
+ \item Many Samsung smartphones have a separate modem that looks isolated
+ \item Unknown modem protocol
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \inline{
+ \colorbox{black}{\color{green}{ static struct resource mdmctl\_res[] = \{ } }
+ \colorbox{black}{\color{green}{ [...] } }
+ \colorbox{black}{\color{green}{ [2] = \{ } }
+ \colorbox{black}{\color{green}{ .name = "onedram", } }
+ \colorbox{black}{\color{green}{ .start = (S5PV210\_PA\_SDRAM + 0x05000000), } }
+ \colorbox{black}{\color{green}{ .end = (S5PV210\_PA\_SDRAM + 0x05000000 + SZ\_16M - 1), } }
+ \colorbox{black}{\color{green}{ .flags = IORESOURCE\_MEM, } }
+ \colorbox{black}{\color{green}{ \}, \}; } }
+ }{right}{
+ \center{Sounds too good to be true? (not again)}
+ \begin{itemize}
+ \item Shared memory found:
+ \begin{itemize}
+ \item S5PV210\_PA\_SDRAM is 0x30000000
+ \item 0x05000000 is 80MiB
+ \item mdmctl\_res is passed to the modem driver
+ \end{itemize}
+ $\rightarrow$ This is in the RAM.
+ \item Affected devices:
+ \begin{itemize}
+ \item Galaxy S
+ \item Nexus S
+ \end{itemize}
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \inlinepicture{\devicepicture{maguro}}{right}{
+ \center{But it's fixable (kind of)}
+ \\
+ $\rightarrow$ Port to other devices.
+ \begin{itemize}
+ \item Same modem protocol
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ Smartphones:
+ \begin{itemize}
+ \item Galaxy Nexus (GT-I9250)
+ \item Galaxy Note (GT-N7000)
+ \item Galaxy Note II (GT-N7100)
+ \item Galaxy SII (GT-I9100)
+ \item Galaxy SIII (GT-I9300)
+ \end{itemize}
+ Tablets:
+ \begin{itemize}
+ \item Galaxy Tab 2 (GT-P3100, GT-P3110, GT-P5100, GT-P5110, TODO)
+ \item Galaxy Note 8.0 (GT-N5100, GT-N5110)
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \center{Our struggle goals}
+ \begin{longtable}[!t]{|p{8cm}|p{2cm}|}
+ \hline
+ Goal & Success? \\
+ \hline
+ Isolated Modem & Yes \\
+ \hline
+ Usable & Yes \\
+ \hline
+ Low maintenance & Yes (LineageOS) \\
+ \hline
+ Fast to add similar devices & Easy enough (libsamsung-ipc not trivial) \\
+ \hline
+ \end{longtable}
+\end{frame}
+
+\begin{frame}
+ \center{Next steps}
+ \begin{longtable}[!t]{|p{5cm}|p{5cm}|}
+ \hline
+ Goal & Success? \\
+ \hline
+ Isolated Modem & Yes \\
+ \hline
+ Bootloader & $\leftarrow$ \\
+ \hline
+ Nonfree code running? & $\leftarrow$\\
+ \hline
+ firmwares & Nonfree for WiFi \\
+ \hline
+ \end{longtable}
+\end{frame}
+
+\subsection{GNU/Linux smartphones}
+
+\begin{frame}
+ \center{Phase 3: Porting Replicant to GNU/Linux smartphones}
+\end{frame}
+
+\begin{frame}
+ \inlinepicture{\devicepicture{gta04}}{right}{
+ \center{GTA04}
+ Advantages:
+ \begin{itemize}
+ \item Longer term support (good support in upstream)
+ \item Free software vendor bootloader (xloader + u-boot fork)
+ \item Documented hardware: GPS, modem, etc, but undocumented 3D acceleration
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \inlinepicture{\devicepicture{gta04}}{right}{
+ \center{GTA04}
+ \begin{itemize}
+ \item Some limited Replicant 4.2 support
+ \item Got suspend issues with Replicant 6 (kernel)
+ \item $\rightarrow$ Port failed: could not make suspend/resume work
+ \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \center{Power management in smartphones and Android (wakelocks / opportunistic
+ suspend)}
+ \inlinepicture{output/i9300_hardware.jpg}{top}{
+ }
+\end{frame}
+
+\begin{frame}
+ \center{Second attempt: LG Optimus black}
+ \begin{itemize}
+ \item Ran Android
+ \item Free bootloader available
+ \item $\rightarrow$ Integration in Replicant as-is complex
+ \item $\rightarrow$ Work to upstream it, not finished
+ \item See Paul Kocialkowski's blog for more details
+ \cite{freeing-a-phone-from-the-ground-up}
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \center{$\rightarrow$ Switching focus back to Samsung devices}
+\end{frame}
+
+\subsection{Current work}
+
+\begin{frame}
+ \center{You have 3 new issues}
+ \begin{itemize}
+ \item LineageOS stopping support for the devices supported by Replicant
+ \item None of the smartphones supported in LineageOS are interesting:
+ \begin{itemize}
+ \item Non-isolated modems
+ \item And/or non-removable batteries
+ \end{itemize}
+ \item 3G networks being shut down
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \inlinepicture{\devicepicture{i9300}}{right}{
+ \center{Replicant 11 and upstream port}
+ %% \begin{itemize}
+ %% \item Many Samsung smartphones have a separate modem that looks isolated
+ %% \item Unknown modem protocol
+ %% \end{itemize}
+ }
+\end{frame}
+
+\begin{frame}
+ \center{$\rightarrow$ Support the Galaxy SIII (GT-I9300) with an upstream
+ kernel}
+\end{frame}
+
+\begin{frame}
+ \center{How to do it?}
+ \begin{itemize}
+ \item Existing work:
+ \begin{itemize}
+ \item Some good Linux support but not complete
+ \item Modem driver available but not validated
+ \end{itemize}
+ \item Funding:
+ \begin{itemize}
+ \item 0.5 * 2 people on Graphics (David Ludovino (dllud) and
+ Ricardo Cabrita(Grim)
+ \item 1 person on the rest and some help from Joonas Kylmälä (Putti)
+ \item Need additional funding too
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \center{Status}
+ \begin{itemize}
+ \item Boots fine, 3D aceleration works.
+ \item Modem works and we can call with it but the Android
+ integration is not complete (audio, sim not recognized). Took a
+ lot of work and part of the code still needs cleanup.
+ \item Audio too primitive.
+ \item Power management untested.
+ \item Replicant 9 (AOSP, LineageOS) $\rightarrow$ Replicant 10 (LineageOS)
+ $\rightarrow$ Replicant 11 (AOSP)
+ \item Many tasks took way longer than planned
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \center{You have 2 or 3 new interesting devices}
+ \begin{itemize}
+ \item Pinephone
+ \begin{itemize}
+ \item Cheap $\rightarrow$ people can get it
+ \item Free bootloader, documented hardware
+ \item Poor power management $\rightarrow$ Use keyboard
+ \end{itemize}
+ \item Librem5
+ \begin{itemize}
+ \item Probably good battery life since has big battery
+ \item Issue: current users don't have it and probably can't buy
+ one
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Parallel work}
+
+\begin{frame}
+ \center{Parallel work}
+\end{frame}
+
+\begin{frame}
+ \center{Replicant 6.0}
+ \begin{itemize}
+ \item Worked on Relase with many fixes:
+ \begin{itemize}
+ \item Many nonfree software found and removed (Java code,
+ firmwares)
+ \item Fixed leak of user data (phone numbers)
+ \item Removed f-droid (tried to fix FSDG compliance upstream but
+ took too long).
+ \item Fixed important SIM not recognized bug (Thanks Belgin).
+ \item Many improvements by new contributors (scripts to disable
+ the modem, improved OpenGL compatibility, bettter USB WiFi
+ integration, etc).
+ \item Reworked installation instructions (funded by NLnet for
+ Replicant 11).
+ \end{itemize}
+ \item TODO:
+ \begin{itemize}
+ \item Migration instructions
+ \item Announce the release (blog post already done)
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \center{Quality Assurance}
+ \begin{itemize}
+ \item Automatic tests:
+ \begin{itemize}
+ \item Libsamsung-ipc: conversion to coding style, (few) automatic
+ tests added, cleaned up lot of code.
+ \item WIP python library for automatic tests
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \center{Infrastructure: work}
+ \begin{itemize}
+ \item Wiki Migration: Redmine $\rightarrow$ git $\rightarrow$ Mediawiki
+ \item Enabling contributions: Almost all the VM under git (apache2
+ configuration, website, IRC bridge, contact address)
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \center{Collaborations with other projects}
+ \begin{itemize}
+ \item Contacts:
+ \begin{itemize}
+ \item PostmarketOS: shared our patches, helped with booting
+ upstream Linux on the Galaxy SII (GT-I9100).
+ \item LineageOS unofficial ports: collaborated a bit when were using
+ upstream Linux.
+ \end{itemize}
+ \item Upstreaming:
+ \begin{itemize}
+ \item mat2: fix for reproducible zips
+ \item heimdall: bugreported dangerous issue (no size check when
+ installing recoveries)
+ \item Trisquel 9 fixes for building Replicant 11 and for the Replicant VM:
+ proguard and fai-server.
+ \item Linux: small upstreaming work for Replicant 11: buttons,
+ flash for Galaxy SIII and Note II.
+ \item GRUB: work to upstream some cryptogrub patches to boot Guix
+ on FSF infrastructure (now picked up by Glenn Washburn).
+ \item WIP wireshark dissector for libsamsung-ipc
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{References}
+
+\begin{frame}
+ \center{Extra readings}
+ \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}
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ Licenses:
+ \begin{itemize}
+ \item The Qtmoko and SHR pictures are From are under the
+ GNU Free Documentation License.
+ \begin{itemize}
+ \item QtMoko pictures: \url{http://wiki.openmoko.org/wiki/QtMoko}
+ \item SHR pictures: \url{http://wiki.openmoko.org/wiki/SHR_User_Manual}
+ \end{itemize}
+ \item Raised fist:
+ \url{https://commons.wikimedia.org/wiki/File:Raised_fist.jpg}
+ Creative Commons Attribution 3.0 Unported
+ \item We Can Do It:
+ \url{https://commons.wikimedia.org/wiki/File:We_Can_Do_It!_NARA_535413_-_Restoration_2.jpg}
+ Public domain
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \begin{itemize}
+ \item HTC Dream:
+ \url{https://commons.wikimedia.org/wiki/File:HTC_Dream_opened.jpg}
+ Creative Commons Attribution 3.0 Unported
+ \item \url{https://creativecommons.org/licenses/by-sa/4.0/} for the rest.
+ \item WiFi logo:
+ \url{https://commons.wikimedia.org/wiki/File:Wifi.png}
+ Public domain, probably trademarked.
+ \item Freedo Redrawn version:
+ \url{https://www.gnu.org/graphics/freedo.html}
+ GNU Free Documentation License 1.3 or later
+ \item Android logo
+ \url{https://commons.wikimedia.org/wiki/File:Android_Robot_Cleaner_(2014-2019).svg}
+ CC BY-SA 4.0 International
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \begin{itemize}
+ \item Googlag
+ \url{https://wiki.fuckoffgoogle.de/index.php?title=File:IMG_20180428_200243.jpg}
+ CC BY-SA
+ \item Worker
+ \url{https://commons.wikimedia.org/wiki/File:African_American_worker_Richmond_Shipyards.jpg}
+ Public domain
+ \item N900 kernel
+ \url{https://commons.wikimedia.org/wiki/File:N900_xterm.JPG}
+ CC-BY-SA 3.0 Unported, 2.5 Generic, 2.0 Generic and 1.0 Generic
+ \item N900 camera
+ \url{https://commons.wikimedia.org/wiki/File:Nokia_N900-6.jpg}
+ CC-BY 2.0 Generic
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \begin{itemize}
+ \item Phone shop
+ %% File:HK WC 灣仔 Wan Chai 莊士敦道 Johnston Road shop window display smart phones August 2021 SS2.jpg
+ \url{https://commons.wikimedia.org/wiki/File:HK\_WC\_\%E7\%81\%A3\%E4\%BB\%94\_Wan\_Chai\_\%E8\%8E\%8A\%E5\%A3\%AB\%E6\%95\%A6\%E9\%81\%93\_Johnston\_Road\_shop\_window\_display\_smart\_phones\_August\_2021\_SS2.jpg}
+ CC-BY-SA 4.0 International
+ \item Moblie phones electronic waste
+ \url{https://commons.wikimedia.org/wiki/File:Day_6_Warehouse_(25890985098).jpg}
+ CC-BY-SA 2.0 Generic
+ \item Phone and phist
+ \url{https://wiki.rhizomatica.org/index.php/File:Phist.jpg}
+ CC-BY 3.0
+ \item The leader of the Luddites
+ \url{https://en.wikipedia.org/wiki/File:Luddite.jpg}
+ Public domain
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \begin{itemize}
+ \item Motorolla A780
+ \url{https://commons.wikimedia.org/wiki/File:Motorola_A780_(278204605).jpg}
+ CC-BY-SA 2.0 Generic
+ \item 4 freedoms
+ \url{https://www.gnu.org/graphics/amihud-4-freedoms.html}
+ CC-BY-SA 4.0 International License or GPLv3 or later
+ \item ichains
+ \url{https://www.gnu.org/graphics/digital-restrictions-management.html}
+ CC-BY-SA 3.0
+ \item anti-drm protest
+ \url{https://www.flickr.com/photos/bcatch/164393994/in/album-72157594161735152/}
+ CC-BY-SA 2.0
+ \item GNU buck
+ \url{https://static.fsf.org/licensing/gnu-bucks.tar.gz}
+ Unknown license
+ \item anti-smartphone
+ \url{https://commons.wikimedia.org/wiki/File:Bia\%C5\%82a_Podlaska_~21ujcqtd.jpg}
+ CC-BY-SA 4.0 International
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \begin{itemize}
+ \item Replicant devices and logo:
+ \begin{itemize}
+ \item Replicant Logo
+ \url{https://git.replicant.us/replicant/vendor_replicant_artwork/plain/replicant_logo_alpha.svg?h=main&id=fc213d2ca94cef9047d1e4a71c21c4c4c87f349d}
+ CC-BY-SA 3.0 Unported
+ \item Replicant devices
+ \url{https://git.replicant.us/infrastructure/www.replicant.us/tree/images/supported-devices?id=2a331698cead2677fa953c3e1ab5d78528e39ef9}
+ CC-BY-SA 3.0 Unported
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
+\begin{thebibliography}{99}
+\bibitem{freeing-a-phone-from-the-ground-up}
+ \url{https://code.paulk.fr/article20/a-hacker-s-journey-freeing-a-phone-from-the-ground-up-first-part}
+ \url{https://code.paulk.fr/article21/a-hacker-s-journey-freeing-a-phone-from-the-ground-up-second-part}
+ \url{https://code.paulk.fr/article22/a-hacker-s-journey-freeing-a-phone-from-the-ground-up-third-part}
+ \url{https://code.paulk.fr/article23/a-hacker-s-journey-freeing-a-phone-from-the-ground-up-fourth-part}
+\bibitem{OsmocomBB}
+ \url{https://osmocom.org/projects/baseband/wiki}
+\bibitem{motorola-c123}
+ The motorola c115 is from 2005
+ \url{https://en.wikipedia.org/wiki/List_of_Motorola_products#C_series_(1998-2006)}
+\bibitem{last-android-6-update}
+ \url{https://en.wikipedia.org/wiki/Android_Marshmallow#cite_note-2}
+\bibitem{porting-to-android-11}
+ \url{https://redmine.replicant.us/projects/replicant/wiki/PortingToAndroid11}
+\bibitem{number-of-smartphones}
+ \url{http://www.deccanherald.com/content/332274/there-more-mobile-phones-people.html}
+\end{thebibliography}
+\end{document}
diff --git a/37c3/Replicant_struggle/unfinished-latex-version/dot/android.dot b/37c3/Replicant_struggle/unfinished-latex-version/dot/android.dot
new file mode 100644
index 0000000..a2f2d22
--- /dev/null
+++ b/37c3/Replicant_struggle/unfinished-latex-version/dot/android.dot
@@ -0,0 +1,7 @@
+digraph "" {
+ # bgcolor="#ffffff00" # Transparent background
+ "AOSP" -> "Samsung Android" ;
+ "Google Play" -> "Samsung Android" ;
+ "AOSP" -> "LineageOS" -> "Replicant 6.0";
+ "AOSP" -> "Replicant 11";
+}
diff --git a/37c3/Replicant_struggle/unfinished-latex-version/dot/framework.dot b/37c3/Replicant_struggle/unfinished-latex-version/dot/framework.dot
new file mode 100644
index 0000000..c1cab54
--- /dev/null
+++ b/37c3/Replicant_struggle/unfinished-latex-version/dot/framework.dot
@@ -0,0 +1,4 @@
+digraph "" {
+ # bgcolor="#ffffff00" # Transparent background
+ "Android applications" -> "Android framework" -> "HALs" -> "(modified) kernel";
+}
diff --git a/37c3/Replicant_struggle/unfinished-latex-version/dot/linux.dot b/37c3/Replicant_struggle/unfinished-latex-version/dot/linux.dot
new file mode 100644
index 0000000..8907ac7
--- /dev/null
+++ b/37c3/Replicant_struggle/unfinished-latex-version/dot/linux.dot
@@ -0,0 +1,10 @@
+digraph "" {
+ # bgcolor="#ffffff00" # Transparent background
+ "OLD_DEVICE_KERNEL" [label="Device kernel"];
+ "NEW_DEVICE_KERNEL" [label="Device kernel"];
+ "Linux" -> "vendor_kernel_replicant" ;
+ "Linux" -> "Android kernel" -> "System On A Chip Android kernel" -> "OLD_DEVICE_KERNEL";
+ "Linux" -> "GKI";
+ "GKI" -> "NEW_DEVICE_KERNEL";
+ "External modules" -> "NEW_DEVICE_KERNEL";
+}