SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
Mainline kernel on ARM Tegra20 devices
that are left behind on 2.6 kernels
Dobrica Pavlinušić
https://blog.rot13.org/
@dpavlin
Is it possible to take obsolete
Android device and port it to
mainline kernel with Debian?
(make RaspberryPi-like device)
Thinkpad Tablet -Tegra20 PHJ00LA-7461P
2011 model, Tegra T20 2 cores @1Ghz, 1 GB RAM, 64 GB mmc flash,
1280x800 screen, wifi, 3g/gps, camera, light sensor, accelerometer
● kernel 2.6.36 available from Lenovo, based on Tegra ventana board
○ 213 files changed, 39153 insertions(+), 1947 deletions(-)
● paz00 schematic exists from OEM (nice, but not as useful as you think)
○ compal_la-7461p_r0.3_schematics.pdf
● mainline has support for Tegra
○ Opensource drivers for NVIDIA Tegra20+
https://github.com/grate-driver
● cheaply available locally
○ somewhat broken with soldering marks
and hotglue
serial port
● suggested first step to begin anything --
it's much easier to bootstrap u-boot or
kernel if you have working serial port
● schematics shows UART on 4 pin
connector
○ connector hidden under metal shield of
cpu
● 1.8V direct connection to Tegra CPU
○ cheap "iphone" 1.8V usb serials available
in China
○ wire-wrapping wire is small enough for
job
Tegra APX mode
● early boot loader in CPU ROM (can be locked, it isn't in this case)
● enter APX by holding rotate key while pressing power key
● nvflash can be used to modify flash on device (binary blob, so we won't
use it here)
● tegrarcm can create image that makes device bootable over usb
[Tue Oct 9 14:30:41 2018] usb 2-4: new high-speed USB device number 16 using xhci_hcd
[Tue Oct 9 14:30:42 2018] usb 2-4: New USB device found, idVendor=0955, idProduct=7820, bcdDevice= 1.04
[Tue Oct 9 14:30:42 2018] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[Tue Oct 9 14:30:42 2018] usb 2-4: Product: APX
[Tue Oct 9 14:30:42 2018] usb 2-4: Manufacturer: NVIDIA Corp.
● this makes device unbrickable, so safe and easy to experiment with
So far,we have:
★ diff of 2.6 kernel on device
★ serial port
★ ability to run our code
u-boot
$ export CROSS_COMPILE="arm-none-eabi-" ARCH=arm
$ make ventana_defconfig
port display from 2.6 kernel to u-boot device tree, so u-boot can turn it on
push it using APX and it works!
$ tegrarcm --bct broken.bct readbct # read device config
$ tegrarcm --bct broken.bct --bootloader u-boot-tegra.bin --loadaddr 0x108000
https://github.com/dpavlin/u-boot/tree/phj00-thinkpad-tablet
tegra20-ventana.dts | 46 +++++++++++++++++++++++++++++++---------------
1 file changed, 31 insertions(+), 15 deletions(-)
Add one of supported usb ethernets: ASIX ASIX88179 LAN75XX LAN78XX
MCS7830 RTL8152 SMSC95XX
Wait! Port changes?! It's not hard!
# diff of 2.6 kernel
static struct tegra_dc_mode
ventana_panel_modes[] = {
{
- .pclk = 72072000,
+ .pclk = 71500000,//72072000,
.h_ref_to_sync = 11,
.v_ref_to_sync = 1,
- .h_sync_width = 58,
- .v_sync_width = 4,
- .h_back_porch = 58,
- .v_back_porch = 4,
- .h_active = 1366,
- .v_active = 768,
- .h_front_porch = 58,
- .v_front_porch = 4,
+ .h_sync_width = 32,
+ .v_sync_width = 7,
+ .h_back_porch = 72,
+ .v_back_porch = 22,
+ .h_active = 1280,
+ .v_active = 800,
+ .h_front_porch = 48,
+ .v_front_porch = 3,
},
};
# u-boot dts diff
display-timings {
timing@0 {
- /* Seaboard has 1366x768 */
- clock-frequency = <70600000>;
- hactive = <1366>;
- vactive = <768>;
- hback-porch = <58>;
- hfront-porch = <58>;
- hsync-len = <58>;
- vback-porch = <4>;
- vfront-porch = <4>;
- vsync-len = <4>;
+ /* XXX tegra_dc_mode ventana_panel_modes */
+ clock-frequency = <72072000>;
+ hactive = <1280>;
+ vactive = <800>;
+ hback-porch = <72>;
+ hfront-porch = <48>;
+ hsync-len = <32>;
+ vback-porch = <22>;
+ vfront-porch = <3>;
+ vsync-len = <7>;
hsync-active = <1>;
};
};
mainline (grate-driver) linux kernel and device tree
● start with ventana device tree (same as u-boot)
● examine 2.6 kernel diff and port changes to device tree
● simple-panel dts configuration didn't work, port it into kernel driver
● define gpio keys (active low/high testing)
○ use triggerhappy and shell to adjust brightness :-)
● added temperature nct1008, compass ak8975 and non-working
accelerometer kxtf9
https://github.com/dpavlin/linux/tree/thinkpad-tablet-phj00
arch/arm/boot/dts/tegra20-ventana.dts | 154 ++++++++++++++--
arch/arm/configs/phj00_defconfig | 313 ++++++++++++++++++++++++++++++++++
drivers/gpu/drm/panel/panel-simple.c | 25 ++
3 files changed, 471 insertions(+), 21 deletions(-)
filesystem using nfsroot -optimize for fun!
It would be possible to test everything with usb storage (corruptions are real)
nfs ensures consistent filesystem (power loss, kernel ops)
Why? Modify files locally on nfs server or on the device!
nfsroot allows us to use qemu and chroot in nfs export to do fast package
installation or similar
It also helps if you are testing on multiple devices -- filesystem is always same!
dhcp works for u-boot but not for kernel's ip=dhcp with dnsmasq
More info: https://saturn.ffzg.hr/rot13/index.cgi?u_boot
EC (8051 on i2c) and battery charging
Charging works when device is off, requires >1A, sensitive to drop below 5V - I
used variable power supply set at 5.2V with 2A limit.
Based on battery state, it might be possible to keep battery charged using
normal 500mA USB port, but only if the screen is not turned on (common on
Android devices unfortunately)
Device that you can't keep powered on isn't very useful.
Linux 2.6 drivers/power/EC_battery.c gives hints
#define DOCK_ON 151 //GPIO_PS7
//Dock in. report AC present
if(gpio_get_value(DOCK_ON) == 1)
{
val->intval = 1;
i2c_smbus_write_word_data(EC_Bat_device->client,0x5b,0x0001);
return 0;
}
How to tell EC that AC is plugged in start charging without writing kernel code?
# i2cset -y 5 0x58 0x5b 0x0001 w
grate driver -Tegra GPU/video acceleration
https://github.com/grate-driver upstream has Ubuntu packages,rebuilt for
Debian --rebuild order important: libdrm,mesa,xorg-video-opentegra
So,which devices are supported currently?
i2c devices
0-001a wm8903 ✔ audio
0-001c al3000a_ls ✘ light
1-003a nvhdcp1 ✘ ?
1-0050 tegra_edid ✘ fake
2-0050 phj00_lcd ✘ fake
2-0058 EC_Battery ✘☚ charging
3-003c mt9p111 ✘ camera
3-003d mt9d115 ✘ camera
4-000c akm8975 ✔☚ compass
4-000f kxtf9 ✘ accel
4-0034 tps6586x ✔ power
4-004c nct1008 ✔☚ temp
other devices
display ✔☚
hdmi ?
NTrig spi touch ✘
keys (gpio) ✔☚
vibrator (gpio) ✘
proximity (gpio) ✔☚
bcm4329 wifi (usb) ✔☚
modem (usb) ✔
mmc ✔
sdcard ?
Was it worth the effort?
YES!
apt update
If you enjoy something like this,it was!
https://saturn.ffzg.hr/rot13/index.cgi?lenovo_thinkpad_tablet
Future work:
SPI enablement (tegra pins are configured,
but kernel doesn't init SPI) -- surface3_spi
might work for a touchscreen if I managed
to persuade it to use device tree instead of
ACPI
EC need more work (and proper kernel
driver) - wifi disappears after reboot,
charging requires i2cset
Cameras are unsupported (and v4l kernel
bindings are changing right now, so I don't
know how to implement them)
Real Linux distro on the device is still
more useful to me than unsupported
Android!
Related work for other ARM devices
● Armbian - best choice of Linux distro for ARM boards
https://www.armbian.com/
● Mainline Linux on Motorola Droid 4 [OMAP]
https://archive.fosdem.org/2018/schedule/event/hwenablement_mainline
_linux_on_motorola_droid_4/
● Maemo Leste - A Debian/Devuan based mobile hacker OS [OMAP]
https://fosdem.org/2019/schedule/event/maemo_leste_mobile/
● postmarketOS [vendor kernels, Alpine] https://postmarketos.org/
○ Samsung Galaxy Tab 10.1 (another Tegra20 device) https://github.com/Decatf/linux
Hopefully this will motivate you to revive your old Android devices!

Mais conteúdo relacionado

Mais procurados

Lee 2020 what the clock !
Lee 2020  what the clock !Lee 2020  what the clock !
Lee 2020 what the clock !Neil Armstrong
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Dobrica Pavlinušić
 
Android 4.2 Internals - Bluetooth and Network
Android 4.2 Internals - Bluetooth and NetworkAndroid 4.2 Internals - Bluetooth and Network
Android 4.2 Internals - Bluetooth and NetworkCaio Pereira
 
x86_64 Hardware Deep dive
x86_64 Hardware Deep divex86_64 Hardware Deep dive
x86_64 Hardware Deep diveNaoto MATSUMOTO
 
Advanced Diagnostics 2
Advanced Diagnostics 2Advanced Diagnostics 2
Advanced Diagnostics 2Aero Plane
 
chainer-trt: ChainerとTensorRTで超高速推論
chainer-trt: ChainerとTensorRTで超高速推論chainer-trt: ChainerとTensorRTで超高速推論
chainer-trt: ChainerとTensorRTで超高速推論belltailjp
 
Ищем уязвимости нулевого дня в ядре Linux
Ищем уязвимости нулевого дня в ядре LinuxИщем уязвимости нулевого дня в ядре Linux
Ищем уязвимости нулевого дня в ядре LinuxPositive Hack Days
 
Kernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisKernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisAnne Nicolas
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)Simen Li
 
CONFidence 2017: Hacking embedded with OpenWrt (Vladimir Mitiouchev)
CONFidence 2017: Hacking embedded with OpenWrt (Vladimir Mitiouchev)CONFidence 2017: Hacking embedded with OpenWrt (Vladimir Mitiouchev)
CONFidence 2017: Hacking embedded with OpenWrt (Vladimir Mitiouchev)PROIDEA
 
Splash screen for Embedded Linux 101: How to customize your boot sequence
 Splash screen for Embedded Linux 101: How to customize your boot sequence Splash screen for Embedded Linux 101: How to customize your boot sequence
Splash screen for Embedded Linux 101: How to customize your boot sequencePierre-jean Texier
 
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролеріJS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролеріJSFestUA
 
ACPI and FreeBSD (Part 1)
ACPI and FreeBSD (Part 1)ACPI and FreeBSD (Part 1)
ACPI and FreeBSD (Part 1)Nate Lawson
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Tegra 186のu-boot & Linux
Tegra 186のu-boot & LinuxTegra 186のu-boot & Linux
Tegra 186のu-boot & LinuxMr. Vengineer
 
SoM with Zynq UltraScale device
SoM with Zynq UltraScale deviceSoM with Zynq UltraScale device
SoM with Zynq UltraScale devicenie, jack
 

Mais procurados (20)

Lee 2020 what the clock !
Lee 2020  what the clock !Lee 2020  what the clock !
Lee 2020 what the clock !
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !
 
Kernel crashdump
Kernel crashdumpKernel crashdump
Kernel crashdump
 
Android 4.2 Internals - Bluetooth and Network
Android 4.2 Internals - Bluetooth and NetworkAndroid 4.2 Internals - Bluetooth and Network
Android 4.2 Internals - Bluetooth and Network
 
x86_64 Hardware Deep dive
x86_64 Hardware Deep divex86_64 Hardware Deep dive
x86_64 Hardware Deep dive
 
Maker Movement
Maker MovementMaker Movement
Maker Movement
 
Advanced Diagnostics 2
Advanced Diagnostics 2Advanced Diagnostics 2
Advanced Diagnostics 2
 
chainer-trt: ChainerとTensorRTで超高速推論
chainer-trt: ChainerとTensorRTで超高速推論chainer-trt: ChainerとTensorRTで超高速推論
chainer-trt: ChainerとTensorRTで超高速推論
 
Ищем уязвимости нулевого дня в ядре Linux
Ищем уязвимости нулевого дня в ядре LinuxИщем уязвимости нулевого дня в ядре Linux
Ищем уязвимости нулевого дня в ядре Linux
 
Kernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisKernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysis
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
 
CONFidence 2017: Hacking embedded with OpenWrt (Vladimir Mitiouchev)
CONFidence 2017: Hacking embedded with OpenWrt (Vladimir Mitiouchev)CONFidence 2017: Hacking embedded with OpenWrt (Vladimir Mitiouchev)
CONFidence 2017: Hacking embedded with OpenWrt (Vladimir Mitiouchev)
 
Splash screen for Embedded Linux 101: How to customize your boot sequence
 Splash screen for Embedded Linux 101: How to customize your boot sequence Splash screen for Embedded Linux 101: How to customize your boot sequence
Splash screen for Embedded Linux 101: How to customize your boot sequence
 
Panda board
Panda boardPanda board
Panda board
 
Proxy arp
Proxy arpProxy arp
Proxy arp
 
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролеріJS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
JS Fest 2018. Володимир Шиманський. Запуск двіжка JS на мікроконтролері
 
ACPI and FreeBSD (Part 1)
ACPI and FreeBSD (Part 1)ACPI and FreeBSD (Part 1)
ACPI and FreeBSD (Part 1)
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Tegra 186のu-boot & Linux
Tegra 186のu-boot & LinuxTegra 186のu-boot & Linux
Tegra 186のu-boot & Linux
 
SoM with Zynq UltraScale device
SoM with Zynq UltraScale deviceSoM with Zynq UltraScale device
SoM with Zynq UltraScale device
 

Semelhante a Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels

Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Jian-Hong Pan
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 
Hardwear.io 2018 BLE Security Essentials workshop
Hardwear.io 2018 BLE Security Essentials workshopHardwear.io 2018 BLE Security Essentials workshop
Hardwear.io 2018 BLE Security Essentials workshopSlawomir Jasek
 
HKG15-409: ARM Hibernation enablement on SoCs - a case study
HKG15-409: ARM Hibernation enablement on SoCs - a case studyHKG15-409: ARM Hibernation enablement on SoCs - a case study
HKG15-409: ARM Hibernation enablement on SoCs - a case studyLinaro
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardJian-Hong Pan
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototypingYan Vugenfirer
 
Lessons learned with kubernetes in production at PlayPass
Lessons learned with kubernetes in productionat PlayPassLessons learned with kubernetes in productionat PlayPass
Lessons learned with kubernetes in production at PlayPassPeter Vandenabeele
 
Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...Jeremy Eder
 
Tensorflow in Docker
Tensorflow in DockerTensorflow in Docker
Tensorflow in DockerEric Ahn
 
Hardware & Software Platforms for HPC, AI and ML
Hardware & Software Platforms for HPC, AI and MLHardware & Software Platforms for HPC, AI and ML
Hardware & Software Platforms for HPC, AI and MLinside-BigData.com
 
syzkaller: the next gen kernel fuzzer
syzkaller: the next gen kernel fuzzersyzkaller: the next gen kernel fuzzer
syzkaller: the next gen kernel fuzzerDmitry Vyukov
 
Starting Raspberry Pi
Starting Raspberry PiStarting Raspberry Pi
Starting Raspberry PiLloydMoore
 
ELC-E Linux Awareness
ELC-E Linux AwarenessELC-E Linux Awareness
ELC-E Linux AwarenessPeter Griffin
 

Semelhante a Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels (20)

Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 
Hardwear.io 2018 BLE Security Essentials workshop
Hardwear.io 2018 BLE Security Essentials workshopHardwear.io 2018 BLE Security Essentials workshop
Hardwear.io 2018 BLE Security Essentials workshop
 
HKG15-409: ARM Hibernation enablement on SoCs - a case study
HKG15-409: ARM Hibernation enablement on SoCs - a case studyHKG15-409: ARM Hibernation enablement on SoCs - a case study
HKG15-409: ARM Hibernation enablement on SoCs - a case study
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development Board
 
100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototyping
 
Lessons learned with kubernetes in production at PlayPass
Lessons learned with kubernetes in productionat PlayPassLessons learned with kubernetes in productionat PlayPass
Lessons learned with kubernetes in production at PlayPass
 
Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...
 
How to Hack Edison
How to Hack EdisonHow to Hack Edison
How to Hack Edison
 
Tensorflow in Docker
Tensorflow in DockerTensorflow in Docker
Tensorflow in Docker
 
Hardware & Software Platforms for HPC, AI and ML
Hardware & Software Platforms for HPC, AI and MLHardware & Software Platforms for HPC, AI and ML
Hardware & Software Platforms for HPC, AI and ML
 
syzkaller: the next gen kernel fuzzer
syzkaller: the next gen kernel fuzzersyzkaller: the next gen kernel fuzzer
syzkaller: the next gen kernel fuzzer
 
Let's begin io t with $10
Let's begin io t with $10Let's begin io t with $10
Let's begin io t with $10
 
Starting Raspberry Pi
Starting Raspberry PiStarting Raspberry Pi
Starting Raspberry Pi
 
ELC-E Linux Awareness
ELC-E Linux AwarenessELC-E Linux Awareness
ELC-E Linux Awareness
 
GPU: Understanding CUDA
GPU: Understanding CUDAGPU: Understanding CUDA
GPU: Understanding CUDA
 

Mais de Dobrica Pavlinušić

Let's hack cheap hardware 2016 edition
Let's hack cheap hardware 2016 editionLet's hack cheap hardware 2016 edition
Let's hack cheap hardware 2016 editionDobrica Pavlinušić
 
Raspberry Pi - best friend for all your GPIO needs
Raspberry Pi - best friend for all your GPIO needsRaspberry Pi - best friend for all your GPIO needs
Raspberry Pi - best friend for all your GPIO needsDobrica Pavlinušić
 
Cheap, good, hackable tools from China: AVR component tester
Cheap, good, hackable tools from China: AVR component testerCheap, good, hackable tools from China: AVR component tester
Cheap, good, hackable tools from China: AVR component testerDobrica Pavlinušić
 
FSEC 2014 - I can haz your board with JTAG
FSEC 2014 - I can haz your board with JTAGFSEC 2014 - I can haz your board with JTAG
FSEC 2014 - I can haz your board with JTAGDobrica Pavlinušić
 
Security of Linux containers in the cloud
Security of Linux containers in the cloudSecurity of Linux containers in the cloud
Security of Linux containers in the cloudDobrica Pavlinušić
 
This is an interesting metadata source. Can I import it into Koha?
This is an interesting metadata source. Can I import it into Koha?This is an interesting metadata source. Can I import it into Koha?
This is an interesting metadata source. Can I import it into Koha?Dobrica Pavlinušić
 
KohaCon11: Integrating Koha with RFID system
KohaCon11: Integrating Koha with RFID systemKohaCon11: Integrating Koha with RFID system
KohaCon11: Integrating Koha with RFID systemDobrica Pavlinušić
 
Free Libre Open Source Software at FFZG library
Free Libre Open Source Software at FFZG libraryFree Libre Open Source Software at FFZG library
Free Libre Open Source Software at FFZG libraryDobrica Pavlinušić
 
Post-relational databases: What's wrong with web development? v3
Post-relational databases: What's wrong with web development? v3Post-relational databases: What's wrong with web development? v3
Post-relational databases: What's wrong with web development? v3Dobrica Pavlinušić
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Dobrica Pavlinušić
 
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...Dobrica Pavlinušić
 
Post-relational databases: What's wrong with web development?
Post-relational databases: What's wrong with web development?Post-relational databases: What's wrong with web development?
Post-relational databases: What's wrong with web development?Dobrica Pavlinušić
 
Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?Dobrica Pavlinušić
 
Kako napraviti Google od zgrade sa računalima?
Kako napraviti Google od zgrade sa računalima?Kako napraviti Google od zgrade sa računalima?
Kako napraviti Google od zgrade sa računalima?Dobrica Pavlinušić
 

Mais de Dobrica Pavlinušić (20)

bro - what is in my network?
bro - what is in my network?bro - what is in my network?
bro - what is in my network?
 
Let's hack cheap hardware 2016 edition
Let's hack cheap hardware 2016 editionLet's hack cheap hardware 2016 edition
Let's hack cheap hardware 2016 edition
 
Raspberry Pi - best friend for all your GPIO needs
Raspberry Pi - best friend for all your GPIO needsRaspberry Pi - best friend for all your GPIO needs
Raspberry Pi - best friend for all your GPIO needs
 
Cheap, good, hackable tools from China: AVR component tester
Cheap, good, hackable tools from China: AVR component testerCheap, good, hackable tools from China: AVR component tester
Cheap, good, hackable tools from China: AVR component tester
 
Ganeti - build your own cloud
Ganeti - build your own cloudGaneti - build your own cloud
Ganeti - build your own cloud
 
FSEC 2014 - I can haz your board with JTAG
FSEC 2014 - I can haz your board with JTAGFSEC 2014 - I can haz your board with JTAG
FSEC 2014 - I can haz your board with JTAG
 
Security of Linux containers in the cloud
Security of Linux containers in the cloudSecurity of Linux containers in the cloud
Security of Linux containers in the cloud
 
This is an interesting metadata source. Can I import it into Koha?
This is an interesting metadata source. Can I import it into Koha?This is an interesting metadata source. Can I import it into Koha?
This is an interesting metadata source. Can I import it into Koha?
 
Web scale monitoring
Web scale monitoringWeb scale monitoring
Web scale monitoring
 
SysAdmin cookbook
SysAdmin cookbookSysAdmin cookbook
SysAdmin cookbook
 
Printing on Linux, simple right?
Printing on Linux, simple right?Printing on Linux, simple right?
Printing on Linux, simple right?
 
KohaCon11: Integrating Koha with RFID system
KohaCon11: Integrating Koha with RFID systemKohaCon11: Integrating Koha with RFID system
KohaCon11: Integrating Koha with RFID system
 
Deploy your own P2P network
Deploy your own P2P networkDeploy your own P2P network
Deploy your own P2P network
 
Free Libre Open Source Software at FFZG library
Free Libre Open Source Software at FFZG libraryFree Libre Open Source Software at FFZG library
Free Libre Open Source Software at FFZG library
 
Post-relational databases: What's wrong with web development? v3
Post-relational databases: What's wrong with web development? v3Post-relational databases: What's wrong with web development? v3
Post-relational databases: What's wrong with web development? v3
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)
 
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
 
Post-relational databases: What's wrong with web development?
Post-relational databases: What's wrong with web development?Post-relational databases: What's wrong with web development?
Post-relational databases: What's wrong with web development?
 
Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?
 
Kako napraviti Google od zgrade sa računalima?
Kako napraviti Google od zgrade sa računalima?Kako napraviti Google od zgrade sa računalima?
Kako napraviti Google od zgrade sa računalima?
 

Último

UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 

Último (20)

UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 

Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels

  • 1. Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels Dobrica Pavlinušić https://blog.rot13.org/ @dpavlin
  • 2. Is it possible to take obsolete Android device and port it to mainline kernel with Debian? (make RaspberryPi-like device)
  • 3. Thinkpad Tablet -Tegra20 PHJ00LA-7461P 2011 model, Tegra T20 2 cores @1Ghz, 1 GB RAM, 64 GB mmc flash, 1280x800 screen, wifi, 3g/gps, camera, light sensor, accelerometer ● kernel 2.6.36 available from Lenovo, based on Tegra ventana board ○ 213 files changed, 39153 insertions(+), 1947 deletions(-) ● paz00 schematic exists from OEM (nice, but not as useful as you think) ○ compal_la-7461p_r0.3_schematics.pdf ● mainline has support for Tegra ○ Opensource drivers for NVIDIA Tegra20+ https://github.com/grate-driver ● cheaply available locally ○ somewhat broken with soldering marks and hotglue
  • 4. serial port ● suggested first step to begin anything -- it's much easier to bootstrap u-boot or kernel if you have working serial port ● schematics shows UART on 4 pin connector ○ connector hidden under metal shield of cpu ● 1.8V direct connection to Tegra CPU ○ cheap "iphone" 1.8V usb serials available in China ○ wire-wrapping wire is small enough for job
  • 5. Tegra APX mode ● early boot loader in CPU ROM (can be locked, it isn't in this case) ● enter APX by holding rotate key while pressing power key ● nvflash can be used to modify flash on device (binary blob, so we won't use it here) ● tegrarcm can create image that makes device bootable over usb [Tue Oct 9 14:30:41 2018] usb 2-4: new high-speed USB device number 16 using xhci_hcd [Tue Oct 9 14:30:42 2018] usb 2-4: New USB device found, idVendor=0955, idProduct=7820, bcdDevice= 1.04 [Tue Oct 9 14:30:42 2018] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [Tue Oct 9 14:30:42 2018] usb 2-4: Product: APX [Tue Oct 9 14:30:42 2018] usb 2-4: Manufacturer: NVIDIA Corp. ● this makes device unbrickable, so safe and easy to experiment with
  • 6. So far,we have: ★ diff of 2.6 kernel on device ★ serial port ★ ability to run our code
  • 7. u-boot $ export CROSS_COMPILE="arm-none-eabi-" ARCH=arm $ make ventana_defconfig port display from 2.6 kernel to u-boot device tree, so u-boot can turn it on push it using APX and it works! $ tegrarcm --bct broken.bct readbct # read device config $ tegrarcm --bct broken.bct --bootloader u-boot-tegra.bin --loadaddr 0x108000 https://github.com/dpavlin/u-boot/tree/phj00-thinkpad-tablet tegra20-ventana.dts | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) Add one of supported usb ethernets: ASIX ASIX88179 LAN75XX LAN78XX MCS7830 RTL8152 SMSC95XX
  • 8. Wait! Port changes?! It's not hard! # diff of 2.6 kernel static struct tegra_dc_mode ventana_panel_modes[] = { { - .pclk = 72072000, + .pclk = 71500000,//72072000, .h_ref_to_sync = 11, .v_ref_to_sync = 1, - .h_sync_width = 58, - .v_sync_width = 4, - .h_back_porch = 58, - .v_back_porch = 4, - .h_active = 1366, - .v_active = 768, - .h_front_porch = 58, - .v_front_porch = 4, + .h_sync_width = 32, + .v_sync_width = 7, + .h_back_porch = 72, + .v_back_porch = 22, + .h_active = 1280, + .v_active = 800, + .h_front_porch = 48, + .v_front_porch = 3, }, }; # u-boot dts diff display-timings { timing@0 { - /* Seaboard has 1366x768 */ - clock-frequency = <70600000>; - hactive = <1366>; - vactive = <768>; - hback-porch = <58>; - hfront-porch = <58>; - hsync-len = <58>; - vback-porch = <4>; - vfront-porch = <4>; - vsync-len = <4>; + /* XXX tegra_dc_mode ventana_panel_modes */ + clock-frequency = <72072000>; + hactive = <1280>; + vactive = <800>; + hback-porch = <72>; + hfront-porch = <48>; + hsync-len = <32>; + vback-porch = <22>; + vfront-porch = <3>; + vsync-len = <7>; hsync-active = <1>; }; };
  • 9. mainline (grate-driver) linux kernel and device tree ● start with ventana device tree (same as u-boot) ● examine 2.6 kernel diff and port changes to device tree ● simple-panel dts configuration didn't work, port it into kernel driver ● define gpio keys (active low/high testing) ○ use triggerhappy and shell to adjust brightness :-) ● added temperature nct1008, compass ak8975 and non-working accelerometer kxtf9 https://github.com/dpavlin/linux/tree/thinkpad-tablet-phj00 arch/arm/boot/dts/tegra20-ventana.dts | 154 ++++++++++++++-- arch/arm/configs/phj00_defconfig | 313 ++++++++++++++++++++++++++++++++++ drivers/gpu/drm/panel/panel-simple.c | 25 ++ 3 files changed, 471 insertions(+), 21 deletions(-)
  • 10. filesystem using nfsroot -optimize for fun! It would be possible to test everything with usb storage (corruptions are real) nfs ensures consistent filesystem (power loss, kernel ops) Why? Modify files locally on nfs server or on the device! nfsroot allows us to use qemu and chroot in nfs export to do fast package installation or similar It also helps if you are testing on multiple devices -- filesystem is always same! dhcp works for u-boot but not for kernel's ip=dhcp with dnsmasq More info: https://saturn.ffzg.hr/rot13/index.cgi?u_boot
  • 11. EC (8051 on i2c) and battery charging Charging works when device is off, requires >1A, sensitive to drop below 5V - I used variable power supply set at 5.2V with 2A limit. Based on battery state, it might be possible to keep battery charged using normal 500mA USB port, but only if the screen is not turned on (common on Android devices unfortunately) Device that you can't keep powered on isn't very useful.
  • 12. Linux 2.6 drivers/power/EC_battery.c gives hints #define DOCK_ON 151 //GPIO_PS7 //Dock in. report AC present if(gpio_get_value(DOCK_ON) == 1) { val->intval = 1; i2c_smbus_write_word_data(EC_Bat_device->client,0x5b,0x0001); return 0; } How to tell EC that AC is plugged in start charging without writing kernel code? # i2cset -y 5 0x58 0x5b 0x0001 w
  • 13. grate driver -Tegra GPU/video acceleration https://github.com/grate-driver upstream has Ubuntu packages,rebuilt for Debian --rebuild order important: libdrm,mesa,xorg-video-opentegra
  • 14. So,which devices are supported currently? i2c devices 0-001a wm8903 ✔ audio 0-001c al3000a_ls ✘ light 1-003a nvhdcp1 ✘ ? 1-0050 tegra_edid ✘ fake 2-0050 phj00_lcd ✘ fake 2-0058 EC_Battery ✘☚ charging 3-003c mt9p111 ✘ camera 3-003d mt9d115 ✘ camera 4-000c akm8975 ✔☚ compass 4-000f kxtf9 ✘ accel 4-0034 tps6586x ✔ power 4-004c nct1008 ✔☚ temp other devices display ✔☚ hdmi ? NTrig spi touch ✘ keys (gpio) ✔☚ vibrator (gpio) ✘ proximity (gpio) ✔☚ bcm4329 wifi (usb) ✔☚ modem (usb) ✔ mmc ✔ sdcard ?
  • 15. Was it worth the effort? YES! apt update
  • 16. If you enjoy something like this,it was! https://saturn.ffzg.hr/rot13/index.cgi?lenovo_thinkpad_tablet Future work: SPI enablement (tegra pins are configured, but kernel doesn't init SPI) -- surface3_spi might work for a touchscreen if I managed to persuade it to use device tree instead of ACPI EC need more work (and proper kernel driver) - wifi disappears after reboot, charging requires i2cset Cameras are unsupported (and v4l kernel bindings are changing right now, so I don't know how to implement them) Real Linux distro on the device is still more useful to me than unsupported Android!
  • 17. Related work for other ARM devices ● Armbian - best choice of Linux distro for ARM boards https://www.armbian.com/ ● Mainline Linux on Motorola Droid 4 [OMAP] https://archive.fosdem.org/2018/schedule/event/hwenablement_mainline _linux_on_motorola_droid_4/ ● Maemo Leste - A Debian/Devuan based mobile hacker OS [OMAP] https://fosdem.org/2019/schedule/event/maemo_leste_mobile/ ● postmarketOS [vendor kernels, Alpine] https://postmarketos.org/ ○ Samsung Galaxy Tab 10.1 (another Tegra20 device) https://github.com/Decatf/linux Hopefully this will motivate you to revive your old Android devices!