diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml new file mode 100644 index 0000000..40fc93e --- /dev/null +++ b/.github/workflows/build-pr.yml @@ -0,0 +1,38 @@ +name: Build website PR + +on: + pull_request: + branches: + - "main" + types: + - closed + +concurrency: + group: "builders" + cancel-in-progress: true + +jobs: + if_merged: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: main + fetch-depth: 0 + - name: Install dependencies + run: | + curl -sSL https://install.python-poetry.org | python3 - + make install + - name: Build website + run: make website + - name: Commit files + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git commit -a -m "Built website" + - name: Push changes + uses: ad-m/github-push-action@master + with: + branch: main diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..08efb30 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,39 @@ +name: Build website + +on: + workflow_dispatch: + + push: + branches: + - 'main' + paths: + - './templates/**' + +concurrency: + group: "builders" + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: main + fetch-depth: 0 + - name: Install dependencies + run: | + curl -sSL https://install.python-poetry.org | python3 - + make install + - name: Build website + run: make website + - name: Commit files + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git commit -a -m "Built website" + - name: Push changes + uses: ad-m/github-push-action@master + with: + branch: main diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index e7f5495..ebe5d52 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -3,12 +3,19 @@ name: Deploy static content to Pages on: # Runs on pushes targeting the default branch - push: - branches: ["main"] + #push: + # branches: ["main"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: + workflow_run: + workflows: + - Build website + - Build website PR + types: + - completed + # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read @@ -29,14 +36,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Pages - uses: actions/configure-pages@v2 + uses: actions/configure-pages@v3 - name: Upload artifact uses: actions/upload-pages-artifact@v1 with: # Upload entire repository - path: './public/' + path: "./public/" - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v2 diff --git a/README.md b/README.md index dbdf4ef..fbee3c9 100644 --- a/README.md +++ b/README.md @@ -1 +1,19 @@ # Website for the OpenAndroidInstaller project + +## Website build workflow + +This website is made with Bulma and gets build to a static page via the Python tools `make`, `poetry` and `jinja2`. + +To build the website follow the two following steps: + +- Install the dependencies: + + ``` + make install + ``` + +- Build the website: + + ``` + make website + ``` \ No newline at end of file diff --git a/build.py b/build.py index 2392487..2d2c061 100644 --- a/build.py +++ b/build.py @@ -17,6 +17,7 @@ "imprint.html", "privacy.html", "feedback.html", + "404.html", ] # Load template files and write the rendered HTML @@ -24,8 +25,8 @@ # render the templates template = env.get_template(page) output = template.render( - version="v0.4.4-beta", - n_supported_devices=62, + version="v0.5.0-beta", + n_supported_devices=73, ) # write to file diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..7a332ab --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,47 @@ +##START HTTP Security Header## + +#Content Security Policy - CSP-HEADER +Header set Content-Security-Policy "frame-ancestors 'self'; default-src 'none'; script-src 'self' plausible.io peertube.tv opencollective.com liberapay.com; script-src-attr 'none'; script-src-elem 'self'; object-src 'self' img.shields.io; img-src 'self' opencollective.com liberapay.com; media-src 'self'; connect-src 'self'; frame-src 'self' img.shields.io peertube.tv; form-action 'self'; base-uri 'self'; font-src 'self'; style-src 'self'; style-src-elem 'self'; style-src-attr 'self';" + +#HTTP Content-Types +AddCharset UTF-8 .html + +#Public Key Pins +Header set Public-Key-Pins "pin-sha256=\"base64+primary==\"; pin-sha256=\"base64+backup==\"; max-age=5184000; includeSubDomains" + +#Strict-Transport-Security +Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" + +#X-Content-Type-Options +Header always set X-Content-Type-Options "nosniff" + +#X-Frame-Options +Header always set X-Frame-Options "SAMEORIGIN" + +#X-Xss-Protection +Header always set X-Xss-Protection "1; mode=block" + +#Referrer-Policy +Header set Referrer-Policy "no-referrer, same-origin" + +##END HTTP Security Header## + +#HTTP Cache +Header set Cache-Control "max-age=604800" +# "max-age=604800" -> 1 Week +# "max-age=2592000" -> 30 Days +# "max-age=31536000" -> 1 Year + +Error pages +ErrorDocument 404 404.html + +##START File Extensions## + +RewriteEngine on + +# Remove .html +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_FILENAME}\.html -f +RewriteRule ^(.*)$ $1.html + +##END File Extensions## \ No newline at end of file diff --git a/public/static/BMBF_gefoerdert_2017_en.jpg b/public/static/BMBF_gefoerdert_2017_en.jpg deleted file mode 100644 index 97913aa..0000000 Binary files a/public/static/BMBF_gefoerdert_2017_en.jpg and /dev/null differ diff --git a/public/static/Screenshot-requirements-page.png b/public/static/Screenshot-requirements-page.png deleted file mode 100644 index 1c6a1f6..0000000 Binary files a/public/static/Screenshot-requirements-page.png and /dev/null differ diff --git a/public/static/Screenshot-select-page.png b/public/static/Screenshot-select-page.png deleted file mode 100644 index 44d0160..0000000 Binary files a/public/static/Screenshot-select-page.png and /dev/null differ diff --git a/public/static/Screenshot-start-page.png b/public/static/Screenshot-start-page.png deleted file mode 100644 index 2e5d370..0000000 Binary files a/public/static/Screenshot-start-page.png and /dev/null differ diff --git a/public/static/custom.css b/public/static/custom.css index dbeebe0..f08d8c1 100644 --- a/public/static/custom.css +++ b/public/static/custom.css @@ -2,6 +2,61 @@ html { scroll-behavior: smooth; } +.px-6 ul { + list-style: unset; +} + +.round { + border-radius: 4px; +} + +.hover-transition { + transition: ease-in 250ms; +} + +.hover-transition:hover { + transition: ease-in 250ms; +} + +#pf-funding-logos { + width: 333px; +} + +.pt-5 { + border-top: 1px solid #dee2e6; +} + +#user { + display: block; +} + +/*Donation options*/ + +#donate-widgets { + margin: auto; + margin-top: 10px; +} + +.opencollective, +#gh-sponsors { + display: flex !important; + margin: auto !important; +} + +.liberapay { + display: flex !important; + width: 50% !important; + margin-bottom: 10px; + margin-left: 46.05px !important; +} + +.liberapay-nojs { + display: flex; + margin: auto; + margin-top: -20px; + margin-bottom: 10px; +} + /* Style the tab content */ .tabcontent { display: none; diff --git a/public/static/openandroidinstaller-demo-preview.png b/public/static/openandroidinstaller-demo-preview.png deleted file mode 100644 index b71e20c..0000000 Binary files a/public/static/openandroidinstaller-demo-preview.png and /dev/null differ diff --git a/templates/404.html b/templates/404.html new file mode 100644 index 0000000..d7946fc --- /dev/null +++ b/templates/404.html @@ -0,0 +1,49 @@ +{% extends "base.html" %} +{% block title %}404 | OpenAndroidInstaller{% endblock %} +{% block robot %} + + +{% endblock %} +{% block content %} + + + + + +
+
+
+

Error 404

+

Oops! - The requested page does not exist or was not found.

+
+
+
+ + +
+
+ +
+ +
+
+ + +
+
+
+
+

You think something is wrong? +

+
+
+ +
+
+
+
+ +{% endblock %} \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index 495e341..582ac41 100644 --- a/templates/base.html +++ b/templates/base.html @@ -2,7 +2,7 @@ - + {% block title %}{% endblock %} @@ -26,6 +26,7 @@ + @@ -56,53 +57,54 @@
- + - + {% block content %} {% endblock %} - +
diff --git a/templates/faq.html b/templates/faq.html index 15f902a..17ac719 100644 --- a/templates/faq.html +++ b/templates/faq.html @@ -18,7 +18,7 @@

Frequently Asked Que
- +

What Android ROMs are supported?

@@ -43,15 +43,16 @@

What Android ROMs ar

A selection of different Android-based ROMs and where to find them:

@@ -63,10 +64,8 @@

My device is not supporte

Contribute support for your device:

If you have some experience with flashing Android ROMs, you can find more details on how to contribute - here: How - to - contribute?

+ here: How to contribute?

Ask for support:

You can also open a github issue and ask for support for your device. There might be reasons, that your device is not supported and likely will not get support.

@@ -76,24 +75,24 @@

Ask for support:

What are addons and which ones are supported?

Addons are optional, additional apps and services that are useful to have. Most notable Google Apps and Services as well as MicroG to replace them or the F-Droid FOSS App-Store.

-
-

There are different packages of *Google Apps* available.

+

There are different packages of Google Apps available.

-

You can find out more about MicroG here: MicroG. +

You can find out more about MicroG here: MicroG. The recommended way to install MicroG is to use the zip file provided here: FriendlyNeighborhoodShane/MinMicroG_releases. + href="https://github.com/FriendlyNeighborhoodShane/MinMicroG-abuse-CI/releases" rel="noopener" + target="_blank">FriendlyNeighborhoodShane/MinMicroG-abuse-CI. The best way to get an installable zip for F-Droid can be found here: F-Droid + href="https://f-droid.org/en/packages/org.fdroid.fdroid.privileged.ota" rel="noopener" target="_blank">F-Droid App-Store.

How can I use Google Apps for my device?

-

While we don't like google apps, some people feel that they need them to leverage the full experience of +

While we don't like Google apps, some people feel that they need them to leverage the full experience of their Android devices. We believe people should be free to do what they want with their devices. So installing them is supported as well. @@ -122,44 +121,149 @@

What to do if something goes wrong?
  • Make sure your device is supported by the image up to the exact device id.
  • Try a different image for your device. This is especially useful for unofficial images of ROMs.
  • -

    Of course, there are other things that can go wrong. If non of the above helps, write an email or raise an issue on GitHub. +

    Of course, there are other things that can go wrong. If none of the above helps, write an e-mail or raise an issue on GitHub.

    Will this tool unlock my bootloader?

    -

    First of all, this tool will not help you bypass any vender locked bootloaders in non-official ways.

    -

    - Devices by Samsung, Google and Fairphone make it fairly easy to unlock the bootloader and receive good support - in the installer. +

    First of all, this tool will not help you bypass any vendor locked bootloaders in non-official ways.

    +

    Devices by Samsung, Google, OnePlus, Fairphone and others make it relatively easy to unlock the + bootloader and get good support in the installer.

    +

    For some devices, it is necessary to unlock the bootloader manually. You usually need to create an account on + the manufacturer's website, wait for a certain time and obtain a code from there. OpenAndroidInstaller will + try to guide you as far as possible. These vendors include Sony, Motorola and Xiaomi amongst others.

    +

    Other phone manufacturers no longer allow you to unlock the bootloader. Nothing can be done if you have not + unlocked your device in time. These manufacturers include Huawei, Honor, LG and ASUS. Support for these + manufacturers will always be very limited.

    - Some devices with require manual steps to unlock the bootloader. In general you will need to create an account - at a vendor website and receive some code from there. OpenAndroidInstaller will try to guide you as far as - possible. These vendors include Sony, Motorola, Xiaomi and OnePlus among others. + Here is a brief overview of the bootloader policies of some of the most popular brands (may be + incomplete/inaccurate):

    -

    - Other phone vendors stops allowing to unlock the bootloader all together. There is nothing to be done if you - didn't unlock your device in time. These vendors include Huawei and LG among others. Support for these vendors - will always be very limited. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    BrandFlashing toolUnlocking MethodLoss of guarantee*Supported models
    GoogleFastbootOEM/Flashing unlockNoPixel and Nexus
    SamsungODIN or HeimdallDownload modeYesGalaxy S and A series
    (Increasing complexity on and after S10)
    OnePlusFastbootOEM/Flashing unlockNoAll
    FairphoneFastbootCode + from manufacturer
    (Already unlocked until FP2)
    NoAll
    XiaomiFastbootMi Unlock ToolYesMi 4c, Redmi Note 3, Mi Note Pro, Redmi 3, Mi 4S, Mi 5 and all devices from 2016 onwards
    MotorolaFastbootCode from + manufacturerYesAlmost all except carrier specific models (e.g. Verizon, AT&T, Tracfone) and + certain other models
    SonyFastbootCode + from manufacturerYesAll except XQ-CT62 (1Ⅳ US) & XQ-CQ62 (5Ⅳ US)
    HuaweiFastbootNo official codes since 2017/2018
    (Unofficial methods available)
    YesMate 9/9Pro, P10/P10Plus
    HonorFastbootNo official codes since 2017/2018
    (Unofficial methods available)
    YesHonor 8
    LGFastbootImpossible since December 2021Yes
    ASUSFastbootImpossible since May 2023 (ASUS unlocking App)Yes
    +

    * In the EU you won't loose your standard 2 years of the warranty when you unlock your + bootloader, flash your device or root it. (source)

    +

    You can find more information about the brands and their bootloader policies here (in French).

    +

    Virus scanners show the tool as a virus or trojan. What is going on?

    In some virus scanners the OpenAndroidInstaller shows up as a virus or trojan. This is a false positive. We - explain the issue here. - The code and build process of the distributed files is completely open source and can be found on github. So + explain the issue here:
    + The code and build process of the distributed files is completely open source and can be found on GitHub. So people can verify that it's not malicious software.

    The Installer is bundled and compiled python code made into an executable file. This is done with pyinstaller. + href="https://pyinstaller.org" rel="noopener" target="_blank">pyinstaller. As it turns out, false positive issues are known and people encounter them regularly.

    @@ -173,13 +277,15 @@

    When flashing the custom recovery, th

    Where do I find the logfiles?

    -

    For the flatpak, the logs are located in ~/.var/app/org.openandroidinstaller.OpenAndroidInstaller/data/openandroidinstaller.log.

    +

    For the Flatpak, the logs are located in + ~/.var/app/org.openandroidinstaller.OpenAndroidInstaller/data/openandroidinstaller.log. +

    If you are running the executable directly, the logs are located in the same directory as the executable.

    - + - +
    @@ -191,8 +297,8 @@

    diff --git a/templates/feedback.html b/templates/feedback.html index 380695e..a76e674 100644 --- a/templates/feedback.html +++ b/templates/feedback.html @@ -35,9 +35,9 @@

    Give feedback to the project and how it worked for you. At
    - +
    - + @@ -52,15 +52,16 @@

    Give feedback to the project and how it worked for you. At

    -

    Your feedback is processed in encrypted form by airform.io and if you provide an email address you might get an answer.

    +

    Your feedback is processed in encrypted form by airform.io and if you provide an e-mail address you might get an answer.

    - +
    +
    @@ -86,7 +87,7 @@

    diff --git a/templates/imprint.html b/templates/imprint.html index 84c9958..748b151 100644 --- a/templates/imprint.html +++ b/templates/imprint.html @@ -17,7 +17,7 @@

    Impressum

    - +
    @@ -57,12 +57,13 @@

    Copyright

    identified as such. Should you nevertheless become aware of a copyright infringement, please inform us accordingly. If we become aware of any infringements, we will remove such content immediately.

    Data protection

    -

    Our data protection regulations can be found here. +

    Our data protection regulations can be found here.

    - +
    +
    @@ -74,8 +75,8 @@

    diff --git a/templates/index.html b/templates/index.html index 3e53cab..feb0443 100644 --- a/templates/index.html +++ b/templates/index.html @@ -11,13 +11,13 @@

    OpenAndroidInst

    The graphical installer that makes installing alternative Android distributions nice and easy.

    - + Download - Getting + Getting started
    @@ -41,8 +41,8 @@

    The graphical installer that makes installing alternative A

    Works out-of-the-box

    Comes packaged with all tools - like adb, fastboot and heimdall.

    + href="https://github.com/openandroidinstaller-dev/openandroidinstaller#tools" rel="noopener" + target="_blank">tools like adb, fastboot and heimdall.

    @@ -67,9 +67,8 @@

    Bring your own ROM

    allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups" width="560" height="315" frameborder="0"> -

    Demo: How to how to unlock the bootloader and install LineageOS.

    - +

    Demo: How to how to unlock the bootloader and install + LineageOS.

    @@ -97,7 +96,7 @@

    Free & Open Source

    @@ -128,7 +127,7 @@

    Free your Android device with a custom ROM!

    Works on Windows, MacOS and Linux.

    - @@ -142,7 +141,7 @@

    Free your Android device with a

    - +
    @@ -156,15 +155,15 @@

    Getting st

    Note, that Ubuntu 22.04 can be booted - from a USB drive without installing it. + href="https://ubuntu.com/tutorials/try-ubuntu-before-you-install#1-getting-started" rel="noopener" + target="_blank">booted from a USB drive without installing it. This might be a simple solution if you face any compatibility issues.

    How to run the application:

    -

    Demo: How to install Addons like MicroG alongside LineageOS.

    +

    Demo: How to install Addons like MicroG alongside + LineageOS.

    @@ -274,7 +274,7 @@

    -
    +

    @@ -286,11 +286,11 @@

    Use the OpenAndroidInstaller and report a bug

    • Use the OpenAndroidInstaller issue tracker to report bugs, request new devices or - features.
    • + rel="noopener" target="_blank">OpenAndroidInstaller issue tracker to report bugs, request new + devices or features.
    • Use the website issue tracker to report bugs or typo.
    • + rel="noopener" target="_blank">website issue tracker to report bugs or typo.

    @@ -307,21 +307,22 @@

    Adding support for new devices

    process.

    • How to contribute config files
    • + href="https://github.com/openandroidinstaller-dev/openandroidinstaller/blob/main/docs/how_to_contribute_your_own_installation_configurations.md" + rel="noopener" target="_blank">How to contribute config files

    Finding issues to fix

    The source code is hosted on GitHub. - A number of the issues are marked with the - "good first issue" label indicating - they are suitable for someone new to the OpenAndroidInstaller code base. + href="https://github.com/openandroidinstaller-dev/openandroidinstaller" rel="noopener" + target="_blank">GitHub. + A number of the issues are marked with the "good first issue" label indicating they are suitable for someone + new to the OpenAndroidInstaller code base.

    • Run the application for development
    • + href="https://github.com/openandroidinstaller-dev/openandroidinstaller/blob/main/docs/building_the_application_for_your_platform.md#run-openandroidinstaller-for-development" + rel="noopener" target="_blank">Run the application for development
    @@ -337,9 +338,9 @@

    Test the installer

    Often there are pre-releases or specific features that need testing. What you can do:

    • Test the tool regularly with a spare device and check if everything still works
    • -
    • Follow us on Mastodon or - Twitter - and test new (pre-) releases and report issues. +
    • Follow us on Mastodon or Twitter and test new (pre-) releases and report issues.
    @@ -353,12 +354,29 @@

    Donate to the project

    -

    There are currently two ways to support the project financially

    - +

    There are currently three ways to support the project financially:

    +

    If you want to use a different method, please contact us.

    @@ -366,6 +384,7 @@

    Donate to the project

    +
    -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/templates/privacy.html b/templates/privacy.html index 062ffab..6dbf4ee 100644 --- a/templates/privacy.html +++ b/templates/privacy.html @@ -114,7 +114,8 @@

    Bereitstellung des Onlineangebotes und Webhosting

  • Bereitstellung Onlineangebot auf gemietetem Speicherplatz: Für die Bereitstellung unseres Onlineangebotes nutzen wir Speicherplatz, Rechenkapazität und Software, die wir von einem entsprechenden Serveranbieter (auch „Webhoster“ genannt) mieten oder anderweitig beziehen; - Rechtsgrundlagen: Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f) DSGVO).
  • + Rechtsgrundlagen: Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f) DSGVO). +

    Änderung und Aktualisierung der Datenschutzerklärung

    Wir bitten Sie, sich regelmäßig über den Inhalt unserer Datenschutzerklärung zu informieren. Wir passen die @@ -146,7 +147,7 @@

    Begriffsdefinitionen

    Übermitteln oder das Löschen. - + @@ -160,8 +161,8 @@

    - Write a mail + Write an e-mail
    diff --git a/templates/supported-devices.html b/templates/supported-devices.html index 06a4cd8..06d69f4 100644 --- a/templates/supported-devices.html +++ b/templates/supported-devices.html @@ -1,6 +1,7 @@ {% extends "base.html" %} {% block title %}Supported Devices | OpenAndroidInstaller{% endblock %} -{% block robot %}{% endblock %} +{% block robot %} +{% endblock %} {% block content %} @@ -8,8 +9,8 @@

    Officially supported devices

    -

    Currently, we support {{ n_supported_devices }} devices by various vendors and working on - adding more soon!

    +

    Currently, we support {{ n_supported_devices }} devices by various vendors + and working on adding more soon!

    @@ -65,6 +66,28 @@

    Currently, we support {{ n_supported_devices }} dev SM-A320FL tested + + Samsung + Galaxy A5 2016 + a5xelte + SM-A510F + tested + + + Samsung + Galaxy A5 2017 + a5y17lte + + + tested + + + Samsung + Galaxy A7 2016 + a7xelte + + tested + Samsung Galaxy Grand Prime VE @@ -75,141 +98,137 @@

    Currently, we support {{ n_supported_devices }} dev Samsung Galaxy S III Neo - s3ve3g + s3ve3g GT-I9301I tested Samsung Galaxy Tab S2 - gts210vewifi + gts210vewifi T813 tested Samsung Galaxy S4 Mini LTE - serranoltexx - SM-A510F - tested - - - Samsung - Galaxy A5 2016 - a5xelte + serranoltexx SM-A510F tested Samsung - Galaxy A5 2017 - a5y17lte - - tested - - - Samsung - Galaxy A7 2016 - a7xelte - + Galaxy S5 + klte + G900F/M/R4/R7/T/V/W8 tested Samsung Galaxy S6 - zerofltexx + zerofltexx tested Samsung Galaxy S6 Edge - zeroltexx + zeroltexx + SM-G925F tested Samsung Galaxy S7 - herolte + herolte SM-G930F tested Samsung Galaxy S7 Edge - hero2lte + hero2lte + tested Samsung Galaxy S8 - dreamlte + dreamlte tested Samsung Galaxy S9 - starlte + starlte tested Samsung - Galaxy Note 8 - greatlte - SM-N950F + Galaxy S10 + beyond1lte + tested Samsung - Galaxy Note 9 - crownlte + Galaxy S10e + beyond0lte tested Samsung - Galaxy S10 - beyond1lte + Galaxy S10+ + beyond2lte tested Samsung - Galaxy S10e - beyond0lte - + Galaxy Note 3 LTE + hltetmo + N900T/V/W8 tested Samsung - Galaxy S10+ - beyond2lte - + Galaxy Note 8 + greatlte + SM-N950F tested Samsung - Galaxy Note 10 - d1 + Galaxy Note 9 + crownlte + tested Samsung - Galaxy Note 10+ - d2s + Galaxy Note 10 + d1 tested Samsung - Galaxy Note 3 LTE - hltetmo - N900T/V/W8 + Galaxy Note 10+ + d2s + tested @@ -235,77 +254,79 @@

    Currently, we support {{ n_supported_devices }} dev Google Pixel 2 - walleye + walleye walleye tested Google Pixel 2 XL - taimen + taimen taimen tested Google Pixel 3 - blueline + blueline + blueline tested Google Pixel 3 XL - crosshatch + crosshatch crosshatch tested Google Pixel 3a - sargo + sargo sargo tested Google Pixel 3a XL - bonito + bonito bonito tested Google Pixel 4 - flame + flame flame tested Google Pixel 4 XL - coral + coral coral tested Google Pixel 4a - sunfish + sunfish sunfish tested Google Pixel 5 - redfin + redfin redfin tested Google Pixel 5a - barbet + barbet barbet tested @@ -332,49 +353,50 @@

    Currently, we support {{ n_supported_devices }} dev Sony Xperia Z - yuga + yuga C6603 tested Sony Xperia Z3 - z3 + z3 tested Sony Xperia 10 - kirin + kirin tested Sony Xperia 10 Plus - mermaid + mermaid tested Sony Xperia XA2 - pioneer + pioneer tested Sony Xperia XZ2 - akari + akari tested Sony Xperia XZ3 - akatsuki + akatsuki + tested @@ -408,21 +430,21 @@

    Currently, we support {{ n_supported_devices }} dev Fairphone Fairphone 2 - FP2 + FP2 tested Fairphone Fairphone 3 - FP3 + FP3 tested Fairphone Fairphone 4 - FP4 + FP4 tested @@ -448,50 +470,50 @@

    Currently, we support {{ n_supported_devices }} dev Motorola - moto G5 - cedric + moto g5 + cedric tested Motorola - moto G7 power - ocean + moto g6 plus + evert tested Motorola - moto g6 plus - evert + moto g7 power + ocean tested Motorola moto g 5G plus / one 5G - nairo + nairo tested Motorola moto g 5G / one 5G ace - kiev + kiev tested Motorola edge - racer + racer tested Motorola moto z - griffin + griffin tested @@ -518,77 +540,82 @@

    Currently, we support {{ n_supported_devices }} dev OnePlus One - bacon + bacon A0001 tested OnePlus 5 - cheeseburger + cheeseburger tested OnePlus 5T - dumpling + dumpling + tested OnePlus 6 - enchilada + enchilada + tested OnePlus 6T - fajita + fajita tested OnePlus 7 - guacamoleb + guacamoleb tested OnePlus 7 Pro - guacamole + guacamole + tested OnePlus 7T - hotdogb + hotdogb tested OnePlus 7T Pro - hotdog + hotdog tested OnePlus Nord - avicii + avicii tested OnePlus Nord N200 - dre + dre tested @@ -603,6 +630,96 @@

    Currently, we support {{ n_supported_devices }} dev +
    + + + Xiaomi +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VendorDevice NameCodeNameModelsStatus
    XiaomiRedmi Note 7lavendertested
    XiaomiRedmi 7A / 8 / 8A / 8A DualMi439 / pine / olive / olivelite / olivewoodtested
    XiaomiRedmi Note 8 / 8Tginkgo / willowuntested
    XiaomiRedmi 9A / 9C / 9AT / 9i / 9A Sport / 10A / 10A Sportgarden / dandelion / blossom / angelicantested
    XiaomiMi 9T / Redmi K20davinciuntested
    XiaomiRedmi K20 Pro / Mi 9T Proraphael / raphaelinuntested
    XiaomiRedmi Note 9S / 9 Pro / 9 Pro Max / 10 Lite / Poco M2 promiatoll / gram / curtana / excalibur / joyeuseuntested
    XiaomiRedmi Note 10S / 11SE / Poco M5Srosemary / maltose / secret /rosemary_puntested
    XiaomiPoco X3 Provayuuntested
    Xiaomi12cupiduntested
    +
    +
    @@ -627,7 +744,7 @@