<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
	<id>https://wiki.andbootmgr.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luka177</id>
	<title>Android Boot Manager - User contributions [en-us]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.andbootmgr.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luka177"/>
	<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Special:Contributions/Luka177"/>
	<updated>2026-10-24T09:37:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=196</id>
		<title>Droidboot API</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=196"/>
		<updated>2024-03-10T16:10:58Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ABM version 0.3 introduced a universal api to have single gui, lvgl, config parser etc. across all devices. That is achieved by having a separated droidboot_gui, bootloader, and HAL (hardware abstraction layer) that implements common functionality needed to use ABM. Here is the list of function you should implement to get ABM running on your bootloader.&lt;br /&gt;
==Display==&lt;br /&gt;
===droidboot_internal_get_display_height===&lt;br /&gt;
 int droidboot_internal_get_display_height()&lt;br /&gt;
Should return display height in pixels&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_get_display_width===&lt;br /&gt;
 int droidboot_internal_get_display_width()&lt;br /&gt;
Should return display width in pixels&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_get_disp_buffer_height===&lt;br /&gt;
 int droidboot_internal_get_disp_buffer_height()&lt;br /&gt;
Should return int that represents number of horizontal lines in lvgl image buffer, usually is same as droidboot_internal_get_display_height.&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_use_double_buffering===&lt;br /&gt;
 bool droidboot_internal_use_double_buffering()&lt;br /&gt;
Should return true if you want to have double image buffer for lvgl, if you have planty of free RAM should be just hardcoded return true; It do make display refrash faster in some cases.&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_fb_flush===&lt;br /&gt;
 void droidboot_fb_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)&lt;br /&gt;
Should draw color_p buffer on screen, coordinates are stored in area-&amp;gt;x1, area-&amp;gt;y1, area-&amp;gt;x2, area-&amp;gt;y2 after doing so should call lv_disp_flush_ready(disp_drv);&lt;br /&gt;
Example implementations:&lt;br /&gt;
If you have adress of fb in memory:&lt;br /&gt;
 lv_coord_t w = (act_x2 - act_x1 + 1);&lt;br /&gt;
 long int location = 0;&lt;br /&gt;
 long int byte_location = 0;&lt;br /&gt;
 unsigned char bit_location = 0;&lt;br /&gt;
 int32_t y;&lt;br /&gt;
 for(y = act_y1; y &amp;lt;= act_y2; y++) {&lt;br /&gt;
     location = (act_x1 + 0) + (y + 0) * upriv-&amp;gt;line_length / 4;&lt;br /&gt;
     memcpy(&amp;amp;fbp32[location], (uint32_t *)color_p, (act_x2 - act_x1 + 1) * 4);&lt;br /&gt;
     color_p += w;&lt;br /&gt;
 }&lt;br /&gt;
 lv_disp_flush_ready(disp_drv);&lt;br /&gt;
&lt;br /&gt;
Where fbp32 is pointer to framebuffer.&lt;br /&gt;
If you have function to change pixel color:&lt;br /&gt;
 time_t t;&lt;br /&gt;
 int32_t x, y;&lt;br /&gt;
 for(y = area-&amp;gt;y1; y &amp;lt;= area-&amp;gt;y2; y++) {&lt;br /&gt;
     for(x = area-&amp;gt;x1; x &amp;lt;= area-&amp;gt;x2; x++) {&lt;br /&gt;
         fbcon_draw_pixel(x, y, 0xff &amp;lt;&amp;lt; 24 | color_p-&amp;gt;ch.red &amp;lt;&amp;lt; 16 | color_p-&amp;gt;ch.green &amp;lt;&amp;lt; 8 | color_p-&amp;gt;ch.blue  ); /* Put a pixel to the display.*/&lt;br /&gt;
         color_p++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 // Update display&lt;br /&gt;
 fbcon_flush();&lt;br /&gt;
 // Inform the graphics library that we are ready with the flushing&lt;br /&gt;
 lv_disp_flush_ready(disp_drv);&lt;br /&gt;
Where fbcon_draw_pixel is function to update single pixel and fbcon_flush is function to flush whole display.&lt;br /&gt;
&lt;br /&gt;
==Storage==&lt;br /&gt;
===droidboot_internal_sd_read_block===&lt;br /&gt;
 ssize_t droidboot_internal_sd_read_block(void *buf, uint32_t block, uint count)&lt;br /&gt;
Is a function to read block(s) from storage device, it takes pointer to buffer (buf) where you should put reading result, &amp;quot;block&amp;quot; is a number of first block to read and count is amount of blocks to read. Buffer is pre-allocated. Should return amount of block that were read from storage device (if everything is successful should be same as count).&lt;br /&gt;
===droidboot_internal_sd_write_block===&lt;br /&gt;
 ssize_t droidboot_internal_sd_write_block(const void *buf, uint32_t block, uint count)&lt;br /&gt;
Is a function to write block(s) to storage device, it takes pointer to buffer (buf) where new block content is stored, &amp;quot;block&amp;quot; is a number of first block to write and count is amount of blocks to write.Should return amount of block that were written to storage device (if everything is successful should be same as count).&lt;br /&gt;
===droidboot_internal_sd_blklen===&lt;br /&gt;
 uint32_t droidboot_internal_sd_blklen()&lt;br /&gt;
Shoul return block size (usually is 512 or 4096) it is good idea not to hardcode it but rather get dynamically.&lt;br /&gt;
===droidboot_internal_sd_blkcnt===&lt;br /&gt;
 uint64_t droidboot_internal_sd_blkcnt()&lt;br /&gt;
Should return amount of blocks on storage device.&lt;br /&gt;
===droidboot_internal_sd_exists===&lt;br /&gt;
 bool droidboot_internal_sd_exists()&lt;br /&gt;
Should return true if storage device do exist.&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=A_word_about_android,_dynamic_and_stuff&amp;diff=195</id>
		<title>A word about android, dynamic and stuff</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=A_word_about_android,_dynamic_and_stuff&amp;diff=195"/>
		<updated>2023-09-23T21:02:43Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a bit of info about android dualboot handling for platform and app developers.  Usually not too relevant for porters. All info here is up to date as of September 2023. Take all info found here with grain of salt.&lt;br /&gt;
&lt;br /&gt;
== Handling super ==&lt;br /&gt;
Obviously a first question when it comes to dualbooting on modern android phones, is what to do with so called super partition, that in fact should contain such parturition as:&lt;br /&gt;
&lt;br /&gt;
* system&lt;br /&gt;
* vendor&lt;br /&gt;
&lt;br /&gt;
Likely to contain:&lt;br /&gt;
&lt;br /&gt;
* product&lt;br /&gt;
* system_ext&lt;br /&gt;
&lt;br /&gt;
Can contain:&lt;br /&gt;
&lt;br /&gt;
* odm&lt;br /&gt;
&lt;br /&gt;
Those partition might or might not be in 2 sets A and B. Right some devices are very modern but still A only.&lt;br /&gt;
&lt;br /&gt;
The ABM team decided to create a separate super partition for each android based os installed, a big suprise they are named: super1, super2, ..., superX &lt;br /&gt;
&lt;br /&gt;
As partitions are located on sd card and android wants to mount them from /dev/block/by-name, we should somehow get them there with minimum to no binary patching. Apparently its easy as adding path to sd device, like ```soc/8804000.sdhci``` to ```androidboot.boot_device``` but you should leave old one as first and separate wit ,&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=A_word_about_android,_dynamic_and_stuff&amp;diff=194</id>
		<title>A word about android, dynamic and stuff</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=A_word_about_android,_dynamic_and_stuff&amp;diff=194"/>
		<updated>2023-09-23T21:01:47Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a bit of info about android dualboot handling for platform and app developers.  Usually not too relevant for porters. All info here is up to date as of September 2023. Take all info found here with grain of salt.&lt;br /&gt;
&lt;br /&gt;
== Handling super ==&lt;br /&gt;
Obviously a first question when it comes to dualbooting on modern android phones, is what to do with so called super partition, that in fact should contain such parturition as:&lt;br /&gt;
&lt;br /&gt;
* system&lt;br /&gt;
* vendor&lt;br /&gt;
&lt;br /&gt;
Likely to contain:&lt;br /&gt;
&lt;br /&gt;
* product&lt;br /&gt;
* system_ext&lt;br /&gt;
&lt;br /&gt;
Can contain:&lt;br /&gt;
&lt;br /&gt;
* odm&lt;br /&gt;
&lt;br /&gt;
Those partition might or might not be in 2 sets A and B. Right some devices are very modern but still A only.&lt;br /&gt;
&lt;br /&gt;
The ABM team decided to create a separate super partition for each android based os installed, a big suprise they are named: super1, super2, ..., superX &lt;br /&gt;
&lt;br /&gt;
As partitions are located on sd card and android wants to mount them from /dev/block/by-name, we should somehow get them there with minimum to no binary patching. Apparently its easy as adding path to sd device, like ```soc/8804000.sdhci``` to ```androidboot.boot_device``` but you should leave old one as first and separate wit {{,}}&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=A_word_about_android,_dynamic_and_stuff&amp;diff=193</id>
		<title>A word about android, dynamic and stuff</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=A_word_about_android,_dynamic_and_stuff&amp;diff=193"/>
		<updated>2023-09-23T21:00:02Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a bit of info about android dualboot handling for platform and app developers.  Usually not too relevant for porters. All info here is up to date as of September 2023. Take all info found here with grain of salt.&lt;br /&gt;
&lt;br /&gt;
== Handling super ==&lt;br /&gt;
Obviously a first question when it comes to dualbooting on modern android phones, is what to do with so called super partition, that in fact should contain such parturition as:&lt;br /&gt;
&lt;br /&gt;
* system&lt;br /&gt;
* vendor&lt;br /&gt;
&lt;br /&gt;
Likely to contain:&lt;br /&gt;
&lt;br /&gt;
* product&lt;br /&gt;
* system_ext&lt;br /&gt;
&lt;br /&gt;
Can contain:&lt;br /&gt;
&lt;br /&gt;
* odm&lt;br /&gt;
&lt;br /&gt;
Those partition might or might not be in 2 sets A and B. Right some devices are very modern but still A only.&lt;br /&gt;
&lt;br /&gt;
The ABM team decided to create a separate super partition for each android based os installed, a big suprise they are named: super1, super2, ..., superX &lt;br /&gt;
&lt;br /&gt;
As partitions are located on sd card and android wants to mount them from /dev/block/by-name, we should somehow get them there with minimum to no binary patching. Apparently its easy as adding path to sd device, like ```soc/8804000.sdhci``` to ```androidboot.boot_device``` but you should leave old one as first and separate wit ```,```&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=A_word_about_android,_dynamic_and_stuff&amp;diff=192</id>
		<title>A word about android, dynamic and stuff</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=A_word_about_android,_dynamic_and_stuff&amp;diff=192"/>
		<updated>2023-09-23T20:59:29Z</updated>

		<summary type="html">&lt;p&gt;Luka177: Created page with &amp;quot;This page contains a bit of info about android dualboot handling for platform and app developers.  Usually not too relevant for porters. All info here is up to date as of September 2023. Take all info found here with grain of salt.  == Handling super == Obviously a first question when it comes to dualbooting on modern android phones, is what to do with so called super partition, that in fact should contain such parturition as:  * system * vendor  Likely to contain:  * pr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a bit of info about android dualboot handling for platform and app developers.  Usually not too relevant for porters. All info here is up to date as of September 2023. Take all info found here with grain of salt.&lt;br /&gt;
&lt;br /&gt;
== Handling super ==&lt;br /&gt;
Obviously a first question when it comes to dualbooting on modern android phones, is what to do with so called super partition, that in fact should contain such parturition as:&lt;br /&gt;
&lt;br /&gt;
* system&lt;br /&gt;
* vendor&lt;br /&gt;
&lt;br /&gt;
Likely to contain:&lt;br /&gt;
&lt;br /&gt;
* product&lt;br /&gt;
* system_ext&lt;br /&gt;
&lt;br /&gt;
Can contain:&lt;br /&gt;
&lt;br /&gt;
* odm&lt;br /&gt;
&lt;br /&gt;
Those partition might or might not be in 2 sets A and B. Right some devices are very modern but still A only.&lt;br /&gt;
&lt;br /&gt;
The ABM team decided to create a separate super partition for each android based os installed, a big suprise they are named: super1, super2, ..., superX &lt;br /&gt;
&lt;br /&gt;
As partitions are located on sd card and android wants to mount them from /dev/block/by-name, we should somehow get them there with minimum to no binary patching. Apparently its easy as adding path to sd device, like soc/8804000.sdhci to androidboot.boot_device but you should leave old one as first and separate wit ,&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Random_facts&amp;diff=191</id>
		<title>Random facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Random_facts&amp;diff=191"/>
		<updated>2023-09-23T20:47:20Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Droidboot_API|Droidboot API description]] (WIP)&lt;br /&gt;
&lt;br /&gt;
[[A word about android, dynamic and stuff]] (even more WIP)&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Random_facts&amp;diff=190</id>
		<title>Random facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Random_facts&amp;diff=190"/>
		<updated>2023-09-23T20:47:09Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Random facts&#039;&#039;&#039;&lt;br /&gt;
[[Droidboot_API|Droidboot API description]] (WIP)&lt;br /&gt;
&lt;br /&gt;
[[A word about android, dynamic and stuff]] (even more WIP)&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Random_facts&amp;diff=189</id>
		<title>Random facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Random_facts&amp;diff=189"/>
		<updated>2023-09-23T20:46:55Z</updated>

		<summary type="html">&lt;p&gt;Luka177: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Random facts&amp;#039;&amp;#039;&amp;#039; Droidboot API description (WIP) A word about android, dynamic and stuff (even more WIP)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Random facts&#039;&#039;&#039;&lt;br /&gt;
[[Droidboot_API|Droidboot API description]] (WIP)&lt;br /&gt;
[[A word about android, dynamic and stuff]] (even more WIP)&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Android_Boot_Manager:Main_Page&amp;diff=188</id>
		<title>Android Boot Manager:Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Android_Boot_Manager:Main_Page&amp;diff=188"/>
		<updated>2023-09-23T20:43:58Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to the Android Boot Manager wiki!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 40px; width: 350px; padding-left: 15px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- OVERVIEW --&amp;gt;&lt;br /&gt;
{{mainpage-button|smartphone|Devices}}&lt;br /&gt;
{{mainpage-button|emblem-shared|:Category:Community|Community}}&lt;br /&gt;
{{mainpage-button|dialog-question|FAQ}}&lt;br /&gt;
{{mainpage-button|application-menu|Supported_platforms|Platforms supported by ABM}}&lt;br /&gt;
{{mainpage-button|random_facts|Random facts}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GUIDES --&amp;gt;&lt;br /&gt;
{{mainpage-button|document-save|Installation_Tutorial|Installation}}&lt;br /&gt;
{{mainpage-button|application-menu|Porting_to_a_new_device|Porting}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- CONTRIBUTING / TECHNICAL STUFF --&amp;gt;&lt;br /&gt;
{{mainpage-button|emote-love|Contributing}}&lt;br /&gt;
{{mainpage-button|folder-documents|:Category:Technical Reference|Technical Reference}}&lt;br /&gt;
{{mainpage-button|emblem-important|Troubleshooting}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Easily flash the bootloader&lt;br /&gt;
* Bootmenu at start time&lt;br /&gt;
* Partition your SD card&lt;br /&gt;
* Multiboot&lt;br /&gt;
* Install Android, Ubuntu Touch, Sailfish OS&lt;br /&gt;
* Use functions for power users&lt;br /&gt;
* Autoboot specific system after an Timeout&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
Dualbooting is useful...&lt;br /&gt;
&lt;br /&gt;
* ...to try out an alternative operating system (without overwriting the existing installation)&lt;br /&gt;
* ...boot from a secure external storage (SD card) for special security like&lt;br /&gt;
** ensuring an untampered operating system&lt;br /&gt;
** prevent persistent viruses and tracking software&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Lk2nd&amp;diff=187</id>
		<title>Lk2nd</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Lk2nd&amp;diff=187"/>
		<updated>2023-01-26T11:12:22Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Before Snapdragon 82X Qualcomm did use lk based open source bootloader, while modern device don&#039;t use it anymore, ABM do still [https://github.com/Android-Boot-Manager/droidboot_device_qcom_lk2nd support it]&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Lk2nd&amp;diff=186</id>
		<title>Lk2nd</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Lk2nd&amp;diff=186"/>
		<updated>2023-01-26T11:12:10Z</updated>

		<summary type="html">&lt;p&gt;Luka177: Created page with &amp;quot;==Overview== Befor Snapdragon 82X Qualcomm did use lk based open source bootloader, while modern device don&amp;#039;t use it anymore, ABM do still [https://github.com/Android-Boot-Manager/droidboot_device_qcom_lk2nd support it]&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Befor Snapdragon 82X Qualcomm did use lk based open source bootloader, while modern device don&#039;t use it anymore, ABM do still [https://github.com/Android-Boot-Manager/droidboot_device_qcom_lk2nd support it]&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=U-boot&amp;diff=185</id>
		<title>U-boot</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=U-boot&amp;diff=185"/>
		<updated>2023-01-26T11:09:58Z</updated>

		<summary type="html">&lt;p&gt;Luka177: Created page with &amp;quot;==Overview== [https://en.wikipedia.org/wiki/Das_U-Boot Das U-Boot] (subtitled &amp;quot;the Universal Boot Loader&amp;quot; and often shortened to U-Boot; see History for more about the name) is an open-source, primary boot loader used in embedded devices to package the instructions to boot the device&amp;#039;s operating system kernel. It is available for a number of computer architectures, including 68k, ARM, Blackfin, MicroBlaze, MIPS, Nios, SuperH, PPC, RISC-V and x86. ==ABM== Currently there...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
[https://en.wikipedia.org/wiki/Das_U-Boot Das U-Boot] (subtitled &amp;quot;the Universal Boot Loader&amp;quot; and often shortened to U-Boot; see History for more about the name) is an open-source, primary boot loader used in embedded devices to package the instructions to boot the device&#039;s operating system kernel. It is available for a number of computer architectures, including 68k, ARM, Blackfin, MicroBlaze, MIPS, Nios, SuperH, PPC, RISC-V and x86.&lt;br /&gt;
==ABM==&lt;br /&gt;
Currently there is [https://github.com/Android-Boot-Manager/droidboot_platforms/tree/main/u-boot Work-In-Progress u-boot support] in droidboot platforms.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
*Currently only one storage device is supported&lt;br /&gt;
*Only keyboard input is supported&lt;br /&gt;
*There are no gui menus for u-boot setup, only basic ABM boot menu&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Supported_platforms&amp;diff=184</id>
		<title>Supported platforms</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Supported_platforms&amp;diff=184"/>
		<updated>2023-01-26T11:05:45Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Android Boot Manager consists of 2 parts, android app with sh backend (platform independent) and a &amp;quot;Droidboot&amp;quot; that stands for 2nd stage or 1st stage bootloader, in case it is 2nd stage bootloader, it is flashed to boot partition instead of linux kernel. In case it is 1st stage bootloader it replaces a bootloader of phone (like aboot, abl or lk partition), this is of course a better way of doing things, but sadly most devices needs signed bootloader, so modifying it is impossible.&lt;br /&gt;
ABM currently support such:&lt;br /&gt;
&lt;br /&gt;
==1st stage bootloaders==&lt;br /&gt;
*Official supported&lt;br /&gt;
**[[MTK LK | MTK little kernel based bootloader]]&lt;br /&gt;
**[[U-boot | Das U-Boot]]&lt;br /&gt;
*Work in progress ports&lt;br /&gt;
**[[qcom abl | Qualcomm Android Boot Loader efi app]]&lt;br /&gt;
&lt;br /&gt;
==2nd stage bootloaders==&lt;br /&gt;
*Official supported&lt;br /&gt;
**[[lk2nd | little kernel based bootloader for older Qualcomm SOCs]]&lt;br /&gt;
*Work in progress ports&lt;br /&gt;
**[[Renegade UEFI | uefi implementation for modern qcom socs mainly used to boot windows]]&lt;br /&gt;
&lt;br /&gt;
==Not a bootloaders==&lt;br /&gt;
*Frozen&lt;br /&gt;
**[[no-bl-workaround | Workaround for devices that do not have opensource 2nd stag bootloadr, based on Linux and dynamic boot re flashing]]&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=183</id>
		<title>Droidboot API</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=183"/>
		<updated>2023-01-26T10:58:21Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ABM version 0.3 introduced a universal api to have single gui, lvgl, config parser etc. across all devices. That is achieved by having a separated droidboot_gui, bootloader, and HAL (hardware abstraction layer) that implements common functionality needed to use ABM. Here is the list of function you should implement to get ABM running on your bootloader.&lt;br /&gt;
==Display==&lt;br /&gt;
===droidboot_internal_get_display_height===&lt;br /&gt;
 int droidboot_internal_get_display_height()&lt;br /&gt;
Should return display height in pixels&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_get_display_width===&lt;br /&gt;
 int droidboot_internal_get_display_width()&lt;br /&gt;
Should return display width in pixels&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_get_disp_buffer_height===&lt;br /&gt;
 int droidboot_internal_get_disp_buffer_height()&lt;br /&gt;
Should return int that represents number of horizontal lines in lvgl image buffer, usually is same as droidboot_internal_get_display_height.&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_use_double_buffering===&lt;br /&gt;
 bool droidboot_internal_use_double_buffering()&lt;br /&gt;
Should return true if you want to have double image buffer for lvgl, if you have planty of free RAM should be just hardcoded return true; It do make display refrash faster in some cases.&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_fb_flush===&lt;br /&gt;
 void droidboot_fb_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)&lt;br /&gt;
Should draw color_p buffer on screen, coordinates are stored in area-&amp;gt;x1, area-&amp;gt;y1, area-&amp;gt;x2, area-&amp;gt;y2 after doing so should call lv_disp_flush_ready(disp_drv);&lt;br /&gt;
Example implementations:&lt;br /&gt;
If you have adress of fb in memory:&lt;br /&gt;
 lv_coord_t w = (act_x2 - act_x1 + 1);&lt;br /&gt;
 long int location = 0;&lt;br /&gt;
 long int byte_location = 0;&lt;br /&gt;
 unsigned char bit_location = 0;&lt;br /&gt;
 int32_t y;&lt;br /&gt;
 for(y = act_y1; y &amp;lt;= act_y2; y++) {&lt;br /&gt;
     location = (act_x1 + 0) + (y + 0) * upriv-&amp;gt;line_length / 4;&lt;br /&gt;
     memcpy(&amp;amp;fbp32[location], (uint32_t *)color_p, (act_x2 - act_x1 + 1) * 4);&lt;br /&gt;
     color_p += w;&lt;br /&gt;
 }&lt;br /&gt;
 lv_disp_flush_ready(disp_drv);&lt;br /&gt;
&lt;br /&gt;
Where fbp32 is pointer to framebuffer.&lt;br /&gt;
If you have function to change pixel color:&lt;br /&gt;
 time_t t;&lt;br /&gt;
 int32_t x, y;&lt;br /&gt;
 for(y = area-&amp;gt;y1; y &amp;lt;= area-&amp;gt;y2; y++) {&lt;br /&gt;
     for(x = area-&amp;gt;x1; x &amp;lt;= area-&amp;gt;x2; x++) {&lt;br /&gt;
         fbcon_draw_pixel(x, y, 0xff &amp;lt;&amp;lt; 24 | color_p-&amp;gt;ch.red &amp;lt;&amp;lt; 16 | color_p-&amp;gt;ch.green &amp;lt;&amp;lt; 8 | color_p-&amp;gt;ch.blue  ); /* Put a pixel to the display.*/&lt;br /&gt;
         color_p++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 // Update display&lt;br /&gt;
 fbcon_flush();&lt;br /&gt;
 // Inform the graphics library that we are ready with the flushing&lt;br /&gt;
 lv_disp_flush_ready(disp_drv);&lt;br /&gt;
Where fbcon_draw_pixel is function to update single pixel and fbcon_flush is function to flush whole display.&lt;br /&gt;
&lt;br /&gt;
==Storage==&lt;br /&gt;
===dridboot_internal_sd_read_block===&lt;br /&gt;
 ssize_t dridboot_internal_sd_read_block(void *buf, uint32_t block, uint count)&lt;br /&gt;
Is a function to read block(s) from storage device, it takes pointer to buffer (buf) where you should put reading result, &amp;quot;block&amp;quot; is a number of first block to read and count is amount of blocks to read. Buffer is pre-allocated. Should return amount of block that were read from storage device (if everything is successful should be same as count).&lt;br /&gt;
===dridboot_internal_sd_write_block===&lt;br /&gt;
 ssize_t dridboot_internal_sd_write_block(const void *buf, uint32_t block, uint count)&lt;br /&gt;
Is a function to write block(s) to storage device, it takes pointer to buffer (buf) where new block content is stored, &amp;quot;block&amp;quot; is a number of first block to write and count is amount of blocks to write.Should return amount of block that were written to storage device (if everything is successful should be same as count).&lt;br /&gt;
===droidboot_internal_sd_blklen===&lt;br /&gt;
 uint32_t droidboot_internal_sd_blklen()&lt;br /&gt;
Shoul return block size (usually is 512 or 4096) it is good idea not to hardcode it but rather get dynamically.&lt;br /&gt;
===droidboot_internal_sd_blkcnt===&lt;br /&gt;
 uint64_t droidboot_internal_sd_blkcnt()&lt;br /&gt;
Should return amount of blocks on storage device.&lt;br /&gt;
===droidboot_internal_sd_exists===&lt;br /&gt;
 bool droidboot_internal_sd_exists()&lt;br /&gt;
Should return true if storage device do exist.&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=182</id>
		<title>Droidboot API</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=182"/>
		<updated>2023-01-26T10:11:30Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ABM version 0.3 introduced a universal api to have single gui, lvgl, config parser etc. across all devices. That is achieved by having a separated droidboot_gui, bootloader, and HAL (hardware abstraction layer) that implements common functionality needed to use ABM. Here is the list of function you should implement to get ABM running on your bootloader.&lt;br /&gt;
==Display related==&lt;br /&gt;
===droidboot_internal_get_display_height===&lt;br /&gt;
 int droidboot_internal_get_display_height()&lt;br /&gt;
Should return display height in pixels&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_get_display_width===&lt;br /&gt;
 int droidboot_internal_get_display_width()&lt;br /&gt;
Should return display width in pixels&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_get_disp_buffer_height===&lt;br /&gt;
 int droidboot_internal_get_disp_buffer_height()&lt;br /&gt;
Should return int that represents number of horizontal lines in lvgl image buffer, usually is same as droidboot_internal_get_display_height.&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_use_double_buffering===&lt;br /&gt;
 bool droidboot_internal_use_double_buffering()&lt;br /&gt;
Should return true if you want to have double image buffer for lvgl, if you have planty of free RAM should be just hardcoded return true; It do make display refrash faster in some cases.&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_fb_flush===&lt;br /&gt;
 void droidboot_fb_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)&lt;br /&gt;
Should draw color_p buffer on screen, coordinates are stored in area-&amp;gt;x1, area-&amp;gt;y1, area-&amp;gt;x2, area-&amp;gt;y2 after doing so should call lv_disp_flush_ready(disp_drv);&lt;br /&gt;
Example implementations:&lt;br /&gt;
If you have adress of fb in memory:&lt;br /&gt;
 lv_coord_t w = (act_x2 - act_x1 + 1);&lt;br /&gt;
 long int location = 0;&lt;br /&gt;
 long int byte_location = 0;&lt;br /&gt;
 unsigned char bit_location = 0;&lt;br /&gt;
 int32_t y;&lt;br /&gt;
 for(y = act_y1; y &amp;lt;= act_y2; y++) {&lt;br /&gt;
     location = (act_x1 + 0) + (y + 0) * upriv-&amp;gt;line_length / 4;&lt;br /&gt;
     memcpy(&amp;amp;fbp32[location], (uint32_t *)color_p, (act_x2 - act_x1 + 1) * 4);&lt;br /&gt;
     color_p += w;&lt;br /&gt;
 }&lt;br /&gt;
 lv_disp_flush_ready(disp_drv);&lt;br /&gt;
&lt;br /&gt;
Where fbp32 is pointer to framebuffer.&lt;br /&gt;
If you have function to change pixel color:&lt;br /&gt;
 time_t t;&lt;br /&gt;
 int32_t x, y;&lt;br /&gt;
 for(y = area-&amp;gt;y1; y &amp;lt;= area-&amp;gt;y2; y++) {&lt;br /&gt;
     for(x = area-&amp;gt;x1; x &amp;lt;= area-&amp;gt;x2; x++) {&lt;br /&gt;
         fbcon_draw_pixel(x, y, 0xff &amp;lt;&amp;lt; 24 | color_p-&amp;gt;ch.red &amp;lt;&amp;lt; 16 | color_p-&amp;gt;ch.green &amp;lt;&amp;lt; 8 | color_p-&amp;gt;ch.blue  ); /* Put a pixel to the display.*/&lt;br /&gt;
         color_p++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 // Update display&lt;br /&gt;
 fbcon_flush();&lt;br /&gt;
 // Inform the graphics library that we are ready with the flushing&lt;br /&gt;
 lv_disp_flush_ready(disp_drv);&lt;br /&gt;
Where fbcon_draw_pixel is function to update single pixel and fbcon_flush is function to flush whole display.&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=181</id>
		<title>Droidboot API</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=181"/>
		<updated>2023-01-25T21:41:01Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ABM version 0.3 introduced a universal api to have single gui, lvgl, config parser etc. across all devices. That is achieved by having a separated droidboot_gui, bootloader, and HAL (hardware abstraction layer) that implements common functionality needed to use ABM. Here is the list of function you should implement to get ABM running on your bootloader.&lt;br /&gt;
==Display related==&lt;br /&gt;
===droidboot_internal_get_display_height===&lt;br /&gt;
 int droidboot_internal_get_display_height()&lt;br /&gt;
Should return display height in pixels&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_get_display_width===&lt;br /&gt;
 int droidboot_internal_get_display_width()&lt;br /&gt;
Should return display width in pixels&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_get_disp_buffer_height===&lt;br /&gt;
 int droidboot_internal_get_disp_buffer_height()&lt;br /&gt;
Should return int that represents number of horizontal lines in lvgl image buffer, usually is same as droidboot_internal_get_display_height.&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_use_double_buffering===&lt;br /&gt;
 bool droidboot_internal_use_double_buffering()&lt;br /&gt;
Should return true if you want to have double image buffer for lvgl, if you have planty of free RAM should be just hardcoded return true; It do make display refrash faster in some cases.&lt;br /&gt;
&lt;br /&gt;
===droidboot_internal_fb_flush===&lt;br /&gt;
 void droidboot_fb_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)&lt;br /&gt;
Should draw color_p buffer on screen, coordinates are stored in area-&amp;gt;x1, area-&amp;gt;y1, area-&amp;gt;x2, area-&amp;gt;y2 after doing so should call lv_disp_flush_ready(disp_drv);&lt;br /&gt;
Example implementations:&lt;br /&gt;
If you have adress of fb in memory:&lt;br /&gt;
 lv_coord_t w = (act_x2 - act_x1 + 1);&lt;br /&gt;
 long int location = 0;&lt;br /&gt;
 long int byte_location = 0;&lt;br /&gt;
 unsigned char bit_location = 0;&lt;br /&gt;
 int32_t y;&lt;br /&gt;
 for(y = act_y1; y &amp;lt;= act_y2; y++) {&lt;br /&gt;
     location = (act_x1 + 0) + (y + 0) * upriv-&amp;gt;line_length / 4;&lt;br /&gt;
     memcpy(&amp;amp;fbp32[location], (uint32_t *)color_p, (act_x2 - act_x1 + 1) * 4);&lt;br /&gt;
     color_p += w;&lt;br /&gt;
 }&lt;br /&gt;
 lv_disp_flush_ready(disp_drv);&lt;br /&gt;
&lt;br /&gt;
Where fbp32 is pointer to framebuffer.&lt;br /&gt;
If you have function to change pixel color:&lt;br /&gt;
time_t t;&lt;br /&gt;
 int32_t x, y;&lt;br /&gt;
 for(y = area-&amp;gt;y1; y &amp;lt;= area-&amp;gt;y2; y++) {&lt;br /&gt;
     for(x = area-&amp;gt;x1; x &amp;lt;= area-&amp;gt;x2; x++) {&lt;br /&gt;
         fbcon_draw_pixel(x, y, 0xff &amp;lt;&amp;lt; 24 | color_p-&amp;gt;ch.red &amp;lt;&amp;lt; 16 | color_p-&amp;gt;ch.green &amp;lt;&amp;lt; 8 | color_p-&amp;gt;ch.blue  ); /* Put a pixel to the display.*/&lt;br /&gt;
         color_p++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 // Update display&lt;br /&gt;
 fbcon_flush();&lt;br /&gt;
 // Inform the graphics library that we are ready with the flushing&lt;br /&gt;
 lv_disp_flush_ready(disp_drv);&lt;br /&gt;
Where fbcon_draw_pixel is function to update single pixel and fbcon_flush is function to flush whole display.&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=180</id>
		<title>Droidboot API</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Droidboot_API&amp;diff=180"/>
		<updated>2023-01-25T21:25:49Z</updated>

		<summary type="html">&lt;p&gt;Luka177: Created page with &amp;quot;ABM version 0.3 introduced a universal api to have single gui, lvgl, config parser etc. across all devices. That is achieved by having a separated droidboot_gui, bootloader, and HAL (hardware abstraction layer) that implements common functionality needed to use ABM. Here is the list of function you should implement to get ABM running on your bootloader. ==Display related== ==droidboot_internal_get_display_height== {{{int droidboot_internal_get_display_height()}}} Should...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ABM version 0.3 introduced a universal api to have single gui, lvgl, config parser etc. across all devices. That is achieved by having a separated droidboot_gui, bootloader, and HAL (hardware abstraction layer) that implements common functionality needed to use ABM. Here is the list of function you should implement to get ABM running on your bootloader.&lt;br /&gt;
==Display related==&lt;br /&gt;
==droidboot_internal_get_display_height==&lt;br /&gt;
{{{int droidboot_internal_get_display_height()}}}&lt;br /&gt;
Should return display height in pixels&lt;br /&gt;
&lt;br /&gt;
==droidboot_internal_get_display_width==&lt;br /&gt;
{{{int droidboot_internal_get_display_width()}}}&lt;br /&gt;
Should return display width in pixels&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Template:Devices&amp;diff=179</id>
		<title>Template:Devices</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Template:Devices&amp;diff=179"/>
		<updated>2022-10-20T17:15:10Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{#template_params:Codename|Manufacturer|Name|Chipset|StatusBootloader|StatusDisplay|StatusUSB|StatusTouchscreen}}&lt;br /&gt;
{{#cargo_declare:_table=Devices|Codename=String|Manufacturer=String|Name=String|Chipset=String|StatusBootloader=String|StatusDisplay=String|StatusUSB=String|StatusTouchscreen=String}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#cargo_store:_table=Devices}}&lt;br /&gt;
{{#template_display:_format=standard}}&lt;br /&gt;
[[Category:Devices]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Template:Devices&amp;diff=178</id>
		<title>Template:Devices</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Template:Devices&amp;diff=178"/>
		<updated>2022-10-20T17:12:59Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{#template_params:Codename|Manufacturer|Chipset|StatusBootloader|StatusDisplay|StatusUSB|StatusTouchscreen}}&lt;br /&gt;
{{#cargo_declare:_table=Devices|Codename=String|Manufacturer=String|Chipset=String|StatusBootloader=String|StatusDisplay=String|StatusUSB=String|StatusTouchscreen=String}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#cargo_store:_table=Devices}}&lt;br /&gt;
{{#template_display:_format=standard}}&lt;br /&gt;
[[Category:Devices]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Form:Devices&amp;diff=177</id>
		<title>Form:Devices</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Form:Devices&amp;diff=177"/>
		<updated>2022-10-20T17:09:12Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the &amp;quot;Devices&amp;quot; form.&lt;br /&gt;
To create a page with this form, enter the page name below;&lt;br /&gt;
if a page with that name already exists, you will be sent to a form to edit that page.&lt;br /&gt;
&lt;br /&gt;
{{#forminput:form=Devices|autocomplete on category=Devices}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;wikiPreview&amp;quot; style=&amp;quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{for template|Devices}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! Codename: &lt;br /&gt;
| {{{field|Codename}}}&lt;br /&gt;
|-&lt;br /&gt;
! Chipset: &lt;br /&gt;
| {{{field|Chipset}}}&lt;br /&gt;
|-&lt;br /&gt;
! StatusBootloader: &lt;br /&gt;
| {{{field|StatusBootloader}}}&lt;br /&gt;
|-&lt;br /&gt;
! StatusDisplay: &lt;br /&gt;
| {{{field|StatusDisplay}}}&lt;br /&gt;
|-&lt;br /&gt;
! StatusUSB: &lt;br /&gt;
| {{{field|StatusUSB}}}&lt;br /&gt;
|-&lt;br /&gt;
! StatusTouchscreen: &lt;br /&gt;
| {{{field|StatusTouchscreen}}}&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free text:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{{standard input|free text|rows=10}}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Category:Devices&amp;diff=176</id>
		<title>Category:Devices</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Category:Devices&amp;diff=176"/>
		<updated>2022-10-20T17:09:01Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#default_form:Devices}}&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Template:Devices&amp;diff=175</id>
		<title>Template:Devices</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Template:Devices&amp;diff=175"/>
		<updated>2022-10-20T17:09:00Z</updated>

		<summary type="html">&lt;p&gt;Luka177: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{#template_params:Codename|Chipset|StatusBootloader|StatusDisplay|StatusUSB|StatusTouchscreen}}&lt;br /&gt;
{{#cargo_declare:_table=Devices|Codename=String|Chipset=String|StatusBootloader=String|StatusDisplay=String|StatusUSB=String|StatusTouchscreen=String}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#cargo_store:_table=Devices}}&lt;br /&gt;
{{#template_display:_format=standard}}&lt;br /&gt;
[[Category:Devices]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=Volla_Phone_(volla-yggdrasil)&amp;diff=174</id>
		<title>Volla Phone (volla-yggdrasil)</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=Volla_Phone_(volla-yggdrasil)&amp;diff=174"/>
		<updated>2022-10-20T16:52:04Z</updated>

		<summary type="html">&lt;p&gt;Luka177: Created page with &amp;quot;{{Infobox device | manufacturer = Volla | name = Volla Phone | codename = volla-yggdrail | releaseyear = 2020 | chipset = Mediatek Helio P23 (MT6763V) | cpu = Octa-core 2.0 GHz Cortex-A53 | display = 2340 x 1080 pixels, 6.3-inch IPS LCD | storage = 64 GB | memory = 4 GB | architecture = aarch64 | status_bootloader = Y | status_display = Y | status_mainbuttons = Y | status_touchscreen  = N | status_usb = P | status_extrabuttons = - }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox device&lt;br /&gt;
| manufacturer = Volla&lt;br /&gt;
| name = Volla Phone&lt;br /&gt;
| codename = volla-yggdrail&lt;br /&gt;
| releaseyear = 2020&lt;br /&gt;
| chipset = Mediatek Helio P23 (MT6763V)&lt;br /&gt;
| cpu = Octa-core 2.0 GHz Cortex-A53&lt;br /&gt;
| display = 2340 x 1080 pixels, 6.3-inch IPS LCD&lt;br /&gt;
| storage = 64 GB&lt;br /&gt;
| memory = 4 GB&lt;br /&gt;
| architecture = aarch64&lt;br /&gt;
| status_bootloader = Y&lt;br /&gt;
| status_display = Y&lt;br /&gt;
| status_mainbuttons = Y&lt;br /&gt;
| status_touchscreen  = N&lt;br /&gt;
| status_usb = P&lt;br /&gt;
| status_extrabuttons = -&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
	<entry>
		<id>https://wiki.andbootmgr.org/index.php?title=User:Luka177&amp;diff=173</id>
		<title>User:Luka177</title>
		<link rel="alternate" type="text/html" href="https://wiki.andbootmgr.org/index.php?title=User:Luka177&amp;diff=173"/>
		<updated>2022-10-20T16:30:07Z</updated>

		<summary type="html">&lt;p&gt;Luka177: Created page with &amp;quot;Hello, i have no idea why you are here, anyway I am Luka known as luka177 and cvbnm90i. I am main droidboot developer, and sometimes do app for fun.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello, i have no idea why you are here, anyway I am Luka known as luka177 and cvbnm90i. I am main droidboot developer, and sometimes do app for fun.&lt;/div&gt;</summary>
		<author><name>Luka177</name></author>
	</entry>
</feed>