Rooting the LG Exalt LTE from Verizon (LG VN220) - Request for Advice - Upgrading, Modifying and Unlocking

TL.DR; Trying to root new Verizon Android flip-phone with Marshmallow 6.0.1, ARMv7. Firmware version: VN22010B. Seems to to be locked down.
Click to expand...
Click to collapse
I'm trying to root the LG Exalt LTE, or LG VN220, from Verizon. Initially, I've attempted the common rooting kits, such as KingoRoot as well as the tools described around XDA. However all failed. I suspect the cause to be the restrictive permissions of /data/local/tmp, which prevents execution of binaries. I believe any kit using this location will likely fail to achieve anything.
As such, I've been looking to achieve the same using manual techniques. The first step, as in most rooting activity is to put the device into USB debugging mode. To do this on the VN220, first compose ##7764726220. When asked for a service code, use 000000 to access a special menu. Select the Developer Options > USB Debugging and select On. There is an additional menu below named Select USB configuration, from which you can select Media Transfer Protocol or RNDIS among other options.
With that done, you can verify that you can now communicate with the device via ADB. To do so, download the Minimal ADB and Fastboot bundle. While I was successful in querying the device with ADB with
Code:
adb devices
Trying to use fastboot simply outputs "< waiting for device >" indefinitively. It is also possible to open a shell using ADB, however attempting ADB with root will fail. I don't think this is caused by having wrong drivers, as all the other tools could detect the phone (see below), but rather a permission issue.
From there, I've try to boot in different modes, which are accessible by turning off the phone, and then powering up the device while holding the Volume Down button. This will boot into a white screen with some options, including the "Safe Mode" option which I attempted. The second mode is the "Firmware Upgrade" mode which is accessible by again, powering down the phone and powering it up again, but this time holding the Volume Up for 3 seconds.
Attempting to run the following fails:
Code:
fastboot oem unlock
That being said, I later found out that LG does provides a legitimate way to unlock the bootloader via their LG developer portal. Unfortunately the VN220 is not in the list of supported devices, nor does the procedure given applies to this phone. Additionally, it requires the device ID which fails also since it requires fastboot:
Code:
fastboot oem device-id
The other attempt I've tried is using the LG Mobile Support Too l and while it was useful to obtain the KDZ file from their website, it also failed to apply the update. LGUP didn't recognise the model. (Note that both requires the USB mode to be RNDIS to detect the phone)
Trying to run apps from the internal storage such as su or even using the chmod command only results in "Operation not permitted" messages. So even temporary root seems rather difficult.
At this point, I'd like to know if anyone has any advice on additional things I could try to root the phone, or even have temporary root.
Thanks in advance
@cyberrecce

Why?
First of all thank you, I've been looking for that service code to enable developer settings / adb since I discovered the phone secretly runs Android. But I don't see why we would need root, I've been using adb to side load apps since I can't get to a menu that allows it

jfn0802 said:
First of all thank you, I've been looking for that service code to enable developer settings / adb since I discovered the phone secretly runs Android. But I don't see why we would need root, I've been using adb to side load apps since I can't get to a menu that allows it
Click to expand...
Click to collapse
1. Why? To install a custom ROM.
2. Did you get any issue with certificates when side-loading apps? I keep getting INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES. Can't seem to find the "Install from Unknown Sources" option.

Same problem
InfectedPackets said:
1. Why? To install a custom ROM.
2. Did you get any issue with certificates when side-loading apps? I keep getting INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES. Can't seem to find the "Install from Unknown Sources" option.
Click to expand...
Click to collapse
i get the same error. did you find a solution? i would really appreciate it

InfectedPackets said:
1. Why? To install a custom ROM.
2. Did you get any issue with certificates when side-loading apps? I keep getting INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES. Can't seem to find the "Install from Unknown Sources" option.
Click to expand...
Click to collapse
MendilR said:
i get the same error. did you find a solution? i would really appreciate it
Click to expand...
Click to collapse
re: the certificate error for side loading apps...
Code:
adb shell settings put secure install_non_market_apps 1
turns off the unknown source block, but I'm still getting INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
Could the apk itself I'm trying to use have a bad certificate? Or is there another solution?

InfectedPackets said:
I'm trying to root the LG Exalt LTE, or LG VN220, from Verizon. Initially, I've attempted the common rooting kits, such as KingoRoot as well as the tools described around XDA. However all failed. I suspect the cause to be the restrictive permissions of /data/local/tmp, which prevents execution of binaries. I believe any kit using this location will likely fail to achieve anything.
As such, I've been looking to achieve the same using manual techniques. The first step, as in most rooting activity is to put the device into USB debugging mode. To do this on the VN220, first compose ##7764726220. When asked for a service code, use 000000 to access a special menu. Select the Developer Options > USB Debugging and select On. There is an additional menu below named Select USB configuration, from which you can select Media Transfer Protocol or RNDIS among other options.
With that done, you can verify that you can now communicate with the device via ADB. To do so, download the Minimal ADB and Fastboot bundle. While I was successful in querying the device with ADB with
Code:
adb devices
Trying to use fastboot simply outputs "< waiting for device >" indefinitively. It is also possible to open a shell using ADB, however attempting ADB with root will fail. I don't think this is caused by having wrong drivers, as all the other tools could detect the phone (see below), but rather a permission issue.
From there, I've try to boot in different modes, which are accessible by turning off the phone, and then powering up the device while holding the Volume Down button. This will boot into a white screen with some options, including the "Safe Mode" option which I attempted. The second mode is the "Firmware Upgrade" mode which is accessible by again, powering down the phone and powering it up again, but this time holding the Volume Up for 3 seconds.
Attempting to run the following fails:
Code:
fastboot oem unlock
That being said, I later found out that LG does provides a legitimate way to unlock the bootloader via their LG developer portal. Unfortunately the VN220 is not in the list of supported devices, nor does the procedure given applies to this phone. Additionally, it requires the device ID which fails also since it requires fastboot:
Code:
fastboot oem device-id
The other attempt I've tried is using the LG Mobile Support Too l and while it was useful to obtain the KDZ file from their website, it also failed to apply the update. LGUP didn't recognise the model. (Note that both requires the USB mode to be RNDIS to detect the phone)
Trying to run apps from the internal storage such as su or even using the chmod command only results in "Operation not permitted" messages. So even temporary root seems rather difficult.
At this point, I'd like to know if anyone has any advice on additional things I could try to root the phone, or even have temporary root.
Thanks in advance
@cyberrecce
Click to expand...
Click to collapse
Just curious - any success or updates. I can't seem to get past " INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES"

For installing apps I'm still not getting past INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
I even tried pulling an apk from my LG G4 that successfully installed on that device and tried installing it on the Exalt, but same error.
The biggest reason I've seen for the INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES is apks that are signed poorly. When I check the apks I'm using for their signatures with the JDK it says one or more of their signatures lack a timestamp which can cause problems.
Also, downloading the apk from the Exalt's browser and trying to install from either
settings > phone settings > storage > phone > explore > downloads > open > install
or
tools > file manager > internal storage > downloads > open > install
has been coming up with "app not installed" after it tries to install the apk.
I'm not really giving up though, I just don't really know where to go from here.

effulgent.unicorn said:
For installing apps I'm still not getting past INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
I even tried pulling an apk from my LG G4 that successfully installed on that device and tried installing it on the Exalt, but same error.
The biggest reason I've seen for the INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES is apks that are signed poorly. When I check the apks I'm using for their signatures with the JDK it says one or more of their signatures lack a timestamp which can cause problems.
Also, downloading the apk from the Exalt's browser and trying to install from either
settings > phone settings > storage > phone > explore > downloads > open > install
or
tools > file manager > internal storage > downloads > open > install
has been coming up with "app not installed" after it tries to install the apk.
I'm not really giving up though, I just don't really know where to go from here.
Click to expand...
Click to collapse
Any ideas on how to get past - "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES"?

PAULC91316 said:
Any ideas on how to get past - "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES"?
Click to expand...
Click to collapse
I'm still at the same place I was the other day when I posted this.
effulgent.unicorn said:
For installing apps I'm still not getting past INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
I even tried pulling an apk from my LG G4 that successfully installed on that device and tried installing it on the Exalt, but same error.
The biggest reason I've seen for the INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES is apks that are signed poorly. When I check the apks I'm using for their signatures with the JDK it says one or more of their signatures lack a timestamp which can cause problems.
Also, downloading the apk from the Exalt's browser and trying to install from either
settings > phone settings > storage > phone > explore > downloads > open > install
or
tools > file manager > internal storage > downloads > open > install
has been coming up with "app not installed" after it tries to install the apk.
I'm not really giving up though, I just don't really know where to go from
here.
Click to expand...
Click to collapse

InfectedPackets said:
The other attempt I've tried is using the LG Mobile Support Too l and while it was useful to obtain the KDZ file from their website, it also failed to apply the update. LGUP didn't recognise the model. (Note that both requires the USB mode to be RNDIS to detect the phone)
Click to expand...
Click to collapse
Can you please share with us the KDZ file?
Thanks!

anyone?

You will need to:
- unlock it’s Bootloader. If the “fastboot oem unlock” command will not work (and I’m quite sure it will not, since we’re talking about a USA LG device), you can stop here and throw the phone out the window.
- if by some any miracle you will be able to unlock the bootloader, you have two ways of rooting it:
1. Using TWRP and a superuser zip file (magisk or the now Chinese owned supersu). The main problem with this is that you will need to compile TWRP yourself, since I doubt anyone will bother for such an obscure device.
2. Using a prerooted boot image. You will need the stock boot image, install the latest magisk manager, let it root it and then flash it via fastboot. This is particularly difficult because you will need to decrypt the kdz file (if any available) in order to get the boot.img
Even if by a greater miracle you will be able to get 1 or 2 working, there still is a huge chance that the fastboot flash command will be disabled.
Forget about solutions like king/kingoroot. Best case scenario they will fail. Worst case scenario they will softbrick the phone by gaining temporary root and then modifying /system. That will in turn trigger dm-verity which will cause the soft brick.
Forget about the scams like oneclickroot. Their so called techs will try the aforementioned and fail and you will waste your $40.
Sorry To deliver the bad news, but there’s no way out of it.

Thanks for taking your time, to help me.
I will check if I can unlock the bootloader.
Thanks alot

r3w1NNNd said:
You will need to:
- unlock it’s Bootloader. If the “fastboot oem unlock” command will not work (and I’m quite sure it will not, since we’re talking about a USA LG device), you can stop here and throw the phone out the window.
- if by some any miracle you will be able to unlock the bootloader, you have two ways of rooting it:
1. Using TWRP and a superuser zip file (magisk or the now Chinese owned supersu). The main problem with this is that you will need to compile TWRP yourself, since I doubt anyone will bother for such an obscure device.
2. Using a prerooted boot image. You will need the stock boot image, install the latest magisk manager, let it root it and then flash it via fastboot. This is particularly difficult because you will need to decrypt the kdz file (if any available) in order to get the boot.img
Even if by a greater miracle you will be able to get 1 or 2 working, there still is a huge chance that the fastboot flash command will be disabled.
Forget about solutions like king/kingoroot. Best case scenario they will fail. Worst case scenario they will softbrick the phone by gaining temporary root and then modifying /system. That will in turn trigger dm-verity which will cause the soft brick.
Forget about the scams like oneclickroot. Their so called techs will try the aforementioned and fail and you will waste your $40.
Sorry To deliver the bad news, but there’s no way out of it.
Click to expand...
Click to collapse
Any sage advice on the [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] issue when sideloading apps?
 @jfn0802 said they had success with sideloading, but haven't been online in ages, and none of the rest of us seem to have had the same success. Minimum, that's what I would like to accomplish.
[side note, has anyone switched from Verizon with this phone? I'm looking to, but I'm wondering a couple of things like, does verizon have the mobile hotspot function restricted from use on other carriers? & etc & just wondering how it's doing off-verizon for anyone.]

effulgent.unicorn said:
Any sage advice on the [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] issue when sideloading apps?
@jfn0802 said they had success with sideloading, but haven't been online in ages, and none of the rest of us seem to have had the same success. Minimum, that's what I would like to accomplish.
[side note, has anyone switched from Verizon with this phone? I'm looking to, but I'm wondering a couple of things like, does verizon have the mobile hotspot function restricted from use on other carriers? & etc & just wondering how it's doing off-verizon for anyone.]
Click to expand...
Click to collapse
my freinds are using it in Canada with videotron and everything works, without unlocking

Just to add a clue what to look at, I think these devices are from Verizon and they are blocking anonymous apps from being installed

GenTech Solution said:
Just to add a clue what to look at, I think these devices are from Verizon and they are blocking anonymous apps from being installed
Click to expand...
Click to collapse
Yes right, but how can I go around it?
Ps. I was able to uninstall apps (I removed my Verizon)
With adb shell, as the user 0, but with adb normal uninstall didn't work, but when I try to install with adb shell, it gave the same certificate erorr

GenTech Solution said:
Just to add a clue what to look at, I think these devices are from Verizon and they are blocking anonymous apps from being installed
Click to expand...
Click to collapse
Isn't that what turning on the "install from unknown sources" option should do? I still get the Install Parse Failed after switching it on with ADB.
@98jbsz I've tried to uninstall without success. What way did you do it? And does it just leave a blank space in the menu screen?
[Less on topic, sorry again, but has anyone seen the LG Wine LTE? http://www.lg.com/us/cell-phones/lg-UN220-lg-wine
It's strikingly similar to our friend the Exalt LTE here, but it seems less carrier branded/available at US Cellular, so I'm wondering if that would make a difference?
Major differences Wine LTE has more 4G bands (2/4/5/12/25) versus Exalt (4/5/13), which kind of has me kicking myself, because travel and 4G was one of the reasons I bought the Exalt. Both have quadband GSM and WCDMA, but interestingly the Wine also has CDMA.
Beyond that, there are some more smaller differences I scavenged from their LG pages, Exalt has more bluetooth profiles, supports more music formats, has more GPS capabilities, wifi calling, and 1 more ringtone. Wine has more supported video formats, and an FM radio.
I'm curious about what/if the Wine would have for sms messaging (I doubt it'd have Verizon's message+) and instead of my Verizon app...]

98jbsz said:
Yes right, but how can I go around it?
Ps. I was able to uninstall apps (I removed my Verizon)
With adb shell, as the user 0, but with adb normal uninstall didn't work, but when I try to install with adb shell, it gave the same certificate erorr
Click to expand...
Click to collapse
Alright, I also managed to uninstall my verizon and verizon's cloud app using
Code:
adb shell and the pm uninstall -k --user 0
But the Verizon apps folder on the menu screen remains, although it's empty. Any ideas on how to remove it?
Then I tried to install an apk using
Code:
pm install
and it came back with [INSTALL_FAILED_INVALID_URI] which...is a different than [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES], but not better.

right, but when you first copy the APK to the phone, and then you install it, you will see the [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] error. still not a solution

Related

How to disable carrier-check for native WiFi Tether (no root)

*EDIT* This appears to only be working for people with NON-unlimited data plans. I apologize for the inconvenience...
Saw this over in the AT&T subforum, originally posted by @ExTREmE99 , just reposting here.
This will disable the carrier check on your Verizon G4 and allow you to use the native WiFi tether - no root needed!
1. Enable developer mode (Go to Settings -> About phone, and click on the build number until the developer mode is enabled).
2. Enable USB debugging under Settings -> Developer options
3. Connect the device with a USB cable to a computer with the Android SDK platform tools installed
4. Start an adb shell: adb shell
5. In the adb shell, run these commands one by one:
settings put global tether_dun_required 0
settings put system tether_entitlement_check_state 0
reboot
When your phone comes back up you will have a fully functional native WiFi tether
i must be doing something wrong because i still get the "you need a subscription" popup
Worked for me, thanks! Needed this a few days ago and couldn't use it n was like "F***, wish I had root" hahaha. Oh and also shouldn't this be posted in General?
jrc27 said:
i must be doing something wrong because i still get the "you need a subscription" popup
Click to expand...
Click to collapse
Same here, did I do this right?
Code:
$ adb shell
[email protected]:/ $ settings put global tether_dun_required 0
[email protected]:/ $ settings put system tether_entitlement_check_state 0
[email protected]:/ $ reboot
Congobongo said:
Same here, did I do this right?
Code:
$ adb shell
[email protected]:/ $ settings put global tether_dun_required 0
[email protected]:/ $ settings put system tether_entitlement_check_state 0
[email protected]:/ $ reboot
Click to expand...
Click to collapse
when do you see the subscription message?
try typing:
adb devices
you should see a string of characters listing your device. if it shows no device, then you need to double check that you have your device drivers installed
Tomyk89 said:
when do you see the subscription message?
try typing:
adb devices
you should see a string of characters listing your device. if it shows no device, then you need to double check that you have your device drivers installed
Click to expand...
Click to collapse
I see it after i reboot and try using the hotspot app
jrc27 said:
I see it after i reboot and try using the hotspot app
Click to expand...
Click to collapse
don't use the hotspot app - in fact, disable that one.
You want to use the built in functionality to tether (not technically an app)
Go to settings, More (under wireless networks), then "Mobile Hotspot". You can setup your SSID and password in there. Also, you can create a shortcut in your notification bar by scrolling over to the right side, clicking edit, then checking the box next to "Mobile Hotspot"
Hope that helps.
Tomyk89 said:
don't use the hotspot app - in fact, disable that one.
You want to use the built in functionality to tether (not technically an app)
Go to settings, More (under wireless networks), then "Mobile Hotspot". You can setup your SSID and password in there. Also, you can create a shortcut in your notification bar by scrolling over to the right side, clicking edit, then checking the box next to "Mobile Hotspot"
Hope that helps.
Click to expand...
Click to collapse
I can't even find the damn app to disable it.
I tried as you suggested, going in through the settings and i still get the verizon C*ckblock...
jrc27 said:
I can't even find the damn app to disable it.
I tried as you suggested, going in through the settings and i still get the verizon C*ckblock...
Click to expand...
Click to collapse
Could you try disabling the verizon hotspot app? Mine was disabled way before I discovered this so I may need to add this step to the instructions. you may want to go through the steps one more time after that to ensure everything is set correctly. Don't forget to restart either. It works great on mine so it should for yours as well - unless you took the update a week ago?
Let me know - Thanks!
Tomyk89 said:
Could you try disabling the verizon hotspot app? Mine was disabled way before I discovered this so I may need to add this step to the instructions. you may want to go through the steps one more time after that to ensure everything is set correctly. Don't forget to restart either. It works great on mine so it should for yours as well - unless you took the update a week ago?
Let me know - Thanks!
Click to expand...
Click to collapse
I've been very careful not to take the update. Is the hot spot app have a weird name or something? I can't seem to find it in the app manager or using rom toolbox
jrc27 said:
I've been very careful not to take the update. Is the hot spot app have a weird name or something? I can't seem to find it in the app manager or using rom toolbox
Click to expand...
Click to collapse
hmmm i think I'm confused. My Hotspot app is apparently still in my app drawer. When i click on it it just takes me to the native hotspot functionality.
Honestly I'd attempt to run those commands again. It would help if you took a screen shot of the command prompt window after running all of the commands. After each command it should pause for a second or two then jump to the next line with no errors or responses.
Is your USB debugging on? Also, are you in MTP or PTP USB mode when plugged into your PC?
jrc27 said:
i must be doing something wrong because i still get the "you need a subscription" popup
Click to expand...
Click to collapse
Should it be? I assumed stuff like this went under the Help section since it was helping people. Maybe I'm wrong. If a MOD would like to correct me and maybe move the thread, feel free.
Tomyk89 said:
hmmm i think I'm confused. My Hotspot app is apparently still in my app drawer. When i click on it it just takes me to the native hotspot functionality.
Honestly I'd attempt to run those commands again. It would help if you took a screen shot of the command prompt window after running all of the commands. After each command it should pause for a second or two then jump to the next line with no errors or responses.
Is your USB debugging on? Also, are you in MTP or PTP USB mode when plugged into your PC?
Click to expand...
Click to collapse
Heading to bed...I'll give it another go in the morning
Thanks again for the help, i appreciate it!
jrc27 said:
Heading to bed...I'll give it another go in the morning
Thanks again for the help, i appreciate it!
Click to expand...
Click to collapse
no problem dude. try some of my suggestions tomorrow and get back to me. feel free to PM and we can post the final solution up here as to not fill the the thread up with troubleshooting.
No Go...
Tried multiple times and could not get it to work. adb looked successful but after reboot I still get a subscription check.
joebrady119 said:
Tried multiple times and could not get it to work. adb looked successful but after reboot I still get a subscription check.
Click to expand...
Click to collapse
have you taken the latest OTA update?
Tomyk89 said:
have you taken the latest OTA update?
Click to expand...
Click to collapse
Have not taken any OTA.
This unfortunately doesn't seem to work for me either
I had to put my device in PTP mode in order for ADB to show the device, after the device was confirmed with adb devices, I issued the commands this is the output
Code:
C:\Users\NOTIMPORTANT\AppData\Local\Android\sdk>adb devices
List of devices attached
VS986931(changed the last four for security) device
C:\Users\NOTIMPORTANT\AppData\Local\Android\sdk>adb shell
[email protected]:/ $ settings put global tether_dun_required 0
settings put global tether_dun_required 0
[email protected]:/ $ settings put system tether_entitlement_check_state 0
settings put system tether_entitlement_check_state 0
[email protected]:/ $
When I attempt to enable hotspot I am greeted with the "Use of this service requires a subscription..."
FoxFi seems to work, I just HATE having to change my lock screen in order to use the damn thing!
I'm willing to run further tests and commands if you would like, please just let me know.
I have NOT taken any over the air update. I used the Debloater tool and blocked/hid the app.
Tomyk89 said:
when do you see the subscription message?
try typing:
adb devices
you should see a string of characters listing your device. if it shows no device, then you need to double check that you have your device drivers installed
Click to expand...
Click to collapse
Here's a screenshot of my terminal window:
I'm using the native tethering just like everybody else (Settings, More, flick the tethering switch to On and receive the service check). Haven't taken the OTA and have the service disabled via debloater tool. I appreciate the help!
At this point I'm not sure why some are reporting that this works while others aren't. I added a message on the original post warning that this isn't a for sure thing. I'll be sure to update if/when I find a fix or what is going wrong, but for now I think I have enough info to look into this. thanks for your help everyone and I hope that I can find a fix for this. Worst case - we have to wait until we have root to enable this.
-tom

[GUIDE] New Fire Phone with FireOS and Google Apps - A Start-to-Finish Walkthrough

I just got a Fire Phone via the Ebay sale, and like many others, I wanted to set it up with Google Apps. I also wanted to keep the working camera and NFC, so I decided to stick with FireOS. Doing that took a lot of searching, and flipping through multiple threads. It can get a little confusing. So I've collected all the steps here to help others (and myself, in case I need to do this again in the future, when I inevitably break something while tinkering). I've written this from the perspective of someone who has purchased a brand new Fire Phone from a third-party seller.
PLEASE NOTE: Much of this is the work/discoveries of other forum members. I'll link out to the original posts whenever possible. Please thank those people accordingly!
1. When you first start up your phone, connect to WiFi, and let it go through the upgrade process to 4.6.4. Now is the time to register your phone with Amazon (by signing in with your Amazon account). You want that year of Prime, don't you?
2. SIM Unlock the phone (if you aren't using AT&T). It's easy!
a. Use a paperclip to pop out the SIM tray
b. Insert a non-AT&T nano-sized SIM card. (Mine came with an AT&T SIM in it. You can't use this card to SIM unlock)
c. A window should pop up, prompting you to enter the code that is on your box. Enter it.
d. Done!​
3. Open Settings>Applications & Parental Controls>Prevent non-Amazon app installation. Turn App Installation to ON
4. Make sure ADB is set up on your computer. (this is an easy guide to follow if you don't already have it: http://lifehacker.com/the-easiest-way-to-install-androids-adb-and-fastboot-to-1586992378 )
5. Download the following file to your desktop computer:
GSM Unlocked Firmware (this is a 1.2gb file) (http://forum.xda-developers.com/showpost.php?p=62768812&postcount=2). Rename this update.bin, and put it into the folder where ADB is installed.​Now we get our hands dirty:
6. If you are using Windows (I'm not), follow the directions that @Bingo Bronson posted here: http://forum.xda-developers.com/showpost.php?p=62768812&postcount=2. @DePingus also has an illustrated guide for ADB on Windows here: http://forum.xda-developers.com/showpost.php?p=62844581&postcount=14
6a. If you aren't using Windows, you can follow my steps (the same, just without all the Android SDK stuff, assuming you installed ADB in step #4)
a. Connect your phone to your PC & boot into recovery: When the phone is off, hold PWR + VOL. UP until the recovery screen appears
b. From the list, choose "Apply update from ADB"
c. In the command prompt, enter the following:
Code:
adb sideload path/to/update.bin
d. It should take a few minutes. When it's done, reboot your phone​
NOTE: If for some reason this isn't working for you, @jack9955 has posted steps on how to downgrade via Safestrap here.
7. Open Settings>Device>Get Info About Your Fire Phone. Your current version will be listed under Software Version, and it should now be 4.6.3
At this point, you may need to repeat step 3. I didn't, but it's worth checking.
8. Open the Amazon app store (one last time) and download ES File Explorer.
9. In the Silk Browser, open up the following links and download the files:
KingRoot (http://forum.xda-developers.com/fire-phone/help/root-4-6-3-t3173322)
Updated Google Play Store files: (http://forum.xda-developers.com/fire-phone/general/google-play-store-4-6-1-version-4-apks-t3098592)​
10. Open ES File Explorer, navigate to Download, and install KingRoot. Follow the directions to achieve root.
11a. At this point, some people like to remove KingRoot (out of security concerns) and replace it with SuperSu. I haven't done that yet, but you can follow the directions from @najoor here: http://forum.xda-developers.com/fire-phone/general/root-fire-phone-supersu-t3105546
12. Open ES File Explorer, navigate to Download, and unzip play.zip. Be sure to install the apks contained in the play.zip folder in the proper order (Thanks to @escape75 for these files)
1) Google Account Manager 4.4.2 (940549)
2) Google Services Framework 4.4.2 (940549)
3) Google Play Services 7.8.99 (2134222-036) - Updated
4) Google Play Store 5.8.8 - Updated​
13. After installing, I rebooted into recovery again, and wiped the cache partition. I don't know if you need to, but engaging in good housekeeping is never bad.
14. You should have a Play Store icon in your app drawer now. Click it to open, and holy crap!! It works. Plug in your google account details.
Now it's time to keep Amazon from wrecking all your hard work. Steps 15 or 15a will block OTA updates of the OS.
15. Go to Settings>Applications & Parental Controls>Manage Applications. Click Filter By and select All. Find each of the files listed below, click it, and then click the "Disable" button on the next screen. Repeat for the other three files. (thanks @Bingo Bronson)
Amazon Device Client
DCP Platform Contracts
System Update
System Update (yes, there are two different files named system update. Freeze/Disable both)​
15a. If you'd rather, you can do like I did, and use Titanium Backup Pro to freeze the above files.
16. Don't like the Launcher? Neither do I. I followed these directions to change out my launcher: http://spinyourfire.com/fire-phone-tips-and-tricks/fire-phone-launcher/ I use Home Switch from the Play Store. It will allow you to set your new launcher.
If you decide to use a new launcher, here's some info (courtesy @Bingo Bronson) which may help:
1. Settings>Display>Show Status Bar allows you to turn on the Status Bar at the top of the screen. This will help some launchers display properly.
2. Miss your NavBar / want some way other than Amazon gestures to navigate your phone? Try installing Ultimate Dynamic NavBar or Pie Controls.​
NOTE: The new launcher will disable Tilt Left/Right on your home screen. In Amazon apps, the gesture will still work.
17. To sync your contacts/calendars/etc, go to Settings>My Accounts>Manage Email Accounts and add your Google account info.
a. Select that account, check sync calendar and sync contacts.
b. Set Inbox Check Frequency to manual.
c. In Email Settings, set everything to off, then click email notification settings, and set all of those to off.​
BEWARE: HERE BE DRAGONS
Hi. Are you new to phone hacking? Then you should probably stop reading here. Following any of the links or info could (pretty easily) lead to bricking your phone. I won't even mess with most of this stuff, I'm just providing links for intrepid explorers who know what they are getting into, and are willing to risk it. SERIOUSLY, TURN AROUND HERE!
Seriously, you did all that work, and now you want to risk breaking it? Well yeah, me too. So let's cover our asses.
Backing Up with SafeStrap
First, let's back up what you've done. @ggow (to whom we all owe a debt of gratitude) has gifted us with SafeStrap, which allows us to boot into a version of TWRP recovery. From there, you can install his CM11 or SlimKat Roms, or use the backup feature, which is what we are about to do.
1. Install Safestrap from here http://forum.xda-developers.com/fire-phone/development/recovery-safestrap-v4-0-1-t3149888. In ggow's directions, it talks about 4.6.1, but I can confirm it works properly on 4.6.3.
2. Once you have booted into Safestrap, Click Backup and then back it up! (it took about ten minutes for me)
3. Of course, a backup won't do you any good if you don't have multiple redundancies. So plug your phone into your computer, open up a terminal/CMD prompt, and enter the following:
Code:
adb start-server
then
Code:
adb pull /sdcard/TWRP/ /path/to/your/backup/folder
after that runs for a while, you should see a message that says something along the lines of "12 files pulled. 0 files skipped"​
Good! Now we are backed up, and we can start breaking stuff.
Turn on USB Debugging
1. Go to Settings>Device>Get info about your Fire
2. Tap "Model Number" seven or eight times, until the "Developer Options" button appears at the bottom of the list
3. Tap "Developer Options" and enable USB debugging​Installing Xposed Framework
Xposed Framework allows you to install different modules that can change the look, feel and operation of your phone. Xposed works best on Vanilla Android, but we can definitely put it to good use here. Lifehacker has a great overview on Xposed. I'll just give you the basics here.
What you'll need: Root
1. On your phone, visit http://repo.xposed.info/module/de.robv.android.xposed.installer. Scroll down to the bottom of the page and click Show Older versions. You want the APK for version 2.6.1 (the most recent stable version)
2. After downloading, navigate to your Downloads folder and install the Xposed Apk.
3. Open Xposed and click Framework. It will show you that Xposed is currently inactive. Tap the install/update button.
4. Once installed, you must reboot your phone for Xposed to work.​Congrats! Now with Xposed, you can really start customizing your phone. Check the forums...there is tons to discover and lots of people who know far more than I about how to use it. Just remember that a lot of the cosmetic stuff might not work on a Fire Phone. The modules I use are: ACDisplay, Amplify (paid version), AppOppsXposed, GravityBox, Greenify (paid version), PowerNap.
Installing a custom Lock Screen
Many of us on Android are used to custom lock screens, and haven't been thrilled with the Amazon Lock Screen. Through some trial and error, I've discovered how to swap out the Amazon Lock Screen for my lock screen of choice, ACDisplay. I haven't tried this with other 3rd party lock screens. Try following (and contributing to) this lockscreen thread to see any developments on other lock screens.
What you need: Xposed, Root, ES File Explorer (or another file explorer with root access)
1. Install ACDisplay (I sideloaded the APK, but it seems to work from the Play Store)
2. Open ES File Explorer, tap the hamburger menu, scroll down to Tools, and turn on Root Explorer
3. find the installed apk (com.achep.acdisplay-1.apk) in /data/app
4. rename it LockScreen.apk and move it to /system/priv-app/
5. Reboot
6. Open up AC Display and grant it access to Accessibility Settings and Notifications
7. In ACDisplay>Settings>Lockscreen move the slider to On and make sure that "Enable when no notifications" is ticked
8. Open Xposed and activate the ACDisplay module.
9. Reboot
10. I don't know if you need to, but I went to Settings>Lock Screen> Turn on Notifications... and made sure that notifications were off.​
The Xposed integration seems to be the key. Now, when I reboot my phone, I'll get the original Amazon Lock Screen once (sometimes) and then ACDisplay pops up from that point on. Apparently, if you want a pin/password on the lock screen, you can still use the security features of the OS lockscreen.
Launchers with Widgets
One of the problems with custom launchers is that widgets don't seem to work on the Fire Phone. But @hmoobguy and @DePingus have figured out how to beat that in this thread. Just like with the lock screen, you'll have to move some files.
What you need: Root, ES File Explorer (or another file explorer with root access)
1. Install your launcher from the Play Store.
1a. If you haven't already, visit the Play Store on your desktop, look at the page for the launcher you just installed, and take note of what comes after 'id=' in the URL. That's the file name you'll search for.
2. Open ES File Explorer, tap the hamburger menu, scroll down to Tools, and turn on Root Explorer
3. find the installed apk for your launcher of choice in /data/app by searching for what came after 'id=' in step 1a.
4. move it to /system/priv-app/
5. Reboot​
Note: you can also use Titanium to convert your launcher of choice into a system app.
Other Stuff
@Bingo Bronson has a ridiculously extensive list of Fire OS apps that can be disabled/frozen or deleted. Use at your own risk: http://forum.xda-developers.com/fire-phone/general/complete-app-list-replace-remove-t3132008
Hopefully this is helpful to others. I can add information as I go if new info (and new annoyances) come to light. Please let me know if there is anything I missed!
Thanks man! That's a good list there!
I gathered much of the information you have posted there last night and I have it at 4.6.3 with Google Play and a custom launcher.
My next challenge is a single lock screen. I have yet to actually root it however.
Which seems it will be required to get any further with the lock screen deal based off what I've read thus far.
Cheers!
"curious what adds the extra slide lock, is it the adding of a different Launcher or Home Switch? Even when using the FirePhone launcher again it remains."
Natet2003 said:
"curious what adds the extra slide lock, is it the adding of a different Launcher or Home Switch? Even when using the FirePhone launcher again it remains."
Click to expand...
Click to collapse
I'm not quite sure what you mean here. I'm messing with the lock screen myself, haven't quite got it figured out yet. I use AC Display, and have been trying to freeze various apps listed in the App List post (at the bottom of the walkthrough under "HERE BE DRAGONS"). I can shut off the Amazon lock screen, but for some reason, my lock screen only works every other time. If I let it sit for a while and then unlock it, I just get the woven graphite background and nothing else. I have to turn off the screen, turn it back on again, and then my lock screen will work. I'm assuming it has something to do with the system putting the app to sleep.
Natet2003 said:
My next challenge is a single lock screen. I have yet to actually root it however.
Which seems it will be required to get any further with the lock screen deal based off what I've read thus far.
Click to expand...
Click to collapse
This thread has info on changing the lockscreen.
http://forum.xda-developers.com/fire-phone/help/fire-phone-lock-screen-t2982798/page5
You do need root. Install the new lockscreen (many people were using Next Lock Screen). Use a root file explorer to delete /system/priv-app/LockScreen.apk (make a backup first). Then move whatevernewlockscreen.apk from /data/app to /system/priv-app, rename it to LockScreen.apk and reboot.
I was having issues with the alarm clock and then I screwed up all the lockscreens. I gave up trying to fix my mess and just took the opportunity to install 4.6.3. That fixed all my issues and put me back to the stock crappy lockscreen, which I'm still running.
munkymack said:
I'm not quite sure what you mean here. I'm messing with the lock screen myself, haven't quite got it figured out yet. I use AC Display, and have been trying to freeze various apps listed in the App List post (at the bottom of the walkthrough under "HERE BE DRAGONS"). I can shut off the Amazon lock screen, but for some reason, my lock screen only works every other time. If I let it sit for a while and then unlock it, I just get the woven graphite background and nothing else. I have to turn off the screen, turn it back on again, and then my lock screen will work. I'm assuming it has something to do with the system putting the app to sleep.
Click to expand...
Click to collapse
I think I found what it was. I had "C Launcher" installed. It does an iPhone styled sliding lock screen that even when I swapped to another Launcher the lock screen kept activating. (So I had two screens to bypass) When I had experimented with GO Locker it added yet another screen to those so 3 screens!
So once I've removed CLauncher and GO Locker I've not just have a single screen, which is FireOS default lock screen.
Great instructions, well consolidated--thanks!!
Questions: 1. What's the reason you went through all the updates, all the way to 4.6.4 and then downgraded to 4.6.3. Could you just not have installed 4.6.3 from the beginning? 2. Also, why version 4.6.3? Is that the version on which google play works the best?--the reason I ask is because I too have read so many posts on this site and I have come to perceive that Google play still does not work perfectly on any of the versions!. Hopefully my perception is wrong and I can proceed with your consolidated instructions. Can you please post updates as the days go by on how its all working. Thanks.
dannyol said:
Questions: 1. What's the reason you went through all the updates, all the way to 4.6.4 and then downgraded to 4.6.3. Could you just not have installed 4.6.3 from the beginning? 2. Also, why version 4.6.3? Is that the version on which google play works the best?--the reason I ask is because I too have read so many posts on this site and I have come to perceive that Google play still does not work perfectly on any of the versions!
Click to expand...
Click to collapse
I went to 4.6.4 simply because my phone automatically updated from 3.5.0>4.6.1>4.6.4 when I connected it to wifi, and the directions I'd found showed how to downgrade from 4.6.4 (which is AT&T specific) to 4.6.3 (gsm unlocked).
The reason I chose to downgrade is because Play store doesn't work on 4.6.4...it keeps breaking. On 4.6.3, that's not the case (so far); Play Store (and even more important, Play Services, which is necessary for most Google apps) is working exactly like it should be. Might it break in the future? Yeah, probably. But if / when it does, I'll try and update the post (assuming that a fix gets found).
DePingus said:
This thread has info on changing the lockscreen.
http://forum.xda-developers.com/fire-phone/help/fire-phone-lock-screen-t2982798/page5
You do need root. Install the new lockscreen (many people were using Next Lock Screen). Use a root file explorer to delete /system/priv-app/LockScreen.apk (make a backup first). Then move whatevernewlockscreen.apk from /data/app to /system/priv-app, rename it to LockScreen.apk and reboot.
Click to expand...
Click to collapse
Just a heads up, DePingus and I have been discussing this on the linked thread, and the above instructions DO NOT work. LockScreen.apk does not exist in /system/priv-app/ on 4.6.3. At this point in time, there is not a way to completely replace the Amazon lock screen with a custom lock screen.
This is a good guide.
Just FYI, you don't have to enable USB debugging to root with KingRoot. And, more importantly, you don't have to be rooted or enable USB debugging to install 4.6.3, Google Play Services, or alternate launchers. Instead of adb push, you can just copy the apks over using your favorite method (USB, OneDrive, direct download) and then run to install. Come to think of it, you probably should move rooting and USB debugging into the "here be dragons" section.
Is it safe to update the play store when it asks?
MrPaulAR said:
Is it safe to update the play store when it asks?
Click to expand...
Click to collapse
Yes, as far as we know (for v. 4.6.3) Play Store can be updated and will still work, same with Play services.
New fire phone with version 3.5-rooted and now at a stand-still
Bingo Bronson said:
Yes, as far as we know (for v. 4.6.3) Play Store can be updated and will still work, same with Play services.
Click to expand...
Click to collapse
I too got my new fire phone on ebay. The fire phone has version 3.5. I read that it was a rootable version, so I proceeded to root the phone via towelroot . I have supersu installed also. I have verified root via an app and the phone is now successfully rooted. Now I am puzzled as to what I should do with the fire phone with version 3.5 and am at a stand-still!!.
Questions:
1. Can I update to version 4.6.3 from here without loosing root?
2. Will updating to version 4.6.3 in its present rooted condition cause any harm (i.e bricking) ?
4. If I need to remove root and supersu in-order to update the phone to version 4.6.3, how do I do that?
3. The reason for these questions is because I am assuming that I need to update to version 4.6.3 to install google apps.
Can you help me proceed along from this standstill that I find myself in!
Thanks
dannyol said:
I too got my new fire phone on ebay. The fire phone has version 3.5. I read that it was a rootable version, so I proceeded to root the phone via towelroot . I have supersu installed also. I have verified root via an app and the phone is now successfully rooted. Now I am puzzled as to what I should do with the fire phone with version 3.5 and am at a stand-still!!.
Questions:
1. Can I update to version 4.6.3 from here without loosing root?
2. Will updating to version 4.6.3 in its present rooted condition cause any harm (i.e bricking) ?
4. If I need to remove root and supersu in-order to update the phone to version 4.6.3, how do I do that?
3. The reason for these questions is because I am assuming that I need to update to version 4.6.3 to install google apps.
Can you help me proceed along from this standstill that I find myself in!
Thanks
Click to expand...
Click to collapse
I did the same thing when I first got mine, so I understand where you are coming from. After reading around on the forum, I saw that 4.6.3 could work with Play Store / Services, so I just did a straight up OS update. I didn't unroot or anything, and suffered no problems. My phone updated from 3.5 to 4.6.1, and then to 4.6.4. From that point, I downgraded to 4.6.3 and then proceeded with the steps in the guide.
As far as I can tell, you WILL lose root in the update, but you can use Kingroot to re-apply root.
Will this work on a Fire tablet? Would I just not run the GSM unlocked firmware part?
Thanks
jimbobalu said:
Will this work on a Fire tablet? Would I just not run the GSM unlocked firmware part?
Thanks
Click to expand...
Click to collapse
I have absolutely no idea. If it does work, let me know. I've got one of the new $50 fire tablets coming at the end of the month.
DePingus said:
Just FYI, you don't have to enable USB debugging to root with KingRoot. And, more importantly, you don't have to be rooted or enable USB debugging to install 4.6.3, Google Play Services, or alternate launchers. Instead of adb push, you can just copy the apks over using your favorite method (USB, OneDrive, direct download) and then run to install. Come to think of it, you probably should move rooting and USB debugging into the "here be dragons" section.
Click to expand...
Click to collapse
That's a good point. I've been doing this long enough that rooting is something I do without a second thought, but for beginners, it opens up the door to a host of problems. I'll do a reorganization next time it's slow around the office.
Thank you for the step-by-step guide. It was incredibly helpful and everything worked...expect for downgrading to 4.6.3. It may be because I'm on a Mac, but nothing I tried seemed to work. That is until I found this website that worked to perfection. Hopefully anyone else on a Mac finds it useful as well.
And apparently because I'm a new user, I can't post URL's, so here's the closest I can get you
seo-michael.co.uk/how-to-setup-adb-on-os-x
This phone is dirty cheap now.
i might grab one of these . here in Europe
cheers
Be sure and check the LTE bands before you do. You may not be able use high speed data there.
EDIT: I looked at the work in your signature. I'm pretty sure you know exactly what you are doing / getting yourself into if you do pick one up. I'm just trying to be super newbie friendly over here, hence my response.
Osufever said:
Thank you for the step-by-step guide. It was incredibly helpful and everything worked...expect for downgrading to 4.6.3. It may be because I'm on a Mac, but nothing I tried seemed to work. That is until I found this website that worked to perfection. Hopefully anyone else on a Mac finds it useful as well.
Click to expand...
Click to collapse
Yeah, ADB is different on every system, and can be a pain in the ass to set up. The Lifehacker article I linked should cover everything, but if Mac users want to delve a little deeper, then the link you followed is a good way to go. I'm glad you were able to get things working!

Some progress on Alcatel Dawn 5027b

I've had this phone for a few months now and have tried finding a way to root. I have found some tricks that haven't been posted before. Hopefully this will lead to something for everyone using this phone. Anyway here's what I've found. We can enable diag port without the MSL using an app called anycut by opening the app, click make shortcut, choose activities and find the one named diag. There are 2 so if the first one asks for an MSL just repeat the steps and choose the other diag. Another trick I found was that when the phone is in safe mode you can run a few commands that you normally couldn't. You must use adb shell since you can't use an installed terminal emulator in safe mode. Hopefully this can get things rolling.
adb shell
ToastDrummer said:
I've had this phone for a few months now and have tried finding a way to root. I have found some tricks that haven't been posted before. Hopefully this will lead to something for everyone using this phone. Anyway here's what I've found. We can enable diag port without the MSL using an app called anycut by opening the app, click make shortcut, choose activities and find the one named diag. There are 2 so if the first one asks for an MSL just repeat the steps and choose the other diag. Another trick I found was that when the phone is in safe mode you can run a few commands that you normally couldn't. You must use adb shell since you can't use an installed terminal emulator in safe mode. Hopefully this can get things rolling.
Click to expand...
Click to collapse
which commands, if you don't mind me asking? Also, what do I do after I lauch "diag."?

Recover any personal data from a non-booting device

So hello there!
I'm having the following issue and I'm kinda out of ideas.
I was running a (KingRoot) rooted fireOS 4.6.6.1 (420) if I'm not mistaken.
So this is what happened:
Phone was running just fine, but I wanted to get rid of the facebook background services which kept running without the actual app installed. Also a friend proposed to run the 'fstrim' command. So reading through xda I found an app called 3C Toolbox (http://www.3c71.com/android/?q=node/916) which seemed to be safe to use. Installed it and still didn't change a thing except for the three 'fstrim' actions to perform. After that I restarted my phone.
Powered off just fine, but at the start only the 'Amazon' logo comes up and vanishes into a black screen with the backlight still on. Even after waiting several hours nothing changes.
So what did I attempt to get it wirking again?
At first I tried to simply restart it. --> Nothing changed.
Tried to get into recovery and clean the cache. --> Nothing changed except the 'Amazon' being on for a bit longer
Get into ADB and try pull/uninstall... --> Guess due to the locked bootloader I'm not allowed to issue any command other than 'adb sideload [packagename]' for system updates. As for ADB itself I can only get it to recognize on the PC when I get into recovery and choose the 'apply update from ADB' option.
Get into fastboot according to this tutorial (https://forum.xda-developers.com/showthread.php?t=1668159) --> doesn't work.
Get into 'Safe Mode' with this tutorial (https://forum.xda-developers.com/fire-phone/help/how-to-fire-phone-to-boot-safe-mode-t2828240) --> doesn't work either.
So does anybody has another idea I could give a try or should I just abondon all my data and flash a new clean image?
Also I'm not sure if updating from ADB will erase all personal data too. Guess so, but maybe I can get a clearification in here too.

Spyware of Phone

Hello,
I'm hoping that someone here will be able to help to do one or more of the following things:
1) Complete data recovery of Samsung Galaxy S9 snapdragon
2) Bypass pattern lock
A partner against whom I have a restraining order purchased this phone for me and I have since become aware that there is software installed on it which I cannot access which is recording my location, communications, etc.
All I installed is Mxplorer, OS Monitor, and Logcat, all of which were recommended by users on these forums and which were Google Play verified. When I started going through what I could access and recording the logs, my phone went crazy and a bunch of root files began to delete themselves. Now it is locked by a pattern and I never set a pattern.
Is it possible for me to bypass this pattern without deleting all the data on the phone, or to backup all the data on the phone including root files even if I cannot download the phone itself?
Alternatively, is anyone aware of any organization that would help me to examine the phone, as I do not feel that I have the technological ability to do so myself?
Also, I understand that the best thing to do for my own security is to use a different phone and to reset the passwords for all the accts that were saved on that phone from a different device and I am already doing that but it is very important to me to identify and preserve the spyware that was installed on this phone in order to 1) ensure the continuation of the restraining order 2) know what information he has had access to and 3) share the information that I find with organizations that are involved in combatting the development/sale/use of this kind of stalkerware.
Thank you.
PS C:\Users\Genevieve\Desktop\platform-tools_r30.0.5-windows (1)\platform-tools> .\adb shell
starqlteue:/ $ cd /data/data/com.android.providers.settings/databases
/system/bin/sh: cd: /data/data/com.android.providers.settings/databases: Permission denied
2|starqlteue:/ $
2|starqlteue:/ $
This is what I'm coming up against when I try to bypass the screen lock using adb, just for reference.
Permission denied on that path is not unusual, some devices simply don't support accessing that path over ADB. To delete that path, USB debugging needs to have already been enabled in the device's developer options so you can delete the gesture.key file and regain access. I've had a similar fight with an older Android device, trying to retrieve photos from a phone with an unlock pattern the owner had forgotten.
In the end I managed to gain access to the filesystem, but I had to do it through recovery mode by flashing an alternative recovery image to the device which bricked it for normal use.
I'd be surprised if this other person managed to install commercial spyware/malware without rooting the device, which would also give you access to that path.
That sort of 0day vuln is either darknet for $$$ (at which point, just wipe the cache partition, reflash the stock firmware and start from scratch) or nation state actor complexity.

Categories

Resources