Any help rooting or unlocking bootloader on the incredibly unpopular Blu Life One X3?

Search This thread

Xiione

Member
Aug 8, 2016
11
0
So, here's my problem:
I bought a Blu Life One X3 late last year since it was on sale for $150 ($100 lower than the current MSRP).
Since it was still a new release, I thought that the modders would come after it eventually, so I just waited it out.
Many months later, there has been little to no word about any sort of root method, it seems like the Life One X3 turned out to be very unpopular.

So far, I have been able to get it into the OEM unlock screen using adb, prompting a press of either of the volume buttons to confirm unlock, only that the volume up button won't do anything, and the volume down just cancels the process.

Any help at all?
Big thanks!
 

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Very sneaky, Blu.

Ok, you know when you first get the phone, you've got all the pre-installed apps you don't want? I detailed a lot of it above. Well, Blu has one of those apps, and it sneakily reinstalls two of those apps even after the user has supposedly removed those apps.

So you go into Settings > Apps and discover that you can't really uninstall the Blu app. So you boot into TWRP Recovery Mode and delete the directory containing the Blu app. For good measure, you delete the Amazon and PrimeVideo folders.

So you think to yourself that Blu, Amazon and PrimeVideo are gone. Except they're not really gone even then.

In fact, even if you just disable the Blu app in Settings > Apps, you're going to have the same behavior described below.

The Blu app you tried to disable or uninstall in Settings > Apps, and which you deleted in TWRP Recovery Mode is merely a GUI for the real Blu app, which sits in the background, restoring Blu's advertising partner's (Amazon and PrimeVideo) apps on each boot. No, it doesn't restore the GUI part of those advertising partners' apps, just the stuff that runs in the background.... now why would they do that, I wonder? Are they playing ads in the background unbeknownst to the user, even as the user thinks they've uninstalled those apps?

How do I know this is taking place? Because the entries for Amazon and PrimeVideo kept showing up in the Dalvik Cache... the cache for programs that have run. I'd delete them, they'd show up, I'd delete them, they'd show up, on each and every boot.

Go to /system/vendor/operator/app
Delete ALL directories under that /app directory... the Blu .apk folder, the Amazon folder, the PrimeVideo folder, and the folder which is named with what looks like a date. All of it. /system/vendor/operator/app should now be empty. In fact, I deleted that /app folder, as well.

Then go to Dalvik cache and search all subfolders, delete all Blu, Amazon and PrimeVideo entries. If you've got Total Commander, do a search for PrimeVideo, Amazon and Blu and defenestrate them.

Reboot the phone.

Huh, how about that, my CPU utilization just dwindled to nearly nothing when the phone is idle. Now I can play my podcasts with the CPU pinned to 299 MHz maximum without any stutter.
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Ok, it's time to get serious about privacy... I installed XPrivacyLua.

This is an Xposed module. I installed it from github.

The install went seamlessly, and I rebooted the phone when prompted to do so.

The initial boot took a bit longer than usual. Once the phone was booted and settled down, I opened XPrivacyLua. Below is what I disabled. I rebooted after each individual change I made to be sure everything was still working OK. Now the phone boots a bit faster than it used to, and the adb logcat is decidedly quieter... no more Fabric / Crashlytics frequent connections, no more com.google.android.location.reporting frequent connections (yes, Google creepily tracks your location even if you've turned off location history, even if you're sitting at the main Android screen with no apps running... look at the output of adb logcat to prove it to yourself).

Now I get this:
05-02 18:18:48.621 1004 1004 V JobSchedulerService: isReadyToBeExecutedLocked: e9db8e2 #1000/100856 com.google.android.location.
reporting/com.google/{EMAIL ELIDED}@gmail.com:android ready=false pending=false active=false userStarted=true componentPresent
=true

That's with the most permissive firewall profile (Google Enabled). When I put it to Default (which blocks all Google apps), logcat gets downright quiet. When there's no WiFi or cellular data connection, it's really, really quiet.

So far, it all seems to work. I'll update this post as I do more.

3C CPU Manager (ccc71.st.cpu):

Get location
Use analytics
Use tracking


AFWall+ (dev.ukanth.ufirewall):

Get location
Use analytics
Use tracking

Be careful when disabling permissions for AFWall+... the first time I did it, I disabled something I shouldn't have, and the firewall didn't automatically start when the phone booted, and didn't stay running in the background. I cleared all the checkboxes for AFWall+, and started over. Test with your internet connection off if you're paranoid about leaking info.

Alarm Klock (com.angrydoughnuts.android.alarmclock):

Get location
Use analytics
Use tracking


Android Services Library (com.google.android.ext.services):

Get location
Use analytics
Use tracking


Android Shared Library (com.google.android.ext.shared):

Get location
Use analytics
Use tracking


Android System WebView (com.google.android.webview):

Get location
Use analytics
Use tracking


Audio Recorder (com.dimowner.audiorecorder):

Get calendars
Get call log
Get contacts
Get location
Get messages
Read clipboard
Send messages
Use analytics
Use camera
Use tracking


Bluetooth Share (com.android.bluetooth):

Get location
Use analytics

NOTE: 'Bluetooth Share' won't connect to bluetooth headsets if 'Use tracking' is checked. That's worrying.

Brave browser (com.brave.browser):

Get calendars
Get call log
Get contacts
Get location
Get messages
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


BT Tool (com.mediatek.bluetooth.dtt):

Get location
Use analytics
Use tracking


Call Management (com.android.server.telecom):

Get location
Use analytics
Use tracking


Contacts (com.google.android.contacts):

Get location
Use analytics
Use tracking


Contacts Storage (com.android.providers.contacts):

Get location
Use analytics
Use tracking


Data Protection (com.mediatek.dataprotection):

Get location
Use analytics
Use tracking


Desmos (com.desmos.calculator):

Get location
Use analytics
Use tracking


Disable Application (com.iamaner.oneclickfreeze):

Get calendars
Get call log
Get contacts
Get location
Get messages
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


Download Manager (com.android.providers.downloads):

Get location
Use analytics
Use tracking


Downloads (com.android.providers.downloads.ui):

Get location
Use analytics
Use tracking


G-Droid (org.gdroid.gdroid):

Get calendars
Get call log
Get contacts
Get location
Get messages
Read clipboard
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


Google Account Manager (com.google.android.gsf.login):

Get calendars
Get call log
Get contacts
Get location
Get messages
Read clipboard
Read notifications
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


Google One Time Init (com.google.android.onetimeinitializer):

Get calendars
Get call log
Get contacts
Get location
Get messages
Read clipboard
Read notifications
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


Google Partner Setup (com.google.android.partnersetup):

Get calendars
Get call log
Get contacts
Get location
Get messages
Read clipboard
Read notifications
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


Google Play Services (com.google.android.gms)

Get calendars
Get call log
Get contacts
Get location
Get messages
Read clipboard
Read notifications
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


Google Play Store (com.android.vending):

Get calendars
Get call log
Get contacts
Get location
Get messages
Read clipboard
Read notifications
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


Google Services Framework (com.google.android.gsf):

Get calendars
Get call log
Get contacts
Get location
Get messages
Read clipboard
Read notifications
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


Greenify (com.oasisfeng.greenify):

Get location
Use analytics
Use tracking


Navigator (com.mapfactor.navigator):

Use analytics
Use tracking


Nova Launcher (com.teslacoilsw.launcher):

Get location
Use analytics
Use tracking


Phone (com.google.android.dialer):

Get location
Record video
Use analytics
Use camera
Use tracking


Phone Services (com.android.phone):

Get location
Use analytics
Use tracking


Phone/Messaging Storage (com.android.providers.telephony):

Get location
Use analytics
Use tracking


Podcast Addict (com.bambuna.podcastaddict):

Determine activity
Get applications
Get calendars
Get call log
Get contacts
Get location
Get messages
Read account name
Read clipboard
Read identifiers
Read notifications
Read sync data
Read telephony data
Record audio
Record video
Send messages
Use analytics
Use camera
Use tracking


QKSMS (com.moez.QKSMS):

Get location
Use analytics
Use tracking


SD Maid (eu.thedarken.sdm):

Get location
Use analytics
Use tracking


SensorHub (com.mediatek.sensorhub.ui):

Use analytics
Use tracking


System UI (com.android.systemui):

Get location
Use analytics
Use tracking


Total Commander (com.ghisler.android.TotalCommander):

Get location
Use analytics
Use tracking
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
There's an update for Xposed. It's a bit tricky to get it working, but it can be done on this phone. TopJohnWu repackaged the installer so it'd work on a wider array of devices without having to search for the right version of Xposed.

There's no need to uninstall the older version, it'll uninstall it.

Get the new installer from TopJohnWu here.

Install it and reboot.
It still won't be set up properly. You have to go to Settings > Apps > Xposed Installer > Storage, and move it to internal storage (if you've set your SD card as the default install destination, it'll be installed automatically to the SD card, which it doesn't like).

After that, you can open Xposed Installer and enable it, then enable the modules installed within it.
 

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Firewall is in its "Lockdown" profile.
Running logcat like this:
c:\ADB>adb logcat -D -v long > c:\test\logcat.log

I don't have any apps open, the phone is sitting idle at the home screen.

Question:

What are these?
05-02 18:46:35.343 1871 6505 D AFWallXPosed: Attempted URL via DM Leak : https://dl.google.com/vision/1/creditcard/params_expdate_c45e5b7.dat

05-02 18:46:35.488 1871 6505 D AFWallXPosed: Attempted URL via DM Leak : https://dl.google.com/vision/1700/ocr/ocr_arm64_v8a.zip

I've got all Google components disabled in AFWall+ firewall... Google appears to be attempting to download something surreptitiously to my phone by using a "DM Leak", but I can't find anything about it in searching for that term.
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
How to change your boot logo on the Blu Life One X3

Open Total Commander

/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/
shows a link:
logo -> /dev/block/mmcblk0p9

This means your boot logo is in /dev/block/, named mmcblk0p9

On your computer, in an administrator-privilege command prompt, type the following commands:
adb shell
su
dd if=/dev/block/mmcblk0p9 of=/sdcard/logo.bin
exit
exit

You'll see a file (logo.bin) in /sdcard.

On your computer, in an administrator-privilege command prompt, type the following command:
adb pull /sdcard/logo.bin c:\test

In c:\test, you'll see a file (logo.bin). You can delete the logo.bin at /sdcard now.

Go to:
https://sites.google.com/site/kadanutilities/home/logobuilder-en
and download the Logo Builder program to c:\test. Extract the .zip file to a folder beneath c:\test.

Run Logo Builder v. 1.6. Click OK until you're at the main screen.

Click "Create project" and select your logo.bin in c:\test.

Right-click the first image (the white logo boot image with black lettering that says "Blu" and "Bold Like Us" and "Powered By Android"), and select "Edit".

The image will load into your image editing program (Paint works just fine for this).

In my case, I wanted to invert the image colors so the background was black and the lettering was white. This required cleaning up a lot of scattered pixels around the text.

So I filled the white background with red, then cleaned up the scattered pixels which remained white so they were red as well.

Then I changed the black lettering to white. I had to clean up more pixels.

Then I changed the red to black.

The very last image in the list inside Logo Builder v. 1.6 is a duplicate of the first image. Edit that one, as well. I merely copy-n-pasted the first image into the clipboard, then edited the last image, then selected all, then pasted from the clipboard.

If you want a smaller image file size, compress the two .png files with any online image size reducer website. My originals were 15KB, the reduced files were 4KB. Note that this doesn't change the physical size of the images, just the file size... it just removes extraneous stuff from the image to make the file smaller.

In the Logo Builder v. 1.6 program, click the "Make" button. In c:\test will be update.zip.

Extract logo.bin from update.zip and save it to c:\test

On your computer, at an Administrator-privilege command prompt, type:
adb push c:\test\logo.bin /sdcard
adb reboot recovery

The phone will reboot into TWRP Recovery Mode.

Select "Mount".
Select all partitions, and ensure "Mount system partition read-only" is unchecked.
Click the "Back" icon to the main TWRP screen.
Press "Backup".
Press "Select Storage" and select the SD card.
"Swipe to Backup".
When the backup is complete, press the "Back" button, then the "Back" icon to the main TWRP screen.

At an Administrator-privilege command prompt, use ADB pull to pull the new backup to your computer.
adb pull /sdcard/TWRP/BACKUPS/{DEVICE SERIAL NUMBER}/{NAME OF BACKUP} c:\test

Then on your phone, at the main TWRP screen, press "Reboot", press "System". Let the phone boot normally and settle down.

Then push the new logo.bin from the SD card to the correct location:
adb shell
su
dd if=/sdcard/logo.bin of=/dev/block/mmcblk0p9
exit
exit

Then reboot the phone:
adb reboot

Now you can remove logo.bin from /sdcard.

You're done!

The charging animation images work when the phone is shut down and connected to USB.

zUeYtjf.png
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Thank you for contacting BLU Products [ ref:_00D50BSXg._5001T1EMcgk:ref ]

An email exchange between myself and Blu, pertaining to Google attempting to push an 'updated' ROM to my phone, against my wishes, surreptitiously and without notification, and rebooting my phone at midnight each night in attempting to install that 'update'. Details in this thread above.
-----------------------------------------------------
>> I wrote:
>> My Blu Life One X3 phone has BLU_L0150WW_V7.0.04.13_GENERIC ROM. Are there any updates?

> BLU Products Support <service@bluproducts.com> wrote:
> We apologize for the inconvenience, at this time there are no updates available for your device.

That's strange, because Google Play Services via GoogleOtaBinder was attempting to push BLU_L0150WW_V7.0.04.14_GENERIC (which you've just confirmed doesn't exist), despite the fact that I've got "Automatic System Updates" turned off in Developer Options... I suspect it's because I'm rooted (TWRP as bootloader, Magisk as root), and I've stripped out most Google pre-installed apps and retracted many permissions which Google was using to collect personal information (collection and monetization of personal information being Google's modus operandi)... and they pushed that "new" ROM (likely the same ROM, but set so it restored Google's permissions) to get their apps and permissions back.

Did I mention they did so without notification, against my wishes, and that they rebooted my phone (without notification or permission) at midnight each night in attempting to install that 'new' ROM?

This doesn't bode well for the reputation of Blu by association with Google (not to mention Blu's hidden '/system/vendor/operator/app' app which kept restoring the Amazon and Prime Video pre-installed components, then running them in the background).

You'd best get your and Google's house in order... the California Attorney General and Electronic Frontier Foundation are already on the case. An update deleting the offending apps in /system/vendor/operator/app, a public statement by Blu and Google that you will no longer attempt to push software to a phone against the express wishes of that phone's owner, and a public and very sincere apology should do the trick.
-----------------------------------------------------

Blu sent an email back saying, to paraphrase, "Oh yeah! That update! Ha! We completely forgot about that one... nothing to see here. We reserve the right to push updates to our phones."

Color me suspicious that Blu wouldn't know about their own updates. I also reminded them that they're in violation of CA Penal Code 502(c) in trying to push unsolicited and unwanted software onto a phone, that it's not "their" phone, it's mine, and I'll administer it without their 'assistance'. I also thanked them for clearing up that it was Blu and not Google who was legally liable for pushing unsolicited and unwanted software to my phone despite 'Automatic System Updates' being disabled, which bricked the phone, necessitating a restore. I've not heard back from them again.
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Heh... on this phone, you can tell which websites are using Google tracking... they're the websites which pause for a bit as they load, waiting for the Google data collection code to connect to Google servers, which it can't because I've got every single Google IP address blocked, inbound and outbound, in AFWall+'s default profile.

Nowadays, people must worry less about encrypting their phones and setting up lock screens and making up hard passwords... the phone is with you practically 24/7, no one is going to take it unless you've got a top-of-the-line model (and who would be dumb enough to shell out that kind of money?!). Certainly no one is going to want to steal my lowly Blu phone.

I have no lock screen, the device is unencrypted, I run no antivirus software (most of which are bogus anyway). If someone tries to steal the phone, they'll crawl away bloodied, if they crawl away at all. If the phone experiences a problem, I can just roll back to the backup I took a few days ago, and if the problem persists, I can roll back a little further.

No, what phone users must be concerned about nowadays is the theft and monetization of personal and personally-identifying data by corporations... and it appears some of those corporations (coughGooglecough) aren't averse to sneaking files onto a phone without alerting the phone's owner to what they're doing.

As an aside, both cameras on this phone are now covered by camera blinds. Rather than stick a piece of electrical tape over the lens (as I did with my old phone), which just gums up the lens with the tape's adhesive, I splurged for the couple of dollars to buy tiny sliding shutters which cover the lens. The screen-side one looks almost as if it were part of the phone itself, but the opposite-side one looks a bit clunky. I've got a metal one ordered which should be much better... the plastic ones can't be made too thin or they'll break easily. The metal one is thin and sized exactly to cover just the camera.
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
tcp_slow_start_after_idle
If set, provide RFC2861 behavior and time out the congestion window after an idle period. An idle period is defined at the current RTO.
If unset, the congestion window will not be timed out after an idle period.
Default: 1

adb pull /proc/sys/net/ipv4/tcp_slow_start_after_idle c:\test

Edit the file, change the one and only character in that file from '1' to '0'.

adb push c:\test\tcp_slow_start_after_idle /proc/sys/net/ipv4/tcp_slow_start_after_idle

I'm hoping that by holding onto the congestion window longer, over time all the call-outs to Google and crashlytics.com will exhaust the addresses they can use (all of which are blocked in AFWall+ default profile), and just give up. We'll see.
 

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
In:
/data/system/users/0/settings_secure.xml
is:
<setting id="78" name="allowed_geolocation_origins" value="http://www.google.com http://www.google.co.uk" package="com.google.android.gms" />

Which means:
https://developer.android.com/refer...tings.Secure.html#ALLOWED_GEOLOCATION_ORIGINS
ALLOWED_GEOLOCATION_ORIGINS
Origins for which browsers should allow geolocation by default. The value is a space-separated list of origins.

Set to:
<setting id="78" name="allowed_geolocation_origins" value="" package="com.google.android.gms" />

Also:
<setting id="198" name="location_providers_allowed" value="" package="com.android.systemui" />
<setting id="101" name="backup_enabled:com.android.calllogbackup" value="0" package="com.google.android.gms" />

I'm a dirty, rotten, no-good, mean and devious trickster, I tell ya. I set my firewall to "Lockdown" (which blocks all inbound and outbound data), then enable the WiFi... the components think they've got a clear shot to communicate with their servers, but they don't. Then I log them.

Usually, when the phone is sitting idle and nothing is running, it amounts to about 800 KB to 1.2 MB of log data per minute. The above settings dropped it to ~113 KB / minute, with no location tracking.
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Huh... Google just gets sleazier and sleazier.

Google Domains hosts several podcast sites (feedburner.com, gimletmedia.com... check the reverse DNS, and you'll see the IP addresses are Google's), and the IP address ranges for those podcasts that I've seen range from 172.217.0.0 to 172.217.12.255.

Where do they host connectivitycheck.gstatic.com? Right there in amongst the podcasts, at 172.217.10.*. This means that if you listen to any podcasts from the major podcast providers, you will connect to Google so they can track you... unless you use the trick in my iptables files.

{UPDATE}
Actually, two tricks in my iptables files. I found a way to let an app communicate through the firewall by injecting the UID at the head of the iptables, so packets to that app are accepted before any other firewall rules can DROP or REJECT those packets. So I can block that IP CIDR range for everything except, in my case, my podcast app.

See my IPTables firewall scripts here.

See my DNS-over-HTTPS setup here.
{/UPDATE}
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
To Change Your Default DNS Servers

On your computer, at an Administrator-privilege command prompt, enter:
adb reboot recovery

Your phone will reboot into TWRP Recovery Mode.
Select "Mount", select all partitions.
Ensure "Mount system partition read-only" is unchecked.
Select the "Back" icon to the main TWRP screen.
Select "Advanced".
Select "File Manager"
Navigate to /system/etc

On your computer, at an Administrator-privilege command prompt, enter:
adb pull /system/etc/resolv.conf c:\test

Edit the resolv.conf file in c:\test, erasing:
nameserver 8.8.4.4
nameserver 8.8.8.8

and entering the nameservers of your choice... I'm using OpenNIC Tier 1 DNS servers:
https://servers.opennicproject.org/

In resolv.conf, type:
nameserver 161.97.219.84
nameserver 94.103.153.176

Save the file back to c:\test\resolv.conf, then at an Administrator-privilege command prompt on your computer, type:
adb push c:\test\resolv.conf /system/etc/resolv.conf

On your phone, press the "Back" icon twice to get to the Main TWRP screen.
Press "Reboot".
Press "System".

Note that this removes the default Google DNS servers and replaces them with a more privacy-oriented option, but AFWall+ automatically resets the DNS servers to OpenDNS, as discussed prior... so I'm setting up an AFWall+ script to change that.
 

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Heh... whatever you do, do not delete /system/bin/goodixfingerprintd, even if you've uninstalled the Goodix fingerprint reader app... that binary file is the driver for the hardware buttons (the three controls along the bottom of the screen)... removing it removes your ability to use those controls.

And remember, when you're experimenting on your phone, always keep a series of backups that you can roll back to.
 

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
/system/vendor/etc/agps_profiles_conf2.xml

This is the configuration file for Assisted GPS... a very convenient way for tracking you, and for impersonating your phone to receive your phone calls and text messages, as you'll see below.

Let's dig into the settings {UPDATE: There's a GUI for this... see below}:

First, if you're tired of Google weaseling its way into every nook and cranny of your phone, then change:
----------------------------------------------
<cur_supl_profile name="GOOGLE"
addr="supl.google.com"
port="7275"
tls="true"
/>

To:

<cur_supl_profile name="Test 1"
addr="127.0.0.1"
port="7276"
tls="false"
mcc_mnc="999998"
supl_version="1"
tls_version="0"
sha_version="2"
supl_ver_minor="4"
supl_ver_ser_ind="2"
/>
----------------------------------------------
That supl.google.com is yet another way that Google tracks your location.

Assisted GPS (aGPS) uses SUPL (Secure User Plane Location) to assist the GPS device to get a shorter TTFF (Time To First Fix) on the GPS satellites... and in so doing, those proffering the aGPS services get to track your every move and monetize it. That's not a tradeoff I find particularly beneficial for anyone but the aGPS providers, given that modern GPS units can get a satellite fix plenty fast.

Change:
mcp_enable="true"
To:
mcp_enable="false"
This is CDMA Multicell Processing... since you're disabling all aGPS, there's no need to use MCP for aGPS.

Change:
pde_addr="11.11.11.11"
To:
pde_addr="127.0.0.1"
MediaTek no longer uses the server at 11.11.11.11 IP address... it hosts a bunch of websites, none of them MediaTek.

Change:
agps_enable="true"
To:
agps_enable="false"
This should disable aGPS functionality, but as you'll see below, it can be re-enabled either via the phone's chip automatically deciding to use an aGPS protocol, or via a NILR (Network-Induced Location Request). So we'll turn all that off, too.

Change:
lppe_network_location_disable="true"
To:
lppe_network_location_disable="false"
This is the LTE Positioning Protocol, Enhanced... the comments in the file say it's still under development and not ready for use.

Change:
agps_nvram_enable="true"
To:
agps_nvram_enable="false"
This tells the aGPS functionality to use nonvolatile RAM to store information, and as you'll see below, that information can be sensitive.

Change:
lbs_log_enable="true"
To:
lbs_log_enable="false"
Disables logging to logcat.

Change:
sib8_16_enable="true"
To:
sib8_16_enable="false"
This allows the phone to communicate with the cell towers via SIB blocks. SIB 8 is CDMA2000 data transfer, and SIB16 is aGPS-related information.

Change:
a_beidou_satellite_enable="false"
To:
a_beidou_satellite_enable="true"
This is the Chinese BeiDou satellite system... the more satellites your phone's GPS can get a fix on, the quicker it'll get a First Fix.

Change:
a_galileo_satellite_enable="false"
To:
a_galileo_satellite_enable="true"
This is the European Galileo satellite system, developed so Europe didn't have to depend upon the US for GPS.

The setting:
a_glonass_satellite_enable="true"
already is set to true, so leave it be. That's the Russian GPS satellites.

Change:
reject_non911_nilr_enable="false"
To:
reject_non911_nilr_enable="true"
This is the non-911 ability for a Network-Induced Location Request... in other words, someone can request that your phone give its location... in other-than-emergency situations... in other words, at any time.

Change:
cp_2g_disable="false"
cp_3g_disable="false"
cp_4g_disable="false"
cp_lppe_enable="false"
To:
cp_2g_disable="true"
cp_3g_disable="true"
cp_4g_disable="true"
cp_lppe_enable="false"
This is the 2G, 3G, 4G and LTE communication between the phone and the cellular towers for aGPS purposes, allowing your cellular provider to pinpoint your location exactly.

Change:
ni_request="true"
To:
ni_request="false"
This is the Network-Induced Location Request functionality. This turns it off in all circumstances except when the phone is in a roaming state.

Change:
roaming="true"
To:
roaming="false"
This turns off NILR (Network-Induced Location Requests) even when the phone is in a roaming state.

Change:
msa_enable="true"
msb_enable="true"
ecid_enable="true"
To:
msa_enable="false"
msb_enable="false"
ecid_enable="false"
This is Mobile Station Assistance and Enhanced Cellular ID, which allows the phone to communicate with the cellular towers for aGPS functionality. This is one method by which Google and the cellular providers can single you out from any other phone user.

Change:
lpp_enable="true"
To:
lpp_enable="false"
This is the LTE Positioning Protocol, yet another method by which cellular providers can pinpoint your location via aGPS.

Change:
auto_profile_enable="true"
To:
auto_profile_enable="false"
This prevents the phone from automatically enabling aGPS.

Change:
imsi_enable="true"
To:
imsi_enable="false"
This disables the International Mobile Subscriber Identity being transmitted for the purposes of aGPS. This is yet another method by which you can be singled out from all other phone owners. Further, if someone's running an IMSI-Catcher, they can use your IMSI to spoof your identity, impersonate you, receive your phone calls and your text messages. Why Blu would enable this for aGPS is beyond me.

Change:
no_sensitive_log="false"
To:
no_sensitive_log="true"
This prevents the aGPS functionality from saving any logs with sensitive data.

Change:
up_lppe_enable="true"
To:
up_lppe_enable="false"
This is LTE Positioning Protocol, Enhanced. The comments in the file we're editing say it's still in development and not ready for use.

With the above changes, my map app had about a 30 second TTFF (Time To First Fix) from a Cold Start (first time running the map app, first time enabling location on the phone), it can see 12 satellites, 9 of them have a strong enough signal to use, and the map app pinpointed my location to within about 20 feet... from inside my house. After another 30 seconds, the location was spot-on, and I could watch the cursor in the map app (zoomed to maximum) move ever so slightly left and right as I transferred the phone from outstretched arm to outstretched arm. That's pretty darned accurate. We don't need aGPS.

{EDIT}
The last thing to do is to prevent the aGPS components from even running.

I used Total Commander to search for the term "agps", and found the following:
/data/agps_supl
/data/agps_supl/agps_to_mnl
/data/agps_supl/wifi_2_agps
The above files are dynamically written into the /data/agps_supl directory during boot, or more likely, they're sym-linked. I'll track them down.

/system/vendor/bin/mtk_agpsd
/system/vendor/bin/wifi2agps
/system/vendor/etc/agps_profiles_conf2.xml (the file we edited above).

I'm still working on how to permanently rid the system of all agps-related files.
{/EDIT}

{EDIT2}
Ahaha! I think I found a way to completely disable SUPL without editing system files.

If you've got an alternative launcher, you can set up widgets on the screen. In Nova Launcher, you long-press on any blank area of the screen, select 'Widgets', then press and hold the Nova Launcher Activities shortcut and drag it out to a blank area of the screen... that'll open the long list of all the widgets you've got available.

From that list, select EngineerMode. It'll open the Engineer Mode app.

Swipe until you get to the Location tab, select "Location Based Service", and uncheck the "Enable A-GPS" checkbox. Further down, you'll see an entry titled "SLP Address"... edit it and enter "127.0.0.1" (without the quotes) instead.

Further down, you'll see the "Feature Enabler" menu. Deselect all the check boxes.

Further down, you'll see the "GNSS Settings" menu. Uncheck "SIB8/SIB16 Enable", check "Glonass Satellite Enable", "A-Glonass Enable", "Beidou Satellite Enable" and "Galileo Satellite Enable".

It's not as thorough as editing the file, but it's much easier. :p
{/EDIT2}
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Android Doze Tweaks:
Boot your phone normally and let it settle down.
Plug the phone into your computer via USB.
In an Administrator-privilege command prompt, type:

Code:
adb shell "su -c 'pm disable --user 0 com.google.android.gms/.phenotype.service.sync.PhenotypeConfigurator'"
This disables Google Play Services from resetting your Doze settings.

Code:
adb shell dumpsys deviceidle
This shows you your current Doze settings

Code:
adb shell dumpsys deviceidle disable light
This disables Light Doze, forcing the phone to always go into Deep Doze.

Code:
adb shell settings delete global device_idle_constants
Code:
adb shell settings put global device_idle_constants light_after_inactive_to=0,light_pre_idle_to=0,light_idle_to=0,light_idle_factor=2.0,light_max_idle_to=0,light_idle_maintenance_min_budget=0,light_idle_maintenance_max_budget=0,min_light_maintenance_time=0,min_deep_maintenance_time=0,inactive_to=0,sensing_to=0,locating_to=0,location_accuracy=1000.0,motion_inactive_to=86400000,idle_after_inactive_to=0,idle_pending_to=0,max_idle_pending_to=0,idle_pending_factor=2.0,idle_to=86400000,max_idle_to=172800000,idle_factor=2.0,min_time_to_alarm=1000,max_temp_app_whitelist_duration=0,mms_temp_app_whitelist_duration=0,sms_temp_app_whitelist_duration=0,notification_whitelist_duration=0
This clears the Device Idle Constants, then sets them such that it quickly drops into Deep Doze. It'll stay in that state for up to a full day. It also disregards motion and thus stays in Deep Doze when the phone is moved. Alarms, however, should still be able to get a WakeLock and thus continue to work.

And for a few more tweaks:
adb pull /data/system/users/0/settings_global.xml c:\test

Edit the setting:
<setting id="116" name="low_power_trigger_level" value="15" package="com.android.settings" />
To:
<setting id="116" name="low_power_trigger_level" value="99" package="com.android.settings" />

Now your Battery Saver will kick in as soon as your battery dips below 100%. You no longer have to remember to enable it.

If you don't want your phone's screen to time-out and turn off when the phone is plugged into USB:
<setting id="440" name="stay_on_while_plugged_in" value="3" package="com.android.settings" />

To finish up disabling aGPS (assisted GPS) in the above post:
<setting id="87" name="assisted_gps_enabled" value="0" package="com.google.android.gsf" />

Save the file, then:
adb push c:\test\settings_global.xml /data/system/users/0/settings_global.xml
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Download My Android Tools to your computer, save it in c:\test

It's got a really long name, so rename the file to just 'AndroidTools.apk'.

In an Administrator-privilege command prompt, type:
adb push c:\AndroidTools.apk /sdcard/AndroidTools.apk

The AndroidTools.apk now sits on your phone at /sdcard.

Open Total Commander and navigate to /sdcard. Long-press the AndroidTools.apk file, and select 'Play (foreground)'.

This will open the Package Manager to install the AndroidTools.apk file on your phone.

After the install, you can delete /sdcard/AndroidTools.apk.

Open My Android Tools and peruse through what it has to offer... it can disable pretty much any service or app... much more to come on this. Keep in mind that this is the type of app that'll let you completely bork your phone... so have a recent backup ready.

Disabled in My Android Tools:
Component Info > Service
========================
Android System:
android.hardware.location.GeofenceHardwareService
com.mediatek.fmradio.FmRadioService
com.android.server.backup.FullBackupJob
com.android.server.content.SyncJobService


SystemUI
com.android.systemui.DessertCaseDream


Google Play Store
com.google.android.finsky.billing.setupwizard.SetupWizardPaymentsEnablementService
com.google.android.finsky.wear.WearChangeListenerService
com.google.android.finsky.wear.WearSupportService
com.squareup.leakcanary.DisplayLeakService
com.squareup.leakcanary.internal.HeapAnalyzerService


Google Play Services


com.google.android.gms.trustagent.speech.service.VoiceUnlockService
com.google.android.libraries.social.mediamonitor.MediaMonitorIntentService
com.google.android.libraries.social.account.refresh.receiver.AccountsChangedService
com.google.android.libraries.social.autobackup.AutoBackupGcmTaskService
com.google.android.libraries.social.autobackup.AutoBackupSyncService
com.google.android.libraries.social.autobackup.AutobackupTaskService
com.google.android.libraries.social.autobackup.FingerprintScannerIntentService
com.google.android.gms.gcm.HearbeatAlarm$ConnectionInfoPersistService
com.google.android.location.network.NetworkLocationService
com.google.android.location.reporting.service.InternalPreferenceServiceDoNotUse
com.google.android.location.reporting.service.LocationHistoryInjectorService
com.google.android.location.places.PlacesTask$Service
com.google.android.location.util.PreferenceService
com.google.android.location.reporting.service.ReportingAndroidService
com.google.android.location.reporting.service.ReportingSyncService
com.google.android.location.settings.DrivingConditionProvider
com.google.android.location.reporting.service.DispatchingService
com.google.android.gms.locationsharing.service.GcmReceiverService
com.google.android.location.internal.PendingIntentCallbackService
com.google.android.location.reporting.service.UploadGcmTaskService
com.google.android.gms.tapandpay.security.StorageKeyCacheService
com.google.android.gms.tapandpay.gcmtask.TapAndPayGcmTaskService
com.google.android.gms.gcm.GcmService
com.google.android.gms.tapandpay.tokenization.TokenizePanService
com.google.android.gms.tapandpay.hce.service.TpHceService
com.google.android.gms.kids.JobService
com.google.android.gms.kids.chimera.KidsServiceProxy
com.google.android.gms.kids.SupervisionService
com.google.android.gms.thunderbird.EmergencyLocationService
com.google.android.gms.thunderbird.EmergencyPersistentService
com.google.android.gms.subscribedfeeds.GmsFeedsSyncService
com.google.android.gms.ads.AdRequestBrokerService
com.google.android.gms.ads.GservicesValueBrokerService
com.google.android.gms.ads.cache.CacheBrokerService
com.google.android.gms.ads.indentifier.service.AdvertisingIdNotificationService
com.google.android.gms.ads.identifier.service.AdvertisingIdService
com.google.android.gms.ads.jams.NegotiationService
com.google.android.gms.ads.measurement.GmpConversionTrackingBrokerService
com.google.android.gms.ads.social.GcmSchedulerWakeupService
com.google.android.gms.analytics.AnalyticsService
com.google.android.gms.analytics.AnalyticsTaskService
com.google.android.gms.analytics.service.AnalyticsService
com.google.android.gms.analytics.internal.PlayLogReportingService
com.google.android.gms.analytics.service.AnalyticsService
com.google.android.gms.auth.account.authenticator.WorkAccountAuthenticatorService
com.google.android.gms.auth.account.cryptauth.KeyRequestService
com.google.android.gms.auth.account.service.WorkAccountService
com.google.android.gms.auth.api.credentials.be.CredentialsIntentService
com.google.android.gms.auth.api.credentials.be.CredentialsUiIntentService
com.google.android.gms.auth.authzen.api.service.internaldata.CryptAuthinternalDataOperationService
com.google.android.gms.auth.authzen.api.service.key.CryptauthKeyOperationService
com.google.android.gms.auth.authzen.legacy.keyservice.AuthZenSecretProviderOperationService
com.google.android.gms.auth.authzen.wear.AuthZenListenerService
com.google.android.gms.auth.login.MinuteMaidDgService
com.google.android.gms.auth.proximity.BleCentralService
com.google.android.gms.auth.proximity.BlePeripheralService
com.google.android.gms.auth.proximity.BluetoothInitiatorService
com.google.android.gms.auth.proximity.BluetoothListenerService
com.google.android.gms.auth.proximity.firstparty.CryptauthDeviceSyncService
com.google.android.gms.auth.proximity.firstparty.FirstPartyDeviceRegistrationService
com.google.android.gms.auth.proximity.firstparty.SystemMemoryCacheService
com.google.android.gms.autofill.events.AutofillGcmTaskService
com.google.android.gms.autofill.service.AutofillApiService
com.google.android.gms.autofill.service.AutofillService
com.google.android.gms.backup.BackupAccountManagerService
com.google.android.gms.backup.BackupTransportMigratorService
com.google.android.gms.backup.BackupTransportService
com.google.android.gms.backup.GmsBackupAccountManagerService
com.google.android.gms.backup.SetBackupAccountService
com.google.android.gms.backup.component.CloudRestoreService
com.google.android.gms.backup.component.D2dMigrateHelperService
com.google.android.gms.backup.component.D2dSourceService
com.google.android.gms.backup.component.D2dTransportService
com.google.android.gms.backup.component.FullBackupJobLoggerService
com.google.android.gms.backup.component.GmsBackupSchedulerService
com.google.android.gms.backup.component.MmsBackupSchedulerService
com.google.android.gms.backup.component.NoBackupNotificationService
com.google.android.gms.backup.component.RestoreSessionV0Service
com.google.android.gms.backup.g1.restore.RestoreRevivalGcmTaskService
com.google.android.gms.backup.mms.MmsBackupService
com.google.android.gms.backup.mms.MmsRestoreService
com.google.android.gms.stats.PlatformStatsCollectorService
com.google.android.gms.backup.stats.BackupStatsService
com.google.android.gms.beacon.BleService
com.google.android.gms.car.CarService
com.google.android.gms.car.InCallService2
com.google.android.gms.car.diagnostics.CrashReporterService2
com.google.android.gms.carsetup.CarSetupService
com.google.android.gms.carsetup.wifi.CarWiFiConnectionService
com.google.android.gms.chimera.CarBoundBrokerService
com.google.android.gms.chimera.test.EmptyService
com.google.android.gms.chromesync.sync.SyncReceiverService
com.google.android.gms.chromesync.sync.SyncService
com.google.android.gms.drive.metadata.sync.syncadapter.MetadataSyncService
com.google.android.gms.drive.metadata.sync.syncadapter.SyncAdapterService
com.google.android.gms.feedback.FeedbackAsyncService
com.google.android.gms.reminders.sync.RemindersSyncService
com.google.android.gms.feedback.LegacyBugReportService
com.google.android.gms.feedback.OfflineReportSendTaskService
com.google.android.gms.feedback.SendService
com.google.android.gms.fitness.cache.DataUpdateListenerCacheService
com.google.android.gms.fitness.sensors.sample.CollectSensorService
com.google.android.gms.fitness.service.ble.FitBleBroker
com.google.android.gms.fitness.service.config.FitConfigBroker
com.google.android.gms.fitness.service.goals.FitGoalsBroker
com.google.android.gms.fitness.service.history.FitHistoryBroker
com.google.android.gms.fitness.service.internal.FitInternalBroker
com.google.android.gms.fitness.service.proxy.FitProxyBroker
com.google.android.gms.fitness.service.recording.FitRecordingBroker
com.google.android.gms.fitness.service.sensors.FitSensorsBroker
com.google.android.gms.fitness.service.sessions.FitSessionsBroker
com.google.android.gms.fitness.service.wearable.WearableSyncAccountService
com.google.android.gms.fitness.service.wearable.WearableSyncConfigService
com.google.android.gms.fitness.service.wearable.WearableSyncConnectionService
com.google.android.gms.fitness.service.wearable.WearableSyncMessageService
com.google.android.gms.wearable.service.WearableControlService
com.google.android.location.fused.wearable.GmsWearableListenerService
com.google.android.gms.mdm.services.MdmPhoneWearableListenerService
com.google.android.gms.fitness.wearables.WearableSyncService
com.google.android.location.wearable.WearableLocationService
com.google.android.gms.wearable.service.WearableService
com.google.android.gms.fitness.sync.SyncGcmTaskService
com.google.android.gms.fitness.sync.FitnessSyncAdapterService
com.google.android.gms.fitness.sync.SyncGcmTaskService
com.google.android.location.geofencer.service.GeofenceProviderService
com.google.android.gms.trustagent.trustlet.GeofenceLogsService
com.google.android.gms.nearby.bootstrap.service.NearbyBootstrapService
com.google.android.gms.nearby.connection.service.NearbyConnectionAndroidService
com.google.location.nearby.direct.service.NearbyDirectService
com.google.android.gms.nearby.messages.service.NearbyMessagesService
com.google.android.gms.nearby.messages.offline.OfflineCachingService
com.google.android.gms.nearby.discovery.ui.ReportSnackbarService
com.google.android.gms.nearby.discovery.service.DiscoveryService
com.google.android.gms.nearby.discovery.us.DiscoveryTileService
com.google.android.gms.auth.api.credentials.ui.AutoSaveSnackbarService
com.google.android.gms.people.service.bg.PeopleOneoffSyncGcmTask
com.google.android.gms.people.service.bg.PeoplePeriodicSyncGcmTask
com.google.android.gms.people.pub.PeopleSyncRawContactService
com.google.android.gms.people.sync.PeopleSyncService
com.google.android.gms.people.datalayer.DataLayerTaskService
com.google.android.gms.games.chimera.GamesAndroidServiceProxy
com.google.android.gms.games.chimera.GamesAsyncServiceProxy
com.google.android.gms.games.chimera.GamesSignInIntentServiceProxy
com.google.android.gms.games.chimera.GamesSignInServiceProxy
com.google.android.gms.games.chimera.GamesSyncServiceMainProxy
com.google.android.gms.games.chimera.GamesSyncServiceNotificationProxy
com.google.android.gms.people.syc.focus.delegation.ContactsSyncDelegateService
com.google.android.gms.plus.service.OfflineActionSyncAdapterService
com.google.android.gms.matchstick.contacts.reachability.ReachabilityService
com.google.android.gms.matchstick.contacts.sync.TachystickAccountService
com.google.android.gms.matchstick.contacts.sync.TachystickSyncService
com.google.android.apps.contacts.vcard.VCardService
com.google.android.gms.games.chimera.GamesUploadServiceProxy
com.google.android.gms.wallet.service.address.AddressService
com.google.android.gms.wallet.GcmReceiverService
com.google.android.gms.wallet.service.PaymentService
com.google.android.gms.wallet.service.WalletGcmTaskService
com.google.android.gms.photos.autobacku.AutoBackupWorkService
com.google.android.gms.photos.autobackup.AutoBackupHeavyWorkService
com.google.android.gms.photos.autobackup.service.AutoBackupService
com.google.android.gms.photos.autobackup.DisableAutobackupIntentService
com.google.android.gms.maps.auth.ApiTokenService
com.google.android.gms.maps.service.HttpProxyService

========================

Google Play Services didn't like some of the settings I'd changed, so the first time I switched to the "Google Enabled" firewall profile, it downloaded new settings for Google Play Store, but for the most part, the settings stuck.

In Settings > Accounts > Google, you'll usually find all your sync accounts... I've only got one left (Play Games Cloud Save) and sync for it is off. I'll eventually figure out how to get rid of it, as well.
Eg4h3rs.png


In Settings > Google, I've got a completely blank window:
VsdaPmT.png



Screencaps taken courtesy of ADB:
adb shell screencap -p /sdcard/screencap.png
adb pull /sdcard/screencap.png c:\test
adb shell rm /sdcard/screencap.png


So Google's nearly banished from this phone, yet Play Store still works.

The phone feels snappier, and at idle, CPU utilization is now at a new low:
adb shell dumpsys cpuinfo

Load: 6.72 / 6.93 / 6.64
CPU usage from 1064959ms to 164911ms ago (2019-05-12 01:51:18.058 to 2019-05-12 02:06:18.106):
2.3% 304/surfaceflinger: 1% user + 1.2% kernel / faults: 13034 minor
2.1% 1186/com.android.systemui: 1.4% user + 0.6% kernel / faults: 21550 minor
2% 996/system_server: 1.4% user + 0.6% kernel / faults: 21944 minor
0.5% 322/aal: 0% user + 0.4% kernel
0.5% 126/frame_update_wo: 0% user + 0.5% kernel
0.3% 125/present_fence_w: 0% user + 0.3% kernel
0.3% 4678/logd: 0.1% user + 0.1% kernel / faults: 36 minor
0.2% 128/display_idle_de: 0% user + 0.2% kernel
0.1% 4753/ccc71.st.cpu: 0% user + 0% kernel / faults: 7112 minor
0.2% 112/hps_main: 0% user + 0.2% kernel
0.1% 3661/com.oasisfeng.greenify:service: 0.1% user + 0% kernel / faults: 715 minor
0.1% 1303/kworker/u17:2: 0% user + 0.1% kernel
0.1% 146/teei_switch_thr: 0% user + 0.1% kernel
0.1% 11930/kworker/0:2: 0% user + 0.1% kernel
0% 7/rcu_preempt: 0% user + 0% kernel
0% 1818/com.teslacoilsw.launcher: 0% user + 0% kernel / faults: 3765 minor
0% 1757/ged_srv: 0% user + 0% kernel
0% 124/display_check_a: 0% user + 0% kernel
0% 185/mtk charger_hv_: 0% user + 0% kernel
0% 19260/kworker/u16:0: 0% user + 0% kernel
0% 73/ion_mm_heap: 0% user + 0% kernel
0% 285/utgate_tlog: 0% user + 0% kernel
0% 158/kworker/u16:3: 0% user + 0% kernel
0% 72/cfinteractive: 0% user + 0% kernel
0% 409/netd: 0% user + 0% kernel / faults: 5281 minor
0% 1769/com.google.android.gms.persistent: 0% user + 0% kernel / faults: 413 minor
0% 3350/com.google.android.gms.unstable: 0% user + 0% kernel / faults: 2774 minor
0% 184/bat_thread_kthr: 0% user + 0% kernel
0% 176/mmcqd/0: 0% user + 0% kernel
0% 18998/com.google.android.gms.ui: 0% user + 0% kernel / faults: 4159 minor
0% 123/display_esd_che: 0% user + 0% kernel
0% 2586/com.i.hIG.wds.SKo0RK: 0% user + 0% kernel / faults: 1558 minor
0% 336/vtservice: 0% user + 0% kernel
0% 110/pbm: 0% user + 0% kernel
0% 3/ksoftirqd/0: 0% user + 0% kernel
0% 949/mtkrild: 0% user + 0% kernel
0% 144/btif_rxd: 0% user + 0% kernel
0% 276/magiskd: 0% user + 0% kernel / faults: 165 minor
0% 1959/com.google.android.gms: 0% user + 0% kernel / faults: 321 minor 1 major
0% 330/thermal: 0% user + 0% kernel
0% 181/synaptics_dsx: 0% user + 0% kernel
0% 342/goodixfingerprintd: 0% user + 0% kernel / faults: 3256 minor
0% 298/wmt_launcher: 0% user + 0% kernel
0% 1509/com.android.phone: 0% user + 0% kernel / faults: 90 minor
0% 248/ut_tlog: 0% user + 0% kernel
0% 10/migration/0: 0% user + 0% kernel
0% 11/migration/1: 0% user + 0% kernel
0% 303/servicemanager: 0% user + 0% kernel
0% 1840/com.google.process.gapps: 0% user + 0% kernel / faults: 611 minor
0% 15/migration/2: 0% user + 0% kernel
0% 214/jbd2/mmcblk0p22: 0% user + 0% kernel
0% 302/lmkd: 0% user + 0% kernel
0% 6435/com.android.vending: 0% user + 0% kernel / faults: 133 minor
0% 71/dlpt_notify_thr: 0% user + 0% kernel
0% 201/ueventd: 0% user + 0% kernel / faults: 2 minor
0% 295/healthd: 0% user + 0% kernel
0% 343/zygote64: 0% user + 0% kernel / faults: 327 minor
0% 8/rcu_sched: 0% user + 0% kernel
0% 1916/org.pocketworkstation.pckeyboard: 0% user + 0% kernel / faults: 28 minor
0% 4782/liblib3c.so: 0% user + 0% kernel
0% 19/migration/3: 0% user + 0% kernel
0% 308/mtk_wmtd: 0% user + 0% kernel
0% 850/gsm0710muxd: 0% user + 0% kernel
0% 1990/android.process.media: 0% user + 0% kernel / faults: 52 minor
0% 148/hang_detect: 0% user + 0% kernel
0% 187/wdtk-0: 0% user + 0% kernel
0% 334/batterywarning: 0% user + 0% kernel
0% 1//init: 0% user + 0% kernel / faults: 4 minor
0% 12/ksoftirqd/1: 0% user + 0% kernel
0% 23/migration/4: 0% user + 0% kernel
0% 575/adbd: 0% user + 0% kernel / faults: 116 minor
0% 16/ksoftirqd/2: 0% user + 0% kernel
0% 20/ksoftirqd/3: 0% user + 0% kernel
0% 27/migration/5: 0% user + 0% kernel
0% 145/teei_fastcall_t: 0% user + 0% kernel
0% 174/kworker/7:1H: 0% user + 0% kernel
0% 180/mmcqd/1: 0% user + 0% kernel
0% 188/wdtk-1: 0% user + 0% kernel
0% 191/wdtk-4: 0% user + 0% kernel
0% 194/wdtk-7: 0% user + 0% kernel
0% 197/kworker/4:1H: 0% user + 0% kernel
0% 198/kworker/3:1H: 0% user + 0% kernel
0% 199/kworker/2:1H: 0% user + 0% kernel
0% 203/kworker/1:1H: 0% user + 0% kernel
0% 206/kworker/0:1H: 0% user + 0% kernel
0% 250/kworker/1:2: 0% user + 0% kernel
0% 306/mtk_stp_psm: 0% user + 0% kernel
0% 321/pq: 0% user + 0% kernel
0% 325/md_monitor: 0% user + 0% kernel
0% 339/wifi2agps: 0% user + 0% kernel
0% 345/audioserver: 0% user + 0% kernel
0% 404/mediadrmserver: 0% user + 0% kernel / faults: 206 minor
0% 931/kworker/2:2: 0% user + 0% kernel
0% 1007/rilproxy: 0% user + 0% kernel / faults: 2 minor
0% 1142/irq/290-goodix_: 0% user + 0% kernel
+0% 19303/sh: 0% user + 0% kernel
+0% 19309/logcat: 0% user + 0% kernel
+0% 19320/kworker/u16:2: 0% user + 0% kernel
+0% 19335/kworker/u17:0: 0% user + 0% kernel
+0% 19370/kworker/0:0: 0% user + 0% kernel
+0% 19371/kworker/u16:1: 0% user + 0% kernel
+0% 19401/kworker/u17:1: 0% user + 0% kernel
+0% 19456/com.mediatek.engineermode: 0% user + 0% kernel
+0% 19461/kworker/1:0: 0% user + 0% kernel
+0% 20238/kworker/3:0: 0% user + 0% kernel
+0% 20244/dev.ukanth.ufirewall: 0% user + 0% kernel
+0% 20278/su: 0% user + 0% kernel
+0% 20284/sh: 0% user + 0% kernel
10% TOTAL: 5.5% user + 5.3% kernel + 0% iowait + 0% irq + 0% softirq

And the OS is going easy on the memory. We can get the free memory by adding MemFree and SwapFree: 1,985,832 kB free, or 940,064 kB in use (32.13%).

adb shell cat /proc/meminfo

MemTotal: 2925896 kB
MemFree: 522888 kB
MemAvailable: 1850596 kB
Buffers: 41780 kB
Cached: 1340588 kB
SwapCached: 0 kB
Active: 1014168 kB
Inactive: 954596 kB
Active(anon): 588380 kB
Inactive(anon): 6012 kB
Active(file): 425788 kB
Inactive(file): 948584 kB
Unevictable: 256 kB
Mlocked: 256 kB
SwapTotal: 1462944 kB
SwapFree: 1462944 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 586636 kB
Mapped: 370848 kB
Shmem: 8052 kB
Slab: 91828 kB
SReclaimable: 37116 kB
SUnreclaim: 54712 kB
KernelStack: 22816 kB
PageTables: 22308 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2925892 kB
Committed_AS: 40596188 kB
VmallocTotal: 260046784 kB
VmallocUsed: 177940 kB
VmallocChunk: 259771520 kB

{UPDATE}
Strangely, the Play Store still worked, and I got app updates from it, but the Settings menu says the device is no longer certified... but it also says uncertified devices won't receive updates. Weird.

I rolled back to a backup I'd taken just before starting these alterations, and now Play Store says the device is certified again. I'll redo the alterations, but I'll do more research to be sure I'm just disabling those components which reduce privacy and performance.

Did I mention (several times) that you need backups if you're going to experiment with your phone?
{/UPDATE}
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Ok, I'm running a couple battery drain tests again.

Test1 is a simulation of how I would use the phone at home, except it's unplugged from USB. Typically I'd plug it in, but I can't do a battery drain test with it plugged in.

Conditions:
================================
All the above changes applied to phone
CPU allowed to range in speed from 299 MHz to 1.3 GHz, Interactive throttle scheme
Test starts with battery at 100% (4291 mV)
Podcast Addict running and playing podcasts saved to the SD card
----------
After starting Podcast Addict and getting a podcast playing, I ran 'adb shell dumpsys cpuinfo' and checked for the PIDs of logd (PID 282) and logcat (PIDs 439 and 737), then used ADB to kill those processes:

adb shell
su
kill 439
kill 737
kill 282
exit
exit

{The PID of an app is different each time the app is started, so don't just use the PID numbers above.}

Logd started back up, but it's no longer hogging the CPU. Logcat started back up, but I don't think it's attached to any logging at the moment (it doesn't attach to any logging until I manually start adb logcat on the computer, and it goes back to essentially no CPU usage on the phone after I stop adb logcat on the computer).

The phone will stay in this condition until it's rebooted. This is nice in that you can run the phone in this condition the whole day, but it's also inconvenient because you have to remember to kill logd and logcat after each reboot. I'm considering writing a [ROOT] app to kill logd and logcat automatically. I have to convince Podcast Addict's author to include a setting in Podcast Addict to automatically run another program after PA starts playing a podcast. Or I suppose I could use the same intents as PA uses to trigger the [ROOT] app.
----------
The phone is set up so it automatically goes into Battery Saver mode when the battery hits 99%.
WiFi and Cellular Data is off. Location is off. Airplane Mode is on.
AFWall+ is in 'Lockdown' profile (block all connections).
Bluetooth connected to Bluetooth headset.
No other apps running.
The screen will remain on for the duration of the test.
The phone will run for 1 hour.

Before I discovered how to disconnect logcat and logd from Podcast Addict spamming the logs with AudioThread entries, the CPU would stay at 1.3 GHz if I left it unthrottled, and use 4 or 5 cores. It'd drain the battery at about 8% per hour even with the CPU pinned to 299 MHz maximum and the screen off. The CPU would range up to a temperature of 56C.

Now the CPU throttles back to 1.14 GHz at times when I leave it unthrottled, uses only 2 cores most of the time and 3 cores some of the time. The CPU stays around a temperature of 40C.
================================
Result: After 1 hour, the battery drains to 94% (4163 mV).

In one hour, the phone drained 128 mV from the battery. From my previous battery test, I know that about 10 mV of that can be attributed as the minimum drain with the phone sitting idle, no apps running, screen off. So the phone now lasts longer with the screen on and the CPU allowed to range to its maximum speed, than it used to last with the screen off and the CPU pinned to 299MHz maximum, while playing podcasts.

I'll recharge to 100%, then start the second test.

---------- Post added at 10:40 PM ---------- Previous post was at 10:08 PM ----------

The second test will have the same setup in the phone, the only changes will be that the screen will be off and the CPU pinned to 299MHz maximum. This simulates how I use the phone during the day... yeah, I keep the Airplane Mode on most of the time... if someone calls me, they can leave a voicemail if it's important, and I'll get back to them. If it's not important enough to leave a voicemail, it wasn't important enough to call me in the first place. ;)

Starting voltage: 4300 mV (100%)
Ending voltage: 4227 mV (97%)

Only 73 mV per hour battery drain when playing podcasts, or ~63 mV per hour above the baseline idle battery drain. That's pretty good.
 
Last edited:

WarHorse77

New member
Feb 24, 2018
2
0
y'all make this sound so easy and i cant even get out of the starting gate......i've had no luck whatsoever trying to get sp flash tools to work in linux it does absolutely nothing for hours even after adding a blacklist file. ive been using linux for years and still call myself a novice but i'm tired of banging my head on a concrete block i'm ready to tape a stick of dynamite to this phone.
 

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Experimenting with your phone is kind of a "do it and see what happens" sort of deal... sometimes you change something, and it breaks something else which prevents you from changing the first something back.

I just ran into such an occurrence... I made a change, and somehow it affected the ability of Settings to open, so I couldn't change it back.

It was an easy fix:
adb shell pm clear com.android.settings

---------- Post added at 02:37 AM ---------- Previous post was at 02:35 AM ----------

y'all make this sound so easy and i cant even get out of the starting gate......i've had no luck whatsoever trying to get sp flash tools to work in linux it does absolutely nothing for hours even after adding a blacklist file. ive been using linux for years and still call myself a novice but i'm tired of banging my head on a concrete block i'm ready to tape a stick of dynamite to this phone.

Boot a LiveCD such as ReactOS... it'll run the Windows version of SP Flash Tools, and since it's a LiveCD, it won't make any changes on your system... but you can still store the files you're going to flash on your system's drives, and access them from SP Flash Tools running within ReactOS.

---------- Post added at 03:03 AM ---------- Previous post was at 02:37 AM ----------

Hmmmm.... I think I uncovered yet another instance of Google being sleazy, this time having to do with tracking and Ad ID.

If you go into Settings > Google > Ads, you can reset your Ad ID, right? Well, not so fast... my setting in Settings > Google > Ads is showing NO Advertising ID. Yet I still have an Advertising ID.

How did I do this?

Go to /data/data/com.google.android.gms/shared_prefs/adid_settings.xml

You'll see a string named "adid_key"... that's your REAL Ad ID, the one Google never changes (it's never changed on my phone since I bought it, even though I've clicked the "Reset advertising ID" option in Settings > Google > Ads several times since then.

So why is my Settings > Google > Ads 'advertising ID' showing as blank?

Because I've edited that .xml file... specifically the setting with a string name of "fake_adid_key".

Google is setting a fake Ad ID key and showing you that. It'll reset when you want, but that's not the real Ad ID key, it's not the one Google is using... hence the name "fake_adid_key".

This is a blatant violation of user trust and privacy. Google is lying to us, tracking us, stealing our personal and personally-identifying data and using it to make money. No wonder they got rid of their "Don't Be Evil" condition in their charter.

I've reset my "adid_key" setting to something which I'm sure will get the point across should any Google engineer read the Ad ID server logs at Google.... as a hint (because it's not family-friendly), it's F***_Y**_GOOGLE without the stars.

And now that it's been set, those Google engineers will just have to live with me spamming their Ad ID logs with my custom message... because the REAL Ad ID key never changes. ;)

I encourage everyone to reset their /data/data/com.google.android.gms/shared_prefs/adid_settings.xml "adid_key" to the same... it's our way of fighting back against Google crawling into every nook and cranny of our phones so they can use them as data-collection and monetization tools.

If all Google sees in its AdID cache on their servers is "F***_Y**_GOOGLE" from nearly every user, their advertising program becomes ineffective, and they'll be forced to clean up their act.

{UPDATE}
That "F***_Y**_GOOGLE" string I entered in the real adid_key also gets put into /data/data/com.android.vending/shared_prefs/finsky.xml

Code:
<string name="adid-cached-value">F***_Y**_GOOGLE</string>
That's one of the configuration files Google Play Store uses when you're checking for updates.

So Google is tracking you with a Globally Unique ID (GUID) that doesn't change, and presents to the user a "fake_adid_key" that changes when the user presses the 'Reset Advertising ID' button, but otherwise does absolutely nothing.

Were this not so, then the "fake_adid_key" content (the one that changes when the user presses the 'Reset Advertising ID' button) would be placed into finsky.xml instead of the content of 'adid_key' (which never changes).
{/UPDATE}

{UPDATE2}
And further evidence that Google is showing users a 'fake_adid_key' that they can reset, but which does nothing else, while actually using 'adid_key' as their GUID (Globally Unique ID) to track users:
/data/user/0/com.teslacoilsw.launcher/shared_prefs/com.crashlytics.prefs.xml
Code:
<string name="crashlytics.advertising.id">F***_Y**_GOOGLE</string>
That's a third-party app, using the hidden and unchanging 'adid_key' content... if 'fake_adid_key' did anything other than trick users into believing they're not being tracked, then the content of 'fake_adid_key' would have been placed into that third-party app's advertising.id string.
{/UPDATE2}

{UPDATE3}
And even further evidence that Google is showing users a 'fake_adid_key' that they can reset, but which does nothing else, while actually using 'adid_key' as their GUID (Globally Unique ID) to track users:
data/user/0/com.oasisfeng.greenify/shared_prefs/com.crashlytics.prefs.xml
Code:
<string name="crashlytics.advertising.id">F***_Y**_GOOGLE</string>
That's another third-party app, using the hidden and unchanging 'adid_key' content... if 'fake_adid_key' did anything other than trick users into believing they're not being tracked, then the content of 'fake_adid_key' would have been placed into that third-party app's advertising.id string.
{/UPDATE3}
 
Last edited:

Lusty Rugnuts

Senior Member
Apr 17, 2019
120
29
Pro-Tip: Open Google Play Store, go to Settings, scroll down until you see the Play Store version. Press on it once to see if you've got the latest version (it'll install the latest version if you don't), and repeatedly press on it to enable Developer Options For Play Store... that'll let you get Pre-Release apps such as Nebulo, the open-source DNS-over-TLS-or-HTTPS app.

In Google Play Store, search for and install Nebulo. Set it up so that all your apps are forced to send their DNS requests through Nebulo. It'll set up a VPN server.

In AFWall+, enable Nebulo for WiFi and Cellular Data in whichever firewall profiles you wish. I've got it enabled in my "Default" and "Google-Enabled" profiles, whereas my "Lockdown" profile allows nothing in or out.

At the lower-right of Nebulo, you'll see a little icon that looks to me like three hard drives stacked together. Press it, and select whichever DNS protocol you want (DNS over TLS, or DNS over HTTPS). I selected DNS over HTTPS because this makes it nearly impossible for WiFi networks to hijack your DNS requests and route them through their own specified DNS servers.

Select the DNS server you want to use, or enter your own... I'll play with OpenNic DNS servers later, but for now, I enabled Quad9 DNS (dns.quad9.net).

Quad9 is a non-profit with a pretty good privacy policy. Being a non-profit, they have no financial incentive to collect, aggregate and sell your DNS history to make a buck. In fact, the legal infrastructure where they are forbids them doing so.

Further, they're a part of Global Cyber Alliance, which is dedicated to stopping cybercrime... they use IBM's X-Force database and other threat-analysis databases to block malicious websites.

Now open Brave Browser (I assume you've set it up so it automatically opens either DuckDuckGo.com or StartPage.com, yes?) and search for "What's my DNS server?".

One of the results will be What's My DNS Server?, open that page, press the "What's my DNS Server?" button, and it should tell you (assuming you used Quad9 like I did) the IP address and owner of the DNS server.

In my case, it shows 74.63.16.250, WoodyNet, which is part of Quad9 (their DNS servers being AnyCast servers). AnyCast DNS routes DNS queries to the nearest DNS server in their domain to improve performance. Quad9, however, doesn't own its own DNS servers, it relies upon Packet Clearing House (Bill Woodcock) to host servers for it. That's why you see "WoodyNet"... the DNS servers are under control of Quad9, but they're hosted on Bill Woodcock's physical servers.

Now you can go into AFWall+ and either delete or comment out the DNS portion of the IPTables scripts.

{UPDATE}
Found a bug / feature in Nebulo... right when you enable the network interface, Nebulo sets a dummy IP address before it can get the interface's IP address... it sets 8.8.8.8, a DNS server owned by Google, likely because that's what most people have in their resolv.conf as their default DNS server.

But I had 8.8.8.8 (in fact, every single IP address owned by Google) blocked in my AFWall+ firewall's 'Default' profile, so Nebulo never got any traffic. Commenting out the iptables entry blocking 8.8.8.8 got Nebulo working. I've got a feature request in with the Nebulo developers to allow the user to set their own dummy IP address, or to use a non-Google IP address.
{/UPDATE}

{UPDATE2}
The developer for Nebulo has changed the code so it sets a different dummy IP address. So now if you're like me, you can block all of Google's CIDR ranges and still have Nebulo work.
{/UPDATE2}
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 1
    Ferchito

    Hi Xiione,
    I bought a couple of X3s recently and I was also expecting some development for them already but I only found your thread.

    I think there are chances to root the X3 and install customs rooms since it has the same chipset as the BLU Vivo 5 (Chipset Mediatek MT6753, CPU Octa-core 1.3 GHz) and the Vivo 5 has extensive coverage and even kernel sources available. Vivo 5 doesn't have a fingerprint sensor but the BLU Life One X2 Mini has one that I'd be willing to bet is the same as the X3, so drivers may work for it too. This is the route I will follow but I'm only getting started with this stuff so it will probably take a few weeks to get some results.

    Hopefully others will join :)
    Cheers
    1
    You really outdo yourself with every post. I am having a laugh.

    But truly I say onto you: you don't understand my choice of devices. You ought to learn to let go and move on when that's the case case. Nobody and I really do mean nobody needs your condescension (read $h*t).




    That is a BS excuse. With the internet you can have any device you want. Just save up for it. Its that simple. As for the condescension, you are ready far to much into things. You can get great devices for really cheap these days. I mean even almost good devices like Xiaomi are really cheap.


    I was here long before you and ill be here modding devices and building the os for my device long after you are gone.



    Let me explain. What happens to you and your device I really couldnt care less about nor does anyone here. It is your problem. Watch the Video if you are confused.




    https://www.youtube.com/watch?v=JmvCpR45LKA
    1
    Well then I will count you as just stupid for buying a cheap phone if you have lots of money to spend. (which I know is bs if you really live where you say you do in your bio) I will just have to count you as stupid then. But I guess I shoudlnt be surprised. It is you after all. With your history in devices well. What can I say.

    Wow. You're so knowledgeable and articulate.

    ???
    1
    BLU Life One X3 Rooted :D

    Hi guys,

    Yesterday I saw 20+ posts in the thread and figured some progress had been made....only to realize it was an epic internet battle between two productive members of this community... :eek:

    But to the point - I noticed on romprovider.com someone had ported TWRP for the Blu Life One X3 and even though it is (at this point) pretty much broken, it was good enough to allow installing SuperSU on the BLOX3 and rooting it!

    The link from that site contains a "guide" which it is total BS. I guess they write it automatically as soon as someone ports a new TWRP for any device, because it assumes you will be able to unlock the bootloader, flash with fastboot, etc. etc. which we already know doesn't work with this phone (the "ignored Volume UP" issue). Still, what matters is the link to the (broken but still useful TWRP) mentioned in the guide...

    This is what you will need:

    **XDA doesn't allow me to post outside links so I had to get creative, sorry**

    1) SP Flash Tools (versions 5.16 and 5.18 both worked for me) to copy TWRP to the device (instead of using fastboot)
    [search XDA to get it. I had it already and don't quite remember from where]

    2) The scatter.txt file needed by SP Flash Tools to know where the discovery partition is and put TWRP there.
    [I will paste the text file here at the end of the post]

    3) The (broken) TWRP that somebody "ported" to the BLOX3.
    [ https^^basketbuild.com^uploads^devs^yshalsager^TwrpBuilder^blu^life_one_x3^TWRP-3.2.3-life_one_x3-20180918.img ]
    [ if it doesn't work get it from the guide: {Mod edit: Link to paid services website removed. Oswald Boelcke, Senior Moderator}]

    4) The fantastic SuperSU tool
    [ This version worked wonderfully: https^^download.chainfire.eu^1220^SuperSU^SR5-SuperSU-v2.82-SR5-20171001224502.zip ]

    5) Adb installed on the computer

    STEPS:

    1) Get your BLU Life One X3 updated normally to the latest firmware version (so you get the latest security updates rolled out by google)

    2) Go in Developer Options and Enable USB Debugging

    3) Once you are on the latest which mine shows as BLU_L0150WW_V7.0.04.10_GENERIC 24-08-2018 11:09, go in Developer Options and disable "Automatic System Updates" just so you have some control on whether you want to take new updates later or not.

    4) Save a text file with the scatter info I attached below and name it something you remember later, like "blox3-scatter.txt"

    5) Turn the phone OFF.

    6) Launch SP Flash Tools and go to the Download tab (it's the default tab). It should already point to a file in the "Download Agent" entry - Don't touch it.
    On the "Scatter-loading File" entry, choose the text file you saved above, "blox3-scatter.txt" or whatever.

    7) Click on the "Location" part of the row named "recovery" and choose the TWRP image file you saved in Requirement #3.

    8) Make sure that ONLY the check box next to "recovery" is selected. Go ahead and click the Download button with the green down arrow (Yes, with the phone OFF and NOT PLUGGED to the computer yet)

    9) It will grey out as if it is working (it's actually waiting for you to connect the phone which REMAINS OFF). Half a second after you plug it in, you should see a RED progress bar on the bottom (copying the download agent to the phone) and then a YELLOW progress bar which is copying TWRP. Then you should see the confirmation box in green and TWRP is already on the phone :D At this point you can close SP Flash Tools.

    10) Turn on the phone in Recovery Mode by SIMULTANEOUSLY long-pressing POWER and VOLUME UP. When it vibrates and the BLU logo appears, release the POWER button ONLY, and 2-3 seconds later release the Volume UP. The phone should enter TWRP recovery welcome screen.
    [if you mess up the buttons and the phone starts normally, it will overwrite TWRP with the stock recovery and you will have to turn it OFF again and go back to STEP 6.]

    If we had a working TWRP now it would be just copying over the SuperSU file and using the Install option of TWRP to find it on the phone storage and run it, but this TWRP does not map the partitions correctly so the real /system and /data partitions of the phone are inaccessible even though TWRP is up and running. You will install SuperSU by manually fixing a couple things first and then using the Sideload option of TWRP.

    11) Open a command prompt and issue

    c:> adb shell

    You will get a shell console on the phone. On the shell, issue these commands

    #> mount -o rw /dev/block/mmcblk0p20 /system

    Now if you run

    #> ls -l /system

    it will show the real /system partitions with a bunch of folders (before mounting it would show an empty folder with just a bin subfolder)

    #> ln -s /dev/block/platform/mtk-msdc.0 /dev/block/platform/mtk-msdc.0/11230000.msdc0

    this will create a symbolic link to mimic a folder structure that is expected by the Sideload command

    #> exit

    Exit the shell and go back to the command prompt.

    12) In TWRP, go to Advanced and launch Sideload. It should show that it is waiting for the sideload process to start (from the computer). Ignore some messages in read that are from when TWRP started and couldn't find the partitions...

    13) On the computer, locate the SUperSU zip you downloaded in Requirement #4 and issue the adb sideload command on the prompt, passing the zip file as argument.

    c:> adb sideload SR5-SuperSU-v2.82-SR5-20171001224502.zip (or whatever path and name you gave it)

    At this point you will see the SuperSU install script running on the phone and doing its magic (like patching the boot and system images to make the change permanent).

    14) That's it. If the script finishes successfully you have a rooted BLU Life One X3! (I have two of them :D )

    Optionally, you can remove all the crap installed by BLU. I for example chose to delete all these:

    15) make sure you still have /system accessible by

    adb shell
    #> ls -l /system

    if it is gone just mount it again with

    #> mount -o rw /dev/block/mmcblk0p20 /system

    and then copy and paste all this in the shell (you can do it in one copy-paste):

    rm -rf /system/app/BluHTMLViewer
    rm -rf /system/app/CalculatorGoogle
    rm -rf /system/app/CalendarGoogle
    rm -rf /system/app/YouTube
    rm -rf /system/app/talkback
    rm -rf /system/app/PreinstallProvider-blu
    rm -rf /system/app/Photos
    rm -rf /system/app/Maps
    rm -rf /system/app/Messages
    rm -rf /system/app/Music2
    rm -rf /system/app/MusicFX
    rm -rf /system/app/JapaneseIME
    rm -rf /system/app/GoogleTTS
    rm -rf /system/app/Gmail2
    rm -rf /system/app/Drive
    rm -rf /system/app/Duo
    rm -rf /system/app/EasterEgg
    rm -rf /system/app/DeskClockGoogle
    rm -rf /system/app/GFManager
    rm -rf /system/app/OfAv46u1-arm7-APIlevel16-22
    rm -rf /system/app/NextRadio-5.0.2351-release
    rm -rf /system/app/Videos
    rm -rf /system/app/GooglePrintRecommendationService
    rm -rf /system/priv-app/appcloud_oobe_blu-release_V3.8.2
    rm -rf /system/priv-app/aura_care_blu-release-V3.5.1-174-production
    rm -rf /system/priv-app/TagGoogle
    rm -rf /system/priv-app/Velvet

    16) Now just go ahead and reboot the phone into system with the corresponding TWRP option. The first boot will take longer and will loop a couple times bu that's part of the process. After booting, to verify you have root connect the phone again to the computer and do

    adb shell (you will get a non-root shell with $ prompt, then run "su" to get a root shell)

    $ su
    # (you will get a prompt on the phone asking you to authorize the root shell)

    That's it. Enjoy your rooted, BLU-crap-less Blu Life One X3! :laugh:

    Common issues:
    - SP Flash Tools doesn't do anything when you connect the phone (which should be OFF):
    This is about the drivers, I have Windows 10 and Ubuntu 18 and in both the tool worked without installing specific drivers. If you have issues try installing specific MTK65xx drivers available on XDA.

    - You managed to delete the main launcher when cleaning the crap (I did, haha) so you can't launch any app.
    From an adb shell, root# or not$, issue the command

    am start com.android.vending

    Which will launch the Play Store and you can download another lancher :D My favorite is the Nova launcher.

    If I remember any other mistake I made when trying the first time I will add it here.

    Good luck! (Scatter file below)

    ############ Scatter file begins here (copy from line below) ###############
    ############################################################################################################
    #
    # General Setting
    #
    ############################################################################################################
    - general: MTK_PLATFORM_CFG
    info:
    - config_version: V1.1.2
    platform: MT6753
    project: kon6753_e3_65_53_n
    storage: EMMC
    boot_channel: MSDC_0
    block_size: 0x20000
    ############################################################################################################
    #
    # Layout Setting
    #
    ############################################################################################################
    - partition_index: SYS0
    partition_name: preloader
    file_name: preloader_kon6753_e3_65_53_n.bin
    is_download: true
    type: SV5_BL_BIN
    linear_start_addr: 0x0
    physical_start_addr: 0x0
    partition_size: 0x40000
    region: EMMC_BOOT_1
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: BOOTLOADERS
    reserve: 0x00

    - partition_index: SYS1
    partition_name: pgpt
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x0
    physical_start_addr: 0x0
    partition_size: 0x80000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: INVISIBLE
    reserve: 0x00

    - partition_index: SYS2
    partition_name: proinfo
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x80000
    physical_start_addr: 0x80000
    partition_size: 0x300000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: PROTECTED
    reserve: 0x00

    - partition_index: SYS3
    partition_name: nvram
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x380000
    physical_start_addr: 0x380000
    partition_size: 0x500000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: BINREGION
    reserve: 0x00

    - partition_index: SYS4
    partition_name: protect1
    file_name: NONE
    is_download: false
    type: EXT4_IMG
    linear_start_addr: 0x880000
    physical_start_addr: 0x880000
    partition_size: 0xa00000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: PROTECTED
    reserve: 0x00

    - partition_index: SYS5
    partition_name: protect2
    file_name: NONE
    is_download: false
    type: EXT4_IMG
    linear_start_addr: 0x1280000
    physical_start_addr: 0x1280000
    partition_size: 0xa00000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: PROTECTED
    reserve: 0x00

    - partition_index: SYS6
    partition_name: lk
    file_name: lk.bin
    is_download: true
    type: NORMAL_ROM
    linear_start_addr: 0x1c80000
    physical_start_addr: 0x1c80000
    partition_size: 0x80000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS7
    partition_name: para
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x1d00000
    physical_start_addr: 0x1d00000
    partition_size: 0x80000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: INVISIBLE
    reserve: 0x00

    - partition_index: SYS8
    partition_name: boot
    file_name: boot.img
    is_download: true
    type: NORMAL_ROM
    linear_start_addr: 0x1d80000
    physical_start_addr: 0x1d80000
    partition_size: 0x1000000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS9
    partition_name: recovery
    file_name: recovery.img
    is_download: true
    type: NORMAL_ROM
    linear_start_addr: 0x2d80000
    physical_start_addr: 0x2d80000
    partition_size: 0x1000000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS10
    partition_name: logo
    file_name: logo.bin
    is_download: true
    type: NORMAL_ROM
    linear_start_addr: 0x3d80000
    physical_start_addr: 0x3d80000
    partition_size: 0x800000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS11
    partition_name: expdb
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x4580000
    physical_start_addr: 0x4580000
    partition_size: 0xa00000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: INVISIBLE
    reserve: 0x00

    - partition_index: SYS12
    partition_name: seccfg
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x4f80000
    physical_start_addr: 0x4f80000
    partition_size: 0x80000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: INVISIBLE
    reserve: 0x00

    - partition_index: SYS13
    partition_name: oemkeystore
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x5000000
    physical_start_addr: 0x5000000
    partition_size: 0x200000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: INVISIBLE
    reserve: 0x00

    - partition_index: SYS14
    partition_name: secro
    file_name: secro.img
    is_download: true
    type: NORMAL_ROM
    linear_start_addr: 0x5200000
    physical_start_addr: 0x5200000
    partition_size: 0x600000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS15
    partition_name: keystore
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x5800000
    physical_start_addr: 0x5800000
    partition_size: 0x800000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: INVISIBLE
    reserve: 0x00

    - partition_index: SYS16
    partition_name: tee1
    file_name: trustzone.bin
    is_download: true
    type: NORMAL_ROM
    linear_start_addr: 0x6000000
    physical_start_addr: 0x6000000
    partition_size: 0x500000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS17
    partition_name: tee2
    file_name: trustzone.bin
    is_download: true
    type: NORMAL_ROM
    linear_start_addr: 0x6500000
    physical_start_addr: 0x6500000
    partition_size: 0x500000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS18
    partition_name: frp
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x6a00000
    physical_start_addr: 0x6a00000
    partition_size: 0x100000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: INVISIBLE
    reserve: 0x00

    - partition_index: SYS19
    partition_name: nvdata
    file_name: NONE
    is_download: false
    type: EXT4_IMG
    linear_start_addr: 0x6b00000
    physical_start_addr: 0x6b00000
    partition_size: 0x2000000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: INVISIBLE
    reserve: 0x00

    - partition_index: SYS20
    partition_name: metadata
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0x8b00000
    physical_start_addr: 0x8b00000
    partition_size: 0x2500000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: INVISIBLE
    reserve: 0x00

    - partition_index: SYS21
    partition_name: system
    file_name: system.img
    is_download: true
    type: EXT4_IMG
    linear_start_addr: 0xb000000
    physical_start_addr: 0xb000000
    partition_size: 0x100000000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS22
    partition_name: cache
    file_name: cache.img
    is_download: true
    type: EXT4_IMG
    linear_start_addr: 0x10b000000
    physical_start_addr: 0x10b000000
    partition_size: 0x19000000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS23
    partition_name: userdata
    file_name: userdata.img
    is_download: true
    type: EXT4_IMG
    linear_start_addr: 0x124000000
    physical_start_addr: 0x124000000
    partition_size: 0x60000000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: true
    is_reserved: false
    operation_type: UPDATE
    reserve: 0x00

    - partition_index: SYS24
    partition_name: flashinfo
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0xFFFF0084
    physical_start_addr: 0xFFFF0084
    partition_size: 0x1000000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: false
    is_reserved: true
    operation_type: RESERVED
    reserve: 0x00

    - partition_index: SYS25
    partition_name: sgpt
    file_name: NONE
    is_download: false
    type: NORMAL_ROM
    linear_start_addr: 0xFFFF0004
    physical_start_addr: 0xFFFF0004
    partition_size: 0x80000
    region: EMMC_USER
    storage: HW_STORAGE_EMMC
    boundary_check: false
    is_reserved: true
    operation_type: RESERVED
    reserve: 0x00
    ############ Scatter file ends here (no need to include this line) ################

    ---------- Post added at 04:32 PM ---------- Previous post was at 04:26 PM ----------


    So, here's my problem:

    So far, I have been able to get it into the OEM unlock screen using adb, prompting a press of either of the volume buttons to confirm unlock, only that the volume up button won't do anything, and the volume down just cancels the process.

    Any help at all?
    Big thanks!

    See post #24, I got both my X3s rooted.... :D

    Cheers
    1
    NO FOUND

    [/B][/B][/B][/B]
    On this step:

    "At this point you will see the SuperSU install script running on the phone and doing its magic (like patching the boot and system images to make the change permanent)."

    Are you sure you saw these messages on the TRWP console?
    When it -successfully- patches the boot and system images the next boot will come from them.

    Only thing I can guess is you may have skipped creating the symbolic link the script is expecting...

    Can you export the TWRP log to the computer and paste it here?

    Please friend, upload a video. Following everything explained, the root was impossible. I repeated the process three times and I have not succeeded, every time I do I have to flash the firmware again because it does not go from the BLU logo with the white background, it does not even reach the bootanimation. Thank you! Excuse me, I'm using a translator!

    PS: I have the bootloader blocked. The firmware used is BLU_L0150WW_V7.0.04.10_GENERIC 08-24-2018 11:09