[ROM][STABLE][FW-LESS] MIUI 10 by Xiaomi.eu for Whyred; + method to remove firmware - Xiaomi Redmi Note 5 Pro Guides, News, & Discussion

As you all know, flashing MIUI ROMs have become a bit tricky for Whyred users, due to the Anti-roll back issue. But fear not, @AL_IRAQI has found the solution, and I'll explain here how that goes, and I'll also link to the first Stable MIUI 10 in English by Xiaomi.eu. That ROM will not require this process, as pointed out by @dingdong3000 here.
► Why do you want this?
• Well, right now, the only Stable MIUI 10 for Whyred is Chinese. But Xiaomi.eu is based on the Chinese release, so their Stable ROM is basically the better Global version. Also, all of their ROMs pass the SafetyNet test without any issue, even if you directly modify parts of the system.​
► How can you download?
• Download from official SourceForge link. DOWNLOAD​
► How can you make the modification yourself?
• That's actually the prime purpose of this thread. There are basically 2 things to do when you want to make a MIUI ROM fw-less. Follow this procedure:​
Download your desired ROM.
Open it with WinRAR (No need to extract).
Delete the folder title "firmware-update" from the list.
Go inside META-INF\com\google\android.
Double click on "updater-script".
Select "Notepad++" from the list. (IMPORTANT. Normal Notepad doesn't have a line count. Download it from here.)
We need to remove all the radio update tasks. To do that, remove the red colored lines from the code.
Code:
getprop("ro.product.device") == "whyred" || abort("E3004: This package is for \"whyred\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Target: xiaomi/whyred/whyred:8.1.0/OPM1.171019.011/V9.5.19.0.OEIMIFA:user/release-keys");
show_progress(0.100000, 5);
show_progress(0.200000, 10);
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
[COLOR="Red"]
# ---- radio update tasks ----
ui_print("Patching firmware images...");
ifelse(msm.boot_update("main"), (
package_extract_file("firmware-update/mdtpsecapp.mbn", "/dev/block/bootdevice/by-name/mdtpsecapp");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64");
package_extract_file("firmware-update/splash.img", "/dev/block/bootdevice/by-name/splash");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlib");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hyp");
package_extract_file("firmware-update/pmic.elf", "/dev/block/bootdevice/by-name/pmic");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymaster");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xbl");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpm");
), "");
ifelse(msm.boot_update("backup"), (
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hypbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfgbak");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymasterbak");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xblbak");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpmbak");
), "");
msm.boot_update("finalize");
package_extract_file("firmware-update/dspso.bin", "/dev/block/bootdevice/by-name/dsp");
package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("firmware-update/BTFM.bin", "/dev/block/bootdevice/by-name/bluetooth");[/COLOR]
show_progress(0.600000, 250);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
abort("E1001: Failed to update system image.");
ui_print("Patching vendor image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat.br", "vendor.patch.dat") ||
abort("E2001: Failed to update vendor image.");
show_progress(0.100000, 2);
set_progress(1.000000);
The final copy should look like this-
Code:
getprop("ro.product.device") == "whyred" || abort("E3004: This package is for \"whyred\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Target: xiaomi/whyred/whyred:8.1.0/OPM1.171019.011/V9.5.19.0.OEIMIFA:user/release-keys");
show_progress(0.100000, 5);
show_progress(0.200000, 10);
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
show_progress(0.600000, 250);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
abort("E1001: Failed to update system image.");
ui_print("Patching vendor image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat.br", "vendor.patch.dat") ||
abort("E2001: Failed to update vendor image.");
show_progress(0.100000, 2);
set_progress(1.000000);
Notice the blank line at the end, don't remove it. Global ROM seems to have 14 lines of code with 1 blank line at the end after this process.
Save the file, WinRAR will ask if you want to update the archive, permit it.
Your ROM is now fw-less. Enjoy.
► You bricked your phone?
Sorry, I can't help you if you messed something up. That's the disclaimer here. You do this with all liability to yourself.​
► Want to learn more?
• Everything About Anti Roll-back [Whyred]
• Redmi Note 5/Pro Miui ROMs without firmware [fw-less]​
► Should you be careful?
• I don't exactly know how far behind you can go, do that research yourself and let me know so I can update it here. But I'd recommend not going too far behind. If you go too far, even after following this process, your phone might end up bricking. Some ROMs are just too old.​

Isn't Xiaomi EU Firmware less itself ?

FroZine said:
Isn't Xiaomi EU Firmware less itself ?
Click to expand...
Click to collapse
As I already said, the version they released has the firmware update folder, which suggests that it isn't firmware less.

Thank you for this. Just to be on the same note, if I'm on latest 9.6.4 stable global I should be ok to flash this firmless ROM right? I just wanna make sure because I tried to flash MIUI pro 10 and bricked my device

NaeemBolchhi said:
As I already said, the version they released has the firmware update folder, which suggests that it isn't firmware less.
Click to expand...
Click to collapse
The firmware inside this xiaomi.eu 10 stable rom won't trigger ARB. It only updates BT, DSP, and modem not bootloader so ARB is safe.

dingdong3000 said:
The firmware inside this xiaomi.eu 10 stable rom won't trigger ARB. It only updates BT, DSP, and modem not bootloader so ARB is safe.
Click to expand...
Click to collapse
Yeah, just found out myself as well. So I guess I'll remove the download link and just keep the method.
coco1476 said:
Thank you for this. Just to be on the same note, if I'm on latest 9.6.4 stable global I should be ok to flash this firmless ROM right? I just wanna make sure because I tried to flash MIUI pro 10 and bricked my device
Click to expand...
Click to collapse
Use the official ROM, it'll work just fine. Skip mine.

NaeemBolchhi said:
Yeah, just found out myself as well. So I guess I'll remove the download link and just keep the method.
Use the official ROM, it'll work just fine. Skip mine.
Click to expand...
Click to collapse
OP I'm still complicated.. you have provided a link. Can you tell me if I flash that will it my ARB or not? Is it safe to flash?

1Ishara said:
OP I'm still complicated.. you have provided a link. Can you tell me if I flash that will it my ARB or not? Is it safe to flash?
Click to expand...
Click to collapse
My link leads to the SourceForge location, the rom works on both Ai and Pro Whyred devices. As someone mentioned above, it doesn't touch ARB, so no worries. I had previously added a different rom due to a misunderstanding. The current one is perfect.

Nice tutorial. Helped me a lot. Successfully installed latest global build. Keep up the good work. Thanks & please keep us updated
---------- Post added at 07:19 PM ---------- Previous post was at 07:03 PM ----------
@Naeem Will the system ota update stop completely by this method? I don't want ota updates.

NaeemBolchhi said:
My link leads to the SourceForge location, the rom works on both Ai and Pro Whyred devices. As someone mentioned above, it doesn't touch ARB, so no worries. I had previously added a different rom due to a misunderstanding. The current one is perfect.
Click to expand...
Click to collapse
Thank you very much. Off topic how about the battery life of xiaomi.eu stable? Im currently on masik i need to change the rom.

I tried your method exactly like you said with muipro 10 and bricked my device... again, but thanks to the new unbrick method I was able to unbrick it for free this time

In flash files long lists with the numbers of apps to be flashed are given. It would be highly useful if someone provides names of the corresponding apps that are associated with the numbers. I'm certain bloat can be minimised to some extent with this.

In terms of stability and performance it is better Xiaomi.eu or Miui Global?

coco1476 said:
I tried your method exactly like you said with muipro 10 and bricked my device... again, but thanks to the new unbrick method I was able to unbrick it for free this time
Click to expand...
Click to collapse
Which method that you used to unbrick the device, could you please share?
---------- Post added at 03:54 AM ---------- Previous post was at 03:46 AM ----------
NaeemBolchhi said:
As you all know, flashing MIUI ROMs have become a bit tricky for Whyred users, due to the Anti-roll back issue. But fear not, @AL_IRAQI has found the solution, and I'll explain here how that goes, and I'll also link to the first Stable MIUI 10 in English by Xiaomi.eu. That ROM will not require this process, as pointed out by @dingdong3000 here.
► Why do you want this?
• Well, right now, the only Stable MIUI 10 for Whyred is Chinese. But Xiaomi.eu is based on the Chinese release, so their Stable ROM is basically the better Global version. Also, all of their ROMs pass the SafetyNet test without any issue, even if you directly modify parts of the system.​
► How can you download?
• Download from official SourceForge link. DOWNLOAD​
► How can you make the modification yourself?
• That's actually the prime purpose of this thread. There are basically 2 things to do when you want to make a MIUI ROM fw-less. Follow this procedure:​
Download your desired ROM.
Open it with WinRAR (No need to extract).
Delete the folder title "firmware-update" from the list.
Go inside META-INF\com\google\android.
Double click on "updater-script".
Select "Notepad++" from the list. (IMPORTANT. Normal Notepad doesn't have a line count. Download it from here.)
We need to remove all the radio update tasks. To do that, remove the red colored lines from the code.
Code:
getprop("ro.product.device") == "whyred" || abort("E3004: This package is for \"whyred\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Target: xiaomi/whyred/whyred:8.1.0/OPM1.171019.011/V9.5.19.0.OEIMIFA:user/release-keys");
show_progress(0.100000, 5);
show_progress(0.200000, 10);
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
[COLOR="Red"]
# ---- radio update tasks ----
ui_print("Patching firmware images...");
ifelse(msm.boot_update("main"), (
package_extract_file("firmware-update/mdtpsecapp.mbn", "/dev/block/bootdevice/by-name/mdtpsecapp");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64");
package_extract_file("firmware-update/splash.img", "/dev/block/bootdevice/by-name/splash");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlib");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hyp");
package_extract_file("firmware-update/pmic.elf", "/dev/block/bootdevice/by-name/pmic");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymaster");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xbl");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpm");
), "");
ifelse(msm.boot_update("backup"), (
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hypbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfgbak");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymasterbak");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xblbak");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpmbak");
), "");
msm.boot_update("finalize");
package_extract_file("firmware-update/dspso.bin", "/dev/block/bootdevice/by-name/dsp");
package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("firmware-update/BTFM.bin", "/dev/block/bootdevice/by-name/bluetooth");[/COLOR]
show_progress(0.600000, 250);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
abort("E1001: Failed to update system image.");
ui_print("Patching vendor image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat.br", "vendor.patch.dat") ||
abort("E2001: Failed to update vendor image.");
show_progress(0.100000, 2);
set_progress(1.000000);
The final copy should look like this-
Code:
getprop("ro.product.device") == "whyred" || abort("E3004: This package is for \"whyred\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Target: xiaomi/whyred/whyred:8.1.0/OPM1.171019.011/V9.5.19.0.OEIMIFA:user/release-keys");
show_progress(0.100000, 5);
show_progress(0.200000, 10);
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
show_progress(0.600000, 250);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
abort("E1001: Failed to update system image.");
ui_print("Patching vendor image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat.br", "vendor.patch.dat") ||
abort("E2001: Failed to update vendor image.");
show_progress(0.100000, 2);
set_progress(1.000000);
Notice the blank line at the end, don't remove it. Global ROM seems to have 14 lines of code with 1 blank line at the end after this process.
Save the file, WinRAR will ask if you want to update the archive, permit it.
Your ROM is now fw-less. Enjoy.
► You bricked your phone?
Sorry, I can't help you if you messed something up. That's the disclaimer here. You do this with all liability to yourself.​
► Want to learn more?
• Everything About Anti Roll-back [Whyred]
• Redmi Note 5/Pro Miui ROMs without firmware [fw-less]​
► Should you be careful?
• I don't exactly know how far behind you can go, do that research yourself and let me know so I can update it here. But I'd recommend not going too far behind. If you go too far, even after following this process, your phone might end up bricking. Some ROMs are just too old.​
Click to expand...
Click to collapse
My file has three extra lines at the end difference from yours should i removed it also?
format("ext4", "EMMC", "/dev/block/bootdevice/by-name/cust", "0", "/cust");
package_extract_file("META-INF/com/xiaomieu/xiaomieu.sh", "/tmp/xiaomieu.sh");
run_program("/sbin/busybox", "sh", "/tmp/xiaomieu.sh", "dummy", "1", "/tmp/xiaomieu.sh");

pipo_nhoc said:
Which method that you used to unbrick the device, could you please share?
Click to expand...
Click to collapse
Sure it's this method
https://forum.xda-developers.com/re...nofficial-unbrick-harddricked-whyred-t3840687

The ROM linked in the OP is the official Xiaomi.eu MIUI 10.0.1 ROM, which contains the firmware-update folder, hence it's highly possible that it will trigger ARB4. OP, you'll save many users some time by either removing that link, or providing a link to a non-arb version of the ROM.
Does anyone know of a tool to check the ARB version in the ROM zip itself? Instead of flashing it on the device first and then checking via fastboot

Can I dirty flash the new MIUI 10 global stable over this rom?

Dr_TGP said:
Can I dirty flash the new MIUI 10 global stable over this rom?
Click to expand...
Click to collapse
No. Wipe clean.
pipo_nhoc said:
My file has three extra lines at the end difference from yours should i removed it also?
Click to expand...
Click to collapse
Don't do that. Also, verify if the rom isn't already fw-less, like Xiaomi.eu.

can you make fw-less for xiaomi eu weekly build?

i was looking for the exact same thread thank u

Related

[ROM][4.4.4] AICP For Shield Tablet (WiFI Only) (wx_na_wf) [8/28/14]

Code:
#include
/*
* Your warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/
This is a build of AICP for the Shield Tablet (WiFi Only) (wx_na_wf)
You need to have CWM recovery installed on your device See Here for instructions install CWM. Try this version of CWM when flashing
Or use PhilZ
Instructions on installing:
Make a backup of your current ROM (Optional but highly recommended)
Wipe --> Factory Reset (Data, Cache, and Dalvik Cache)
Flash ROM
Flash Gapps
Reboot
Downloads:
8/28/14 ROM
8/25/14 ROM
8/23/14 ROM
8/22/14 ROM
Gapps
Bugs
You tell me
Kernel Source
XDA:DevDB Information
AICP for Shield Tablet (WiFi Only), ROM for the Nvidia Shield Tablet
Contributors
joshuabg, Unjustified Dev For making the device tree compatible
ROM OS Version: 4.4.x KitKat
Based On: AOKP
Version Information
Status: Testing
Created 2014-08-22
Last Updated 2014-12-20
Reserved
Reserved
OK I done a full wipe factory reset/cache in the latest recovery then tryed flashing had an error saying
This package is wx_na_wf this device is shield tablet
Error status 7
I'm not much of a dev but will look through the build prop or meta data to see if its a simple name change?
MRobbo80 said:
OK I done a full wipe factory reset/cache in the latest recovery then tryed flashing had an error saying
This package is wx_na_wf this device is shield tablet
Error status 7
I'm not much of a dev but will look through the build prop or meta data to see if its a simple name change?
Click to expand...
Click to collapse
Just got to edit the META-INF/com/google/android/updater-script
proably have to change wx_na_wf to shieldtablet in line 2
I can do it and reupload the whole zip f you want
Edit: You could just erase that line
joshuabg said:
Just got to edit the META-INF/com/google/android/updater-script
proably have to change wx_na_wf to chield tablet in line 2
I can do it and reupload the whole zip f you want
Click to expand...
Click to collapse
That's OK I can do that give me 10 mins
MRobbo80 said:
That's OK I can do that give me 10 mins
Click to expand...
Click to collapse
OK, just edit the updater script, you should be able to just delete the second line without an issue.
Deleted second line and did not have any luck so this second line below just change
"wx_na_wf" to ,"shieldtablet "
").");
assert(getprop("ro.product.device") == "wx_na_wf" || getprop("ro.build.product") == "wx_na_wf" || abort("This package is for \"wx_na_wf\" devices; this is a \"" + getprop("ro.product.device") + "\".");
MRobbo80 said:
Deleted second line and did not have any luck so this second line below just change
"wx_na_wf" to ,"shieldtablet "
").");
assert(getprop("ro.product.device") == "wx_na_wf" || getprop("ro.build.product") == "wx_na_wf" || abort("This package is for \"wx_na_wf\" devices; this is a \"" + getprop("ro.product.device") + "\".");
Click to expand...
Click to collapse
What happened when you deleted the second line? It might be easier if you join the IRC channel so I can walk you though everything.
Deleted second line and did not have any luck so this second line below just change
"wx_na_wf" to ,"shieldtablet "
").");
assert(getprop("ro.product.device") == "wx_na_wf" || getprop("ro.build.product") == "wx_na_wf" || abort("This package is for \"wx_na_wf\" devices; this is a \"" + getprop("ro.product.device") + "\".");
So it should look like this
").");
assert(getprop("ro.product.device") == "shieldtablet" || getprop("ro.build.product") == "shieldtablet" || abort("This package is for \"shieldtabley\" devices; this is a \"" + getprop("ro.product.device") + "\".");
MRobbo80 said:
Deleted second line and did not have any luck so this second line below just change
"wx_na_wf" to ,"shieldtablet "
").");
assert(getprop("ro.product.device") == "wx_na_wf" || getprop("ro.build.product") == "wx_na_wf" || abort("This package is for \"wx_na_wf\" devices; this is a \"" + getprop("ro.product.device") + "\".");
So it should look like this
").");
assert(getprop("ro.product.device") == "shieldtablet" || getprop("ro.build.product") == "shieldtablet" || abort("This package is for \"shieldtabley\" devices; this is a \"" + getprop("ro.product.device") + "\".");
Click to expand...
Click to collapse
What happened when you flashed this?
Says
Installing
Installation aborted
MRobbo80 said:
Says
Installing
Installation aborted
Click to expand...
Click to collapse
Do you have zip signature verification checked?
No I did not, now I enabled that I tried flashing the original rom it seems to start of by going through the normal process of flashing, then stalls with the first error message to start with. When I change the second line (name change) in the update script to (shieldtablet) it the gives me an error saying the footer is in correct when trying to flash. Think it is a very simple fix to get this going but having a dipstick trying to help you is not much kop sorry m8
Hold on think I know what I done
@joshuabg You have to upload your recovery.img that compiled with it. I changed name because we shouldn't be using shieldtablet name in custom roms that's common to all versions.
Unjustified Dev said:
@joshuabg You have to upload your recovery.img that compiled with it. I changed name because we shouldn't be using shieldtablet name in custom roms that's common to all versions.
Click to expand...
Click to collapse
I'll upload that tommorow.
Unjustified Dev said:
@joshuabg You have to upload your recovery.img that compiled with it. I changed name because we shouldn't be using shieldtablet name in custom roms that's common to all versions.
Click to expand...
Click to collapse
My ROM is made for wx_na_wf. The bad thing about that is that aicp checks to see if the device is a wx_na_wf before it flashes. The stock os shows the device is a shieldtablet. So you have to remove that line in the updater-script.
sorry man got it sort of working got it to flash but stuck in a boot loop, now I can not enter recovery or so far get adb working
Here's my recovery.img that generated with AICP (wx_na_wf)
https://s.basketbuild.com/filedl/devs?dev=joshuabg&dl=joshuabg/wx_na_wf/recovery.img
Unjustified Dev said:
@joshuabg You have to upload your recovery.img that compiled with it. I changed name because we shouldn't be using shieldtablet name in custom roms that's common to all versions.
Click to expand...
Click to collapse
https://s.basketbuild.com/filedl/devs?dev=joshuabg&dl=joshuabg/wx_na_wf/recovery.img

[Completed] Status error 7

I've searched XDA (and the web) without finding an answer but apologies if I've missed it somewhere. I have a Lenovo tab 3 10 inch tablet that is rooted. A new update has become available but I'm getting a "status error 7" so can't update. There is a XDA thread that tells how to modify the updater script to remove assert but there is no assert comments in the script. Can anyone please tell me what to remove in the script below to make it work? Thanks.
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Lenovo/YT3-X50F/YT3-X50F:5.1.1/LMY47V/YT3-X50F_USR_S22_160606_Q1241_ROW:user/release-keys" ||
getprop("ro.build.fingerprint") == "Lenovo/YT3-X50F/YT3-X50F:5.1.1/LMY47V/YT3-X50F_USR_S23_161201_Q1241_ROW:user/release-keys" ||
abort("Package expects build fingerprint of Lenovo/YT3-X50F/YT3-X50F:5.1.1/LMY47V/YT3-X50F_USR_S22_160606_Q1241_ROW:user/release-keys or Lenovo/YT3-X50F/YT3-X50F:5.1.1/LMY47V/YT3-X50F_USR_S23_161201_Q1241_ROW:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
apply_patch_check("EMMC:/dev/block/bootdevice/by-name/boot:12869024:83911ae0e88ec1762a0dbffaf8f0898e040d5721:12869024:c4378aa55de3d480fba1cfebc73a207bc3d84e1d") || abort(""EMMC:/dev/block/bootdevice/by-name/boot:12869024:83911ae0e88ec1762a0dbffaf8f0898e040d5721:12869024:c4378aa55de3d480fba1cfebc73a207bc3d84e1d" has unexpected contents.");
apply_patch_check("EMMC:/dev/block/bootdevice/by-name/recovery:13352356:c744e76f582f781f5a19d0e3ac59093b5d605d98:13350308:eda6d93b41c0fe93023b7e992f5fcbf4861719c2") || abort(""EMMC:/dev/block/bootdevice/by-name/recovery:13352356:c744e76f582f781f5a19d0e3ac59093b5d605d98:13350308:eda6d93b41c0fe93023b7e992f5fcbf4861719c2" has unexpected contents.");
show_progress(0.250000, 40);
if block_image_verify("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") then
ui_print("Verified system image...");
else
(range_sha1("/dev/block/bootdevice/by-name/system", "2,0,1") == "036c26f0f24f832a038a451242a578a49940cab6") || (range_sha1("/dev/block/bootdevice/by-name/system", "2,0,1") == "e2a3cb2dc451ef93e253c536c7bf190219814a15") || abort("/dev/block/bootdevice/by-name/system has been remounted R/W; reflash device to reenable OTA updates");
(range_sha1("/dev/block/bootdevice/by-name/system", "80,0,32770,32929,32931,33443,65535,65536,65538,66050,98303,98304,98306,98465,98467,98979,131071,131072,131074,131586,163839,163840,163842,164001,164003,164515,196607,196608,196610,197122,229375,229376,229378,229537,229539,230051,262143,262144,262146,262658,294911,294912,294914,295073,295075,295587,327679,327680,327682,328194,360447,360448,360450,360962,393215,393216,393218,393730,425983,425984,425986,426498,458751,458752,458754,459266,490994,491520,491522,492034,524287,524288,524290,524802,527229,557056,557058,589824,589826,622592,622594") == "8b2860bc3e2860a7efe6417a1132884f8fa19b89") ||
abort("system partition has unexpected contents");
endif;
show_progress(0.500000, 60);
ui_print("Patching system image after verification.");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat");
ui_print("Patching boot image...");
show_progress(0.100000, 10);
apply_patch("EMMC:/dev/block/bootdevice/by-name/boot:12869024:83911ae0e88ec1762a0dbffaf8f0898e040d5721:12869024:c4378aa55de3d480fba1cfebc73a207bc3d84e1d",
"-", c4378aa55de3d480fba1cfebc73a207bc3d84e1d, 12869024,
83911ae0e88ec1762a0dbffaf8f0898e040d5721, package_extract_file("patch/boot.img.p"));
ui_print("Patching recovery image...");
apply_patch("EMMC:/dev/block/bootdevice/by-name/recovery:13352356:c744e76f582f781f5a19d0e3ac59093b5d605d98:13350308:eda6d93b41c0fe93023b7e992f5fcbf4861719c2",
"-", eda6d93b41c0fe93023b7e992f5fcbf4861719c2, 13350308,
c744e76f582f781f5a19d0e3ac59093b5d605d98, package_extract_file("patch/recovery.img.p"));
show_progress(0.150000, 4);
package_extract_file("NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("emmc_appsboot.mbn", "/dev/block/bootdevice/by-name/aboot");
package_extract_file("rpm.mbn", "/dev/block/bootdevice/by-name/rpm");
package_extract_file("tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("sbl1.mbn", "/dev/block/bootdevice/by-name/sbl1");
set_progress(1.000000);​
tmarsh12345 said:
I've searched XDA (and the web) without finding an answer but apologies if I've missed it somewhere. I have a Lenovo tab 3 10 inch tablet that is rooted. A new update has become available but I'm getting a "status error 7" so can't update. There is a XDA thread that tells how to modify the updater script to remove assert but there is no assert comments in the script. Can anyone please tell me what to remove in the script below to make it work? Thanks.
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Lenovo/YT3-X50F/YT3-X50F:5.1.1/LMY47V/YT3-X50F_USR_S22_160606_Q1241_ROW:user/release-keys" ||
getprop("ro.build.fingerprint") == "Lenovo/YT3-X50F/YT3-X50F:5.1.1/LMY47V/YT3-X50F_USR_S23_161201_Q1241_ROW:user/release-keys" ||
abort("Package expects build fingerprint of Lenovo/YT3-X50F/YT3-X50F:5.1.1/LMY47V/YT3-X50F_USR_S22_160606_Q1241_ROW:user/release-keys or Lenovo/YT3-X50F/YT3-X50F:5.1.1/LMY47V/YT3-X50F_USR_S23_161201_Q1241_ROW:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
apply_patch_check("EMMC:/dev/block/bootdevice/by-name/boot:12869024:83911ae0e88ec1762a0dbffaf8f0898e040d5721:12869024:c4378aa55de3d480fba1cfebc73a207bc3d84e1d") || abort(""EMMC:/dev/block/bootdevice/by-name/boot:12869024:83911ae0e88ec1762a0dbffaf8f0898e040d5721:12869024:c4378aa55de3d480fba1cfebc73a207bc3d84e1d" has unexpected contents.");
apply_patch_check("EMMC:/dev/block/bootdevice/by-name/recovery:13352356:c744e76f582f781f5a19d0e3ac59093b5d605d98:13350308:eda6d93b41c0fe93023b7e992f5fcbf4861719c2") || abort(""EMMC:/dev/block/bootdevice/by-name/recovery:13352356:c744e76f582f781f5a19d0e3ac59093b5d605d98:13350308:eda6d93b41c0fe93023b7e992f5fcbf4861719c2" has unexpected contents.");
show_progress(0.250000, 40);
if block_image_verify("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") then
ui_print("Verified system image...");
else
(range_sha1("/dev/block/bootdevice/by-name/system", "2,0,1") == "036c26f0f24f832a038a451242a578a49940cab6") || (range_sha1("/dev/block/bootdevice/by-name/system", "2,0,1") == "e2a3cb2dc451ef93e253c536c7bf190219814a15") || abort("/dev/block/bootdevice/by-name/system has been remounted R/W; reflash device to reenable OTA updates");
(range_sha1("/dev/block/bootdevice/by-name/system", "80,0,32770,32929,32931,33443,65535,65536,65538,66050,98303,98304,98306,98465,98467,98979,131071,131072,131074,131586,163839,163840,163842,164001,164003,164515,196607,196608,196610,197122,229375,229376,229378,229537,229539,230051,262143,262144,262146,262658,294911,294912,294914,295073,295075,295587,327679,327680,327682,328194,360447,360448,360450,360962,393215,393216,393218,393730,425983,425984,425986,426498,458751,458752,458754,459266,490994,491520,491522,492034,524287,524288,524290,524802,527229,557056,557058,589824,589826,622592,622594") == "8b2860bc3e2860a7efe6417a1132884f8fa19b89") ||
abort("system partition has unexpected contents");
endif;
show_progress(0.500000, 60);
ui_print("Patching system image after verification.");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat");
ui_print("Patching boot image...");
show_progress(0.100000, 10);
apply_patch("EMMC:/dev/block/bootdevice/by-name/boot:12869024:83911ae0e88ec1762a0dbffaf8f0898e040d5721:12869024:c4378aa55de3d480fba1cfebc73a207bc3d84e1d",
"-", c4378aa55de3d480fba1cfebc73a207bc3d84e1d, 12869024,
83911ae0e88ec1762a0dbffaf8f0898e040d5721, package_extract_file("patch/boot.img.p"));
ui_print("Patching recovery image...");
apply_patch("EMMC:/dev/block/bootdevice/by-name/recovery:13352356:c744e76f582f781f5a19d0e3ac59093b5d605d98:13350308:eda6d93b41c0fe93023b7e992f5fcbf4861719c2",
"-", eda6d93b41c0fe93023b7e992f5fcbf4861719c2, 13350308,
c744e76f582f781f5a19d0e3ac59093b5d605d98, package_extract_file("patch/recovery.img.p"));
show_progress(0.150000, 4);
package_extract_file("NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("emmc_appsboot.mbn", "/dev/block/bootdevice/by-name/aboot");
package_extract_file("rpm.mbn", "/dev/block/bootdevice/by-name/rpm");
package_extract_file("tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("sbl1.mbn", "/dev/block/bootdevice/by-name/sbl1");
set_progress(1.000000);​
Click to expand...
Click to collapse
Greetings and welcome to assist. Be very careful about removing the asserts check, it is there because the firmware you are flashing is not for your device and may brick your device. The get prop limes of the updater script are where your model is being checked
Regards
Sawdoctor
tmarsh12345 said:
Greetings and welcome to assist. Be very careful about removing the asserts check, it is there because the firmware you are flashing is not for your device and may brick your device. The get prop limes of the updater script are where your model is being checked
Click to expand...
Click to collapse
Thanks for the welcome! It is the correct update as I downloaded it from the system OTA alert. Not sure which lines to remove.
tmarsh12345 said:
Thanks for the welcome! It is the correct update as I downloaded it from the system OTA alert. Not sure which lines to remove.
Click to expand...
Click to collapse
Do you have root ? If you do edit your buildprop to match that in the first 2 lines of the script or edit the getprop lines in the script to match your buildprop
sawdoctor said:
Do you have root ? If you do edit your buildprop to match that in the first 2 lines of the script or edit the getprop lines in the script to match your buildprop
Click to expand...
Click to collapse
I'll try to edit the script I think but don't know what to replace. The script has 3 getprops, the buildprop has a series of ro.build commands, how do I match them?
tmarsh12345 said:
I'll try to edit the script I think but don't know what to replace. The script has 3 getprops, the buildprop has a series of ro.build commands, how do I match them?
Click to expand...
Click to collapse
Sorry for the late reply but I found this
https://forum.xda-developers.com/thinkpad-tablet/general/update-fail-t3531794
it seems like you are not the only one having this issue and it is a problem with lenovo
Good Luck
Sawdoctor
tmarsh12345 said:
Sorry for the late reply but I found this
https://forum.xda-developers.com/thi...-fail-t3531794
it seems like you are not the only one having this issue and it is a problem with lenovo
Good Luck
Sawdoctor
Click to expand...
Click to collapse
Thanks Sawdoctor. I noticed on lenovo's site that there may be an update to Marshmallow so I think the better solution is to revert to stock, run the update and wait for 6. So, if I do that, do I need to flash a stock rom or will a factory reset do it? Does a factory reset remove root?
tmarsh12345 said:
Thanks Sawdoctor. I noticed on lenovo's site that there may be an update to Marshmallow so I think the better solution is to revert to stock, run the update and wait for 6. So, if I do that, do I need to flash a stock rom or will a factory reset do it? Does a factory reset remove root?
Click to expand...
Click to collapse
A factory reset may not remove root as it is a system modification and you are only wiping data so I would flash stock rom first yes
Good Luck
Sawdoctor

Problem with port on Mediatek 6580 kernel 3.18.35

Yesterday I made a port to a Doogee Shoot 2 (Mediatek 6580 with Kernel 3.18.35) from this ROM http://techboxlab.com/a9-lite-rom-for... I was pretty happy about the possibility of flashing it. Was a success, everything was working except a little detail: the device was lock and I made a call to see how the screen and sound was...the result? the phone goes crazy...I was rebooting the device. Once was on again I go to Play Store to update the apps...the phone goes to rest and when I unlock it, again this that show you in the video. What can it be? I followed to guides to do it and both are the same result, mixing both equal...
I thought that can be the gapps (the rom comes with gapps) so I flash over newer version, was the same. I don't know if it helps but here are some things, the flash takes a while (more than 10 minutes), and when the flash is over and I can reboot I have this: after the Unmount system line I get: "unmount of /system failed: no such volume"
the mount section of my updater script is:
ui_print(" = >>>>> Mount System <<<<< = ");
mount("ext4", "EMMC", "/dev/block/platform/mtk-msdc.0/by-name/system", "/system", "max_batch_time=0,commit=1,data=ordered,barrier=1,errors=panic,nodelalloc");
ui_print(" = >>>>> Stating Flash Rom <<<<< = ");
package_extract_dir("system", "/system");
And the unmount system
ui_print("**************************************************");
ui_print(" = >>>>> Unmount System <<<<< = ");
unmount("/system");
set_progress(1.000000);
My youtube video with the example https://www.youtube.com/watch?v=ysgOy50-2ao
help please?
anyone?
AgustinH said:
anyone?
Click to expand...
Click to collapse
Try this guide https://forum.xda-developers.com/android/general/guide-how-to-port-nougat-based-roms-t3679512
This guide (another one) got deleted in the FB group. So here it is again: https://forum.xda-developers.com/an...uide-minimal-porting-guide-mtk-64bit-t3772641
Give it a go and see if it helps in anything porting related. Regarding the updater script, download on of the custom roms for your device and try using one of those updater scripts.

Question May I ask you how to find or check android device's asserts?

(Galaxy) A32 tabs3 tabs7+
=(sm-a325n, sm-t820, sm-t976n)
These things and method
Thank you
What do you want exactly?
the way to find it.
for every device.
(thank you!)
Starwars8k said:
the way to find it.
for every device.
(thank you!)
Click to expand...
Click to collapse
Settings/about phone...
Do you mean a database of model numbers for all Androids?
no.
asserts like qssi
Assets? Inventory of devices that you own?
it is the helpful thing to not flash the different device's rom.
thank you
You can't flash a wrong rom.
If the build number doesn't match, the flash gets aborted.
Please read some tutorials about it.
matze19999 said:
You can't flash a wrong rom.
If the build number doesn't match, the flash gets aborted.
Please read some tutorials about it.
Click to expand...
Click to collapse
Worth to mention this is true only for odin.
Now a days it's really hard to hard break device but commonest cause that can easily hard brick device is flashing wrong/corrupt bootloader with twrp.
I never recommend anyone to use twrp to flash bootloader with twrp
Oh, asserts. They are not literally "assert".
They are found in update zips under META-INF/com/google/android/updater-script:
Code:
(!less_than_int(1651066150, getprop("ro.build.date.utc"))) || abort("E3003: Can't install this package (Wed Apr 27 21:29:10 CST 2022) over newer build (" + getprop("ro.build.date") + ").");
getprop("ro.product.device") == "Poke3" || abort("E3004: This package is for \"Poke3\" devices; this is a \"" + getprop("ro.product.device") + "\".");
They check device and version.
dr.ketan said:
Worth to mention this is true only for odin.
Now a days it's really hard to hard break device but commonest cause that can easily hard brick device is flashing wrong/corrupt bootloader with twrp.
I never recommend anyone to use twrp to flash bootloader with twrp
Click to expand...
Click to collapse
(big) thank you
it was really helpful
Renate said:
Oh, asserts. They are not literally "assert".
They are found in update zips under META-INF/com/google/android/updater-script:
Code:
(!less_than_int(1651066150, getprop("ro.build.date.utc"))) || abort("E3003: Can't install this package (Wed Apr 27 21:29:10 CST 2022) over newer build (" + getprop("ro.build.date") + ").");
getprop("ro.product.device") == "Poke3" || abort("E3004: This package is for \"Poke3\" devices; this is a \"" + getprop("ro.product.device") + "\".");
They check device and version.
Click to expand...
Click to collapse
(big) thank you
it was really helpful

How to make updater-script.

Hi.
I have a samsung A70 device
I want to make a simple zip can to delete bloatware and install some app after reflash rom.
So, i try many time with updater-script file but seemlike it not working.
There is code example:
ui_print(" Starting ... ");
mount("ext4", "EMMC", "/dev/block/platform/soc/1d84000.ufshc/by-name/system", "/system");
ui_print(" ");
delete("/system/app/ARCore/ARCore.apk");
ui_print(" ");
delete("/system/app/ARCore/ARCore.apk");
Click to expand...
Click to collapse
I Zip it on update.zip file and when i flash it still running nomarly but nothing got delete in /system/app/arcore/
TWRP so me
script susseded: result was [0]
Click to expand...
Click to collapse
i think system partion is not mounted yet. I don't know extracly vartion "/dev/block/platform/soc/1d84000.ufshc/by-name/system" is correct or not. Or i must set permission for that.
Can somebody help me write updater-script. Thank you!
May be studying this helps:
[TUTORIAL] The updater-script completely explained
Hi all XDA Members :) This is not at all an updater-script guide but an explanation Example of updater-script: assert(getprop("ro.product.device") == "janice" || getprop("ro.build.product") == "janice" || getprop("ro.product.device") ==...
forum.xda-developers.com
xXx yYy said:
May be studying this helps:
[TUTORIAL] The updater-script completely explained
Hi all XDA Members :) This is not at all an updater-script guide but an explanation Example of updater-script: assert(getprop("ro.product.device") == "janice" || getprop("ro.build.product") == "janice" || getprop("ro.product.device") ==...
forum.xda-developers.com
Click to expand...
Click to collapse
i already read this topic but it still not working bro. the systax is true but can't working
So you know the EDIFY-script is correct.
Then why ask here for verify / correct it?
BTW:
This forum is wrong place for your issue. Getting helped typically is requested here:
Android Q&A, Help & Troubleshooting
This forum is for all of your questions about Android Development and Hacking. If you need help troubleshooting a problem, please be as specific as possible by describing your software configuration, including the ROM, kernel, and any modifications you've done.
forum.xda-developers.com
You could have FEC (error correction) on this partition.
You could mod it until you're blue in the face and not see any change.
If you're rooted, do a dd then look at the last 4096 bytes of that partition.

Categories

Resources