diff --git a/README.md b/README.md index 38f9390..17afeeb 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Keep reading below to find out more details about the different parts of the mod - [Finding a certified fingerprint](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#finding-a-certified-fingerprint) - [The getprop method](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#the-getprop-method) - [The stock ROM/firmware/factory image method](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#the-stock-romfirmwarefactory-image-method) + - [The AndroidDumps method](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf/blob/master/README.md#the-androiddumps-method) - [The firmware.mobi method](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf/blob/master/README.md#the-firmwaremobi-method) - [Custom fingerprints list](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#custom-fingerprints-list) - [I still can't pass the ctsProfile check](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#i-still-cant-pass-the-ctsprofile-check) @@ -50,12 +51,14 @@ Keep reading below to find out more details about the different parts of the mod - [Fingerprints list check](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#fingerprints-list-check) - [Automatic fingerprint update](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#automatic-fingerprint-update) - [Background boot script](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#background-boot-script) + - [Export settings](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#export-settings) - [Configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) - [Setting up the module on a clean Magisk/ROM flash](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#setting-up-the-module-on-a-clean-magiskrom-flash) ##### Issues and logs - [Miscellaneous MagiskHide issues](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#miscellaneous-magiskhide-issues) - [Issues, support,etc](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#issues-support-etc) - [Known issues](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#known-issues) + - [props not found](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#props-not-found) - [The boot scripts did not run](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#the-boot-scripts-did-not-run) - [Requires Magisk v19+](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#requires-magisk-v19) - [An option is marked as "disabled"](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#an-option-is-marked-as-disabled) @@ -66,6 +69,7 @@ Keep reading below to find out more details about the different parts of the mod - [My device's Android security patch date changed](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf/blob/master/README.md#my-devices-android-security-patch-date-changed) - [The interface looks weird](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf/blob/master/README.md#the-interface-looks-weird) - [Device issues because of the module](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#device-issues-because-of-the-module) + - [The screen goes black momentarily at boot](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf#the-screen-goes-black-momentarily-at-boot) - [The Play Store is "uncertified"](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf#the-play-store-is-uncertified) - [Logs](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#logs) - [Collecting logs manually](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#collecting-logs-manually) @@ -121,7 +125,7 @@ This might be because your device simply hasn't been certified or that the ROM y To fix this, you can use a known working device fingerprint (`ro.build.fingerprint`), one that has been certified by Google, usually from a stock ROM/firmware/factory image, and replace your device's current fingerprint with this. You can also use a fingerprint from another device, but this will change how your device is perceived. -NOTE: If you're using a fingerprint for an Android build after March 16th 2018 you might have to change the security patch date to one that matches the fingerprint used. You can use the [Custom prop](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#changeset-custom-prop-values) function of this module to change `ro.build.version.security_patch` to the desired date. If you don't know the security patch date you can try finding it with trial and error (although it's a much better option to find the actual date from the ROM/firmware/factory image in question). The dates are always either the 1st or the 5th of the month, so try different months one after the other until the CTS profile passes. +**NOTE:** If you're using a fingerprint for an Android build after March 16th 2018 you might have to change the security patch date to one that matches the fingerprint used. You can use the [Custom prop](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#changeset-custom-prop-values) function of this module to change `ro.build.version.security_patch` to the desired date. If you don't know the security patch date you can try finding it with trial and error (although it's a much better option to find the actual date from the ROM/firmware/factory image in question). The dates are always either the 1st or the 5th of the month, so try different months one after the other until the CTS profile passes. There are a bunch of tested certified fingerprints available in the module, just in case you can't get a hold of one for your device. For some devices there are several fingerprints available, for different Android versions. When picking a fingerprint you will also have to pick which version you need. @@ -133,13 +137,14 @@ If you are using a Treble GSI ROM you can enable the [Use vendor fingerprint](ht When using a Treble GSI ROM with a stock vendor partition, it is possible to use the vendor fingerprint to make the device pass the CTS profile check. Enabling this option will make the module scripts pull the vendor fingerprint on each boot and use this to spoof the device fingerprint. This in turn means you will only have to enable this option once and even if you update your vendor partition the fingerprint used will always be the latest one. ### Matching the Android security patch date -For some devices, if the fingerprint is for an Android build after March 16th 2018, it is necessary to use a security patch date that matches the fingerprint used. For the module provided fingerprints this is done automatically, but if you enter a fingerprint manually you will have to update the security patch date yourself (if they don't already match). Use the [Custom props](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#changeset-custom-prop-values) function of this module to change `ro.build.version.security_patch` to the desired date. +For some devices, if the fingerprint is for an Android build after March 16th 2018, it is necessary to use a security patch date that matches the fingerprint used. For the module provided fingerprints this is done automatically, but if you enter a fingerprint manually you will have to update the security patch date yourself (if they don't already match). If you're setting a fingeprint without using the internal fingerprints list, use the [Custom props](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#changeset-custom-prop-values) function of this module to change `ro.build.version.security_patch` to the desired date. ### Can I use any fingerprint? It's usually possible to use any fingerprint that's certified for your device. It doesn't have to match, either device or Android version. If you don't use a fingerprint for your device, the device might be percieved as the device that the fingerprint belongs to, in certain situations (Play Store, etc). The Android version doesn't matter much, and if you're using a ROM with an Android version much newer than what is officially available for your device, you are going to have to use an older fingerprint if you want to use the one for your device. But, like already stated, that doesn't really matter (most of the time, there might of course be exceptions). ### How do I submit a fingerprint? If you have a device fingerprint that you want to submit to the module, just post it in the [Support Thread](https://forum.xda-developers.com/apps/magisk/module-magiskhide-props-config-t3789228) together with device details and the [matching security patch date](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf/blob/master/README.md#matching-the-android-security-patch-date). +To make sure that the [device simulation](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf/blob/master/README.md#device-simulation) feature works properly with the print you submit, please also include the values for `ro.product.manufacturer` and `ro.product.model` (use the getprop command or the [AndroidDumps](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf/blob/master/README.md#the-androiddumps-method) or [firmware.mobi](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf/blob/master/README.md#the-firmwaremobi-method) methods outlined below). Also see [Finding a certified fingerprint](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#finding-a-certified-fingerprint) below. ### Finding a certified fingerprint @@ -174,6 +179,9 @@ Once you have the file downloaded, there are several different ways that the fin - Other times you'll find the fingerprint in META-INF\com\google\android\updater-script. Look for "Target:" and you'll likely find the fingerprint there. - Etc... Experiment, the fingerprint will be in there somewhere. +#### The AndroidDumps method +AndroidDumps is a great resource for finding props for different devices. [Check it out on GitHub](https://github.com/AndroidDumps). + #### The firmware.mobi method Sometimes you can also find up to date and certified fingerprints at [firmware.mobi](https://desktop.firmware.mobi/). @@ -181,9 +189,10 @@ Sometimes you can also find up to date and certified fingerprints at [firmware.m You can add your own fingerprint to the list by placing a file, named `printslist` (no file extension), in the root of your internal storage with the fingerprints. It needs to be formated as follows: `device name=fingerprint`. The fingerprints added to this list will be found under the `Custom` category in the fingerprints menu. If you create the printslist file in Windows, make sure that you use a text editor that can handle [Unix file endings](https://en.m.wikipedia.org/wiki/Newline), such as Notepad++ and similar editors (not regular Notepad). Here's an example: ``` -Google Nexus 6=google/shamu/shamu:7.1.1/N8I11B/4171878:user/release-keys +Google Nexus 6 (7.1.1):Motorola:Nexus 6=google/shamu/shamu:7.1.1/N8I11B/4171878:user/release-keys ``` -NOTE: If you're using a fingerprint for an Android build after March 16th 2018 you might have to change the security patch date to one that matches the fingerprint used. This can be done directly in the fingerprints list, by adding two underscores directly followd by the date at the end of the fingerprint (`__2018-09-05`). You can also use the [Custom props](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#changeset-custom-prop-values) function of this module to change `ro.build.version.security_patch` to the desired date. If you don't know the security patch date you can try finding it with trial and error. The dates are always either the 1st or the 5th of the month, so try different months one after the other until the CTS profile passes. +**NOTE 1:** If you're using a fingerprint for an Android build after March 16th 2018 you might have to change the security patch date to one that matches the fingerprint used. This can be done directly in the fingerprints list, by adding two underscores directly followed by the date at the end of the fingerprint (`__2018-09-05`). You can also use the [Custom props](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#changeset-custom-prop-values) function of this module to change `ro.build.version.security_patch` to the desired date. If you don't know the security patch date you can try finding it with trial and error (quite tedious). The dates are usually always either the 1st or the 5th of the month, so try different months one after the other until the CTS profile passes. +**NOTE 2:** If you want the [device simulation](https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf/blob/master/README.md#device-simulation) feature of the module to work properly with the prints from the custom list you will also have to include the manufacturer and module in the list. This is done by adding the values for these two props right before the equal sign (=) that separates the device name from the fingerprint. Separate the device name and android versions and the two values with colons (:). See the example above. ### I still can't pass the ctsProfile check @@ -202,12 +211,13 @@ If you're using a custom ROM, the chances of it being [perceived as uncertified Magisk, and this module, can help with that. -Before setting up your device, install Magisk, this module and use the configuration file described below to pass the ctsProfile check. This should make your device be perceived as certified by Google and you can log into your Google account and use your device without having to whitelist it. Check [here](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/common/prints.sh) for usable fingerprints (only use the part to the right of the equal sign). +Before setting up your device, install Magisk, this module and use the [configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) described below to pass the ctsProfile check. This should make your device be perceived as certified by Google and you can log into your Google account and use your device without having to whitelist it. Check [here](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/common/prints.sh) for usable fingerprints (only use the part to the right of the equal sign). If you're having issues getting your device certified, take a look in the Magisk troubleshooting guide linked below. In case you can't get the Play Store to report your device as "certified", see ["Issues"](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config#issues-support-etc) below. + ## Current fingerprints list version The fingerprints list will update without the need to update the entire module. Keep an eye on the [module support thread](https://forum.xda-developers.com/apps/magisk/module-magiskhide-props-config-t3789228) for info. @@ -215,7 +225,7 @@ Just run the `props` command and the list will be updated automatically. Use the If you already have a device fingerprint set by the module, and it has been updated in the current fingerprints list, it will be automatically updated when the prints list gets an update. Just reboot to apply. This function can be turned of in the script settings (see ["Prop script settings"](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config#prop-script-settings) below) -**_Current fingerprints list version - v77_** +**_Current fingerprints list version - v78_** ## Please add support for device X @@ -233,7 +243,7 @@ You can enter the fingerprint manually in the `Edit device fingerprint` menu in ## Device simulation -**_NOTE! This feature is not needed to pass SafetyNet's CTS profile test and may even cause issues. Only enable it if you actually need it, !_** +**_NOTE! This feature is not needed to pass SafetyNet's CTS profile test and may even cause issues. Only enable it if you actually need it!_** If you want to simulate a specific device (to get access to device specific apps in the Play store, as an example), you can activate this option. It will pull information from the currently used fingerprint (has to be set by the module) and use this to set a few certain props to these values. The props that can be set are (currently): - ro.product.brand @@ -244,10 +254,15 @@ If you want to simulate a specific device (to get access to device specific apps - ro.build.version.incremental - ro.build.display.id - ro.build.version.sdk +- ro.product.manufacturer +- ro.product.model + +By default all props are disabled when this option is activated, but it is possible to activate or deactivate each prop individually or all of them at once. It is also possible to activate several props simultaneously by choosing the corresponding numbers in the menu list and entering them separated by a comma. +Example: If I would like to activate ro.product.name, ro.product.device and ro.product.model I would enter __"2,3,10"__. -By default all props are set when this option is activated, but it is possible to deactivate and activate each prop individually. +There are also several partition specific variations of some of the used props (system, vendor, product, odm). If these are available they will also be set to the simulation prop value. This can be disabled in the option settings. -Whenever a fingerprint is set by the module, the `ro.build.description` prop will be set automatically independently from if the general device simulation option is enabled or not. +Whenever a fingerprint is set by the module, the `ro.build.description` prop will be set automatically independently from if the general device simulation option is enabled or not. It can of course also be disabled. ## Set/reset MagiskHide Sensitive props @@ -260,6 +275,11 @@ By default, if MagiskHide detects certain sensitive prop values they will be cha If, for some reason, you need one or more of these to be kept as their original value (one example would be resetting ro.build.type to userdebug since some ROMs need this to work properly), you can reset to the original value with this module. Keep in mind that this might trigger some apps looking for these prop values as a sign of your device being rooted. +It is possible to change or reset each prop individually or all of them at once. It is also possible to change several props simultaneously by choosing the corresponding numbers in the menu list and entering them separated by a comma. +Example: If I would like to change ro.debuggable, ro.secure and ro.build.selinux I would enter __"1,2,5"__. + +**NOTE:** When activating this feature the screen will go black momentarily at the end of the boot cycle. This is caused by the module doing a soft reboot to reload the prop values properly. + ## Change/set custom prop values It's quite easy to change prop values with Magisk. With this module it's even easier. Just enter the prop you want to change and the new value and the module does the rest, nice and systemless. Any changes that you've previously done directly to build.prop, default.prop, etc, you can now do with this module instead. If you have a lot of props that you want to change it'll be a lot easier to use the [configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) (see below). @@ -272,9 +292,11 @@ When setting a custom prop you can also pick in what boot stage it should be set Note: post-fs-data runs earlier than late_start service. + ## Removing prop values If you would like to delete a certain prop value from your system, that can be done with the [Magisk resetprop tool](https://github.com/topjohnwu/Magisk/blob/master/docs/tools.md#resetprop). With this module you can easily set that up by adding whatever prop you want removed to the "Delete props" list. Be very careful when using this option, since removing the wrong prop may cause isses with your device. See ["Device issues because of the module"](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config#device-issues-because-of-the-module) below if this happens. + ## Prop script settings There are a couple of persistent options that you can set for the `props` script. These are currently "Boot stage", "Script colours" and "Fingerprints list check". The options are found under "Script settings" when running the `props` script. The settings menu can also be opened by using the -s option (use -h for details). @@ -297,10 +319,14 @@ Whenever there is an update to the fingerprints list and if you have a fingerpri ### Backround boot script By default, parts of the module post-fs-data boot script is executed in the background, but the parts that don't might still cause issues on some devices. If there are issues with the boot scripts not running during boot, try enabling this option to execute the script entirely in the background. Keep in mind that this might cause other issues, so only enable if necessary. +### Export settings +If you have a lot of different props set it can be handy to have a [configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) (see below) tucked away for future installs of the module. With this feature you can export the current module settings to a [configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) for future use. The file will be saved on your internal storage, in the /mhpc directory. + + ## Configuration file You can use a configuration file to set your desired options, rather than running the `props` command. This is particularly useful if you have a large amount of custom props you want to set. Download the [settings file](https://raw.githubusercontent.com/Magisk-Modules-Repo/MagiskHide-Props-Config/master/common/propsconf_conf), extract it from the module zip (in the /common folder) or copy it from the module directory under /data/adb (in the /common folder), fill in the desired options (follow the instructions in the file), place it in the root of your internal storage (/sdcard), in /data or in /cache (or /data/cache if you're using an A/B device) and reboot. You can also use the configuration file when first installing the module. Just place the file in the root of your internal storage (or one of the other previously mentioned locations) before flashing the module and the installation script will set everything up. -**NOTE!** If a configuration file is used during boot there will be a reboot during the late_start service boot mode, to load the newly set up values. +**NOTE!** If a configuration file is used during boot there will be a reboot during the late_start service boot mode, to load the newly set up values. This can cause issues for devices that have to boot through recovery for Magisk to be active (A-only SAR devices), so a manual reboot after the automatic one will be necessary (or just use the configuration file at install instead). If you edit the configuration file in Windows, make sure that you use a text editor that can handle [Unix file endings](https://en.m.wikipedia.org/wiki/Newline), such as Notepad++ and similar editors (not regular Windows Notepad). @@ -309,7 +335,7 @@ Using the configuration file can also be done directly at the first install (thr **NOTE!** Upon detecting the file, the module installation/boot script will load the configured values into the module and then delete the the configuration file, so keep a copy somewhere if you want to use the same settings later. ### Setting up the module on a clean Magisk/ROM flash -After having made a clean ROM flash, the configuration file can be used to set the module up as you want without even having to boot first. First flash the ROM and Magisk. After that you can place the configuration file (see above) with your desired settings (fingerprint, custom props, etc) in the root of your internal storage (/sdcard), in /data or in /cache (or /data/cache if you're using an A/B device) and then install the module. This will set the module up just as you want it without having to do anything else. It is also possible to place the configuration file after having installed the module and rebooting. This will set everything up during boot, but it is possible that this won't work an all device/ROM combinations. If you experience issues, let the ROM boot once before setting everything up. +After having made a clean ROM flash, the [configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) can be used to set the module up as you want without even having to boot first. First flash the ROM and Magisk. After that you can place the [configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) (see above) with your desired settings (fingerprint, custom props, etc) in the root of your internal storage (/sdcard), in /data or in /cache (or /data/cache if you're using an A/B device) and then install the module. This will set the module up just as you want it without having to do anything else. It is also possible to place the [configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) after having installed the module and rebooting. This will set everything up during boot, but it is possible that this won't work an all device/ROM combinations. If you experience issues, let the ROM boot once before setting everything up. ## Miscellaneous MagiskHide issues @@ -324,6 +350,12 @@ If you have questions, suggestions or are experiencing some kind of issue, visit ### Known issues - EdXposed sometimes causes Magisk's boot process to fail, resulting in the module boot scripts (mainly service.sh) not running as they should. Until this has been fixed with EdXposed, there are a couple of ways to work around this. Use the [Configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) to set everything up during installation, or disable EdXposed before setting the module up and enable it again after the module works as you want it. Just make sure to use the default settings for boot stages. +### props not found +There are two common reasons why you would get an error saying "not found" when running the `props` command in a terminal emulator. + +If you're using Termux you first have to run `su`, then it will work. +If you're not using Termux it is likely that you have enabled the Magisk Core Only Mode in the Manager settings. Disable it, reboot and try again. + ### The boot scripts did not run Sometimes there are issues with the boot scripts and as a result the `props` command won't work. A common cause for this is having EdXposed installed (see above). Always try rebooting to see if things start working, but if they don't, make sure to share the logs (that have been saved automatically to your internal storage) in the module [support thread](https://forum.xda-developers.com/apps/magisk/module-magiskhide-props-config-t3789228). @@ -378,6 +410,9 @@ If your device does not have access to /sdcard, /data or /cache through recovery The reset file can be use this in combination with the [configuration file](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#configuration-file) described above to keep device fingerprint or any other settings intact past the reset. Just make sure to remove any custom props that might have been causing issues from the configuration file. +### The screen goes black momentarily at boot +This is caused by the [MagiskHide Sensitive props](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config/blob/master/README.md#setreset-magiskhide-sensitive-props) function of the module doing a soft reboot at the end of the boot cycle. This is necessary to reaload the prop values properly. + ### The Play Store is "uncertified" If your device's Play Store reports that the device is "uncertified", this is usually fixed by making sure that you pass SafetyNet and then clearing data for the Play Store (and possibly rebooting). More details in the [Magisk troubleshooting guide](https://www.didgeridoohan.com/magisk/MagiskHide#hn_Device_uncertified_in_Play_storeNetflix_and_other_apps_wont_install_or_doesnt_show_up). @@ -389,7 +424,7 @@ The logs will also automatically be saved to the root of the device's internal s If there are issues with other apps or your system as a result of using this module, a logcat/recovery log/etc showing the issue will most likely be necessary. Take a look in my [Magisk troubleshooting guide](https://www.didgeridoohan.com/magisk/MagiskHelp) for guidance on that. ### Collecting logs manually -If you can't run the `props` script for some reason, the module logs are stored in /data/adb/mhpc. All files in that directory would be useful. The Magisk log (retrieved from /cache or saved from the Magisk Manager) and magisk.log.bak would also help with troubleshooting. Providing the output from terminal might also be useful. +If you can't run the `props` script for some reason, the module logs are stored in /data/adb/mhpc and all files in that directory would be useful for troubleshooting. The Magisk log (retrieved from /cache or saved from the Magisk Manager) and magisk.log.bak would also help. Providing the output from terminal might be useful as well. ## Donations @@ -416,6 +451,18 @@ Releases from v4.0.0 are compatible with Magisk v19+. Releases from v5.0.0 are recommended for Magisk v19.4+. ## Changelog +### v5.2.0 +- Added ro.product.manufacturer and ro.product.model to simulation props. +- Added an option to also use partition specific versions of simulation props (see the documentation for details). +- Fixed basic device simulation so that it now only sets props that are already found on the device. +- Fixed changing MagiskHide sensitive props in late_start service boot stage (see the documentation for details). +- Updated simulation props editing so that several props can be activated at once (see the documentation for details). +- Updated MagiskHide sensitive prop editing so that several props can be activated at once (see the documentation for details). +- Added a new feature to export current module settings to a configuratino file (see the documentation for details). +- Updated the documentation and added AndroidDumps as a resource for finding certified fingerprints (see the documentation for details). +- Various under the hood changes and improvements. +- Added fingerprint for Samsung Galaxy Note 9 and Xiaomi Mi Box S. Updated fingerprints for HTC U12 Plus, Nokia 6.1 Plus and several variants of OnePlus 7, 7 Pro and 7T. List updated to v78. + ### v5.1.2 - Reset current fingerprint if disabling fingerprint modification because of a conflicting module. - Fixed using the configuration file in /sdcard during boot on FBE encrypted devices. @@ -717,16 +764,16 @@ Releases from v5.0.0 are recommended for Magisk v19.4+. ## Current fingerprints list -### List v77 -- Asus Zenfone 2 Laser (6.0.1) -- Asus Zenfone 3 Max (7.1.1 & 8.1.0) -- Asus Zenfone 4 Max (7.1.1) -- Asus ZenFone 5Z (9) -- Asus Zenfone 6 (9) -- Asus Zenfone Max M1 (8.0.0) -- Asus Zenfone Max Pro M1 (8.1.0) -- Asus ZenPad S 8.0 (6.0.1) -- BLU R1 HD 2018 (7.0) +### List v78 +- Asus Zenfone 2 Laser ASUS_Z00LD (6.0.1) +- Asus Zenfone 3 Max ASUS_X00DD (7.1.1 & 8.1.0) +- Asus Zenfone 4 Max ASUS_X00HD (7.1.1) +- Asus ZenFone 5Z ASUS_Z01RD (9) +- Asus Zenfone 6 ASUS_I01WD (9) +- Asus Zenfone Max M1 ASUS_X00PD (8.0.0) +- Asus Zenfone Max Pro M1 ASUS_X00TD (8.1.0) +- Asus ZenPad S 8.0 P01MA (6.0.1) +- BLU S1 (7.0) - Elephone U Pro (8.0.0) - Essential PH-1 (9 & 10) - Fairphone 2 (6.0.1) @@ -756,32 +803,32 @@ Releases from v5.0.0 are recommended for Magisk v19.4+. - Google Pixel C (8.1.0) - HTC 10 (6.0.1) - HTC U11 (8.0.0) -- HTC U12 Plus (8.0.0) -- Huawei Honor 6X (8.0.0) -- Huawei Honor 8X (8.1.0) -- Huawei Honor 9 (8.0.0 & 9) -- Huawei Mate 10 (8.0.0) -- Huawei Mate 10 Pro (8.0.0) -- Huawei Mate 20 Lite (9) -- Huawei Mate 20 Pro (9) -- Huawei P8 Lite (8.0.0) -- Huawei P9 (7.0) -- Huawei P9 Lite (7.0) -- Huawei P9 Plus (7.0) -- Huawei P20 (9) -- Huawei P20 Dual SIM (9) -- Huawei P20 Lite (8.0.0 & 9) -- Huawei P20 Pro (8.1.0 & 9) +- HTC U12 Plus (8.0.0 & 9) +- Huawei Honor 6X BLN-AL10 (8.0.0) +- Huawei Honor 8X JSN-L21 (8.1.0) +- Huawei Honor 9 STF-L09 (8.0.0 & 9) +- Huawei Mate 10 ALP-L29 (8.0.0) +- Huawei Mate 10 Pro BLA-L29 (8.0.0) +- Huawei Mate 20 Lite SNE-LX1 (9) +- Huawei Mate 20 Pro LYA-L29 (9) +- Huawei P8 Lite PRA-LX1 (8.0.0) +- Huawei P9 EVA-L09 (7.0) +- Huawei P9 Lite VNS-L31 (7.0) +- Huawei P9 Plus VIE-L09 (7.0) +- Huawei P20 EML-L09 (9) +- Huawei P20 Dual SIM EML-L29 (9) +- Huawei P20 Lite ANE-LX1 (8.0.0 & 9) +- Huawei P20 Pro CLT-L29 (8.1.0 & 9) - Lenovo K6 Note (7.0) - LeEco Le Pro3 (6.0.1) -- LG G2 BS980 (5.0.2) +- LG G2 VS980 (5.0.2) - LG G4 H812 (6.0) -- LG G5 H850 (8.0.0) - LG G5 H830 (8.0.0) +- LG G5 H850 (8.0.0) - LG G5 RS988 (7.0) - LG G6 H870 (7.0 & 8.0.0) -- LG V20 H918 (8.0.0) - LG V20 H910 (8.0.0) +- LG V20 H918 (8.0.0) - LG V20 H990DS (7.0) - LG V20 LS997 (8.0.0) - LG V20 US996 (8.0.0) @@ -828,96 +875,102 @@ Releases from v5.0.0 are recommended for Magisk v19.4+. - OnePlus 6 (8.1.0 & 9 & 10) - OnePlus 6T (9 & 10) - OnePlus 6T T-Mobile (9) -- OnePlus 7 GM1901/GM1905 (9 & 10) +- OnePlus 7 GM1901 (9 & 10) - OnePlus 7 GM1903 (9 & 10) -- OnePlus 7 Pro GM1911/GM1917 (9 & 10) +- OnePlus 7 GM1905 (9 & 10) +- OnePlus 7 Pro GM1911 (9 & 10) - OnePlus 7 Pro GM1913 (9 & 10) - OnePlus 7 Pro GM1915 (9) +- OnePlus 7 Pro GM1917 (9 & 10) - OnePlus 7 Pro NR GM1920 (9) - OnePlus 7 Pro NR Spr GM1925 (9) -- OnePlus 7T HD1901/HD1905 (10) +- OnePlus 7T HD1901 (10) - OnePlus 7T HD1903 (10) -- OnePlus 7T Pro HD1911/HD1917 (10) +- OnePlus 7T HD1905 (10) +- OnePlus 7T Pro HD1911 (10) - OnePlus 7T Pro HD1913 (10) +- OnePlus 7T Pro HD1917 (10) - OnePlus 7T Pro NR HD1925 (10) - OPPO Neo 7 A33w (5.1) - OPPO Neo 7 A1603 (5.1) - Razer Phone (8.1.0) - Razer Phone 2 (8.1.0 & 9) -- Samsung Galaxy A3 2015 (6.0.1) -- Samsung Galaxy A5 2015 (6.0.1) -- Samsung Galaxy A5 2017 (8.0.0) -- Samsung Galaxy A51 (10) -- Samsung Galaxy A6 Plus (9) -- Samsung Galaxy A7 2017 (8.0.0) -- Samsung Galaxy A8 Plus (7.1.1) -- Samsung Galaxy Core Prime (5.1.1) -- Samsung Galaxy Grand Prime (5.0.2) -- Samsung Galaxy J2 (5.1.1) -- Samsung Galaxy J3 (5.1.1) -- Samsung Galaxy J5 2015 (6.0.1) -- Samsung Galaxy J5 2016 (7.1.1) -- Samsung Galaxy J5 Prime (7.0) -- Samsung Galaxy J7 2017 (8.1.0) -- Samsung Galaxy J7 Prime (6.0.1) -- Samsung Galaxy M20 (10) -- Samsung Galaxy Note 3 (5.0) -- Samsung Galaxy Note 4 (6.0.1) -- Samsung Galaxy Note 5 (7.0) -- Samsung Galaxy Note 8 (8.0.0) -- Samsung Galaxy Note 10 Plus (10) -- Samsung Galaxy Note 10.1 2014 (5.1.1) -- Samsung Galaxy S3 Neo (4.4.4) -- Samsung Galaxy S4 (5.0.1) -- Samsung Galaxy S4 Active (5.0.1) -- Samsung Galaxy S5 (6.0.1) -- Samsung Galaxy S6 (7.0) -- Samsung Galaxy S6 Edge (7.0) -- Samsung Galaxy S7 (8.0.0) -- Samsung Galaxy S7 Edge (8.0.0) -- Samsung Galaxy S8 (8.0.0) -- Samsung Galaxy S8 Plus (8.0.0) -- Samsung Galaxy S9 (8.0.0) -- Samsung Galaxy S9 Plus (8.0.0) +- Samsung Galaxy A3 2015 SM-A300FU (6.0.1) +- Samsung Galaxy A5 2015 SM-A500FU (6.0.1) +- Samsung Galaxy A5 2017 SM-A520F (8.0.0) +- Samsung Galaxy A51 SM-A515F (10) +- Samsung Galaxy A6 Plus SM-A605G (9) +- Samsung Galaxy A7 2017 SM-A720F (8.0.0) +- Samsung Galaxy A8 Plus SM-A730F (7.1.1) +- Samsung Galaxy Core Prime SM-G361F (5.1.1) +- Samsung Galaxy Grand Prime SM-G530BT (5.0.2) +- Samsung Galaxy J2 SM-J200H (5.1.1) +- Samsung Galaxy J3 SM-J320FN (5.1.1) +- Samsung Galaxy J5 2015 SM-J500FN (6.0.1) +- Samsung Galaxy J5 2016 SM-J510FN (7.1.1) +- Samsung Galaxy J5 Prime SM-G570F (7.0) +- Samsung Galaxy J7 2017 SM-J730F (8.1.0) +- Samsung Galaxy J7 Prime SM-G610F (6.0.1) +- Samsung Galaxy M20 SM-M205F (10) +- Samsung Galaxy Note 3 SM-N9005 (5.0) +- Samsung Galaxy Note 4 SM-N910F (6.0.1) +- Samsung Galaxy Note 5 SM-N920C (7.0) +- Samsung Galaxy Note 8 SM-N950F (8.0.0) +- Samsung Galaxy Note 9 SM-N960F (10) +- Samsung Galaxy Note 10 Plus SM-N975F (10) +- Samsung Galaxy Note 10.1 2014 SM-P600 (5.1.1) +- Samsung Galaxy S3 Neo GT-I9300I (4.4.4) +- Samsung Galaxy S4 GT-I9505 (5.0.1) +- Samsung Galaxy S4 Active GT-I9295 (5.0.1) +- Samsung Galaxy S5 SM-G900H (6.0.1) +- Samsung Galaxy S6 SM-G920F (7.0) +- Samsung Galaxy S6 Edge SM-G925F (7.0) +- Samsung Galaxy S7 SM-G930F (8.0.0) +- Samsung Galaxy S7 Edge SM-G935F (8.0.0) +- Samsung Galaxy S8 SM-G950F (8.0.0) +- Samsung Galaxy S8 Plus SM-G955F (8.0.0) +- Samsung Galaxy S9 SM-G960F (8.0.0) +- Samsung Galaxy S9 Plus SM-G965F (8.0.0) - Samsung Galaxy S10 Plus SM-G975F (10) - Samsung Galaxy S10 Plus SM-G975U (9) -- Samsung Galaxy Tab 2 7.0 (4.2.2) +- Samsung Galaxy Tab 2 7.0 GT-P5110 (4.2.2) - Samsung Galaxt Tab A WiFi SM-T590 (9) - Samsung Galaxt Tab A LTE SM-T595 (9) - Samsung Galaxt Tab A LTE SM-T597 (9) - Samsung Galaxy Tab S3 LTE SM-T825 (8.0.0) -- Sony Xperia X (8.0.0) -- Sony Xperia X Compact (8.0.0) -- Sony Xperia X Dual (8.0.0) -- Sony Xperia X Performance (8.0.0) -- Sony Xperia X Performance Dual (8.0.0) -- Sony Xperia XA2 Dual (8.0.0) -- Sony Xperia XZ (8.0.0) -- Sony Xperia XZ Dual (8.0.0) -- Sony Xperia XZ Premium (8.0.0) -- Sony Xperia XZ Premium Dual (8.0.0) -- Sony Xperia XZ1 (8.0.0) -- Sony Xperia XZ1 Compact (8.0.0 & 9) -- Sony Xperia XZ1 Dual (8.0.0) -- Sony Xperia XZ2 (8.0.0) -- Sony Xperia XZ2 Compact (8.0.0) -- Sony Xperia XZ2 Compact Dual (8.0.0) -- Sony Xperia XZ2 Dual (8.0.0) -- Sony Xperia Z (5.1.1) -- Sony Xperia Z1 (5.1.1) -- Sony Xperia Z2 (6.0.1) -- Sony Xperia Z3 (6.0.1) -- Sony Xperia Z3 Compact (6.0.1) -- Sony Xperia Z3 Tablet Compact (6.0.1) -- Sony Xperia Z4 Tablet LTE (7.1.1) -- Sony Xperia Z5 (7.1.1) -- Sony Xperia Z5 Compact (7.1.1) -- Sony Xperia Z5 Dual (7.1.1) -- Sony Xperia Z5 Premium (7.1.1) -- Sony Xperia Z5 Premium Dual (7.1.1) +- Sony Xperia X F5121 (8.0.0) +- Sony Xperia X Compact F5321 (8.0.0) +- Sony Xperia X Dual F5122 (8.0.0) +- Sony Xperia X Performance F8131 (8.0.0) +- Sony Xperia X Performance Dual F8132 (8.0.0) +- Sony Xperia XA2 Dual H4113 (8.0.0) +- Sony Xperia XZ F8331 (8.0.0) +- Sony Xperia XZ Dual F8332 (8.0.0) +- Sony Xperia XZ Premium G8141 (8.0.0) +- Sony Xperia XZ Premium Dual G8142 (8.0.0) +- Sony Xperia XZ1 G8341 (8.0.0) +- Sony Xperia XZ1 Compact G8441 (8.0.0 & 9) +- Sony Xperia XZ1 Dual G8342 (8.0.0) +- Sony Xperia XZ2 H8216 (8.0.0) +- Sony Xperia XZ2 Compact H8314 (8.0.0) +- Sony Xperia XZ2 Compact Dual H8324 (8.0.0) +- Sony Xperia XZ2 Dual H8266 (8.0.0) +- Sony Xperia Z C6603 (5.1.1) +- Sony Xperia Z1 C6903 (5.1.1) +- Sony Xperia Z2 D6503 (6.0.1) +- Sony Xperia Z3 D6633 (6.0.1) +- Sony Xperia Z3 Compact D5803 (6.0.1) +- Sony Xperia Z3 Tablet Compact SGP621 (6.0.1) +- Sony Xperia Z4 Tablet LTE SGP771 (7.1.1) +- Sony Xperia Z5 E6603 (7.1.1) +- Sony Xperia Z5 Compact E5823 (7.1.1) +- Sony Xperia Z5 Dual E6633 (7.1.1) +- Sony Xperia Z5 Premium E6853 (7.1.1) +- Sony Xperia Z5 Premium Dual E6883 (7.1.1) - Vodafone Smart Ultra 6 (5.1.1) - Walmart Onn 8 (9) -- Xiaomi Mi 3/4 (6.0.1) +- Xiaomi Mi 3 (6.0.1) +- Xiaomi Mi 4 (6.0.1) - Xiaomi Mi 4C (7.0) - Xiaomi Mi 5/5 Pro (7.0 & 8.0.0) - Xiaomi Mi 5S (7.0) @@ -929,10 +982,12 @@ Releases from v5.0.0 are recommended for Magisk v19.4+. - Xiaomi Mi 9 SE (9) - Xiaomi Mi 9T European (9 & 10) - Xiaomi Mi 9T Global (10) +- Xiaomi Mi 9T Pro (9 & 10) - Xiaomi Mi A1 (8.0.0 & 9) - Xiaomi Mi A2 (8.1.0 & 9) - Xiaomi Mi A2 Lite (9) - Xiaomi Mi A3 (9) +- Xiaomi Mi Box S (9) - Xiaomi Mi Max (6.0.1) - Xiaomi Mi Max 2 (7.1.1) - Xiaomi Mi Max 3 (9) @@ -947,19 +1002,21 @@ Releases from v5.0.0 are recommended for Magisk v19.4+. - Xiaomi Pocophone F1 (9 & 10) - Xiaomi Redmi 3/3 Pro (5.1.1) - Xiaomi Redmi 3S/X Prime (6.0.1) -- Xiaomi Redmi 4 Prime (6.0.1) +- Xiaomi Redmi 4 Pro (6.0.1) - Xiaomi Redmi 4A (7.1.2) - Xiaomi Redmi 4X (6.0.1) - Xiaomi Redmi 5A (7.1.2 & 8.1.0) - Xiaomi Redmi 8 (9) - Xiaomi Redmi Go (8.1.0) -- Xiaomi Redmi K20 Pro/Mi 9T Pro (9 & 10) +- Xiaomi Redmi K20 Pro (9 & 10) - Xiaomi Redmi Note 2 (5.0.2) - Xiaomi Redmi Note 3 Pro (6.0.1) - Xiaomi Redmi Note 3 Pro SE (6.0.1) -- Xiaomi Redmi Note 4/4X (7.0) +- Xiaomi Redmi Note 4 (7.0) +- Xiaomi Redmi Note 4X (7.0) - Xiaomi Redmi Note 4 Mediatek (6.0) -- Xiaomi Redmi Note 5/5 Plus (7.1.2 & 8.1.0) +- Xiaomi Redmi Note 5 (7.1.2 & 8.1.0) +- Xiaomi Redmi Note 5 Plus (7.1.2 & 8.1.0) - Xiaomi Redmi Note 5 Pro (8.1.0 & 9) - Xiaomi Redmi Note 5A Lite (7.1.2) - Xiaomi Redmi Note 6 Pro (8.1.0) diff --git a/common/prints.sh b/common/prints.sh index e14334f..7d8b1ba 100644 --- a/common/prints.sh +++ b/common/prints.sh @@ -4,263 +4,273 @@ # Copyright (c) 2018-2020 Didgeridoohan @ XDA Developers # Licence: MIT -PRINTSV=77 -PRINTSTRANSF=350 +PRINTSV=78 +PRINTSTRANSF=520 # Certified fingerprints PRINTSLIST=" -Asus Zenfone 2 Laser (6.0.1)=asus/WW_Z00L/ASUS_Z00L_63:6.0.1/MMB29P/WW_user_21.40.1220.2196_20180308:user/release-keys -Asus Zenfone 3 Max (7.1.1 & 8.1.0)=asus/WW_Phone/ASUS_X00DD:7.1.1/NMF26F/14.0200.1712.347-20171214:user/release-keys;asus/WW_Phone/ASUS_X00DD:8.1.0/OPM1.171019.011/15.0200.1812.503-0:user/release-keys__2018-12-05 -Asus Zenfone 4 Max (7.1.1)=asus/WW_Phone/ASUS_X00HD_4:7.1.1/NMF26F/14.2016.1801.372-20180119:user/release-keys -Asus ZenFone 5Z (9)=asus/WW_Z01RD/ASUS_Z01R_1:9/PPR1.180610.009/WW_90.11.162.72_20190531:user/release-keys__2019-05-01 -Asus Zenfone 6 (9)=asus/WW_I01WD/ASUS_I01WD:9/PPR2.181005.003/16.1220.1909.193-0:user/release-keys__2019-09-01 -Asus Zenfone Max M1 (8.0.0)=asus/WW_X00PD/ASUS_X00P_4:8.0.0/OPR1.170623.032/15.00.1907.103:user/release-keys__2019-07-05 -Asus Zenfone Max Pro M1 (8.1.0)=asus/RU_X00TD/ASUS_X00T_6:8.1.0/OPM1/15.2016.1902.340-20190216:user/release-keys__2019-02-01 -Asus ZenPad S 8.0 (6.0.1)=asus/WW_P01M/P01M_3:6.0.1/MMB29P/WW_P01M-V5.6.0-20170608:user/release-keys -BLU R1 HD 2018 (7.0)=BLU/BLU_S1/S0320WW:7.0/NRD90M/1514191903:user/release-keys -Elephone U Pro (8.0.0)=Elephone/U_Pro/U_Pro:8.0.0/Elephone_U_Pro_20180917/09172123:user/release-keys__2018-09-05 -Essential PH-1 (9 & 10)=essential/mata/mata:9/PQ1A.190105.112/550:user/release-keys__2019-08-05;essential/mata/mata:10/QQ1A.200105.032/540:user/release-keys__2020-02-05 -Fairphone 2 (6.0.1)=Fairphone/FP2/FP2:6.0.1/FP2-gms-17.09.3/FP2-gms-17.09.3:user/release-keys -Google Nexus 4 (5.1.1)=google/occam/mako:5.1.1/LMY48T/2237560:user/release-keys -Google Nexus 5 (6.0.1)=google/hammerhead/hammerhead:6.0.1/M4B30Z/3437181:user/release-keys -Google Nexus 5X (8.1.0)=google/bullhead/bullhead:8.1.0/OPM7.181205.001/5080180:user/release-keys__2018-12-05 -Google Nexus 6 (7.1.1)=google/shamu/shamu:7.1.1/N6F27M/4299435:user/release-keys -Google Nexus 6P (8.1.0)=google/angler/angler:8.1.0/OPM7.181205.001/5080180:user/release-keys__2018-12-05 -Google Nexus 7 2012 WiFi (5.1.1)=google/nakasi/grouper:5.1.1/LMY47V/1836172:user/release-keys -Google Nexus 7 2012 LTE (5.1.1)=google/nakasig/tilapia:5.1.1/LMY47V/1836172:user/release-keys -Google Nexus 7 2013 WiFi (6.0.1)=google/razor/flo:6.0.1/MOB30X/3036618:user/release-keys -Google Nexus 7 2013 LTE (6.0.1)=google/razorg/deb:6.0.1/MOB30X/3036618:user/release-keys -Google Nexus 9 WiFi (7.1.1)=google/volantis/flounder:7.1.1/N9F27M/4333998:user/release-keys -Google Nexus 9 LTE (7.1.1)=google/volantisg/flounder_lte:7.1.1/N4F27P/4333386:user/release-keys -Google Nexus 10 (5.1.1)=google/mantaray/manta:5.1.1/LMY49J/2640980:user/release-keys -Google Nexus Player (6.0.1)=google/fugu/fugu:6.0.1/MMB29U/2495654:user/release-keys -Google Pixel (8.1.0 & 9 & 10)=google/sailfish/sailfish:8.1.0/OPM2.171019.029/4657601:user/release-keys;google/sailfish/sailfish:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/sailfish/sailfish:10/QP1A.191005.007.A3/5972272:user/release-keys__2019-10-06 -Google Pixel XL (8.1.0 & 9 & 10)=google/marlin/marlin:8.1.0/OPM2.171019.029/4657601:user/release-keys;google/marlin/marlin:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/marlin/marlin:10/QP1A.191005.007.A3/5972272:user/release-keys__2019-10-06 -Google Pixel 2 (8.1.0 & 9 & 10)=google/walleye/walleye:8.1.0/OPM2.171019.029/4657601:user/release-keys;google/walleye/walleye:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/walleye/walleye:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 -Google Pixel 2 XL (8.1.0 & 9 & 10)=google/taimen/taimen:8.1.0/OPM4.171019.016.B1/4720843:user/release-keys;google/taimen/taimen:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/taimen/taimen:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 -Google Pixel 3 (9 & 10)=google/blueline/blueline:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/blueline/blueline:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 -Google Pixel 3 XL (9 & 10)=google/crosshatch/crosshatch:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/crosshatch/crosshatch:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 -Google Pixel 3a (9 & 10)=google/sargo/sargo:9/PQ3B.190801.002/5674421:user/release-keys__2019-08-01;google/sargo/sargo:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 -Google Pixel 3a XL (9 & 10)=google/bonito/bonito:9/PQ3B.190801.002/5674421:user/release-keys__2019-08-01;google/bonito/bonito:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 -Google Pixel 4 (10)=google/flame/flame:10/QQ1B.200205.002/6084387:user/release-keys__2020-02-05 -Google Pixel 4 XL (10)=google/coral/coral:10/QQ1B.200205.002/6084387:user/release-keys__2020-02-05 -Google Pixel C (8.1.0)=google/ryu/dragon:8.1.0/OPM8.190605.005/5749003:user/release-keys__2019-06-05 -HTC 10 (6.0.1)=htc/HTCOneM10vzw/htc_pmewl:6.0.1/MMB29M/774095.8:user/release-keys -HTC U11 (8.0.0)=htc/ocndtwl_01405/htc_ocndtwl:8.0.0/OPR6.170623.013/1017190.2:user/release-keys -HTC U12 Plus (8.0.0)=htc/imeuhl_00617/htc_imeuhl:8.0.0/OPR1.170623.032/1041457.3:user/release-keys__2018-06-01 -Huawei Honor 6X (8.0.0)=HONOR/BLN-AL10/HWBLN-H:8.0.0/HONORBLN-AL10/528(C00):user/release-keys -Huawei Honor 8X (8.1.0)=HONOR/JSN-L21RU/HWJSN-H:8.1.0/HONORJSN-L21/101(C10):user/release-keys__2018-10-01 -Huawei Honor 9 (8.0.0 & 9)=HONOR/STF-L09/HWSTF:8.0.0/HUAWEISTF-L09/364(C432):user/release-keys;HONOR/STF-L09/HWSTF:9/HUAWEISTF-L09/157C432R1:user/release-keys__2019-02-01 -Huawei Mate 10 (8.0.0)=HUAWEI/ALP-L29/HWALP:8.0.0/HUAWEIALP-L29S/143(C636):user/release-keys__2018-10-01 -Huawei Mate 10 Pro (8.0.0)=HUAWEI/BLA-L29/HWBLA:8.0.0/HUAWEIBLA-L29S/137(C432):user/release-keys -Huawei Mate 20 Lite (9)=HUAWEI/SNE-LX1EEA/HWSNE:9/HUAWEISNE-L01/245EEAC782:user/release-keys__2019-09-01 -Huawei Mate 20 Pro (9)=HUAWEI/LYA-L29/HWLYA:9/HUAWEILYA-L29/358C432:user/release-keys__2019-11-01 -Huawei P8 Lite (8.0.0)=HUAWEI/PRA-LX1/HWPRA-H:8.0.0/HUAWEIPRA-LX1/401(C432):user/release-keys__2019-01-01 -Huawei P9 (7.0)=HUAWEI/EVA-L09/HWEVA:7.0/HUAWEIEVA-L09/C432B502:user/release-keys -Huawei P9 Lite (7.0)=HUAWEI/VNS-L31/HWVNS-H:7.0/HUAWEIVNS-L31/C432B414:user/release-keys__2018-06-01 -Huawei P9 Plus (7.0)=HUAWEI/VIE-L09/HWVIE:7.0/HUAWEIVIE-L09/C432B387:user/release-keys__2018-07-01 -Huawei P20 (9)=HUAWEI/EML-L09/HWEML:9/HUAWEIEML-L09/9.1.0.345C109:user/release-keys__2019-10-06 -Huawei P20 Dual SIM (9)=HUAWEI/EML-L29/HWEML:9/HUAWEIEML-L29/197C432R1:user/release-keys__2019-01-01 -Huawei P20 Lite (8.0.0 & 9)=HUAWEI/ANE-LX1/HWANE:8.0.0/HUAWEIANE-LX1/180(C432):user/release-keys__2019-04-05;HUAWEI/ANE-LX1/HWANE:9/HUAWEIANE-L21/132C432R1:user/release-keys__2019-05-05 -Huawei P20 Pro (8.1.0 & 9)=HUAWEI/CLT-L29/HWCLT:8.1.0/HUAWEICLT-L29/128(C432):user/release-keys;HUAWEI/CLT-L09/HWCLT:9/HUAWEICLT-L09/203C432R1:user/release-keys__2019-02-01 -Lenovo K6 Note (7.0)=Lenovo/karatep/K53a48:7.0/NRD90N/K53_S228_171114_ROW:user/release-keys -LeEco Le Pro3 (6.0.1)=LeEco/ZL1_NA/le_zl1:6.0.1/WEXNAOP5802101261S/letv01261206:user/release-keys -LG G2 BS980 (5.0.2)=lge/g2_vzw/g2:5.0.2/LRX22G/15046001715f9:user/release-keys -LG G4 H812 (6.0)=lge/p1_rgs_ca/p1:6.0/MRA58K/1601215569825:user/release-keys -LG G5 H850 (8.0.0)=lge/h1_global_com/h1:8.0.0/OPR1.170623.032/190380127377a:user/release-keys__2018-12-01 -LG G5 H830 (8.0.0)=lge/h1_tmo_us/h1:8.0.0/OPR1.170623.032/182251913485f:user/release-keys__2018-08-01 -LG G5 RS988 (7.0)=lge/h1_lra_us/h1:7.0/NRD90U/1707917149a1b:user/release-keys -LG G6 H870 (7.0 & 8.0.0)=lge/lucye_global_com/lucye:7.0/NRD90U/171732341982c:user/release-keys;lge/lucye_global_com/lucye:8.0.0/OPR1.170623.032/183301757502c:user/release-keys__2018-11-01 -LG V20 H918 (8.0.0)=lge/elsa_tmo_us/elsa:8.0.0/OPR1.170623.032/1831917495b33:user/release-keys__2018-11-01 -LG V20 H910 (8.0.0)=lge/elsa_att_us/elsa:8.0.0/OPR1.170623.032/181871124f959:user/release-keys__2018-06-01 -LG V20 H990DS (7.0)=lge/elsa_global_com/elsa:7.0/NRD90M/1801800193678:user/release-keys -LG V20 LS997 (8.0.0)=lge/elsa_spr_us/elsa:8.0.0/OPR1.170623.032/1819814314eb7:user/release-keys__2018-07-01 -LG V20 US996 (8.0.0)=lge/elsa_nao_us/elsa:8.0.0/OPR1.170623.032/183241436cd40:user/release-keys__2018-11-01 -LG V20 VS995 (8.0.0)=lge/elsa_vzw/elsa:8.0.0/OPR1.170623.032/183141449275f:user/release-keys__2018-10-01 -LG V30 H930 (8.0.0)=lge/joan_global_com/joan:8.0.0/OPR1.170623.026/181381736b4e9:user/release-keys__2018-11-05 -Mecool KM8 (8.0.0 & 9)=MECOOL/KM8/KM8:8.0.0/OPR6.170623.013/V0412.201806271453:user/release-keys__2018-05-05;MECOOL/KM8/KM8:9/PI/20190315:user/release-keys__2019-02-05 -Motorola Moto C Plus (7.0)=motorola/panell_21_d/panell_d:7.0/NRD90M.03.040/040:user/release-keys -Motorola Moto E4 (7.1.1)=motorola/sperry_sprint/sperry:7.1.1/NCQ26.69-64/68:user/release-keys -Motorola Moto E4 Plus (7.1.1)=motorola/nicklaus_fn/nicklaus_fn:7.1.1/NMA26.42-156/183:user/release-keys -Motorola Moto E5 Play (8.0.0)=motorola/james_sprint/james:8.0.0/OCPS27.91-140-1/1:user/release-keys__2018-10-01 -Motorola Moto E5 Plus (8.0.0)=motorola/hannah_sprint/hannah:8.0.0/OCPS27.91-32-4/4:user/release-keys__2018-10-01 -Motorola Moto G4 (7.0 & 8.1.0)=motorola/athene/athene:7.0/NPJS25.93-14-13/3:user/release-keys;motorola/athene/athene:8.1.0/OPJ28.111-22/532da:user/release-keys__2018-12-01 -Motorola Moto G5 (7.0)=motorola/cedric/cedric:7.0/NPPS25.137-15-11/11:user/release-keys -Motorola Moto G5 Plus (7.0)=motorola/potter_n/potter_n:7.0/NPNS25.137-33-11/11:user/release-keys -Motorola Moto G5S (7.1.1 & 8.1.0)=motorola/montana/montana:7.1.1/NPPS26.102-49-8/6:user/release-keys;motorola/montana/montana:8.1.0/OPPS28.65-37-7-11/7f8a6:user/release-keys__2019-08-01 -Motorola Moto G5S Plus (8.1.0)=motorola/sanders_n/sanders_n:8.1.0/OPS28.65-36-14/63857:user/release-keys__2019-08-01 -Motorola Moto G6 (9)=motorola/ali/ali:9/PPS29.55-34/0c5d:user/release-keys__2019-02-01 -Motorola Moto G6 Play (8.0.0 & 9)=motorola/jeter_sprint/jeter:8.0.0/OCP27.91-23/23:user/release-keys;motorola/aljeter/aljeter:9/PPP29.55-25/08c6:user/release-keys__2019-01-01 -Motorola Moto G6 Plus (9)=motorola/evert_amx_n/evert_n:9/PPWS29.116-16-6/5cbfe:user/release-keys__2019-05-01 -Motorola Moto G7 (9)=motorola/river/river:9/PPOS29.114-134-7/b6963:user/release-keys__2019-12-01 -Motorola Moto G7 Power (9)=motorola/ocean/ocean:9/PPOS29.114-134-7/d9234:user/release-keys__2019-12-01 -Motorola Moto X4 (8.0.0)=motorola/payton/payton:8.0.0/OPWS27.57-25-6-10/12:user/release-keys -Motorola Moto Z2 Play (8.0.0)=motorola/albus/albus:8.0.0/OPS27.76-12-25/26:user/release-keys -Nextbook Ares 8A (6.0.1)=NextBook/NX16A8116K/NX16A8116K:6.0.1/MMB29M/V4.0.3:user/release-keys -Nokia 6 TA-1021 (9)=Nokia/TA-1021_00WW/PLE:9/PKQ1.181105.001/00WW_6_19C:user/release-keys__2020-01-01 -Nokia 6 TA-1025 (9)=Nokia/TA-1025_00WW/PLE:9/PKQ1.181105.001/00WW_6_19C:user/release-keys__2020-01-01 -Nokia 6 TA-1033 (9)=Nokia/TA-1033_00WW/PLE:9/PKQ1.181105.001/00WW_6_19C:user/release-keys__2020-01-01 -Nokia 6 TA-1039 (9)=Nokia/TA-1039_00WW/PLE:9/PKQ1.181105.001/00WW_6_19C:user/release-keys__2020-01-01 -Nokia 6.1 Plus (9 & 10)=Nokia/Dragon_00WW/DRG_sprout:9/PPR1.180610.011/00WW_3_54J:user/release-keys__2019-08-01;Nokia/Dragon_00WW/DRG_sprout:10/QKQ1.190828.002/00WW_4_070:user/release-keys__2019-11-01 -Nokia 6.2 (9)=Nokia/Starlord_00WW/SLD_sprout:9/PKQ1.190118.001/00WW_1_170:user/release-keys__2020-01-05 -Nokia 7 Plus (9)=Nokia/Onyx_00WW/B2N_sprout:9/PPR1.180610.011/00WW_3_53B:user/release-keys__2019-05-01 -Nokia 7.1 TA-1095 (10)=Nokia/Crystal_00WW/CTL_sprout:10/QKQ1.190828.002/00WW_4_08B:user/release-keys__2019-11-01 -Nvidia Shield K1 (7.0)=nvidia/sb_na_wf/shieldtablet:7.0/NRD90M/1928188_1065.2559:user/release-keys -Nvidia Shield Tablet (7.0)=nvidia/wx_na_wf/shieldtablet:7.0/NRD90M/1928188_904.2811:user/release-keys -Nvidia Shield TV 2017 (8.0.0 & 9)=NVIDIA/darcy/darcy:8.0.0/OPR6.170623.010/3507953_1441.7411:user/release-keys__2018-12-05;NVIDIA/darcy/darcy:9/PPR1.180610.011/4086637_1604.6430:user/release-keys__2019-07-05 -Nvidia Shield TV Pro (8.0.0 & 9)=NVIDIA/foster_e_hdd/foster:8.0.0/OPR6.170623.010/3507953_1441.7411:user/release-keys__2018-12-05;NVIDIA/foster_e_hdd/foster:9/PPR1.180610.011/4086637_1604.6430:user/release-keys__2019-07-05 -OnePlus One (6.0.1)=oneplus/bacon/A0001:6.0.1/MMB29X/ZNH0EAS2JK:user/release-keys -OnePlus 2 (6.0.1)=OnePlus/OnePlus2/OnePlus2:6.0.1/MMB29M/1447858500:user/release-keys -OnePlus X (6.0.1)=OnePlus/OnePlus/OnePlus:6.0.1/MMB29M/10281213:user/release-keys -OnePlus 3 (8.0.0 & 9)=OnePlus/OnePlus3/OnePlus3:8.0.0/OPR1.170623.032/1809142047:user/release-keys__2018-09-01;OnePlus/OnePlus3/OnePlus3:9/PKQ1.181203.001/1911042107:user/release-keys__2019-10-01 -OnePlus 3T (8.0.0 & 9)=OnePlus/OnePlus3/OnePlus3T:8.0.0/OPR1.170623.032/1812060016:user/release-keys__2018-11-01;OnePlus/OnePlus3/OnePlus3T:9/PKQ1.181203.001/1911042108:user/release-keys__2019-10-01 -OnePlus 5 (8.1.0 & 9)=OnePlus/OnePlus5/OnePlus5:8.1.0/OPM1.171019.011/1809241512:user/release-keys__2018-09-01;OnePlus/OnePlus5/OnePlus5:9/PKQ1.180716.001/1912311102:user/release-keys__2019-12-01 -OnePlus 5T (7.1.1 & 8.0.0 & 8.1.0 & 9)=OnePlus/OnePlus5T/OnePlus5T:7.1.1/NMF26X/12152312:user/release-keys;OnePlus/OnePlus5T/OnePlus5T:8.0.0/OPR1.170623.032/02040656:user/release-keys;OnePlus/OnePlus5T/OnePlus5T:8.1.0/OPM1.171019.011/1809241512:user/release-keys__2018-09-01;OnePlus/OnePlus5T/OnePlus5T:9/PKQ1.180716.001/1912311102:user/release-keys__2019-12-01 -OnePlus 6 (8.1.0 & 9 & 10)=OnePlus/OnePlus6/OnePlus6:8.1.0/OPM1.171019.011/06140300:user/release-keys;OnePlus/OnePlus6/OnePlus6:9/PKQ1.180716.001/1908012000:user/release-keys__2019-08-01;OnePlus/OnePlus6/OnePlus6:10/QKQ1.190716.003/2001151848:user/release-keys__2019-12-01 -OnePlus 6T (9 & 10)=OnePlus/OnePlus6T/OnePlus6T:9/PKQ1.180716.001/1909112330:user/release-keys__2019-08-01;OnePlus/OnePlus6T/OnePlus6T:10/QKQ1.190716.003/2001151848:user/release-keys__2019-12-01 -OnePlus 6T T-Mobile (9)=OnePlus/OnePlus6TSingle/OnePlus6TSingle:9/PKQ1.180716.001/1810291147:user/release-keys__2018-11-01 -OnePlus 7 GM1901/GM1905 (9 & 10)=OnePlus/OnePlus7/OnePlus7:9/PKQ1.190110.001/1907280700:user/release-keys__2019-08-01;OnePlus/OnePlus7/OnePlus7:10/QKQ1.190716.003/2002021900:user/release-keys__2020-01-01 -OnePlus 7 GM1903 (9 & 10)=OnePlus/OnePlus7_EEA/OnePlus7:9/PKQ1.190110.001/1907280700:user/release-keys__2019-08-01;OnePlus/OnePlus7_EEA/OnePlus7:10/QKQ1.190716.003/1912061900:user/release-keys__2019-11-01 -OnePlus 7 Pro GM1911/GM1917 (9 & 10)=OnePlus/OnePlus7Pro/OnePlus7Pro:9/PKQ1.190110.001/1907281556:user/release-keys__2019-08-01;OnePlus/OnePlus7Pro/OnePlus7Pro:10/QKQ1.190716.003/2002021900:user/release-keys__2020-01-01 -OnePlus 7 Pro GM1913 (9 & 10)=OnePlus/OnePlus7Pro_EEA/OnePlus7Pro:9/PKQ1.190110.001/1907281556:user/release-keys__2019-08-01;OnePlus/OnePlus7Pro_EEA/OnePlus7Pro:10/QKQ1.190716.003/1912061900:user/release-keys__2019-11-01 -OnePlus 7 Pro GM1915 (9)=OnePlus/OnePlus7ProTMO/OnePlus7ProTMO:9/PKQ1.190110.001/1905021004:user/release-keys__2019-03-01 -OnePlus 7 Pro NR GM1920 (9)=OnePlus/OnePlus7ProNR_EEA/OnePlus7ProNR:9/PKQ1.190223.001/1912171007:user/release-keys__2019-12-01 -OnePlus 7 Pro NR Spr GM1925 (9)=OnePlus/OP7ProNRSpr/OP7ProNRSpr:9/PKQ1.190223.001/1908201041:user/release-keys__2019-08-01 -OnePlus 7T HD1901/HD1905 (10)=OnePlus/OnePlus7T/OnePlus7T:10/QKQ1.190716.003/1912060025:user/release-keys__2019-11-01 -OnePlus 7T HD1903 (10)=OnePlus/OnePlus7T_EEA/OnePlus7T:10/QKQ1.190716.003/1912060025:user/release-keys__2019-11-01 -OnePlus 7T Pro HD1911/HD1917 (10)=OnePlus/OnePlus7TPro/OnePlus7TPro:10/QKQ1.190716.003/2002022020:user/release-keys__2020-01-01 -OnePlus 7T Pro HD1913 (10)=OnePlus/OnePlus7TPro_EEA/OnePlus7TPro:10/QKQ1.190716.003/2002022020:user/release-keys__2020-01-01 -OnePlus 7T Pro NR HD1925 (10)=OnePlus/OnePlus7TProNR/OnePlus7TProNR:10/QKQ1.190716.003/2002051152:user/release-keys__2019-12-01 -OPPO Neo 7 A33w (5.1)=OPPO/A33w/A33w:5.1/LMY47I/1487829433:user/release-keys -OPPO Neo 7 A1603 (5.1)=OPPO/A1603/A1603:5.1/LMY47I/1489407760:user/release-keys -Razer Phone (8.1.0)=razer/cheryl/cheryl:8.1.0/OPM1.171019.011-RZR-180803/6033:user/release-keys__2018-07-05 -Razer Phone 2 (8.1.0 & 9)=razer/cheryl2/aura:8.1.0/O-MR2-RC009-RZR-181124/2009:user/release-keys__2018-10-05;razer/cheryl2/aura:9/P-MR2-RC001-RZR-190914/3123:user/release-keys__2019-09-05 -Samsung Galaxy A3 2015 (6.0.1)=samsung/a3ultexx/a3ulte:6.0.1/MMB29M/A300FUXXU1CRF1:user/release-keys -Samsung Galaxy A5 2015 (6.0.1)=samsung/a5ultexx/a5ulte:6.0.1/MMB29M/A500FUXXU1CPH3:user/release-keys -Samsung Galaxy A5 2017 (8.0.0)=samsung/a5y17ltexx/a5y17lte:8.0.0/R16NW/A520FXXUCCSK1:user/release-keys__2019-11-01 -Samsung Galaxy A51 (10)=samsung/a51nsxx/a51:10/QP1A.190711.020/A515FXXU1ASKJ:user/release-keys__2019-12-01 -Samsung Galaxy A6 Plus (9)=samsung/a6pltedx/a6plte:9/PPR1.180610.011/A605GDXU3BSC6:user/release-keys__2019-03-01 -Samsung Galaxy A7 2017 (8.0.0)=samsung/a7y17ltexx/a7y17lte:8.0.0/R16NW/A720FXXU9CSK3:user/release-keys__2019-12-01 -Samsung Galaxy A8 Plus (7.1.1)=samsung/jackpot2ltexx/jackpot2lte:7.1.1/NMF26X/A730FXXU2ARD1:user/release-keys -Samsung Galaxy Core Prime (5.1.1)=samsung/coreprimeveltexx/coreprimevelte:5.1.1/LMY48B/G361FXXU1APB1:user/release-keys -Samsung Galaxy Grand Prime (5.0.2)=samsung/fortuna3gdtvvj/fortuna3gdtv:5.0.2/LRX22G/G530BTVJU1BPH4:user/release-keys -Samsung Galaxy J2 (5.1.1)=samsung/j23gdd/j23g:5.1.1/LMY48B/J200HXXU0AQK2:user/release-keys -Samsung Galaxy J3 (5.1.1)=samsung/j3xnltexx/j3xnlte:5.1.1/LMY47V/J320FNXXU0ARB1:user/release-keys -Samsung Galaxy J5 2015 (6.0.1)=samsung/j5nltexx/j5nlte:6.0.1/MMB29M/J500FNXXS1BQG1:user/release-keys -Samsung Galaxy J5 2016 (7.1.1)=samsung/j5xnltexx/j5xnlte:7.1.1/NMF26X/J510FNXXS2BRA2:user/release-keys -Samsung Galaxy J5 Prime (7.0)=samsung/on5xeltejv/on5xelte:7.0/NRD90M/G570FXXU1BQI6:user/release-keys -Samsung Galaxy J7 2017 (8.1.0)=samsung/j7y17ltexx/j7y17lte:8.1.0/M1AJQ/J730FXXU3BRK2:user/release-keys__2018-11-01 -Samsung Galaxy J7 Prime (6.0.1)=samsung/on7xeltedd/on7xelte:6.0.1/MMB29K/G610FDDU1AQG2:user/release-keys -Samsung Galaxy M20 (10)=samsung/m20ltedd/m20lte:10/QP1A.190711.020/M205FDDU3CSL4:user/release-keys__2019-12-01 -Samsung Galaxy Note 3 (5.0)=samsung/hltezh/hlte:5.0/LRX21V/N9005ZSUGPJ2:user/release-keys -Samsung Galaxy Note 4 (6.0.1)=samsung/trltexx/trlte:6.0.1/MMB29M/N910FXXS1DQH9:user/release-keys -Samsung Galaxy Note 5 (7.0)=samsung/nobleltejv/noblelte:7.0/NRD90M/N920CXXU3CQH6:user/release-keys -Samsung Galaxy Note 8 (8.0.0)=samsung/greatltexx/greatlte:8.0.0/R16NW/N950FXXU3CRC1:user/release-keys -Samsung Galaxy Note 10 Plus (10)=samsung/d2sxx/d2s:10/QP1A.190711.020/N975FXXU1BSL7:user/release-keys__2019-12-01 -Samsung Galaxy Note 10.1 2014 (5.1.1)=samsung/lt03wifixx/lt03wifi:5.1.1/LMY47X/P600XXUDOJ3:user/release-keys -Samsung Galaxy S3 Neo (4.4.4)=samsung/s3ve3gdd/s3ve3gdd:4.4.4/KTU84P/I9300IDDUBQE2:user/release-keys -Samsung Galaxy S4 (5.0.1)=samsung/jfltexx/jflte:5.0.1/LRX22C/I9505XXUHPF4:user/release-keys -Samsung Galaxy S4 Active (5.0.1)=samsung/jactiveltexx/jactivelte:5.0.1/LRX22C/I9295XXSDQD6:user/release-keys -Samsung Galaxy S5 (6.0.1)=samsung/k3gxx/k3g:6.0.1/MMB29K/G900HXXU1CPF2:user/release-keys -Samsung Galaxy S6 (7.0)=samsung/zerofltexx/zeroflte:7.0/NRD90M/G920FXXS5EQL1:user/release-keys -Samsung Galaxy S6 Edge (7.0)=samsung/zeroltexx/zerolte:7.0/NRD90M/G925FXXS5EQL1:user/release-keys -Samsung Galaxy S7 (8.0.0)=samsung/heroltexx/herolte:8.0.0/R16NW/G930FXXU2ERD5:user/release-keys -Samsung Galaxy S7 Edge (8.0.0)=samsung/hero2ltexx/hero2lte:8.0.0/R16NW/G935FXXS4ESC3:user/release-keys__2019-03-01 -Samsung Galaxy S8 (8.0.0)=samsung/dreamltexx/dreamlte:8.0.0/R16NW/G950FXXU1CRC7:user/release-keys -Samsung Galaxy S8 Plus (8.0.0)=samsung/dream2ltexx/dream2lte:8.0.0/R16NW/G955FXXU1CRC7:user/release-keys -Samsung Galaxy S9 (8.0.0)=samsung/starltexx/starlte:8.0.0/R16NW/G960FXXU1ARCC:user/release-keys -Samsung Galaxy S9 Plus (8.0.0)=samsung/star2ltexx/star2lte:8.0.0/R16NW/G965FXXU1ARCC:user/release-keys -Samsung Galaxy S10 Plus SM-G975F (10)=samsung/beyond2ltexx/beyond2:10/QP1A.190711.020/G975FXXU3BSKO:user/release-keys__2019-12-01 -Samsung Galaxy S10 Plus SM-G975U (9)=samsung/beyond2qlteue/beyond2q:9/PPR1.180610.011/G975U1UEU1ASD3:user/release-keys__2019-03-01 -Samsung Galaxy Tab 2 7.0 (4.2.2)=samsung/espresso10wifixx/espresso10wifi:4.2.2/JDQ39/P5110XXDML1:user/release-keys -Samsung Galaxt Tab A WiFi SM-T590 (9)=samsung/gta2xlwifixx/gta2xlwifi:9/PPR1.180610.011/T590XXU3BSJ1:user/release-keys__2019-10-01 -Samsung Galaxt Tab A LTE SM-T595 (9)=samsung/gta2xlltexx/gta2xllte:9/PPR1.180610.011/T595XXU3BSF3:user/release-keys__2019-06-01 -Samsung Galaxt Tab A LTE SM-T597 (9)=samsung/gta2xlltespr/gta2xlltespr:9/PPR1.180610.011/T597PVPU2BSH7:user/release-keys__2019-08-01 -Samsung Galaxy Tab S3 LTE SM-T825 (8.0.0)=samsung/gts3lltexx/gts3llte:8.0.0/R16NW/T825XXU2BRL2:user/release-keys__2018-12-01 -Sony Xperia X (8.0.0)=Sony/F5121/F5121:8.0.0/34.4.A.2.118/1631208121:user/release-keys__2018-09-01 -Sony Xperia X Compact (8.0.0)=Sony/F5321/F5321:8.0.0/34.4.A.2.118/1631208121:user/release-keys__2018-09-01 -Sony Xperia X Dual (8.0.0)=Sony/F5122/F5122:8.0.0/34.4.A.2.118/1631208121:user/release-keys__2018-09-01 -Sony Xperia X Performance (8.0.0)=Sony/F8131/F8131:8.0.0/41.3.A.2.99/1455830589:user/release-keys -Sony Xperia X Performance Dual (8.0.0)=Sony/F8132/F8132:8.0.0/41.3.A.2.99/1455830589:user/release-keys -Sony Xperia XA2 Dual (8.0.0)=Sony/H4113/H4113:8.0.0/50.1.A.4.76/2209478692:user/release-keys -Sony Xperia XZ (8.0.0)=Sony/F8331/F8331:8.0.0/41.3.A.2.99/1455830589:user/release-keys -Sony Xperia XZ Dual (8.0.0)=Sony/F8332/F8332:8.0.0/41.3.A.2.99/1455830589:user/release-keys -Sony Xperia XZ Premium (8.0.0)=Sony/G8141/G8141:8.0.0/47.1.A.12.179/1909673090:user/release-keys -Sony Xperia XZ Premium Dual (8.0.0)=Sony/G8142/G8142:8.0.0/47.1.A.12.179/1909673090:user/release-keys -Sony Xperia XZ1 (8.0.0)=Sony/G8341/G8341:8.0.0/47.1.A.12.179/1909673090:user/release-keys -Sony Xperia XZ1 Compact (8.0.0 & 9)=Sony/G8441/G8441:8.0.0/47.1.A.12.179/1909673090:user/release-keys;Sony/G8441/G8441:9/47.2.A.2.33/3676206253:user/release-keys__2018-11-01 -Sony Xperia XZ1 Dual (8.0.0)=Sony/G8342/G8342:8.0.0/47.1.A.12.179/1909673090:user/release-keys -Sony Xperia XZ2 (8.0.0)=Sony/H8216/H8216:8.0.0/51.1.A.3.159/620448843:user/release-keys -Sony Xperia XZ2 Compact (8.0.0)=Sony/H8314/H8314:8.0.0/51.1.A.3.159/620448843:user/release-keys -Sony Xperia XZ2 Compact Dual (8.0.0)=Sony/H8324/H8324:8.0.0/51.1.A.3.159/620448843:user/release-keys -Sony Xperia XZ2 Dual (8.0.0)=Sony/H8266/H8266:8.0.0/51.1.A.3.159/620448843:user/release-keys -Sony Xperia Z (5.1.1)=Sony/C6603/C6603:5.1.1/10.7.A.0.228/58103698:user/release-keys -Sony Xperia Z1 (5.1.1)=Sony/C6903/C6903:5.1.1/14.6.A.1.236/2031203603:user/release-keys -Sony Xperia Z2 (6.0.1)=Sony/D6503/D6503:6.0.1/23.5.A.1.291/2769308465:user/release-keys -Sony Xperia Z3 (6.0.1)=Sony/D6633/D6633:6.0.1/23.5.A.1.291/2769308465:user/release-keys -Sony Xperia Z3 Compact (6.0.1)=Sony/D5803/D5803:6.0.1/23.5.A.1.291/2769308465:user/release-keys -Sony Xperia Z3 Tablet Compact (6.0.1)=Sony/SGP621/SGP621:6.0.1/23.5.A.1.291/3706784398:user/release-keys -Sony Xperia Z4 Tablet LTE (7.1.1)=Sony/SGP771/SGP771:7.1.1/32.4.A.1.54/219395100:user/release-keys -Sony Xperia Z5 (7.1.1)=Sony/E6603/E6603:7.1.1/32.4.A.1.54/3761073091:user/release-keys -Sony Xperia Z5 Compact (7.1.1)=Sony/E5823/E5823:7.1.1/32.4.A.1.54/3761073091:user/release-keys -Sony Xperia Z5 Dual (7.1.1)=Sony/E6633/E6633:7.1.1/32.4.A.1.54/3761073091:user/release-keys -Sony Xperia Z5 Premium (7.1.1)=Sony/E6853/E6853:7.1.1/32.4.A.1.54/3761073091:user/release-keys -Sony Xperia Z5 Premium Dual (7.1.1)=Sony/E6883/E6883:7.1.1/32.4.A.1.54/3761073091:user/release-keys -Vodafone Smart Ultra 6 (5.1.1)=Vodafone/P839V55/P839V55:5.1.1/LMY47V/20161227.134319.15534:user/release-keys -Walmart Onn 8 (9)=onn/ONA19TB002/ONA19TB002:9/PPR1.180610.011/1551232410:user/release-keys__2019-01-05 -Xiaomi Mi 3/4 (6.0.1)=Xiaomi/cancro/cancro:6.0.1/MMB29M/V9.5.2.0.MXDMIFA:user/release-keys -Xiaomi Mi 4C (7.0)=Xiaomi/libra/libra:7.0/NRD90M/V9.6.2.0.NXKCNFD:user/release-keys -Xiaomi Mi 5/5 Pro (7.0 & 8.0.0)=Xiaomi/gemini/gemini:7.0/NRD90M/V9.2.1.0.NAAMIEK:user/release-keys;Xiaomi/gemini/gemini:8.0.0/OPR1.170623.032/V9.6.1.0.OAAMIFD:user/release-keys -Xiaomi Mi 5S (7.0)=Xiaomi/capricorn/capricorn:7.0/NRD90M/V9.5.4.0.NAGMIFD:user/release-keys -Xiaomi Mi 5S Plus (6.0.1 & 7.0)=Xiaomi/natrium/natrium:6.0.1/MXB48T/V8.5.2.0.MBGMIED:user/release-keys;Xiaomi/natrium/natrium:7.0/NRD90M/V9.6.2.0.NBGMIFD:user/release-keys -Xiaomi Mi 6 (8.0.0)=Xiaomi/sagit/sagit:8.0.0/OPR1.170623.027/V9.2.3.0.OCAMIEK:user/release-keys -Xiaomi Mi 8 (8.1.0 & 9)=Xiaomi/dipper/dipper:8.1.0/OPM1.171019.011/V9.5.5.0.OEAMIFA:user/release-keys;Xiaomi/dipper/dipper:9/PKQ1.180729.001/V10.2.3.0.PEAMIXM:user/release-keys__2019-02-01 -Xiaomi Mi 9 European (9)=Xiaomi/cepheus_eea/cepheus:9/PKQ1.181121.001/V10.2.27.0.PFAEUXM:user/release-keys__2019-06-01 -Xiaomi Mi 9 Lite (9)=Xiaomi/pyxis/pyxis:9/PKQ1.181121.001/V11.3.3.0.PFCMIXM:user/release-keys__2019-10-01 -Xiaomi Mi 9 SE (9)=Xiaomi/grus/grus:9/PKQ1.181121.001/V11.0.4.0.PFBMIXM:user/release-keys__2019-10-01 -Xiaomi Mi 9T European (9 & 10)=Xiaomi/davinci_eea/davinci:9/PKQ1.190302.001/V10.3.12.0.PFJEUXM:user/release-keys__2019-07-01;Xiaomi/davinci_eea/davinci:10/QKQ1.190825.002/V11.0.1.0.QFJEUXM:user/release-keys__2019-12-01 -Xiaomi Mi 9T Global (10)=Xiaomi/davinci/davinci:10/QKQ1.190825.002/V11.0.1.0.QFJMIXM:user/release-keys__2019-12-01 -Xiaomi Mi A1 (8.0.0 & 9)=xiaomi/tissot/tissot_sprout:8.0.0/OPR1.170623.026/V.9.5.10.0.ODHMIFA:user/release-keys;xiaomi/tissot/tissot_sprout:9/PKQ1.180917.001/V10.0.4.0.PDHMIXM:user/release-keys__2019-01-05 -Xiaomi Mi A2 (8.1.0 & 9)=xiaomi/jasmine/jasmine_sprout:8.1.0/OPM1.171019.011/V9.6.16.0.ODIMIFE:user/release-keys__2018-11-05;xiaomi/jasmine/jasmine_sprout:9/PKQ1.180904.001/V10.0.14.0.PDIMIXM:user/release-keys__2019-09-05 -Xiaomi Mi A2 Lite (9)=xiaomi/daisy/daisy_sprout:9/PKQ1.180917.001/V10.0.1.0.PDLMIFJ:user/release-keys__2018-11-05 -Xiaomi Mi A3 (9)=Xiaomi/laurel_sprout/laurel_sprout:9/PKQ1.190416.001/V10.3.6.0.PFQMIXM:user/release-keys__2019-09-05 -Xiaomi Mi Max (6.0.1)=Xiaomi/helium/helium:6.0.1/MMB29M/V8.2.3.0.MBDMIDL:user/release-keys -Xiaomi Mi Max 2 (7.1.1)=Xiaomi/oxygen/oxygen:7.1.1/NMF26F/V9.5.4.0.NDDMIFA:user/release-keys -Xiaomi Mi Max 3 (9)=Xiaomi/nitrogen/nitrogen:9/PKQ1.181007.001/V10.3.1.0.PEDMIXM:user/release-keys__2019-03-01 -Xiaomi Mi Mix 2 (8.0.0 & 9)=Xiaomi/chiron/chiron:8.0.0/OPR1.170623.027/V10.2.2.0.ODEMIXM:user/release-keys__2018-12-01;Xiaomi/chiron/chiron:9/PKQ1.190118.001/V11.0.3.0.PDEMIXM:user/release-keys__2019-09-01 -Xiaomi Mi Mix 2S (8.0.0 & 9)=Xiaomi/polaris/polaris:8.0.0/OPR1.170623.032/V9.5.19.0.ODGMIFA:user/release-keys;Xiaomi/polaris/polaris:9/PKQ1.180729.001/V10.3.3.0.PDGMIXM:user/release-keys__2019-05-01 -Xiaomi Mi Mix 3 (9)=Xiaomi/perseus/perseus:9/PKQ1.180729.001/V10.3.1.0.PEEMIXM:user/release-keys__2019-03-01 -Xiaomi Mi Note 2 (7.0 & 8.0.0)=Xiaomi/scorpio/scorpio:7.0/NRD90M/V9.2.1.0.NADMIEK:user/release-keys;Xiaomi/scorpio/scorpio:8.0.0/OPR1.170623.032/V9.6.1.0.OADCNFD:user/release-keys -Xiaomi Mi Note 3 (8.1.0)=Xiaomi/jason/jason:8.1.0/OPM1.171019.019/V10.2.2.0.OCHMIXM:user/release-keys__2018-12-01 -Xiaomi Mi Note 10 European (9)=Xiaomi/tucana_eea/tucana:9/PKQ1.190302.001/V11.0.11.0.PFDEUXM:user/release-keys__2019-11-01 -Xiaomi Mi Pad (4.4.4)=Xiaomi/mocha/mocha:4.4.4/KTU84P/V7.5.2.0.KXFMIDE:user/release-keys -Xiaomi Mi Pad 4 (8.1.0)=Xiaomi/clover/clover:8.1.0/OPM1.171019.019/V10.1.1.0.ODJCNFI:user/release-keys__2018-10-01 -Xiaomi Pocophone F1 (9 & 10)=Xiaomi/beryllium/beryllium:9/PKQ1.180729.001/V11.0.5.0.PEJMIXM:user/release-keys__2019-10-01;Xiaomi/beryllium/beryllium:10/QKQ1.190828.002/V11.0.4.0.QEJMIXM:user/release-keys__2020-01-01 -Xiaomi Redmi 3/3 Pro (5.1.1)=Xiaomi/ido/ido:5.1.1/LMY47V/V9.6.2.0.LAIMIFD:user/release-keys -Xiaomi Redmi 3S/X Prime (6.0.1)=Xiaomi/land/land:6.0.1/MMB29M/V9.5.1.0.MALMIFA:user/release-keys -Xiaomi Redmi 4 Prime (6.0.1)=Xiaomi/markw/markw:6.0.1/MMB29M/V9.5.3.0.MBEMIFA:user/release-keys -Xiaomi Redmi 4A (7.1.2)=Xiaomi/rolex/rolex:7.1.2/N2G47H/V9.2.6.0.NCCMIEK:user/release-keys -Xiaomi Redmi 4X (6.0.1)=Xiaomi/santoni/santoni:6.0.1/MMB29M/V8.5.4.0.MAMCNED:user/release-keys -Xiaomi Redmi 5A (7.1.2 & 8.1.0)=Xiaomi/riva/riva:7.1.2/N2G47H/V9.1.8.0.NCKMIEI:user/release-keys;Xiaomi/riva/riva:8.1.0/OPM1.171019.026/V10.3.2.0.OCKMIXM:user/release-keys__2019-06-01 -Xiaomi Redmi 8 (9)=Xiaomi/olive/olive:9/PKQ1.190319.001/V11.0.7.0.PCNCNXM:user/release-keys__2019-12-01 -Xiaomi Redmi Go (8.1.0)=Xiaomi/tiare/tiare:8.1.0/OPM1.171019.026/V10.2.6.0.OCLMIXM:user/release-keys__2019-01-01 -Xiaomi Redmi K20 Pro/Mi 9T Pro (9 & 10)=Xiaomi/raphael/raphael:9/PKQ1.181121.001/V10.3.14.0.PFKCNXM:user/release-keys__2019-06-01;Xiaomi/raphael/raphael:10/QKQ1.190825.002/V11.0.1.0.QFKMIXM:user/release-keys__2019-10-01 -Xiaomi Redmi Note 2 (5.0.2)=Xiaomi/hermes/hermes:5.0.2/LRX22G/V9.2.4.0.LHMMIEK:user/release-keys -Xiaomi Redmi Note 3 Pro (6.0.1)=Xiaomi/kenzo/kenzo:6.0.1/MMB29M/V8.2.1.0.MHOCNDL:user/release-keys -Xiaomi Redmi Note 3 Pro SE (6.0.1)=Xiaomi/kate/kate:6.0.1/MMB29M/V8.1.3.0.MHRMIDI:user/release-keys -Xiaomi Redmi Note 4/4X (7.0)=xiaomi/mido/mido:7.0/NRD90M/V11.0.2.0.NCFMIXM:user/release-keys__2018-12-01 -Xiaomi Redmi Note 4 Mediatek (6.0)=Xiaomi/nikel/nikel:6.0/MRA58K/V9.2.2.0.MBFMIEK:user/release-keys -Xiaomi Redmi Note 5/5 Plus (7.1.2 & 8.1.0)=xiaomi/vince/vince:7.1.2/N2G47H/V9.5.4.0.NEGMIFA:user/release-keys;xiaomi/vince/vince:8.1.0/OPM1.171019.019/V10.2.1.0.OEGMIXM:user/release-keys__2019-03-01 -Xiaomi Redmi Note 5 Pro (8.1.0 & 9)=xiaomi/whyred/whyred:8.1.0/OPM1.171019.011/V10.0.6.0.OEIMIFH:user/release-keys__2018-11-01;xiaomi/whyred/whyred:9/PKQ1.180904.001/V11.0.3.0.PEIMIXM:user/release-keys__2019-11-05 -Xiaomi Redmi Note 5A Lite (7.1.2)=xiaomi/ugglite/ugglite:7.1.2/N2G47H/V9.1.2.0.NDFMIEI:user/release-keys -Xiaomi Redmi Note 6 Pro (8.1.0)=xiaomi/tulip/tulip:8.1.0/OPM1.171019.011/V10.0.5.0.OEKMIFH:user/release-keys__2018-10-01 -Xiaomi Redmi Note 7 (9)=xiaomi/lavender/lavender:9/PKQ1.180904.001/V10.3.12.0.PFGMIXM:user/release-keys__2019-08-05 -Xiaomi Redmi Note 7 Pro (9)=xiaomi/violet/violet:9/PKQ1.181203.001/V10.3.13.0.PFHINXM:user/release-keys__2019-08-01 -Xiaomi Redmi Note 8 Pro (9)=Redmi/begoniain/begoniain:9/PPR1.180610.011/V10.4.4.0.PGGINXM:user/release-keys__2019-09-01 -Xiaomi Redmi Note 8T European (9)=xiaomi/willow_eea/willow:9/PKQ1.190616.001/V10.3.5.0.PCXEUXM:user/release-keys__2019-10-01 -Xiaomi Redmi Y1 (7.1.2)=xiaomi/ugg/ugg:7.1.2/N2G47H/V9.6.2.0.NDKMIFD:user/release-keys__2018-07-01 -ZTE Axon 7 (7.1.1 & 8.0.0)=ZTE/P996A01_N/ailsa_ii:7.1.1/NMF26V/20171211.005949:user/release-keys;ZTE/P996A01_O/ailsa_ii:8.0.0/OPR1.170623.032/20180815.171922:user/release-keys__2018-07-01 -ZTE Blade (6.0.1)=ZTE/P809A50_MY_MAX/P809A50:6.0.1/MMB29M/20161017.095504:user/release-keys -ZTE Nubia Z17 (7.1.1)=nubia/NX563J/NX563J:7.1.1/NMF26X/eng.nubia.20171019.101529:user/release-keys -Zuk Z2 Pro (7.0)=ZUK/z2_row/z2_row:7.0/NRD90M/2.5.435_170525:user/release-keys +Asus Zenfone 2 Laser ASUS_Z00LD (6.0.1):Asus:ASUS_Z00LD=asus/WW_Z00L/ASUS_Z00L_63:6.0.1/MMB29P/WW_user_21.40.1220.2196_20180308:user/release-keys +Asus Zenfone 3 Max ASUS_X00DD (7.1.1 & 8.1.0):Asus:ASUS_X00DD=asus/WW_Phone/ASUS_X00DD:7.1.1/NMF26F/14.0200.1712.347-20171214:user/release-keys;asus/WW_Phone/ASUS_X00DD:8.1.0/OPM1.171019.011/15.0200.1812.503-0:user/release-keys__2018-12-05 +Asus Zenfone 4 Max ASUS_X00HD (7.1.1):Asus:ASUS_X00HD=asus/WW_Phone/ASUS_X00HD_4:7.1.1/NMF26F/14.2016.1801.372-20180119:user/release-keys +Asus ZenFone 5Z ASUS_Z01RD (9):Asus:ASUS_Z01RD=asus/WW_Z01RD/ASUS_Z01R_1:9/PPR1.180610.009/WW_90.11.162.72_20190531:user/release-keys__2019-05-01 +Asus Zenfone 6 ASUS_I01WD (9):Asus:ASUS_I01WD=asus/WW_I01WD/ASUS_I01WD:9/PPR2.181005.003/16.1220.1909.193-0:user/release-keys__2019-09-01 +Asus Zenfone Max M1 ASUS_X00PD (8.0.0):Asus:ASUS_X00PD=asus/WW_X00PD/ASUS_X00P_4:8.0.0/OPR1.170623.032/15.00.1907.103:user/release-keys__2019-07-05 +Asus Zenfone Max Pro M1 ASUS_X00TD (8.1.0):Asus:ASUS_X00TD=asus/RU_X00TD/ASUS_X00T_6:8.1.0/OPM1/15.2016.1902.340-20190216:user/release-keys__2019-02-01 +Asus ZenPad S 8.0 P01MA (6.0.1):Asus:P01MA=asus/WW_P01M/P01M_3:6.0.1/MMB29P/WW_P01M-V5.6.0-20170608:user/release-keys +BLU S1 (7.0):Blu:BLU_S1=BLU/BLU_S1/S0320WW:7.0/NRD90M/1514191903:user/release-keys +Elephone U Pro (8.0.0):Elephone:U_Pro=Elephone/U_Pro/U_Pro:8.0.0/Elephone_U_Pro_20180917/09172123:user/release-keys__2018-09-05 +Essential PH-1 (9 & 10):Essential:PH-1=essential/mata/mata:9/PQ1A.190105.112/550:user/release-keys__2019-08-05;essential/mata/mata:10/QQ1A.200105.032/540:user/release-keys__2020-02-05 +Fairphone 2 (6.0.1):Fairphone:FP2=Fairphone/FP2/FP2:6.0.1/FP2-gms-17.09.3/FP2-gms-17.09.3:user/release-keys +Google Nexus 4 (5.1.1):LGE:Nexus 4=google/occam/mako:5.1.1/LMY48T/2237560:user/release-keys +Google Nexus 5 (6.0.1):LGE:Nexus 5=google/hammerhead/hammerhead:6.0.1/M4B30Z/3437181:user/release-keys +Google Nexus 5X (8.1.0):LGE:Nexus 5X=google/bullhead/bullhead:8.1.0/OPM7.181205.001/5080180:user/release-keys__2018-12-05 +Google Nexus 6 (7.1.1):Motorola:Nexus 6=google/shamu/shamu:7.1.1/N6F27M/4299435:user/release-keys +Google Nexus 6P (8.1.0):Huawei:Nexus 6P=google/angler/angler:8.1.0/OPM7.181205.001/5080180:user/release-keys__2018-12-05 +Google Nexus 7 2012 WiFi (5.1.1):Asus:Nexus 7=google/nakasi/grouper:5.1.1/LMY47V/1836172:user/release-keys +Google Nexus 7 2012 LTE (5.1.1):Asus:Nexus 7=google/nakasig/tilapia:5.1.1/LMY47V/1836172:user/release-keys +Google Nexus 7 2013 WiFi (6.0.1):Asus:Nexus 7=google/razor/flo:6.0.1/MOB30X/3036618:user/release-keys +Google Nexus 7 2013 LTE (6.0.1):Asus:Nexus 7=google/razorg/deb:6.0.1/MOB30X/3036618:user/release-keys +Google Nexus 9 WiFi (7.1.1):HTC:Nexus 9=google/volantis/flounder:7.1.1/N9F27M/4333998:user/release-keys +Google Nexus 9 LTE (7.1.1):HTC:Nexus 9=google/volantisg/flounder_lte:7.1.1/N4F27P/4333386:user/release-keys +Google Nexus 10 (5.1.1):Samsung:Nexus 10=google/mantaray/manta:5.1.1/LMY49J/2640980:user/release-keys +Google Nexus Player (6.0.1):Asus:Nexus Player=google/fugu/fugu:6.0.1/MMB29U/2495654:user/release-keys +Google Pixel (8.1.0 & 9 & 10):Google:Pixel=google/sailfish/sailfish:8.1.0/OPM2.171019.029/4657601:user/release-keys;google/sailfish/sailfish:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/sailfish/sailfish:10/QP1A.191005.007.A3/5972272:user/release-keys__2019-10-06 +Google Pixel XL (8.1.0 & 9 & 10):Google:Pixel XL=google/marlin/marlin:8.1.0/OPM2.171019.029/4657601:user/release-keys;google/marlin/marlin:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/marlin/marlin:10/QP1A.191005.007.A3/5972272:user/release-keys__2019-10-06 +Google Pixel 2 (8.1.0 & 9 & 10):Google:Pixel 2=google/walleye/walleye:8.1.0/OPM2.171019.029/4657601:user/release-keys;google/walleye/walleye:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/walleye/walleye:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 +Google Pixel 2 XL (8.1.0 & 9 & 10):Google:Pixel 2 XL=google/taimen/taimen:8.1.0/OPM4.171019.016.B1/4720843:user/release-keys;google/taimen/taimen:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/taimen/taimen:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 +Google Pixel 3 (9 & 10):Google:Pixel 3=google/blueline/blueline:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/blueline/blueline:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 +Google Pixel 3 XL (9 & 10):Google:Pixel 3 XL=google/crosshatch/crosshatch:9/PQ3A.190801.002/5670241:user/release-keys__2019-08-01;google/crosshatch/crosshatch:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 +Google Pixel 3a (9 & 10):Google:Pixel 3a=google/sargo/sargo:9/PQ3B.190801.002/5674421:user/release-keys__2019-08-01;google/sargo/sargo:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 +Google Pixel 3a XL (9 & 10):Google:Pixel 3a XL=google/bonito/bonito:9/PQ3B.190801.002/5674421:user/release-keys__2019-08-01;google/bonito/bonito:10/QQ1A.200205.002/6084386:user/release-keys__2020-02-05 +Google Pixel 4 (10):Google:Pixel 4=google/flame/flame:10/QQ1B.200205.002/6084387:user/release-keys__2020-02-05 +Google Pixel 4 XL (10):Google:Pixel 4 XL=google/coral/coral:10/QQ1B.200205.002/6084387:user/release-keys__2020-02-05 +Google Pixel C (8.1.0):Google:Pixel C=google/ryu/dragon:8.1.0/OPM8.190605.005/5749003:user/release-keys__2019-06-05 +HTC 10 (6.0.1):HTC:HTC 10=htc/HTCOneM10vzw/htc_pmewl:6.0.1/MMB29M/774095.8:user/release-keys +HTC U11 (8.0.0):HTC:HTC U-3w=htc/ocndtwl_01405/htc_ocndtwl:8.0.0/OPR6.170623.013/1017190.2:user/release-keys +HTC U12 Plus (8.0.0 & 9):HTC:HTC U12+=htc/imeuhl_00617/htc_imeuhl:8.0.0/OPR1.170623.032/1041457.3:user/release-keys__2018-06-01;htc/imeuhl_00617/htc_imeuhl:9/PQ2A.190205.003/1087121.1:user/release-keys__2019-07-01 +Huawei Honor 6X BLN-AL10 (8.0.0):Huawei:BLN-AL10=HONOR/BLN-AL10/HWBLN-H:8.0.0/HONORBLN-AL10/528(C00):user/release-keys +Huawei Honor 8X JSN-L21 (8.1.0):Huawei:JSN-L21=HONOR/JSN-L21RU/HWJSN-H:8.1.0/HONORJSN-L21/101(C10):user/release-keys__2018-10-01 +Huawei Honor 9 STF-L09 (8.0.0 & 9):Huawei:STF-L09=HONOR/STF-L09/HWSTF:8.0.0/HUAWEISTF-L09/364(C432):user/release-keys;HONOR/STF-L09/HWSTF:9/HUAWEISTF-L09/157C432R1:user/release-keys__2019-02-01 +Huawei Mate 10 ALP-L29 (8.0.0):Huawei:ALP-L29=HUAWEI/ALP-L29/HWALP:8.0.0/HUAWEIALP-L29S/143(C636):user/release-keys__2018-10-01 +Huawei Mate 10 Pro BLA-L29 (8.0.0):Huawei:BLA-L29=HUAWEI/BLA-L29/HWBLA:8.0.0/HUAWEIBLA-L29S/137(C432):user/release-keys +Huawei Mate 20 Lite SNE-LX1 (9):Huawei:SNE-LX1=HUAWEI/SNE-LX1EEA/HWSNE:9/HUAWEISNE-L01/245EEAC782:user/release-keys__2019-09-01 +Huawei Mate 20 Pro LYA-L29 (9):Huawei:LYA-L29=HUAWEI/LYA-L29/HWLYA:9/HUAWEILYA-L29/358C432:user/release-keys__2019-11-01 +Huawei P8 Lite PRA-LX1 (8.0.0):Huawei:PRA-LX1=HUAWEI/PRA-LX1/HWPRA-H:8.0.0/HUAWEIPRA-LX1/401(C432):user/release-keys__2019-01-01 +Huawei P9 EVA-L09 (7.0):Huawei:EVA-L09=HUAWEI/EVA-L09/HWEVA:7.0/HUAWEIEVA-L09/C432B502:user/release-keys +Huawei P9 Lite VNS-L31 (7.0):Huawei:HUAWEI VNS-L31=HUAWEI/VNS-L31/HWVNS-H:7.0/HUAWEIVNS-L31/C432B414:user/release-keys__2018-06-01 +Huawei P9 Plus VIE-L09 (7.0):Huawei:VIE-L09=HUAWEI/VIE-L09/HWVIE:7.0/HUAWEIVIE-L09/C432B387:user/release-keys__2018-07-01 +Huawei P20 EML-L09 (9):Huawei:EML-L09=HUAWEI/EML-L09/HWEML:9/HUAWEIEML-L09/9.1.0.345C109:user/release-keys__2019-10-06 +Huawei P20 Dual SIM EML-L29 (9):Huawei:EML-L29=HUAWEI/EML-L29/HWEML:9/HUAWEIEML-L29/197C432R1:user/release-keys__2019-01-01 +Huawei P20 Lite ANE-LX1 (8.0.0 & 9):Huawei:ANE-LX1=HUAWEI/ANE-LX1/HWANE:8.0.0/HUAWEIANE-LX1/180(C432):user/release-keys__2019-04-05;HUAWEI/ANE-LX1/HWANE:9/HUAWEIANE-L21/132C432R1:user/release-keys__2019-05-05 +Huawei P20 Pro CLT-L29 (8.1.0 & 9):Huawei:CLT-L29=HUAWEI/CLT-L29/HWCLT:8.1.0/HUAWEICLT-L29/128(C432):user/release-keys;HUAWEI/CLT-L09/HWCLT:9/HUAWEICLT-L09/203C432R1:user/release-keys__2019-02-01 +Lenovo K6 Note (7.0):Lenovo:Lenovo K53a48=Lenovo/karatep/K53a48:7.0/NRD90N/K53_S228_171114_ROW:user/release-keys +LeEco Le Pro3 (6.0.1):Leeco:LEX725=LeEco/ZL1_NA/le_zl1:6.0.1/WEXNAOP5802101261S/letv01261206:user/release-keys +LG G2 VS980 (5.0.2):LGE:VS980 4G=lge/g2_vzw/g2:5.0.2/LRX22G/15046001715f9:user/release-keys +LG G4 H812 (6.0):LGE:LG-H812=lge/p1_rgs_ca/p1:6.0/MRA58K/1601215569825:user/release-keys +LG G5 H830 (8.0.0):LGE:LG-H830=lge/h1_tmo_us/h1:8.0.0/OPR1.170623.032/182251913485f:user/release-keys__2018-08-01 +LG G5 H850 (8.0.0):LGE:LG-H850=lge/h1_global_com/h1:8.0.0/OPR1.170623.032/190380127377a:user/release-keys__2018-12-01 +LG G5 RS988 (7.0):LGE:RS988=lge/h1_lra_us/h1:7.0/NRD90U/1707917149a1b:user/release-keys +LG G6 H870 (7.0 & 8.0.0):LGE:LG-H870=lge/lucye_global_com/lucye:7.0/NRD90U/171732341982c:user/release-keys;lge/lucye_global_com/lucye:8.0.0/OPR1.170623.032/183301757502c:user/release-keys__2018-11-01 +LG V20 H910 (8.0.0):LGE:LG-H910=lge/elsa_att_us/elsa:8.0.0/OPR1.170623.032/181871124f959:user/release-keys__2018-06-01 +LG V20 H918 (8.0.0):LGE:LG-H918=lge/elsa_tmo_us/elsa:8.0.0/OPR1.170623.032/1831917495b33:user/release-keys__2018-11-01 +LG V20 H990DS (7.0):LGE:LG-H990=lge/elsa_global_com/elsa:7.0/NRD90M/1801800193678:user/release-keys +LG V20 LS997 (8.0.0):LGE:LG-LS997=lge/elsa_spr_us/elsa:8.0.0/OPR1.170623.032/1819814314eb7:user/release-keys__2018-07-01 +LG V20 US996 (8.0.0):LGE:LG-US996=lge/elsa_nao_us/elsa:8.0.0/OPR1.170623.032/183241436cd40:user/release-keys__2018-11-01 +LG V20 VS995 (8.0.0):LGE:VS995=lge/elsa_vzw/elsa:8.0.0/OPR1.170623.032/183141449275f:user/release-keys__2018-10-01 +LG V30 H930 (8.0.0):LGE:LG-H930=lge/joan_global_com/joan:8.0.0/OPR1.170623.026/181381736b4e9:user/release-keys__2018-11-05 +Mecool KM8 (8.0.0 & 9):Mecool:KM8=MECOOL/KM8/KM8:8.0.0/OPR6.170623.013/V0412.201806271453:user/release-keys__2018-05-05;MECOOL/KM8/KM8:9/PI/20190315:user/release-keys__2019-02-05 +Motorola Moto C Plus (7.0):Motorola:Moto C Plus=motorola/panell_21_d/panell_d:7.0/NRD90M.03.040/040:user/release-keys +Motorola Moto E4 (7.1.1):Motorola:Moto E (4)=motorola/sperry_sprint/sperry:7.1.1/NCQ26.69-64/68:user/release-keys +Motorola Moto E4 Plus (7.1.1):Motorola:Moto E (4) Plus=motorola/nicklaus_fn/nicklaus_fn:7.1.1/NMA26.42-156/183:user/release-keys +Motorola Moto E5 Play (8.0.0):Motorola:moto e5 play=motorola/james_sprint/james:8.0.0/OCPS27.91-140-1/1:user/release-keys__2018-10-01 +Motorola Moto E5 Plus (8.0.0):Motorola:moto e5 plus=motorola/hannah_sprint/hannah:8.0.0/OCPS27.91-32-4/4:user/release-keys__2018-10-01 +Motorola Moto G4 (7.0 & 8.1.0):Motorola:Moto G (4)=motorola/athene/athene:7.0/NPJS25.93-14-13/3:user/release-keys;motorola/athene/athene:8.1.0/OPJ28.111-22/532da:user/release-keys__2018-12-01 +Motorola Moto G5 (7.0):Motorola:Moto G (5)=motorola/cedric/cedric:7.0/NPPS25.137-15-11/11:user/release-keys +Motorola Moto G5 Plus (7.0):Motorola:Moto G (5) Plus=motorola/potter_n/potter_n:7.0/NPNS25.137-33-11/11:user/release-keys +Motorola Moto G5S (7.1.1 & 8.1.0):Motorola:Moto G (5S)=motorola/montana/montana:7.1.1/NPPS26.102-49-8/6:user/release-keys;motorola/montana/montana:8.1.0/OPPS28.65-37-7-11/7f8a6:user/release-keys__2019-08-01 +Motorola Moto G5S Plus (8.1.0):Motorola:Moto G (5S) Plus=motorola/sanders_n/sanders_n:8.1.0/OPS28.65-36-14/63857:user/release-keys__2019-08-01 +Motorola Moto G6 (9):Motorola:moto g(6)=motorola/ali/ali:9/PPS29.55-34/0c5d:user/release-keys__2019-02-01 +Motorola Moto G6 Play (8.0.0 & 9):Motorola:moto g(6) play=motorola/jeter_sprint/jeter:8.0.0/OCP27.91-23/23:user/release-keys;motorola/aljeter/aljeter:9/PPP29.55-25/08c6:user/release-keys__2019-01-01 +Motorola Moto G6 Plus (9):Motorola:moto g(6) plus=motorola/evert_amx_n/evert_n:9/PPWS29.116-16-6/5cbfe:user/release-keys__2019-05-01 +Motorola Moto G7 (9):Motorola:moto g(7)=motorola/river/river:9/PPOS29.114-134-7/b6963:user/release-keys__2019-12-01 +Motorola Moto G7 Power (9):Motorola:moto g(7) power=motorola/ocean/ocean:9/PPOS29.114-134-7/d9234:user/release-keys__2019-12-01 +Motorola Moto X4 (8.0.0):Motorola:moto x4=motorola/payton/payton:8.0.0/OPWS27.57-25-6-10/12:user/release-keys +Motorola Moto Z2 Play (8.0.0):Motorola:Moto Z2 Play=motorola/albus/albus:8.0.0/OPS27.76-12-25/26:user/release-keys +Nextbook Ares 8A (6.0.1):Nextbook:NX16A8116K=NextBook/NX16A8116K/NX16A8116K:6.0.1/MMB29M/V4.0.3:user/release-keys +Nokia 6 TA-1021 (9):Nokia:TA-1021=Nokia/TA-1021_00WW/PLE:9/PKQ1.181105.001/00WW_6_19C:user/release-keys__2020-01-01 +Nokia 6 TA-1025 (9):Nokia:TA-1025=Nokia/TA-1025_00WW/PLE:9/PKQ1.181105.001/00WW_6_19C:user/release-keys__2020-01-01 +Nokia 6 TA-1033 (9):Nokia:TA-1033=Nokia/TA-1033_00WW/PLE:9/PKQ1.181105.001/00WW_6_19C:user/release-keys__2020-01-01 +Nokia 6 TA-1039 (9):Nokia:TA-1039=Nokia/TA-1039_00WW/PLE:9/PKQ1.181105.001/00WW_6_19C:user/release-keys__2020-01-01 +Nokia 6.1 Plus (9 & 10):Nokia:Nokia 6.1 Plus=Nokia/Dragon_00WW/DRG_sprout:9/PPR1.180610.011/00WW_3_54J:user/release-keys__2019-08-01;Nokia/Dragon_00WW/DRG_sprout:10/QKQ1.190828.002/00WW_4_10D:user/release-keys__2020-01-01 +Nokia 6.2 (9):Nokia:Nokia 6.2=Nokia/Starlord_00WW/SLD_sprout:9/PKQ1.190118.001/00WW_1_170:user/release-keys__2020-01-05 +Nokia 7 Plus (9):Nokia:Nokia 7 plus=Nokia/Onyx_00WW/B2N_sprout:9/PPR1.180610.011/00WW_3_53B:user/release-keys__2019-05-01 +Nokia 7.1 TA-1095 (10):Nokia:Nokia 7.1=Nokia/Crystal_00WW/CTL_sprout:10/QKQ1.190828.002/00WW_4_08B:user/release-keys__2019-11-01 +Nvidia Shield K1 (7.0):NVIDIA:SHIELD Tablet=nvidia/sb_na_wf/shieldtablet:7.0/NRD90M/1928188_1065.2559:user/release-keys +Nvidia Shield Tablet (7.0):NVIDIA:SHIELD Tablet=nvidia/wx_na_wf/shieldtablet:7.0/NRD90M/1928188_904.2811:user/release-keys +Nvidia Shield TV 2017 (8.0.0 & 9):NVIDIA:SHIELD Android TV=NVIDIA/darcy/darcy:8.0.0/OPR6.170623.010/3507953_1441.7411:user/release-keys__2018-12-05;NVIDIA/darcy/darcy:9/PPR1.180610.011/4086637_1604.6430:user/release-keys__2019-07-05 +Nvidia Shield TV Pro (8.0.0 & 9):NVIDIA:SHIELD Android TV=NVIDIA/foster_e_hdd/foster:8.0.0/OPR6.170623.010/3507953_1441.7411:user/release-keys__2018-12-05;NVIDIA/foster_e_hdd/foster:9/PPR1.180610.011/4086637_1604.6430:user/release-keys__2019-07-05 +OnePlus One (6.0.1):OnePlus:A0001=oneplus/bacon/A0001:6.0.1/MMB29X/ZNH0EAS2JK:user/release-keys +OnePlus 2 (6.0.1):OnePlus:ONE A2003=OnePlus/OnePlus2/OnePlus2:6.0.1/MMB29M/1447858500:user/release-keys +OnePlus X (6.0.1):OnePlus:ONE E1003=OnePlus/OnePlus/OnePlus:6.0.1/MMB29M/10281213:user/release-keys +OnePlus 3 (8.0.0 & 9):OnePlus:ONEPLUS A3000=OnePlus/OnePlus3/OnePlus3:8.0.0/OPR1.170623.032/1809142047:user/release-keys__2018-09-01;OnePlus/OnePlus3/OnePlus3:9/PKQ1.181203.001/1911042107:user/release-keys__2019-10-01 +OnePlus 3T (8.0.0 & 9):OnePlus:ONEPLUS A3003=OnePlus/OnePlus3/OnePlus3T:8.0.0/OPR1.170623.032/1812060016:user/release-keys__2018-11-01;OnePlus/OnePlus3/OnePlus3T:9/PKQ1.181203.001/1911042108:user/release-keys__2019-10-01 +OnePlus 5 (8.1.0 & 9):OnePlus:ONEPLUS A5000=OnePlus/OnePlus5/OnePlus5:8.1.0/OPM1.171019.011/1809241512:user/release-keys__2018-09-01;OnePlus/OnePlus5/OnePlus5:9/PKQ1.180716.001/1912311102:user/release-keys__2019-12-01 +OnePlus 5T (7.1.1 & 8.0.0 & 8.1.0 & 9):OnePlus:ONEPLUS A5010=OnePlus/OnePlus5T/OnePlus5T:7.1.1/NMF26X/12152312:user/release-keys;OnePlus/OnePlus5T/OnePlus5T:8.0.0/OPR1.170623.032/02040656:user/release-keys;OnePlus/OnePlus5T/OnePlus5T:8.1.0/OPM1.171019.011/1809241512:user/release-keys__2018-09-01;OnePlus/OnePlus5T/OnePlus5T:9/PKQ1.180716.001/1912311102:user/release-keys__2019-12-01 +OnePlus 6 (8.1.0 & 9 & 10):OnePlus:ONEPLUS A6003=OnePlus/OnePlus6/OnePlus6:8.1.0/OPM1.171019.011/06140300:user/release-keys;OnePlus/OnePlus6/OnePlus6:9/PKQ1.180716.001/1908012000:user/release-keys__2019-08-01;OnePlus/OnePlus6/OnePlus6:10/QKQ1.190716.003/2001151848:user/release-keys__2019-12-01 +OnePlus 6T (9 & 10):OnePlus:ONEPLUS A6013=OnePlus/OnePlus6T/OnePlus6T:9/PKQ1.180716.001/1909112330:user/release-keys__2019-08-01;OnePlus/OnePlus6T/OnePlus6T:10/QKQ1.190716.003/2001151848:user/release-keys__2019-12-01 +OnePlus 6T T-Mobile (9):OnePlus:ONEPLUS A6013=OnePlus/OnePlus6TSingle/OnePlus6TSingle:9/PKQ1.180716.001/1810291147:user/release-keys__2018-11-01 +OnePlus 7 GM1901 (9 & 10):OnePlus:GM1901=OnePlus/OnePlus7/OnePlus7:9/PKQ1.190110.001/1907280700:user/release-keys__2019-08-01;OnePlus/OnePlus7/OnePlus7:10/QKQ1.190716.003/2002021900:user/release-keys__2020-01-01 +OnePlus 7 GM1903 (9 & 10):OnePlus:GM1905=OnePlus/OnePlus7_EEA/OnePlus7:9/PKQ1.190110.001/1907280700:user/release-keys__2019-08-01;OnePlus/OnePlus7_EEA/OnePlus7:10/QKQ1.190716.003/2002021900:user/release-keys__2020-01-01 +OnePlus 7 GM1905 (9 & 10):OnePlus:GM1903=OnePlus/OnePlus7/OnePlus7:9/PKQ1.190110.001/1907280700:user/release-keys__2019-08-01;OnePlus/OnePlus7/OnePlus7:10/QKQ1.190716.003/2002021900:user/release-keys__2020-01-01 +OnePlus 7 Pro GM1911 (9 & 10):OnePlus:GM1911=OnePlus/OnePlus7Pro/OnePlus7Pro:9/PKQ1.190110.001/1907281556:user/release-keys__2019-08-01;OnePlus/OnePlus7Pro/OnePlus7Pro:10/QKQ1.190716.003/2002021900:user/release-keys__2020-01-01 +OnePlus 7 Pro GM1913 (9 & 10):OnePlus:GM1913=OnePlus/OnePlus7Pro_EEA/OnePlus7Pro:9/PKQ1.190110.001/1907281556:user/release-keys__2019-08-01;OnePlus/OnePlus7Pro_EEA/OnePlus7Pro:10/QKQ1.190716.003/2002021900:user/release-keys__2020-01-01 +OnePlus 7 Pro GM1915 (9):OnePlus:GM1915=OnePlus/OnePlus7ProTMO/OnePlus7ProTMO:9/PKQ1.190110.001/1905021004:user/release-keys__2019-03-01 +OnePlus 7 Pro GM1917 (9 & 10):OnePlus:GM1917=OnePlus/OnePlus7Pro/OnePlus7Pro:9/PKQ1.190110.001/1907281556:user/release-keys__2019-08-01;OnePlus/OnePlus7Pro/OnePlus7Pro:10/QKQ1.190716.003/2002021900:user/release-keys__2020-01-01 +OnePlus 7 Pro NR GM1920 (9):OnePlus:GM1920=OnePlus/OnePlus7ProNR_EEA/OnePlus7ProNR:9/PKQ1.190223.001/1912171007:user/release-keys__2019-12-01 +OnePlus 7 Pro NR Spr GM1925 (9):OnePlus:GM1925=OnePlus/OP7ProNRSpr/OP7ProNRSpr:9/PKQ1.190223.001/1908201041:user/release-keys__2019-08-01 +OnePlus 7T HD1901 (10):OnePlus:HD1901=OnePlus/OnePlus7T/OnePlus7T:10/QKQ1.190716.003/2002022020:user/release-keys__2020-01-01 +OnePlus 7T HD1903 (10):OnePlus:HD1903=OnePlus/OnePlus7T_EEA/OnePlus7T:10/QKQ1.190716.003/2002022021:user/release-keys__2020-01-01 +OnePlus 7T HD1905 (10):OnePlus:HD1905=OnePlus/OnePlus7T/OnePlus7T:10/QKQ1.190716.003/2002022020:user/release-keys__2020-01-01 +OnePlus 7T Pro HD1911 (10):OnePlus:HD1911=OnePlus/OnePlus7TPro/OnePlus7TPro:10/QKQ1.190716.003/2002022020:user/release-keys__2020-01-01 +OnePlus 7T Pro HD1913 (10):OnePlus:HD1913=OnePlus/OnePlus7TPro_EEA/OnePlus7TPro:10/QKQ1.190716.003/2002022020:user/release-keys__2020-01-01 +OnePlus 7T Pro HD1917 (10):OnePlus:HD1917=OnePlus/OnePlus7TPro/OnePlus7TPro:10/QKQ1.190716.003/2002022020:user/release-keys__2020-01-01 +OnePlus 7T Pro NR HD1925 (10):OnePlus:HD1925=OnePlus/OnePlus7TProNR/OnePlus7TProNR:10/QKQ1.190716.003/2002051152:user/release-keys__2019-12-01 +OPPO Neo 7 A33w (5.1):Oppo:A33w=OPPO/A33w/A33w:5.1/LMY47I/1487829433:user/release-keys +OPPO Neo 7 A1603 (5.1):Oppo:A1603=OPPO/A1603/A1603:5.1/LMY47I/1489407760:user/release-keys +Razer Phone (8.1.0):Razer:Phone=razer/cheryl/cheryl:8.1.0/OPM1.171019.011-RZR-180803/6033:user/release-keys__2018-07-05 +Razer Phone 2 (8.1.0 & 9):Razer:Phone 2=razer/cheryl2/aura:8.1.0/O-MR2-RC009-RZR-181124/2009:user/release-keys__2018-10-05;razer/cheryl2/aura:9/P-MR2-RC001-RZR-190914/3123:user/release-keys__2019-09-05 +Samsung Galaxy A3 2015 SM-A300FU (6.0.1):Samsung:SM-A300FU=samsung/a3ultexx/a3ulte:6.0.1/MMB29M/A300FUXXU1CRF1:user/release-keys +Samsung Galaxy A5 2015 SM-A500FU (6.0.1):Samsung:SM-A500FU=samsung/a5ultexx/a5ulte:6.0.1/MMB29M/A500FUXXU1CPH3:user/release-keys +Samsung Galaxy A5 2017 SM-A520F (8.0.0):Samsung:SM-A520F=samsung/a5y17ltexx/a5y17lte:8.0.0/R16NW/A520FXXUCCSK1:user/release-keys__2019-11-01 +Samsung Galaxy A51 SM-A515F (10):Samsung:SM-A515F=samsung/a51nsxx/a51:10/QP1A.190711.020/A515FXXU1ASKJ:user/release-keys__2019-12-01 +Samsung Galaxy A6 Plus SM-A605G (9):Samsung:SM-A605G=samsung/a6pltedx/a6plte:9/PPR1.180610.011/A605GDXU3BSC6:user/release-keys__2019-03-01 +Samsung Galaxy A7 2017 SM-A720F (8.0.0):Samsung:SM-A720F=samsung/a7y17ltexx/a7y17lte:8.0.0/R16NW/A720FXXU9CSK3:user/release-keys__2019-12-01 +Samsung Galaxy A8 Plus SM-A730F (7.1.1):Samsung:SM-A730F=samsung/jackpot2ltexx/jackpot2lte:7.1.1/NMF26X/A730FXXU2ARD1:user/release-keys +Samsung Galaxy Core Prime SM-G361F (5.1.1):Samsung:SM-G361F=samsung/coreprimeveltexx/coreprimevelte:5.1.1/LMY48B/G361FXXU1APB1:user/release-keys +Samsung Galaxy Grand Prime SM-G530BT (5.0.2):Samsung:SM-G530BT=samsung/fortuna3gdtvvj/fortuna3gdtv:5.0.2/LRX22G/G530BTVJU1BPH4:user/release-keys +Samsung Galaxy J2 SM-J200H (5.1.1):Samsung:SM-J200H=samsung/j23gdd/j23g:5.1.1/LMY48B/J200HXXU0AQK2:user/release-keys +Samsung Galaxy J3 SM-J320FN (5.1.1):Samsung:SM-J320FN=samsung/j3xnltexx/j3xnlte:5.1.1/LMY47V/J320FNXXU0ARB1:user/release-keys +Samsung Galaxy J5 2015 SM-J500FN (6.0.1):Samsung:SM-J500FN=samsung/j5nltexx/j5nlte:6.0.1/MMB29M/J500FNXXS1BQG1:user/release-keys +Samsung Galaxy J5 2016 SM-J510FN (7.1.1):Samsung:SM-J510FN=samsung/j5xnltexx/j5xnlte:7.1.1/NMF26X/J510FNXXS2BRA2:user/release-keys +Samsung Galaxy J5 Prime SM-G570F (7.0):Samsung:SM-G570F=samsung/on5xeltejv/on5xelte:7.0/NRD90M/G570FXXU1BQI6:user/release-keys +Samsung Galaxy J7 2017 SM-J730F (8.1.0):Samsung:SM-J730F=samsung/j7y17ltexx/j7y17lte:8.1.0/M1AJQ/J730FXXU3BRK2:user/release-keys__2018-11-01 +Samsung Galaxy J7 Prime SM-G610F (6.0.1):Samsung:SM-G610F=samsung/on7xeltedd/on7xelte:6.0.1/MMB29K/G610FDDU1AQG2:user/release-keys +Samsung Galaxy M20 SM-M205F (10):Samsung:SM-M205F=samsung/m20ltedd/m20lte:10/QP1A.190711.020/M205FDDU3CSL4:user/release-keys__2019-12-01 +Samsung Galaxy Note 3 SM-N9005 (5.0):Samsung:SM-N9005=samsung/hltezh/hlte:5.0/LRX21V/N9005ZSUGPJ2:user/release-keys +Samsung Galaxy Note 4 SM-N910F (6.0.1):Samsung:SM-N910F=samsung/trltexx/trlte:6.0.1/MMB29M/N910FXXS1DQH9:user/release-keys +Samsung Galaxy Note 5 SM-N920C (7.0):Samsung:SM-N920C=samsung/nobleltejv/noblelte:7.0/NRD90M/N920CXXU3CQH6:user/release-keys +Samsung Galaxy Note 8 SM-N950F (8.0.0):Samsung:SM-N950F=samsung/greatltexx/greatlte:8.0.0/R16NW/N950FXXU3CRC1:user/release-keys +Samsung Galaxy Note 9 SM-N960F (10):Samsung:SM-N960F=samsung/crownltexx/crownlte:10/QP1A.190711.020/N960FXXS4DTA5:user/release-keys__2020-02-01 +Samsung Galaxy Note 10 Plus SM-N975F (10):Samsung:SM-N975F=samsung/d2sxx/d2s:10/QP1A.190711.020/N975FXXU1BSL7:user/release-keys__2019-12-01 +Samsung Galaxy Note 10.1 2014 SM-P600 (5.1.1):Samsung:SM-P600=samsung/lt03wifixx/lt03wifi:5.1.1/LMY47X/P600XXUDOJ3:user/release-keys +Samsung Galaxy S3 Neo GT-I9300I (4.4.4):Samsung:GT-I9300I=samsung/s3ve3gdd/s3ve3gdd:4.4.4/KTU84P/I9300IDDUBQE2:user/release-keys +Samsung Galaxy S4 GT-I9505 (5.0.1):Samsung:GT-I9505=samsung/jfltexx/jflte:5.0.1/LRX22C/I9505XXUHPF4:user/release-keys +Samsung Galaxy S4 Active GT-I9295 (5.0.1):Samsung:GT-I9295=samsung/jactiveltexx/jactivelte:5.0.1/LRX22C/I9295XXSDQD6:user/release-keys +Samsung Galaxy S5 SM-G900H (6.0.1):Samsung:SM-G900H=samsung/k3gxx/k3g:6.0.1/MMB29K/G900HXXU1CPF2:user/release-keys +Samsung Galaxy S6 SM-G920F (7.0):Samsung:SM-G920F=samsung/zerofltexx/zeroflte:7.0/NRD90M/G920FXXS5EQL1:user/release-keys +Samsung Galaxy S6 Edge SM-G925F (7.0):Samsung:SM-G925F=samsung/zeroltexx/zerolte:7.0/NRD90M/G925FXXS5EQL1:user/release-keys +Samsung Galaxy S7 SM-G930F (8.0.0):Samsung:SM-G930F=samsung/heroltexx/herolte:8.0.0/R16NW/G930FXXU2ERD5:user/release-keys +Samsung Galaxy S7 Edge SM-G935F (8.0.0):Samsung:SM-G935F=samsung/hero2ltexx/hero2lte:8.0.0/R16NW/G935FXXS4ESC3:user/release-keys__2019-03-01 +Samsung Galaxy S8 SM-G950F (8.0.0):Samsung:SM-G950F=samsung/dreamltexx/dreamlte:8.0.0/R16NW/G950FXXU1CRC7:user/release-keys +Samsung Galaxy S8 Plus SM-G955F (8.0.0):Samsung:SM-G955F=samsung/dream2ltexx/dream2lte:8.0.0/R16NW/G955FXXU1CRC7:user/release-keys +Samsung Galaxy S9 SM-G960F (8.0.0):Samsung:SM-G960F=samsung/starltexx/starlte:8.0.0/R16NW/G960FXXU1ARCC:user/release-keys +Samsung Galaxy S9 Plus SM-G965F (8.0.0):Samsung:SM-G965F=samsung/star2ltexx/star2lte:8.0.0/R16NW/G965FXXU1ARCC:user/release-keys +Samsung Galaxy S10 Plus SM-G975F (10):Samsung:SM-G975F=samsung/beyond2ltexx/beyond2:10/QP1A.190711.020/G975FXXU3BSKO:user/release-keys__2019-12-01 +Samsung Galaxy S10 Plus SM-G975U (9):Samsung:SM-G975U=samsung/beyond2qlteue/beyond2q:9/PPR1.180610.011/G975U1UEU1ASD3:user/release-keys__2019-03-01 +Samsung Galaxy Tab 2 7.0 GT-P5110 (4.2.2):Samsung:GT-P5110=samsung/espresso10wifixx/espresso10wifi:4.2.2/JDQ39/P5110XXDML1:user/release-keys +Samsung Galaxt Tab A WiFi SM-T590 (9):Samsung:SM-T590=samsung/gta2xlwifixx/gta2xlwifi:9/PPR1.180610.011/T590XXU3BSJ1:user/release-keys__2019-10-01 +Samsung Galaxt Tab A LTE SM-T595 (9):Samsung:SM-T595=samsung/gta2xlltexx/gta2xllte:9/PPR1.180610.011/T595XXU3BSF3:user/release-keys__2019-06-01 +Samsung Galaxt Tab A LTE SM-T597 (9):Samsung:SM-T597=samsung/gta2xlltespr/gta2xlltespr:9/PPR1.180610.011/T597PVPU2BSH7:user/release-keys__2019-08-01 +Samsung Galaxy Tab S3 LTE SM-T825 (8.0.0):Samsung:SM-T825=samsung/gts3lltexx/gts3llte:8.0.0/R16NW/T825XXU2BRL2:user/release-keys__2018-12-01 +Sony Xperia X F5121 (8.0.0):Sony:F5121=Sony/F5121/F5121:8.0.0/34.4.A.2.118/1631208121:user/release-keys__2018-09-01 +Sony Xperia X Compact F5321 (8.0.0):Sony:F5321=Sony/F5321/F5321:8.0.0/34.4.A.2.118/1631208121:user/release-keys__2018-09-01 +Sony Xperia X Dual F5122 (8.0.0):Sony:F5122=Sony/F5122/F5122:8.0.0/34.4.A.2.118/1631208121:user/release-keys__2018-09-01 +Sony Xperia X Performance F8131 (8.0.0):Sony:F8131=Sony/F8131/F8131:8.0.0/41.3.A.2.99/1455830589:user/release-keys +Sony Xperia X Performance Dual F8132 (8.0.0):Sony:F8132=Sony/F8132/F8132:8.0.0/41.3.A.2.99/1455830589:user/release-keys +Sony Xperia XA2 Dual H4113 (8.0.0):Sony:H4113=Sony/H4113/H4113:8.0.0/50.1.A.4.76/2209478692:user/release-keys +Sony Xperia XZ F8331 (8.0.0):Sony:F8331=Sony/F8331/F8331:8.0.0/41.3.A.2.99/1455830589:user/release-keys +Sony Xperia XZ Dual F8332 (8.0.0):Sony:F8332=Sony/F8332/F8332:8.0.0/41.3.A.2.99/1455830589:user/release-keys +Sony Xperia XZ Premium G8141 (8.0.0):Sony:G8141=Sony/G8141/G8141:8.0.0/47.1.A.12.179/1909673090:user/release-keys +Sony Xperia XZ Premium Dual G8142 (8.0.0):Sony:G8142=Sony/G8142/G8142:8.0.0/47.1.A.12.179/1909673090:user/release-keys +Sony Xperia XZ1 G8341 (8.0.0):Sony:G8341=Sony/G8341/G8341:8.0.0/47.1.A.12.179/1909673090:user/release-keys +Sony Xperia XZ1 Compact G8441 (8.0.0 & 9):Sony:G8441=Sony/G8441/G8441:8.0.0/47.1.A.12.179/1909673090:user/release-keys;Sony/G8441/G8441:9/47.2.A.2.33/3676206253:user/release-keys__2018-11-01 +Sony Xperia XZ1 Dual G8342 (8.0.0):Sony:G8342=Sony/G8342/G8342:8.0.0/47.1.A.12.179/1909673090:user/release-keys +Sony Xperia XZ2 H8216 (8.0.0):Sony:H8216=Sony/H8216/H8216:8.0.0/51.1.A.3.159/620448843:user/release-keys +Sony Xperia XZ2 Compact H8314 (8.0.0):Sony:H8314=Sony/H8314/H8314:8.0.0/51.1.A.3.159/620448843:user/release-keys +Sony Xperia XZ2 Compact Dual H8324 (8.0.0):Sony:H8324=Sony/H8324/H8324:8.0.0/51.1.A.3.159/620448843:user/release-keys +Sony Xperia XZ2 Dual H8266 (8.0.0):Sony:H8266=Sony/H8266/H8266:8.0.0/51.1.A.3.159/620448843:user/release-keys +Sony Xperia Z C6603 (5.1.1):Sony:C6603=Sony/C6603/C6603:5.1.1/10.7.A.0.228/58103698:user/release-keys +Sony Xperia Z1 C6903 (5.1.1):Sony:C6903=Sony/C6903/C6903:5.1.1/14.6.A.1.236/2031203603:user/release-keys +Sony Xperia Z2 D6503 (6.0.1):Sony:D6503=Sony/D6503/D6503:6.0.1/23.5.A.1.291/2769308465:user/release-keys +Sony Xperia Z3 D6633 (6.0.1):Sony:D6633=Sony/D6633/D6633:6.0.1/23.5.A.1.291/2769308465:user/release-keys +Sony Xperia Z3 Compact D5803 (6.0.1):Sony:D5803=Sony/D5803/D5803:6.0.1/23.5.A.1.291/2769308465:user/release-keys +Sony Xperia Z3 Tablet Compact SGP621 (6.0.1):Sony:SGP621=Sony/SGP621/SGP621:6.0.1/23.5.A.1.291/3706784398:user/release-keys +Sony Xperia Z4 Tablet LTE SGP771 (7.1.1):Sony:SGP771=Sony/SGP771/SGP771:7.1.1/32.4.A.1.54/219395100:user/release-keys +Sony Xperia Z5 E6603 (7.1.1):Sony:E6603=Sony/E6603/E6603:7.1.1/32.4.A.1.54/3761073091:user/release-keys +Sony Xperia Z5 Compact E5823 (7.1.1):Sony:E5823=Sony/E5823/E5823:7.1.1/32.4.A.1.54/3761073091:user/release-keys +Sony Xperia Z5 Dual E6633 (7.1.1):Sony:E6633=Sony/E6633/E6633:7.1.1/32.4.A.1.54/3761073091:user/release-keys +Sony Xperia Z5 Premium E6853 (7.1.1):Sony:E6853=Sony/E6853/E6853:7.1.1/32.4.A.1.54/3761073091:user/release-keys +Sony Xperia Z5 Premium Dual E6883 (7.1.1):Sony:E6883=Sony/E6883/E6883:7.1.1/32.4.A.1.54/3761073091:user/release-keys +Vodafone Smart Ultra 6 (5.1.1):Vodafone:Vodafone Smart ultra 6=Vodafone/P839V55/P839V55:5.1.1/LMY47V/20161227.134319.15534:user/release-keys +Walmart Onn 8 (9):Onn:ONA19TB002=onn/ONA19TB002/ONA19TB002:9/PPR1.180610.011/1551232410:user/release-keys__2019-01-05 +Xiaomi Mi 3 (6.0.1):Xiaomi:MI 3W=Xiaomi/cancro/cancro:6.0.1/MMB29M/V9.5.2.0.MXDMIFA:user/release-keys +Xiaomi Mi 4 (6.0.1):Xiaomi:MI 4W=Xiaomi/cancro/cancro:6.0.1/MMB29M/V9.5.2.0.MXDMIFA:user/release-keys +Xiaomi Mi 4C (7.0):Xiaomi:Mi-4c=Xiaomi/libra/libra:7.0/NRD90M/V9.6.2.0.NXKCNFD:user/release-keys +Xiaomi Mi 5/5 Pro (7.0 & 8.0.0):Xiaomi:MI 5=Xiaomi/gemini/gemini:7.0/NRD90M/V9.2.1.0.NAAMIEK:user/release-keys;Xiaomi/gemini/gemini:8.0.0/OPR1.170623.032/V9.6.1.0.OAAMIFD:user/release-keys +Xiaomi Mi 5S (7.0):Xiaomi:MI 5s=Xiaomi/capricorn/capricorn:7.0/NRD90M/V9.5.4.0.NAGMIFD:user/release-keys +Xiaomi Mi 5S Plus (6.0.1 & 7.0):Xiaomi:MI 5s Plus=Xiaomi/natrium/natrium:6.0.1/MXB48T/V8.5.2.0.MBGMIED:user/release-keys;Xiaomi/natrium/natrium:7.0/NRD90M/V9.6.2.0.NBGMIFD:user/release-keys +Xiaomi Mi 6 (8.0.0):Xiaomi:MI 6=Xiaomi/sagit/sagit:8.0.0/OPR1.170623.027/V9.2.3.0.OCAMIEK:user/release-keys +Xiaomi Mi 8 (8.1.0 & 9):Xiaomi:MI 8=Xiaomi/dipper/dipper:8.1.0/OPM1.171019.011/V9.5.5.0.OEAMIFA:user/release-keys;Xiaomi/dipper/dipper:9/PKQ1.180729.001/V10.2.3.0.PEAMIXM:user/release-keys__2019-02-01 +Xiaomi Mi 9 European (9):Xiaomi:MI 9=Xiaomi/cepheus_eea/cepheus:9/PKQ1.181121.001/V10.2.27.0.PFAEUXM:user/release-keys__2019-06-01 +Xiaomi Mi 9 Lite (9):Xiaomi:Mi 9 Lite=Xiaomi/pyxis/pyxis:9/PKQ1.181121.001/V11.3.3.0.PFCMIXM:user/release-keys__2019-10-01 +Xiaomi Mi 9 SE (9):MI 9 SE=Xiaomi/grus/grus:9/PKQ1.181121.001/V11.0.4.0.PFBMIXM:user/release-keys__2019-10-01 +Xiaomi Mi 9T European (9 & 10):Xiaomi:Mi 9T=Xiaomi/davinci_eea/davinci:9/PKQ1.190302.001/V10.3.12.0.PFJEUXM:user/release-keys__2019-07-01;Xiaomi/davinci_eea/davinci:10/QKQ1.190825.002/V11.0.1.0.QFJEUXM:user/release-keys__2019-12-01 +Xiaomi Mi 9T Global (10):Xiaomi:Mi 9T=Xiaomi/davinci/davinci:10/QKQ1.190825.002/V11.0.1.0.QFJMIXM:user/release-keys__2019-12-01 +Xiaomi Mi 9T Pro (9 & 10):Xiaomi:Mi 9T Pro=Xiaomi/raphael/raphael:9/PKQ1.181121.001/V10.3.14.0.PFKCNXM:user/release-keys__2019-06-01;Xiaomi/raphael/raphael:10/QKQ1.190825.002/V11.0.1.0.QFKMIXM:user/release-keys__2019-10-01 +Xiaomi Mi A1 (8.0.0 & 9):Xiaomi:Mi A1=xiaomi/tissot/tissot_sprout:8.0.0/OPR1.170623.026/V.9.5.10.0.ODHMIFA:user/release-keys;xiaomi/tissot/tissot_sprout:9/PKQ1.180917.001/V10.0.4.0.PDHMIXM:user/release-keys__2019-01-05 +Xiaomi Mi A2 (8.1.0 & 9):Xiaomi:Mi A2=xiaomi/jasmine/jasmine_sprout:8.1.0/OPM1.171019.011/V9.6.16.0.ODIMIFE:user/release-keys__2018-11-05;xiaomi/jasmine/jasmine_sprout:9/PKQ1.180904.001/V10.0.14.0.PDIMIXM:user/release-keys__2019-09-05 +Xiaomi Mi A2 Lite (9):Xiaomi:Mi A2 Lite=xiaomi/daisy/daisy_sprout:9/PKQ1.180917.001/V10.0.1.0.PDLMIFJ:user/release-keys__2018-11-05 +Xiaomi Mi A3 (9):Xiaomi:Mi A3=Xiaomi/laurel_sprout/laurel_sprout:9/PKQ1.190416.001/V10.3.6.0.PFQMIXM:user/release-keys__2019-09-05 +Xiaomi Mi Box S (9):Xiaomi:MIBOX4=Xiaomi/oneday/oneday:9/PI/2231:user/release-keys__2019-11-05 +Xiaomi Mi Max (6.0.1):Xiaomi:MI MAX=Xiaomi/helium/helium:6.0.1/MMB29M/V8.2.3.0.MBDMIDL:user/release-keys +Xiaomi Mi Max 2 (7.1.1):Xiaomi:MI MAX 2=Xiaomi/oxygen/oxygen:7.1.1/NMF26F/V9.5.4.0.NDDMIFA:user/release-keys +Xiaomi Mi Max 3 (9):Xiaomi:MI MAX 3=Xiaomi/nitrogen/nitrogen:9/PKQ1.181007.001/V10.3.1.0.PEDMIXM:user/release-keys__2019-03-01 +Xiaomi Mi Mix 2 (8.0.0 & 9):Xiaomi:Mi MIX 2=Xiaomi/chiron/chiron:8.0.0/OPR1.170623.027/V10.2.2.0.ODEMIXM:user/release-keys__2018-12-01;Xiaomi/chiron/chiron:9/PKQ1.190118.001/V11.0.3.0.PDEMIXM:user/release-keys__2019-09-01 +Xiaomi Mi Mix 2S (8.0.0 & 9):Xiaomi:Mi MIX 2S=Xiaomi/polaris/polaris:8.0.0/OPR1.170623.032/V9.5.19.0.ODGMIFA:user/release-keys;Xiaomi/polaris/polaris:9/PKQ1.180729.001/V10.3.3.0.PDGMIXM:user/release-keys__2019-05-01 +Xiaomi Mi Mix 3 (9):Xiaomi:Mi MIX 3=Xiaomi/perseus/perseus:9/PKQ1.180729.001/V10.3.1.0.PEEMIXM:user/release-keys__2019-03-01 +Xiaomi Mi Note 2 (7.0 & 8.0.0):Xiaomi:Mi Note 2=Xiaomi/scorpio/scorpio:7.0/NRD90M/V9.2.1.0.NADMIEK:user/release-keys;Xiaomi/scorpio/scorpio:8.0.0/OPR1.170623.032/V9.6.1.0.OADCNFD:user/release-keys +Xiaomi Mi Note 3 (8.1.0):Xiaomi:Mi Note 3=Xiaomi/jason/jason:8.1.0/OPM1.171019.019/V10.2.2.0.OCHMIXM:user/release-keys__2018-12-01 +Xiaomi Mi Note 10 European (9):Xiaomi:Mi Note 10=Xiaomi/tucana_eea/tucana:9/PKQ1.190302.001/V11.0.11.0.PFDEUXM:user/release-keys__2019-11-01 +Xiaomi Mi Pad (4.4.4):Xiaomi:MI PAD=Xiaomi/mocha/mocha:4.4.4/KTU84P/V7.5.2.0.KXFMIDE:user/release-keys +Xiaomi Mi Pad 4 (8.1.0):Xiaomi:MI PAD 4=Xiaomi/clover/clover:8.1.0/OPM1.171019.019/V10.1.1.0.ODJCNFI:user/release-keys__2018-10-01 +Xiaomi Pocophone F1 (9 & 10):Xiaomi:POCOPHONE F1=Xiaomi/beryllium/beryllium:9/PKQ1.180729.001/V11.0.5.0.PEJMIXM:user/release-keys__2019-10-01;Xiaomi/beryllium/beryllium:10/QKQ1.190828.002/V11.0.4.0.QEJMIXM:user/release-keys__2020-01-01 +Xiaomi Redmi 3/3 Pro (5.1.1):Xiaomi:Redmi 3=Xiaomi/ido/ido:5.1.1/LMY47V/V9.6.2.0.LAIMIFD:user/release-keys +Xiaomi Redmi 3S/X Prime (6.0.1):Xiaomi:Redmi 3S=Xiaomi/land/land:6.0.1/MMB29M/V9.5.1.0.MALMIFA:user/release-keys +Xiaomi Redmi 4 Pro (6.0.1):Xiaomi:Redmi 4=Xiaomi/markw/markw:6.0.1/MMB29M/V9.5.3.0.MBEMIFA:user/release-keys +Xiaomi Redmi 4A (7.1.2):Xiaomi:Redmi 4A=Xiaomi/rolex/rolex:7.1.2/N2G47H/V9.2.6.0.NCCMIEK:user/release-keys +Xiaomi Redmi 4X (6.0.1):Xiaomi:Redmi 4X=Xiaomi/santoni/santoni:6.0.1/MMB29M/V8.5.4.0.MAMCNED:user/release-keys +Xiaomi Redmi 5A (7.1.2 & 8.1.0):Xiaomi:Redmi 5A=Xiaomi/riva/riva:7.1.2/N2G47H/V9.1.8.0.NCKMIEI:user/release-keys;Xiaomi/riva/riva:8.1.0/OPM1.171019.026/V10.3.2.0.OCKMIXM:user/release-keys__2019-06-01 +Xiaomi Redmi 8 (9):Xiaomi:Redmi 8=Xiaomi/olive/olive:9/PKQ1.190319.001/V11.0.7.0.PCNCNXM:user/release-keys__2019-12-01 +Xiaomi Redmi Go (8.1.0):Xiaomi:Redmi Go=Xiaomi/tiare/tiare:8.1.0/OPM1.171019.026/V10.2.6.0.OCLMIXM:user/release-keys__2019-01-01 +Xiaomi Redmi K20 Pro (9 & 10):Redmi:Redmi K20 Pro=Xiaomi/raphael/raphael:9/PKQ1.181121.001/V10.3.14.0.PFKCNXM:user/release-keys__2019-06-01;Xiaomi/raphael/raphael:10/QKQ1.190825.002/V11.0.1.0.QFKMIXM:user/release-keys__2019-10-01 +Xiaomi Redmi Note 2 (5.0.2):Xiaomi:Redmi Note 2=Xiaomi/hermes/hermes:5.0.2/LRX22G/V9.2.4.0.LHMMIEK:user/release-keys +Xiaomi Redmi Note 3 Pro (6.0.1):Xiaomi:Redmi Note 3=Xiaomi/kenzo/kenzo:6.0.1/MMB29M/V8.2.1.0.MHOCNDL:user/release-keys +Xiaomi Redmi Note 3 Pro SE (6.0.1):Xiaomi:Redmi Note 3=Xiaomi/kate/kate:6.0.1/MMB29M/V8.1.3.0.MHRMIDI:user/release-keys +Xiaomi Redmi Note 4 (7.0):Redmi Note 4=xiaomi/mido/mido:7.0/NRD90M/V11.0.2.0.NCFMIXM:user/release-keys__2018-12-01 +Xiaomi Redmi Note 4X (7.0):Redmi Note 4X=xiaomi/mido/mido:7.0/NRD90M/V11.0.2.0.NCFMIXM:user/release-keys__2018-12-01 +Xiaomi Redmi Note 4 Mediatek (6.0):Xiaomi:Redmi Note 4=Xiaomi/nikel/nikel:6.0/MRA58K/V9.2.2.0.MBFMIEK:user/release-keys +Xiaomi Redmi Note 5 (7.1.2 & 8.1.0):Redmi Note 5=xiaomi/vince/vince:7.1.2/N2G47H/V9.5.4.0.NEGMIFA:user/release-keys:xiaomi/vince/vince:8.1.0/OPM1.171019.019/V10.2.1.0.OEGMIXM:user/release-keys__2019-03-01 +Xiaomi Redmi Note 5 Plus (7.1.2 & 8.1.0):Xiaomi:Redmi 5 Plus=xiaomi/vince/vince:7.1.2/N2G47H/V9.5.4.0.NEGMIFA:user/release-keys;xiaomi/vince/vince:8.1.0/OPM1.171019.019/V10.2.1.0.OEGMIXM:user/release-keys__2019-03-01 +Xiaomi Redmi Note 5 Pro (8.1.0 & 9):Xiaomi:Redmi Note 5 Pro=xiaomi/whyred/whyred:8.1.0/OPM1.171019.011/V10.0.6.0.OEIMIFH:user/release-keys__2018-11-01;xiaomi/whyred/whyred:9/PKQ1.180904.001/V11.0.3.0.PEIMIXM:user/release-keys__2019-11-05 +Xiaomi Redmi Note 5A Lite (7.1.2):Xiaomi:Redmi Note 5A=xiaomi/ugglite/ugglite:7.1.2/N2G47H/V9.1.2.0.NDFMIEI:user/release-keys +Xiaomi Redmi Note 6 Pro (8.1.0):Xiaomi:Redmi Note 6 Pro=xiaomi/tulip/tulip:8.1.0/OPM1.171019.011/V10.0.5.0.OEKMIFH:user/release-keys__2018-10-01 +Xiaomi Redmi Note 7 (9):Redmi:Redmi Note 7=xiaomi/lavender/lavender:9/PKQ1.180904.001/V10.3.12.0.PFGMIXM:user/release-keys__2019-08-05 +Xiaomi Redmi Note 7 Pro (9):Xiaomi:Redmi Note 7 Pro=xiaomi/violet/violet:9/PKQ1.181203.001/V10.3.13.0.PFHINXM:user/release-keys__2019-08-01 +Xiaomi Redmi Note 8 Pro (9):Redmi:Redmi Note 8 Pro=Redmi/begoniain/begoniain:9/PPR1.180610.011/V10.4.4.0.PGGINXM:user/release-keys__2019-09-01 +Xiaomi Redmi Note 8T European (9):Redmi:Redmi Note 8T=xiaomi/willow_eea/willow:9/PKQ1.190616.001/V10.3.5.0.PCXEUXM:user/release-keys__2019-10-01 +Xiaomi Redmi Y1 (7.1.2):Xiaomi:Redmi Y1=xiaomi/ugg/ugg:7.1.2/N2G47H/V9.6.2.0.NDKMIFD:user/release-keys__2018-07-01 +ZTE Axon 7 (7.1.1 & 8.0.0):ZTE:ZTE A2017=ZTE/P996A01_N/ailsa_ii:7.1.1/NMF26V/20171211.005949:user/release-keys;ZTE/P996A01_O/ailsa_ii:8.0.0/OPR1.170623.032/20180815.171922:user/release-keys__2018-07-01 +ZTE Blade (6.0.1):ZTE:Blade A310=ZTE/P809A50_MY_MAX/P809A50:6.0.1/MMB29M/20161017.095504:user/release-keys +ZTE Nubia Z17 (7.1.1):ZTE:NX563J=nubia/NX563J/NX563J:7.1.1/NMF26X/eng.nubia.20171019.101529:user/release-keys +Zuk Z2 Pro (7.0):Zuk:ZUK Z2121=ZUK/z2_row/z2_row:7.0/NRD90M/2.5.435_170525:user/release-keys " diff --git a/common/propsconf_conf b/common/propsconf_conf index f6fa857..2d05be2 100644 --- a/common/propsconf_conf +++ b/common/propsconf_conf @@ -9,7 +9,7 @@ # ================================================================= # Required module version (or newer). Do not edit this value! -CONFTRANSF=510 +CONFTRANSF=520 # Device fingerprint CONFFINGERPRINT="" @@ -25,9 +25,12 @@ CONFDEVICE=false CONFRELEASE=false CONFID=false CONFINCREMENTAL=false -CONFDESCRIPTION=true CONFDISPLAY=false CONFSDK=false +CONFMANUFACTURER=false +CONFMODEL=false +CONFDESCRIPTION=true +CONFPARTPROPS=true CONFSIMBOOT=default # MagiskHide sensitive props @@ -103,14 +106,16 @@ CONFBACK=false # Keymaster 4 (bootloops). If the prop doesn't seem to set properly, try changing the stage. # CONFDEVSIM and the following CONFBRAND, CONFNAME, CONFDEVICE, CONFRELEASE -# CONFID, CONFINCREMENTAL, CONFDESCRIPTION, CONFDISPLAY and CONFSDK are used to -# set a number of props to simulate a certain deviced based on the fingerprint used. +# CONFID, CONFINCREMENTAL, CONFDESCRIPTION, CONFDISPLAY, CONFSDK, CONFMANUFACTURER and CONFMODEL +# are used to set a number of props to simulate a certain deviced based on the fingerprint used. # CONFDESCRIPTION will automatically be applied if a fingerprint is set # by the module, but the other props will only be set if CONFDEVSIM is # set to true, and the default setting for all props are that they will be # set by the module. If you want to change this, change "true" to "false" # for the applicable variables. # +# CONFPARTPROPS is used to enable or disable using partition specific version of the simulation props. +# # CONFSIMBOOT is by default set to using the module default boot stage for setting props. # If the setting is changed to "post" or "late", the props will be set during either # post-fs-data or late_start service mode. This is useful if props don't seem to set diff --git a/common/propsconf_late b/common/propsconf_late index 7d288a9..3b90eaf 100644 --- a/common/propsconf_late +++ b/common/propsconf_late @@ -8,7 +8,7 @@ # In that case, feel free to delete it. # Script version -SCRIPTV=30 +SCRIPTV=31 SETTRANSF=3 NOTTRANSF="BRANDSET;NAMESET;DEVICESET;RELEASESET;IDSET;INCREMENTALSET;SDKSET" @@ -47,9 +47,12 @@ DEVICESET=0 RELEASESET=0 IDSET=0 INCREMENTALSET=0 +DISPLAYSET=0 SDKSET=0 +MANUFACTURERSET=0 +MODELSET=0 DESCRIPTIONSET=1 -DISPLAYSET=0 +PARTPROPSSET=1 # Misc REBOOTCHK=0 @@ -68,6 +71,8 @@ ORIGTAGS="" ORIGSELINUX="" ORIGFINGERPRINT="" ORIGVENDPRINT="" +ORIGPRODPRINT="" +ORIGODMPRINT="" ORIGPATCH="" ORIGBRAND="" ORIGNAME="" @@ -78,6 +83,8 @@ ORIGINCREMENTAL="" ORIGDESCRIPTION="" ORIGDISPLAY="" ORIGSDK="" +ORIGMANUFACTURER="" +ORIGMODEL="" # ---Module values--- MODULEDEBUGGABLE="" @@ -97,6 +104,8 @@ SIMINCREMENTAL="" SIMDESCRIPTION="" SIMDISPLAY="" SIMSDK="" +SIMMANUFACTURER="" +SIMMODEL="" # ---Custom prop values--- CUSTOMPROPS="" diff --git a/common/util_functions.sh b/common/util_functions.sh index 618a660..4d75fcd 100644 --- a/common/util_functions.sh +++ b/common/util_functions.sh @@ -66,6 +66,9 @@ if [ "$INSTFN" ]; then DESCRIPTIONSET DISPLAYSET SDKSET + MANUFACTURERSET + MODELSET + PARTPROPSSET REBOOTCHK " PROPSETTINGSLIST=" @@ -84,6 +87,8 @@ if [ "$INSTFN" ]; then SIMDESCRIPTION SIMDISPLAY SIMSDK + SIMMANUFACTURER + SIMMODEL CUSTOMPROPS CUSTOMPROPSPOST CUSTOMPROPSLATE @@ -129,8 +134,10 @@ PRINTSTMP=$MHPCPATH/prints.sh PRINTSWWW="https://raw.githubusercontent.com/Magisk-Modules-Repo/MagiskHide-Props-Config/master/common/prints.sh" PRINTSDEV="https://raw.githubusercontent.com/Didgeridoohan/Playground/master/prints.sh" PRINTFILES=$MODPATH/printfiles -CSTMPRINTS=/sdcard/printslist +CSTMPRINTS=/data/media/0/printslist CSTMFILE=$PRINTFILES/Custom.sh +EXPORTPATH=/data/media/0/mhpc +EXPORTFILE=$EXPORTPATH/propsconf_conf # Known modules that edit device fingerprint USNFLIST=" @@ -170,13 +177,17 @@ ro.build.tags=release-keys ro.build.selinux=0 " -# Fingerprint props to change +# Partitions used for different props +PARTITIONS=" +system +vendor +product +odm +" + +# Additional fingerprint prop parts PRINTPROPS=" -ro.build.fingerprint -ro.bootimage.build.fingerprint -ro.system.build.fingerprint -ro.vendor.build.fingerprint -ro.odm.build.fingerprint +bootimage " # Print parts @@ -202,10 +213,15 @@ ro.build.description " # Additional simulation props -ADNSIMPROPS=" +ADNSIMPROPS1=" ro.build.display.id ro.build.version.sdk " +ADNSIMPROPS2=" +ro.product.manufacturer +ro.product.model +" +ADNSIMPROPS=$ADNSIMPROPS1$ADNSIMPROPS2 # Android API level APILVL=" @@ -236,6 +252,7 @@ sed sort tar tr +wc wget " @@ -342,31 +359,6 @@ get_eq_right() { echo $1 | cut -f 2 -d '=' } -# Get first word in fingerprint string -get_first() { - case $1 in - *\ *) echo $1 | sed 's|\ .*||' - ;; - *=*) get_eq_left "$1" - ;; - esac -} - -# Get the device for current fingerprint -get_device_used() { - PRINTTMP=$(cat $MODPATH/common/prints.sh | grep "$1") - if [ "$PRINTTMP" ]; then - echo "${C}$(get_eq_left "$PRINTTMP" | sed "s| (.*||")${N}" - echo "" - elif [ -s "$CSTMPRINTS" ]; then - PRINTTMP=$(cat $CSTMPRINTS | grep "$1") - if [ "$PRINTTMP" ]; then - echo "${C}$(get_eq_left "$PRINTTMP" | sed "s| (.*||")${N} (from custom list)" - echo "" - fi - fi -} - # Get the list of print version get_print_versions() { echo "$1" | sed 's|.*(||' | sed 's|).*||' | sed 's| \& | |g' @@ -396,9 +388,9 @@ get_print_display() { # Replace file values replace_fn() { if [ "$5" == "placeholder" ]; then - sed -i "s|${1}PH=${2}|${1}=${3}|" $4 + sed -i "s|${1}PH=${2}|${1}=${3}|" $4 >> $LOGFILE 2>&1 else - sed -i "s|${1}=${2}|${1}=${3}|" $4 + sed -i "s|${1}=${2}|${1}=${3}|" $4 >> $LOGFILE 2>&1 fi } @@ -513,12 +505,20 @@ all_values() { . $LATEFILE } +# Run before updated props/settings +before_change() { + if [ -z "$INSTFN" ]; then + echo "" + echo "${C}Working. Please wait...${N}" + fi +} + # Run after updated props/settings after_change() { if [ "$2" == "file" ]; then # Load module settings . $LATEFILE - else + elif [ "$2" != "none" ]; then # Update the reboot variable replace_fn REBOOTCHK 0 1 $LATEFILE # Load all values @@ -594,6 +594,8 @@ reboot_fn() { # Reset module reset_fn() { + before_change + cp -af $MODPATH/common/propsconf_late $LATEFILE >> $LOGFILE 2>&1 if [ "$FINGERPRINTENB" ] && [ "$FINGERPRINTENB" != 1 ]; then replace_fn FINGERPRINTENB 1 $FINGERPRINTENB $LATEFILE @@ -686,6 +688,12 @@ config_file() { else change_sim_descr "Device simulation" 0 "file" fi + # Partition specific props + if [ "$CONFPARTPROPS" == "true" ]; then + change_sim_partprops "Device simulation" 1 "file" + else + change_sim_partprops "Device simulation" 0 "file" + fi fi # Updates boot options for fingerprint and simulation props @@ -1116,8 +1124,41 @@ script_install() { } # ======================== Fingerprint functions ======================== +# Get full device info from fingerprint string +get_device() { + echo $1 | cut -f 1 -d '=' | sed "s|\:.*$||" +} + +# Get first word in fingerprint string +get_first() { + case $1 in + *\ *) echo $1 | sed 's|\ .*||' + ;; + *=*) get_device "$1" + ;; + esac +} + +# Get the device for current fingerprint +get_device_used() { + PRINTTMP=$(cat $MODPATH/common/prints.sh | grep "$1") + if [ "$PRINTTMP" ]; then + echo "${C}$(get_device "$PRINTTMP" | sed "s| (.*||")${N}" + echo "" + elif [ -s "$CSTMPRINTS" ]; then + PRINTTMP=$(cat $CSTMPRINTS | grep "$1") + if [ "$PRINTTMP" ]; then + echo "${C}$(get_device "$PRINTTMP" | sed "s| (.*||")${N} (from custom list)" + echo "" + fi + fi +} + # Set new fingerprint print_edit() { + if [ "$1" ]; then + before_change + fi if [ "$FINGERPRINTENB" == 1 -o "$PRINTMODULE" == 0 ] && [ "$PRINTEDIT" == 1 ]; then log_handler "Changing fingerprint." if [ "$PRINTVEND" == 1 ]; then @@ -1129,18 +1170,17 @@ print_edit() { PRINTCHNG="$(echo $MODULEFINGERPRINT | sed 's|\_\_.*||')" fi # Changing props - for ITEM in $PRINTPROPS; do - if [ "$(resetprop $ITEM)" ]; then - log_handler "Changing/writing $ITEM." - if [ "$1" ]; then - echo "${ITEM}=${PRINTCHNG}" >> $1 - else - resetprop -nv $ITEM $PRINTCHNG >> $LOGFILE 2>&1 - fi + if [ "$(resetprop "ro.build.fingerprint")" ]; then + log_handler "Changing/writing ro.build.fingerprint." + if [ "$1" ]; then + echo "ro.build.fingerprint=${PRINTCHNG}" >> $1 else - log_handler "$ITEM not currently set on device. Skipping." + resetprop -nv ro.build.fingerprint $PRINTCHNG >> $LOGFILE 2>&1 fi - done + else + log_handler "ro.build.fingerprint not currently set on device. Skipping." + fi + set_partition_props $1 "ro.build.fingerprint" $PRINTCHNG # Edit device description if [ "$DESCRIPTIONSET" == 1 ]; then if [ "$SIMDESCRIPTION" ]; then @@ -1159,6 +1199,9 @@ print_edit() { # Edit security patch date if included patch_edit() { + if [ "$1" ]; then + before_change + fi if [ "$PRINTVEND" != 1 ]; then case "$MODULEFINGERPRINT" in *__*) @@ -1323,6 +1366,8 @@ download_prints() { # Reset the module fingerprint change reset_print() { + before_change + log_handler "Resetting device fingerprint to default system value." # Saves new module valueS @@ -1342,6 +1387,8 @@ reset_print() { # Use fingerprint change_print() { + before_change + log_handler "Changing device fingerprint to $2." # Saves new module values @@ -1360,6 +1407,8 @@ change_print() { # Use vendor fingerprint change_print_vendor() { + before_change + if [ $2 == 1 ]; then STATETXT="Enabling" TMPVAL=0 @@ -1427,15 +1476,64 @@ print_parts() { if [ "$2" != "var" ]; then replace_fn SIMDESCRIPTION "\"$SIMDESCRIPTION\"" "\"$VARDESCRIPTION\"" $LATEFILE replace_fn SIMDISPLAY "\"$SIMDISPLAY\"" "\"$VARDESCRIPTION\"" $LATEFILE - replace_fn SIMSDK "\"$SIMSDK\"" "\"$VARSDK\"" $LATEFILE + replace_fn SIMSDK "\"$SIMSDK\"" "\"$VARSDK\"" $LATEFILE + TMPPARTS=$(get_eq_left "$(grep $1 $PRINTSLOC)" | sed 's|.*)\:||') + if [ -z "$TMPPARTS" ]; then + TMPPARTS=$(get_eq_left "$(grep $1 $CSTMPRINTS)" | sed 's|.*)\:||') + fi + if [ $(echo $TMPPARTS | grep -o "\:" | wc -l) == 1 ]; then + replace_fn SIMMANUFACTURER "\"$SIMMANUFACTURER\"" "\"\"" $LATEFILE + replace_fn SIMMODEL "\"\"" $LATEFILE + else + replace_fn SIMMANUFACTURER "\"$SIMMANUFACTURER\"" "\"\"" $LATEFILE + replace_fn SIMMODEL "\"$SIMMODEL\"" "\"\"" $LATEFILE + fi fi # Load module values . $LATEFILE } +set_partition_props() { + if [ "$2" == "ro.build.fingerprint" ]; then + TMPLST=$PRINTPROPS$PARTITIONS + else + TMPLST=$PARTITIONS + fi + for PART in $TMPLST; do + CNTP=1 + while [ $CNTP != 0 ]; do + TMPPART="$(echo $2 | cut -f $CNTP -d ".")" + if [ "$CNTP" == 1 ]; then + TMPPROP="${TMPPART}.${PART}.$(echo "$2" | sed "s|${TMPPART}\.||")" + else + TMPPROP="$(echo "$2" | sed "s|\.${TMPPART}||").${PART}.${TMPPART}" + fi + if [ "$(resetprop $TMPPROP)" ]; then + log_handler "Changing/writing $TMPPROP." + if [ "$1" ]; then + echo "${TMPPROP}=${3}" >> $1 + else + resetprop -nv $2 $3 >> $LOGFILE 2>&1 + fi + else + log_handler "$TMPPROP not currently set on device. Skipping." + fi + if [ "$CNTP" == 1 ]; then + CNTP=$(echo $2 | grep -o "\." | wc -l) + CNTP=$(($CNTP + 1)) + else + CNTP=0 + fi + done + done +} + # ======================== Device simulation functions ======================== # Edit the simulation props dev_sim_edit() { + if [ "$1" ]; then + before_change + fi if [ "$FINGERPRINTENB" == 1 -o "$PRINTMODULE" == 0 ] && [ "$PRINTEDIT" == 1 ]; then if [ "$DEVSIM" == 1 ]; then log_handler "Editing device simulation props." @@ -1444,15 +1542,26 @@ dev_sim_edit() { TMPPROP=$(get_prop_type $ITEM | tr '[:lower:]' '[:upper:]') TMPENB=$(get_file_value $LATEFILE "${TMPPROP}SET=") TMPVALUE=$(get_file_value $LATEFILE "SIM${TMPPROP}=") - if [ "$TMPENB" == 1 ] && [ "$TMPVALUE" ]; then - log_handler "Changing/writing $ITEM." - if [ "$1" ]; then - echo "${ITEM}=${TMPVALUE}" >> $1 + if [ "TMPVALUE" ]; then + if [ "$TMPENB" == 1 ] && [ "$TMPVALUE" ]; then + if [ "$(resetprop $ITEM)" ]; then + log_handler "Changing/writing $ITEM." + if [ "$1" ]; then + echo "${ITEM}=${TMPVALUE}" >> $1 + else + resetprop -nv $ITEM $TMPVALUE >> $LOGFILE 2>&1 + fi + else + log_handler "$ITEM not currently set on device. Skipping." + fi + if [ "$PARTPROPSSET" == 1 ]; then + set_partition_props $1 $ITEM $TMPVALUE + fi else - resetprop -nv $ITEM $TMPVALUE >> $LOGFILE 2>&1 + log_handler "Changing/writing $ITEM is disabled." fi else - log_handler "Changing/writing $ITEM is disabled." + log_handler "No simulation value set for $ITEM." fi done fi @@ -1461,6 +1570,8 @@ dev_sim_edit() { # Enable/disable the option change_dev_sim() { + before_change + if [ $DEVSIM == 0 ]; then STATETXT="Enabling" TMPVAL=1 @@ -1474,11 +1585,22 @@ change_dev_sim() { # Enables or disables the setting replace_fn "DEVSIM" $DEVSIM $TMPVAL $LATEFILE + # Disables all simulation props + if [ $TMPVAL == 0 ]; then + TMPPARTS=$PRINTPARTS$ADNSIMPROPS + for ITEM in $TMPPARTS; do + change_sim_prop "Device simulation" "$ITEM" 0 "none" + done + system_prop + fi + after_change "$1" "$2" } # Change if prop should be simulated or not change_sim_prop() { + before_change + if [ $3 == 1 ]; then STATETXT="enabled" else @@ -1497,6 +1619,8 @@ change_sim_prop() { # Change if description should be simulated or not change_sim_descr() { + before_change + if [ $2 == 1 ]; then STATETXT="enabled" else @@ -1510,6 +1634,23 @@ change_sim_descr() { after_change "$1" "$3" } +# Change if partition specific props should be simulated or not +change_sim_partprops() { + before_change + + if [ $2 == 1 ]; then + STATETXT="enabled" + else + STATETXT="disabled" + fi + log_handler "Changing partition specific prop editing to $STATETXT." + + # Saves new value + replace_fn PARTPROPSSET $PARTPROPSSET $2 $LATEFILE + + after_change "$1" "$3" +} + # ======================== MagiskHide Props functions ======================== # Check safe values safe_props() { @@ -1547,6 +1688,8 @@ change_to() { # Reset the module prop change reset_prop() { + before_change + # Sets variables PROP=$(get_prop_type $1) MODULEPROP=$(echo "MODULE${PROP}" | tr '[:lower:]' '[:upper:]') @@ -1567,7 +1710,7 @@ reset_prop() { replace_fn PROPCOUNT $PROPCOUNT $PROPCOUNTP $LATEFILE fi fi - if [ "$PROPCOUNT" == 0 ]; then + if [ "$PROPCOUNTP" == 0 ]; then replace_fn PROPEDIT 1 0 $LATEFILE fi @@ -1576,6 +1719,8 @@ reset_prop() { # Use prop value change_prop() { + before_change + # Sets variables PROP=$(get_prop_type $1) MODULEPROP=$(echo "MODULE${PROP}" | tr '[:lower:]' '[:upper:]') @@ -1601,6 +1746,8 @@ change_prop() { # Reset all module prop changes reset_prop_all() { + before_change + log_handler "Resetting all props to default values." for PROPTYPE in $PROPSLIST; do @@ -1625,6 +1772,9 @@ reset_prop_all() { # ======================== Custom Props functions ======================== # Set custom props custom_edit() { + if [ "$2" ]; then + before_change + fi if [ "$1" ] && [ "$CUSTOMEDIT" == 1 ]; then TMPLST="$(get_file_value $LATEFILE "${1}=")" if [ "$TMPLST" ]; then @@ -1658,6 +1808,8 @@ custprop_value() { # Set custom prop value set_custprop() { + before_change + if [ "$2" ]; then # Reset the prop reset_custprop "$1" "$2" "bootstage" @@ -1704,6 +1856,8 @@ set_custprop() { # Reset all custom prop values reset_all_custprop() { + before_change + log_handler "Resetting all custom props." # Removing all custom props replace_fn CUSTOMPROPS "\"$CUSTOMPROPS\"" "\"\"" $LATEFILE @@ -1716,6 +1870,8 @@ reset_all_custprop() { # Reset custom prop value reset_custprop() { + before_change + log_handler "Resetting custom prop $1." PROPSBOOTSTAGE="CUSTOMPROPS CUSTOMPROPSPOST CUSTOMPROPSLATE" TMPVALUE=$(echo "$2" | sed 's| |_sp_|g') @@ -1759,6 +1915,8 @@ prop_del() { # Set prop to delete set_delprop() { if [ "$1" ]; then + before_change + TMPDELPROPS=$(echo "$DELETEPROPS ${1}" | sed 's|^[ \t]*||') SORTDELPROPS=$(echo $(printf '%s\n' $TMPDELPROPS | sort -u)) @@ -1772,6 +1930,8 @@ set_delprop() { # Reset all props to delete reset_all_delprop() { + before_change + log_handler "Resetting list of props to delete." # Removing all props to delete replace_fn DELETEPROPS "\"$DELETEPROPS\"" "\"\"" $LATEFILE @@ -1782,6 +1942,8 @@ reset_all_delprop() { # Reset prop to delete reset_delprop() { + before_change + log_handler "Resetting prop to delete, $1." TMPDELPROPS=$(echo $DELETEPROPS | sed "s|${1}||" | tr -s " " | sed 's|^[ \t]*||') @@ -1796,6 +1958,63 @@ reset_delprop() { after_change "Reset prop to delete - $1" } +# ======================== Options functions ======================== +# Export all settings to a module configuration file +export_settings() { + before_change + log_handler "Exporting module settings." + # Load settings + . $LATEFILE + # Create export directory + mkdir -pv $EXPORTPATH + # Create file and Delete instructions + sed -n '1,59p' $MODPATH/common/propsconf_conf > $EXPORTFILE >> $LOGFILE 2>&1 + # Export settings + replace_fn CONFFINGERPRINT "\"\"" "\"$MODULEFINGERPRINT\"" $EXPORTFILE + replace_fn CONFVENDPRINT false $([ $PRINTEDIT == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFPRINTBOOT default $([ $PRINTSTAGE == 0 ] && echo "default" || $([ $PRINTSTAGE == 1 ] && echo "post" || echo "late")) $EXPORTFILE + replace_fn CONFPATCHBOOT late $([ $PRINTSTAGE == 0 ] && echo "default" || $([ $PRINTSTAGE == 1 ] && echo "post" || echo "late")) $EXPORTFILE + replace_fn CONFDEVSIM false $([ $DEVSIM == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFBRAND false $([ $BRANDSET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFNAME false $([ $NAMESET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFDEVICE false $([ $DEVICESET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFRELEASE false $([ $RELEASESET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFID false $([ $IDSET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFINCREMENTAL false $([ $INCREMENTALSET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFDISPLAY false $([ $DISPLAYSET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFSDK false $([ $SDKSET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFMANUFACTURER false $([ $MANUFACTURERSET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFMODEL false $([ $MODELSET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFDESCRIPTION true $([ $DESCRIPTIONSET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFPARTPROPS true $([ $PARTPROPSSET == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFSIMBOOT default $([ $SIMSTAGE == 0 ] && echo "default" || $([ $PRINTSTAGE == 1 ] && echo "post" || echo "late")) $EXPORTFILE + replace_fn CONFDEBUGGABLE "\"\"" $MODULEDEBUGGABLE $EXPORTFILE + replace_fn CONFSECURE "\"\"" $MODULESECURE $EXPORTFILE + replace_fn CONFTYPE "\"\"" $MODULETYPE $EXPORTFILE + replace_fn CONFTAGS "\"\"" $MODULETAGS $EXPORTFILE + replace_fn CONFSELINUX "\"\"" $MODULESELINUX $EXPORTFILE + replace_fn CONFPROPS "\"\"" "\"$CUSTOMPROPS\"" $EXPORTFILE + replace_fn CONFPROPSPOST "\"\"" "\"$CUSTOMPROPSPOST\"" $EXPORTFILE + replace_fn CONFPROPSLATE "\"\"" "\"$CUSTOMPROPSLATE\"" $EXPORTFILE + replace_fn CONFDELPROPS "\"\"" "\"$DELETEPROPS\"" $EXPORTFILE + replace_fn CONFBOOT default $([ $OPTIONBOOT == 0 ] && echo "default" || $([ $PRINTSTAGE == 1 ] && echo "post" || echo "late")) $EXPORTFILE + replace_fn CONFCOLOUR true $([ $OPTIONCOLOUR == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFWEB true $([ $OPTIONWEB == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFUPDATE true $([ $OPTIONUPDATE == 0 ] && echo "false" || echo "true") $EXPORTFILE + replace_fn CONFBACK false $([ $OPTIONBACK == 0 ] && echo "false" || echo "true") $EXPORTFILE + log_handler "Export done." + # Print info + menu_header "${C}$1${N}" + echo "" + echo "A module configuration file with" + echo "your current settings have been" + echo "saved to your internal storage," + echo "in the ${C}/mhcp${N} directory." + echo "" + echo -n "Press enter to continue..." + read -r INPUTTMP +} + # ======================== Log collecting functions ======================== # Collects useful logs and info for troubleshooting collect_logs() { diff --git a/module.prop b/module.prop index 7ee3d45..40fead8 100644 --- a/module.prop +++ b/module.prop @@ -1,6 +1,6 @@ id=MagiskHidePropsConf name=MagiskHide Props Config -version=v5.1.2-v77 +version=v5.2.0-v78 versionCode=52 author=Didgeridoohan description=Change your device's fingerprint, to pass SafetyNet's CTS Profile check. Set/reset prop values set by MagiskHide. Change any prop values easily, and set your own custom props. diff --git a/post-fs-data.sh b/post-fs-data.sh index 456929d..444d868 100644 --- a/post-fs-data.sh +++ b/post-fs-data.sh @@ -29,7 +29,7 @@ if [ -f "$VLOGFILE" ]; then mv -f $VLOGFILE $VLASTLOGFILE fi - set -x > $VLOGFILE 2>&1 + set -x 2>$VLOGFILE echo "***************************************************" > $LOGFILE 2>&1 echo "********* MagiskHide Props Config $MODVERSION ********" >> $LOGFILE 2>&1 echo "***************** By Didgeridoohan ***************" >> $LOGFILE 2>&1 diff --git a/service.sh b/service.sh index e2421b6..d7c6afb 100644 --- a/service.sh +++ b/service.sh @@ -11,7 +11,7 @@ BOOTSTAGE="late" . $MODPATH/common/util_functions.sh VLOGFILE=$MHPCPATH/propsconf_boot_verbose.log -set -x >> $VLOGFILE 2>&1 +set -x 2>>$VLOGFILE TMP_WAIT=0 until [ ! -f "$POSTCHKFILE" ] || [ "$TMP_WAIT" == 10 ]; do @@ -105,6 +105,8 @@ if [ "$PROPEDIT" == 1 ]; then resetprop -nv $ITEM $(eval "echo \$$MODULEPROP") >> $LOGFILE 2>&1 fi done + stop + start fi echo -e "\n----------------------------------------" >> $LOGFILE 2>&1 diff --git a/system/binpath/props b/system/binpath/props index e25b09b..7de3b01 100644 --- a/system/binpath/props +++ b/system/binpath/props @@ -78,7 +78,7 @@ esac if [ -f "$VLOGFILE" ]; then mv -f $VLOGFILE $VLASTLOGFILE fi -set -x > $VLOGFILE 2>&1 +set -x 2>$VLOGFILE log_handler "Running props script." @@ -148,6 +148,8 @@ invalid_input() { ;; 6) INPMSG="Enter a fingerprint or pick from the options, one at a time." ;; + 7) INPMSG="Only pick numbers, separated by a comma." + ;; esac # Find menu level @@ -432,7 +434,7 @@ menu_pick_print_sub() { IFS=$(echo -en "\n\b") for ITEM in $PRINTSLIST; do if [ "$(get_first $ITEM)" == "$2" ] || [ "$2" == "Custom" ]; then - echo "${G}$ITEMCOUNT${N} - $(get_eq_left "$ITEM")" + echo "${G}$ITEMCOUNT${N} - $(get_device "$ITEM")" ITEMCOUNT=$(($ITEMCOUNT+1)) fi done @@ -460,7 +462,7 @@ menu_pick_print_sub() { case "$ITEM" in *\;*) IFS=$SAVEIFS - menu_pick_print_version "$1" "$(get_eq_left "$ITEM")" "$(get_eq_right "$ITEM")" + menu_pick_print_version "$1" "$(get_device "$ITEM")" "$(get_eq_right "$ITEM")" INPUT2="" INPUT3="" break @@ -797,6 +799,7 @@ menu_bootstage_print_set() { case "$INPUT4" in d|D) if [ "$TMPSTAGE" != 0 ]; then + before_change OPTNEW=0 log_handler "Boot stage for $PROPTXT changed to default." replace_fn $CHNGSTAGE $TMPSTAGE $OPTNEW $LATEFILE @@ -811,6 +814,7 @@ menu_bootstage_print_set() { ;; p|P) if [ "$TMPSTAGE" != 1 ]; then + before_change OPTNEW=1 log_handler "Boot stage for $PROPTXT changed to post-fs-data." replace_fn $CHNGSTAGE $TMPSTAGE $OPTNEW $LATEFILE @@ -825,6 +829,7 @@ menu_bootstage_print_set() { ;; l|L) if [ "$TMPSTAGE" != 2 ]; then + before_change OPTNEW=2 log_handler "Boot stage for $PROPTXT changed to late_start service." replace_fn $CHNGSTAGE $TMPSTAGE $OPTNEW $LATEFILE @@ -861,6 +866,8 @@ menu_dev_sim() { DESCRIPTIONTXT="" DISPTXT="" SDKTXT="" + MANUFACTURERTXT="" + MODELTXT="" if [ "$DEVSIM" == 1 ]; then DEVSIMTXT=$ENABLE else @@ -892,6 +899,21 @@ menu_dev_sim() { else SDKTXT=$DISABLE fi + if [ "$MANUFACTURERSET" == 1 ]; then + MANUFACTURERTXT=$ENABLE + else + MANUFACTURERTXT=$DISABLE + fi + if [ "$MODELSET" == 1 ]; then + MODELTXT=$ENABLE + else + MODELTXT=$DISABLE + fi + if [ "$PARTPROPSSET" == 1 ]; then + PARTPROPSTXT=$ENABLE + else + PARTPROPSTXT=$DISABLE + fi if [ "$SIMSTAGE" == 0 ]; then STAGETXT=" ${C}(default)${N}" elif [ "$SIMSTAGE" == 1 ]; then @@ -916,30 +938,40 @@ menu_dev_sim() { echo "based on the currently set device" echo "fingerprint." echo "" - echo "Note that this feature is not" - echo "necessary to pass SafetyNet's CTS" - echo "profile check and may cause issues." echo "${R}Only enable this if you really need it" echo "and be careful about which props you" echo "enable.${N}" echo "" echo "Pick an option below." echo "" - echo "${G}s${N} - Device simulation${DEVSIMTXT}" + echo "${G} s${N} - Device simulation${DEVSIMTXT}" if [ "$DEVSIM" == 1 ]; then - echo "${G}1${N} - ro.product.brand${BRANDTXT}" - echo "${G}2${N} - ro.product.name${NAMETXT}" - echo "${G}3${N} - ro.product.device${DEVICETXT}" - echo "${G}4${N} - ro.build.version.release${RELEASETXT}" - echo "${G}5${N} - ro.build.id${IDTXT}" - echo "${G}6${N} - ro.build.version.incremental${INCREMENTALTXT}" - echo "${G}7${N} - ro.build.version.sdk${SDKTXT}" - echo "${G}8${N} - ro.build.display.id${DISPTXT}" + echo "${G} 1${N} - ro.product.brand${BRANDTXT}" + echo "${G} 2${N} - ro.product.name${NAMETXT}" + echo "${G} 3${N} - ro.product.device${DEVICETXT}" + echo "${G} 4${N} - ro.build.version.release${RELEASETXT}" + echo "${G} 5${N} - ro.build.id${IDTXT}" + echo "${G} 6${N} - ro.build.version.incremental${INCREMENTALTXT}" + echo "${G} 7${N} - ro.build.version.sdk${SDKTXT}" + echo "${G} 8${N} - ro.build.display.id${DISPTXT}" + if [ "$SIMMANUFACTURER" ] && [ "$SIMMODEL" ]; then + echo "${G} 9${N} - ro.product.manufacturer${MANUFACTURERTXT}" + echo "${G}10${N} - ro.product.model${MODELTXT}" + MANMODEN=true + else + MANMODEN=false + fi + echo "${G} a${N} - Enable/disable all props" fi - echo "${G}d${N} - ro.build.description${DESCRIPTIONTXT}" - echo "${G}t${N} - Boot stage$STAGETXT." - echo "${G}b${N} - Go back" - echo "${G}e${N} - Exit" + echo "${G} d${N} - ro.build.description${DESCRIPTIONTXT}" + echo "${G} p${N} - Use partition props$PARTPROPSTXT" + echo "${G} t${N} - Boot stage$STAGETXT" + echo "${G} b${N} - Go back" + echo "${G} e${N} - Exit" + echo "" + echo "Pick several options at once by" + echo "separating inputs with a comma." + echo "Example: 1,5,6" echo "" echo "See the module readme or the" echo "support thread @ XDA for details." @@ -950,15 +982,51 @@ menu_dev_sim() { case "$INPUT2" in s|S) menu_dev_sim_enable "$1" ;; - 1|2|3|4|5|6|7|8|d|D) - if [ "$DEVSIM" == 1 ] || [ "$INPUT2" == "d" -o "$INPUT2" == "D" ]; then - menu_dev_sim_prop "$1" "$INPUT2" - else - invalid_input 1 2 - fi + *\,*|1|2|3|4|5|6|7|8|9|10|a|A|d|D) + case "$INPUT2" in + *\,*) + NUMCHECK="$(echo $(echo $INPUT2 | sed 's|\,||g') | tr -d [0-9])" + case "$INPUT2" in + *1*|*2*|*3*|*4*|*5*|*6*|*7*|*8*|*a*|*A*|*d*|*D*) + if [ -z "$NUMCHECK" ]; then + menu_dev_sim_prop "$1" "$INPUT2" + else + invalid_input 7 2 + fi + ;; + *9*|*10*) + if [ "$MANMODEN" == "false" ]; then + invalid_input 1 2 + else + if [ -z "$NUMCHECK" ]; then + menu_dev_sim_prop "$1" "$INPUT2" + else + invalid_input 7 2 + fi + fi + ;; + *) + invalid_input 1 2 + ;; + esac + ;; + *) + if [ "$DEVSIM" == 1 ] || [ "$INPUT2" == "d" -o "$INPUT2" == "D" ]; then + if [ "$MANMODEN" == "false" ] && [ "$INPUT2" == 9 -o "$INPUT2" == 10 ]; then + invalid_input 1 2 + else + menu_dev_sim_prop "$1" "$INPUT2" + fi + else + invalid_input 1 2 + fi + ;; + esac ;; t|T) menu_bootstage_sim "$1" ;; + p|P) menu_partprops_sim "$1" "$PARTPROPSSET" + ;; b|B) INPUT="" break @@ -1023,7 +1091,13 @@ menu_dev_sim_prop() { INPUT3="" while true do + TMPTXT="" + TMPPARTS=$PRINTPARTS$ADNSIMPROPS1$ADNSIMPROPS2 + TMPITEMS="" + CNT=1 case "$2" in + *\,*) TMPTXT="Multi" + ;; 1) TMPTXT="ro.build.brand" ;; 2) TMPTXT="ro.build.name" @@ -1040,36 +1114,162 @@ menu_dev_sim_prop() { ;; 8) TMPTXT="ro.build.display.id" ;; + 9) TMPTXT="ro.product.manufacturer" + ;; + 10) TMPTXT="ro.product.model" + ;; + a|A) TMPTXT="All" + ;; d|D) TMPTXT="ro.build.description" ;; esac - TMPPROP=$(get_prop_type $TMPTXT | tr '[:lower:]' '[:upper:]') - if [ "$(get_file_value $LATEFILE "${TMPPROP}SET=")" == 0 ]; then - STATETXT="${G}enable${N}" - CURRTXT="${R}disabled${N}" - TMPVAL=1 + if [ "$TMPTXT" == "Multi" ] || [ "$TMPTXT" == "All" ]; then + TMPLST=$(echo $2 | sed 's|\,| |g') + for ITEM in $TMPPARTS; do + for INT in $TMPLST; do + if [ "$INT" == "$CNT" ]; then + if [ "$TMPITEMS" ]; then + TMPITEMS="$TMPITEMS $ITEM" + else + TMPITEMS="$ITEM" + fi + fi + done + CNT=$(($CNT+1)) + done + if [ "$TMPTXT" == "All" ]; then + TYPETXT="all" + if [ "$MANMODEN" == "true" ]; then + TMPINPUT="$TMPPARTS" + else + TMPINPUT=$PRINTPARTS$ADNSIMPROPS1 + fi + else + TYPETXT="the following" + TMPINPUT="$TMPITEMS" + fi + if [ -z "$INPUT3" ]; then + menu_header "${C}$1${N}" + echo "" + echo "Do you want to ${G}enable${N} or ${R}disable${N}" + echo "$TYPETXT simulation props?" + echo "" + if [ "$TMPTXT" == "Multi" ]; then + echo "${C}$(echo $TMPITEMS | sed 's| |\n|g')${N}" + echo "" + fi + echo "${R}Warning!${N} Some of these props" + echo "may cause issues with your device." + echo "" + echo "See the module readme or the" + echo "support thread @ XDA for details." + echo "" + echo "${G}1${N} - Enable" + echo "${G}2${N} - Disable" + echo "${G}b${N} - Go back" + echo "${G}e${N} - Exit" + echo "" + echo -n "Enter your desired option: " + read -r INPUT3 + case "$INPUT3" in + 1|2) + before_change + if [ "$INPUT3" == 1 ]; then + TMPVAL=1 + else + TMPVAL=0 + fi + for ITEM in $TMPINPUT; do + change_sim_prop "Device simulation" "$ITEM" "$TMPVAL" "none" + done + INPUT2="" + after_change "$1" + break + ;; + b|B) + INPUT2="" + break + ;; + e|E) exit_fn + ;; + *) invalid_input 1 3 + ;; + esac + fi else - STATETXT="${R}disable${N}" - CURRTXT="${G}enabled${N}" - TMPVAL=0 + TMPPROP=$(get_prop_type $TMPTXT | tr '[:lower:]' '[:upper:]') + if [ "$(get_file_value $LATEFILE "${TMPPROP}SET=")" == 0 ]; then + STATETXT="${G}enable${N}" + CURRTXT="${R}disabled${N}" + TMPVAL=1 + else + STATETXT="${R}disable${N}" + CURRTXT="${G}enabled${N}" + TMPVAL=0 + fi + if [ -z "$INPUT3" ]; then + menu_header "${C}$1${N}" + echo "" + echo "Do you want to $STATETXT simulating" + echo "${C}${TMPTXT}${N}?" + echo "It is currently $CURRTXT." + echo "" + echo -n "Enter ${G}y${N}(es), ${G}n${N}(o) or ${G}e${N}(xit): " + read -r INPUT3 + case "$INPUT3" in + y|Y) + if [ "$TMPPROP" == "DESCRIPTION" ]; then + change_sim_descr "$1" "$TMPVAL" + else + change_sim_prop "$1" "$TMPTXT" "$TMPVAL" + fi + INPUT2="" + break + ;; + n|N) + INPUT2="" + break + ;; + e|E) exit_fn + ;; + *) invalid_input 3 3 + ;; + esac + fi fi + done +} + +# Third menu level - Partition props +menu_partprops_sim() { + INPUT3="" + while true + do if [ -z "$INPUT3" ]; then + if [ "$2" == "1" ]; then + CURRTXT="enabled" + TMPTXT="disable" + OPTCURR=1 + OPTNEW=0 + else + CURRTXT="disabled" + TMPTXT="enable" + OPTCURR=0 + OPTNEW=1 + fi menu_header "${C}$1${N}" echo "" - echo "Do you want to $STATETXT simulating" - echo "${C}${TMPTXT}${N}?" - echo "It is currently $CURRTXT." + echo "Partition specific props simulation" + echo "is currently ${G}$CURRTXT${N}." + echo "" + echo "Do you want to ${C}$TMPTXT${N} it?" echo "" echo -n "Enter ${G}y${N}(es), ${G}n${N}(o) or ${G}e${N}(xit): " read -r INPUT3 fi case "$INPUT3" in y|Y) - if [ "$TMPPROP" == "DESCRIPTION" ]; then - change_sim_descr "$1" "$TMPVAL" - else - change_sim_prop "$1" "$TMPTXT" "$TMPVAL" - fi + change_sim_partprops "$1" "$OPTNEW" INPUT2="" break ;; @@ -1117,6 +1317,7 @@ menu_bootstage_sim() { case "$INPUT3" in d|D) if [ "$SIMSTAGE" != 0 ]; then + before_change OPTNEW=0 log_handler "Boot stage changed to default." replace_fn SIMSTAGE $SIMSTAGE $OPTNEW $LATEFILE @@ -1131,6 +1332,7 @@ menu_bootstage_sim() { ;; p|P) if [ "$SIMSTAGE" != 1 ]; then + before_change OPTNEW=1 log_handler "Boot stage changed to post-fs-data." replace_fn SIMSTAGE $SIMSTAGE $OPTNEW $LATEFILE @@ -1145,6 +1347,7 @@ menu_bootstage_sim() { ;; l|L) if [ "$SIMSTAGE" != 2 ]; then + before_change OPTNEW=2 log_handler "Boot stage changed to late_start service." replace_fn SIMSTAGE $SIMSTAGE $OPTNEW $LATEFILE @@ -1191,7 +1394,7 @@ menu_magiskhide_props() { if [ "$RETYPE" == "true" ]; then TYPETXT=$ACTIVE fi - if [ "RETAGS" == "true" ]; then + if [ "$RETAGS" == "true" ]; then TAGSTXT=$ACTIVE fi if [ "$RESELINUX" == "true" ]; then @@ -1206,12 +1409,19 @@ menu_magiskhide_props() { echo "${G}3${N} - ro.build.type${TYPETXT}" echo "${G}4${N} - ro.build.tags${TAGSTXT}" echo "${G}5${N} - ro.build.selinux${SELINUXTXT}" + if [ "$PROPCOUNT" -lt 5 ]; then + echo "${G}a${N} - Change all props" + fi if [ "$PROPCOUNT" -gt 1 ]; then echo "${G}r${N} - Reset all props" fi echo "${G}b${N} - Go back to main menu" echo "${G}e${N} - Exit" echo "" + echo "Pick several options at once by" + echo "separating inputs with a comma." + echo "Example: 1,5,6" + echo "" echo "See the module readme or the" echo "support thread @ XDA for details." echo "" @@ -1219,17 +1429,31 @@ menu_magiskhide_props() { read -r INPUT2 fi case "$INPUT2" in - 1) menu_change_prop "ro.debuggable" $CURRDEBUGGABLE $ORIGDEBUGGABLE $MODULEDEBUGGABLE + *\,*) + if [ -z "$(echo $(echo $INPUT2 | sed 's|\,||g') | tr -d [0-9])" ]; then + menu_change_prop "Change multiple props" $INPUT2 + else + invalid_input 7 2 + fi + ;; + 1) menu_change_prop "ro.debuggable" $CURRDEBUGGABLE $ORIGDEBUGGABLE $MODULEDEBUGGABLE ;; - 2) menu_change_prop "ro.secure" $CURRSECURE $ORIGSECURE $MODULESECURE + 2) menu_change_prop "ro.secure" $CURRSECURE $ORIGSECURE $MODULESECURE ;; - 3) menu_change_prop "ro.build.type" $CURRTYPE $ORIGTYPE $MODULETYPE + 3) menu_change_prop "ro.build.type" $CURRTYPE $ORIGTYPE $MODULETYPE ;; - 4) menu_change_prop "ro.build.tags" $CURRTAGS $ORIGTAGS $MODULETAGS + 4) menu_change_prop "ro.build.tags" $CURRTAGS $ORIGTAGS $MODULETAGS ;; - 5) menu_change_prop "ro.build.selinux" $CURRSELINUX $ORIGSELINUX $MODULESELINUX + 5) menu_change_prop "ro.build.selinux" $CURRSELINUX $ORIGSELINUX $MODULESELINUX ;; - r|R) + a|A) + if [ "$PROPCOUNT" -lt 5 ]; then + menu_change_prop "Change all props" + else + invalid_input 1 2 + fi + ;; + r|R) if [ "$PROPCOUNT" -gt 1 ]; then menu_reset_prop_all "Reset all props" else @@ -1254,46 +1478,83 @@ menu_change_prop() { while true do if [ -z "$INPUT3" ]; then - PROP=$(get_prop_type "$1") - REPROP=$(echo "RE${PROP}" | tr '[:lower:]' '[:upper:]') menu_header "${C}$1${N}" echo "" - # Checks if the prop exists - if [ "$2" ]; then - if [ "$4" ] && [ "$(get_file_value $LATEFILE "${REPROP}=")" == "true" ]; then - PROPMODULETXT=", by this module" - BACKTXT=" back" - else - PROPMODULETXT="" - BACKTXT="" - fi - echo "Currently set to ${C}$2${N}${PROPMODULETXT}." - if [ "$2" != "$3" ]; then - echo "The original value is ${C}$3${N}." - fi + if [ "$1" == "Change multiple props" ]; then + TMPITEMS="" + CNT=1 + TMPLST=$(echo $2 | sed 's|\,| |g') + for ITEM in $PROPSLIST; do + for INT in $TMPLST; do + if [ "$INT" == "$CNT" ]; then + if [ "$TMPITEMS" ]; then + TMPITEMS="$TMPITEMS $ITEM" + else + TMPITEMS="$ITEM" + fi + fi + done + CNT=$(($CNT+1)) + done + echo "Do you want to change the" + echo "following props:" echo "" - safe_props "$1" $2 - change_to "$1" $2 - if [ "$SAFE" == 1 ]; then - echo "You currently have the safe value set." - echo "Are you sure you want to change it$BACKTXT to ${C}$CHANGE${N}?" + echo "${C}$(echo $TMPITEMS | sed 's| |\n|g')${N}" + elif [ "$1" == "Change all props" ]; then + echo "Do you want to change all" + echo "MagiskHide sensitive props?" + TMPITEMS=$PROPSLIST + else + PROP=$(get_prop_type "$1") + REPROP=$(echo "RE${PROP}" | tr '[:lower:]' '[:upper:]') + # Checks if the prop exists + if [ "$2" ]; then + if [ "$4" ] && [ "$(get_file_value $LATEFILE "${REPROP}=")" == "true" ]; then + PROPMODULETXT=", by this module" + BACKTXT=" back" + else + PROPMODULETXT="" + BACKTXT="" + fi + echo "Currently set to ${C}$2${N}${PROPMODULETXT}." + if [ "$2" != "$3" ]; then + echo "The original value is ${C}$3${N}." + fi + echo "" + safe_props "$1" $2 + change_to "$1" $2 + if [ "$SAFE" == 1 ]; then + echo "You currently have the safe value set." + echo "Are you sure you want to change it$BACKTXT to ${C}$CHANGE${N}?" + else + echo "Do you want to change it${BACKTXT} to ${C}$CHANGE${N}?" + fi else - echo "Do you want to change it${BACKTXT} to ${C}$CHANGE${N}?" + echo "This prop doesn't currently exist on your system." + echo "" + echo "Nothing to do... Returning to main menu." + sleep 3 + INPUT2="" + break fi - echo "" - echo -n "Enter ${G}y${N}(es), ${G}n${N}(o) or ${G}e${N}(xit): " - read -r INPUT3 - else - INPUT3="n" - echo "This prop doesn't currently exist on your system." - echo "" - echo "Nothing to do... Returning to main menu." - sleep 3 fi + echo "" + echo -n "Enter ${G}y${N}(es), ${G}n${N}(o) or ${G}e${N}(xit): " + read -r INPUT3 fi case "$INPUT3" in y|Y) - if [ "$PROPMODULETXT" ]; then + if [ "$1" == "Change multiple props" ] || [ "$1" == "Change all props" ]; then + for ITEM in $TMPITEMS; do + PROP=$(get_prop_type "$ITEM") + CURRPROP=$(echo "CURR${PROP}" | tr '[:lower:]' '[:upper:]') + TMPVAL="$(eval "echo \$$CURRPROP")" + change_to "$ITEM" $TMPVAL + change_prop "$ITEM" $CHANGE "none" + . $LATEFILE + done + after_change "$1" + elif [ "$PROPMODULETXT" ]; then menu_reset_prop "Reset $1" "$1" else change_prop "$1" $CHANGE @@ -1416,7 +1677,7 @@ menu_custom_props() { if [ "$CUSTOMPROPS" ]; then echo "${C}Default boot stage${G}${DEFSTAGETXT}${N}" for ITEM in $CUSTOMPROPS; do - echo "${G}$ITEMCOUNT${N} - $(get_eq_left "$ITEM")" + echo "${G}$ITEMCOUNT${N} - $(get_device "$ITEM")" ITEMCOUNT=$(($ITEMCOUNT+1)) done fi @@ -1424,7 +1685,7 @@ menu_custom_props() { echo "" echo "${C}post-fs-data boot stage${N}" for ITEM in $CUSTOMPROPSPOST; do - echo "${G}$ITEMCOUNT${N} - $(get_eq_left "$ITEM")" + echo "${G}$ITEMCOUNT${N} - $(get_device "$ITEM")" ITEMCOUNT=$(($ITEMCOUNT+1)) done fi @@ -1432,7 +1693,7 @@ menu_custom_props() { echo "" echo "${C}late_start service boot stage${N}" for ITEM in $CUSTOMPROPSLATE; do - echo "${G}$ITEMCOUNT${N} - $(get_eq_left "$ITEM")" + echo "${G}$ITEMCOUNT${N} - $(get_device "$ITEM")" ITEMCOUNT=$(($ITEMCOUNT+1)) done fi @@ -1495,7 +1756,7 @@ menu_custom_props() { ITEMCOUNT=1 for ITEM in $CUSTOMPROPSLIST; do if [ "$ITEMCOUNT" == "$INPUT2" ]; then - menu_edit_custprop "$(get_eq_left "$ITEM")" + menu_edit_custprop "$(get_device "$ITEM")" break fi ITEMCOUNT=$(($ITEMCOUNT+1)) @@ -2298,6 +2559,7 @@ menu_options() { echo "${G}3${N} - Fingerprints list check (currently ${CP}${PRINTSCHKTXT}${N})" echo "${G}4${N} - Automatic fingerprints update (currently ${CU}${UPDATECHKTXT}${N})" echo "${G}5${N} - Background boot script (currently ${CB}${BACKCHKTXT}${N})" + echo "${G}x${N} - Export settings" echo "${G}r${N} - Reset all settings" if [ "$2" != "s" ]; then echo "${G}b${N} - Go back to main menu" @@ -2311,17 +2573,19 @@ menu_options() { read -r INPUT2 fi case "$INPUT2" in - 1) menu_options_bootstage "Boot stage" "$BOOTTXT" + 1) menu_options_bootstage "Boot stage" "$BOOTTXT" ;; - 2) menu_option_chng "Script colours" "$COLOURTXT" "Script colours are" "OPTIONCOLOUR" + 2) menu_option_chng "Script colours" "$COLOURTXT" "Script colours are" "OPTIONCOLOUR" ;; - 3) menu_option_chng "Fingerprints list check" "$PRINTSCHKTXT" "Automatic updating of the fingerprints\nlist is" "OPTIONWEB" + 3) menu_option_chng "Fingerprints list check" "$PRINTSCHKTXT" "Automatic updating of the fingerprints\nlist is" "OPTIONWEB" ;; - 4) menu_option_chng "Automatic fingerprints update" "$UPDATECHKTXT" "Automatic updating of the applied\nfingerprint is" "OPTIONUPDATE" + 4) menu_option_chng "Automatic fingerprints update" "$UPDATECHKTXT" "Automatic updating of the applied\nfingerprint is" "OPTIONUPDATE" ;; - 5) menu_option_chng "Background boot script" "$BACKCHKTXT" "Background boot script execution\nis" "OPTIONBACK" + 5) menu_option_chng "Background boot script" "$BACKCHKTXT" "Background boot script execution\nis" "OPTIONBACK" ;; - r|R) menu_options_reset "Reset all settings" + x|X) menu_option_export "Export settings" + ;; + r|R) menu_options_reset "Reset all settings" ;; b|B) if [ "$2" == "s" ]; then @@ -2368,6 +2632,7 @@ menu_options_bootstage() { case "$INPUT3" in s|S) if [ "$OPTIONBOOT" != 0 ]; then + before_change OPTNEW=0 log_handler "Boot stage changed to system.prop." replace_fn OPTIONBOOT $OPTIONBOOT $OPTNEW $LATEFILE @@ -2382,6 +2647,7 @@ menu_options_bootstage() { ;; p|P) if [ "$OPTIONBOOT" != 1 ]; then + before_change OPTNEW=1 log_handler "Boot stage changed to post-fs-data." replace_fn OPTIONBOOT $OPTIONBOOT $OPTNEW $LATEFILE @@ -2396,6 +2662,7 @@ menu_options_bootstage() { ;; l|L) if [ "$OPTIONBOOT" != 2 ]; then + before_change OPTNEW=2 log_handler "Boot stage changed to late_start service." replace_fn OPTIONBOOT $OPTIONBOOT $OPTNEW $LATEFILE @@ -2472,6 +2739,40 @@ menu_option_chng() { done } +# Third menu level - Export all settings to a module configuration file +menu_option_export() { + INPUT3="" + while true + do + if [ -z "$INPUT3" ]; then + menu_header "${C}$1${N}" + echo "" + echo "This will will export all settings" + echo "to a module configuration file." + echo "" + echo "Do you want to continue?" + echo "" + echo -n "Enter ${G}y${N}(es), ${G}n${N}(o) or ${G}e${N}(xit): " + read -r INPUT3 + fi + case "$INPUT3" in + y|Y) + export_settings $1 + INPUT2="" + break + ;; + n|N) + INPUT2="" + break + ;; + e|E) exit_fn + ;; + *) invalid_input 3 3 + ;; + esac + done +} + # Third menu level - Options, reset all options menu_options_reset() { INPUT3="" @@ -2494,6 +2795,8 @@ menu_options_reset() { replace_fn OPTIONBOOT $OPTIONBOOT 0 $LATEFILE replace_fn OPTIONCOLOUR $OPTIONCOLOUR 1 $LATEFILE replace_fn OPTIONWEB $OPTIONWEB 1 $LATEFILE + replace_fn OPTIONUPDATE $OPTIONUPDATE 1 $LATEFILE + replace_fn OPTIONBACK $OPTIONBACK 0 $LATEFILE # Load module values . $LATEFILE INPUT2=""