[Galaxy Tab 2 Q&A, Help & Troubleshooting] chaton12:
Hello everyone,

That's my first post on xda forums even if I read here for years a lot of troubleshooting posts.

I have a neighbor who left me her Galaxy Tab 2 10.1 (GT-P5110) running 4.2.1. I've managed to install a Firefox 68 for her, but other than that, it's complicated as TLS 1.x is not supported. So I wanted to put it on a more recent Android.

I managed to root it with CF-Auto-Root-espresso10wifi-espresso10wifixx-gtp5110.zip

I managed to install TWRP 3.4.0.0 with twrp-3.4.0-0-espressowifi.img.tar

I then wiped pretty much everything (even the sdcard because there was nothing relevant on it)

And I tried to install the builds in order via an "adb push nom_de_la_rom /sdcard" to avoid having to deal with an sd card or something. I checked the md5sum before pushing the files to make sure the zip file download was complete.

lineage-14.1_espressowifi-7.1.2-20200623-1924.zip

lineage-14.1_espressowifi-7.1.2-20200421-1910.zip

lineage-13.0_espressowifi-6.0.1-20200625-1655.zip

ResurrectionRemix-M-v5.7.4-20190303-1218-espressowifi.zip

On the first two ROMs, I had an error like Updater process ended with ERROR: 7 but not much else

On the last two ROMs, I had a bit more detail: system partition has unexpected contents after OTA update. Updater process ended with ERROR: 7

I've got the impression that the .zip is being read by TWRP because I can see the Resurrection Remix logo in ASCII.

Between each installation attempt, I wipe just about everything again (except internal storage, so as not to lose the builds I'm pushing).

I've also tried removing the USB connection to the computer in case that's a problem.

On a french forum, I have been asked to look at https://xdaforums.com/t/fix-solved-...m-or-twrp-recovery-on-rooted-android.2522762/

Using that link, at the start of the updater_script file, I was able to validate that the tablet fit into the boxes by adding some

ui_print(getprop("ro.product.device"));
ui_print(getprop("ro.build.product"));

When I run the script, I can see espressowifi appearing for both variables.

So the following assert works well because it's looking for espressowifi

assert(getprop("ro.product.device") == "espresso-common" || getprop("ro.build.product") == "espresso-common" || getprop("ro.product.device") == "p3110" || getprop("ro.build.product") == "p3110" || getprop("ro.product.device") == "GT-P3110" || getprop("ro.build.product") == "GT-P3110" || getprop("ro.product.device") == "p3113" || getprop("ro.build.product") == "p3113" || getprop("ro.product.device") == "GT-P3113" || getprop("ro.build.product") == "GT-P3113" || getprop("ro.product.device") == "espressowifi" || getprop("ro.build.product") == "espressowifi" || getprop("ro.product.device") == "espressowifixx" || getprop("ro.build.product") == "espressowifixx" || getprop("ro.product.device") == "p5110" || getprop("ro.build.product") == "p5110" || getprop("ro.product.device") == "GT-P5110" || getprop("ro.build.product") == "GT-P5110" || getprop("ro.product.device") == "p5113" || getprop("ro.build.product") == "p5113" || getprop("ro.product.device") == "GT-P5113" || getprop("ro.build.product") == "GT-P5113" || getprop("ro.product.device") == "espresso10wifi" || getprop("ro.build.product") == "espresso10wifi" || getprop("ro.product.device") == "espresso10wifixx" || getprop("ro.build.product") == "espresso10wifixx" || abort("This package is for device: espresso-common,p3110,GT-P3110,p3113,GT-P3113,espressowifi,espressowifixx,p5110,GT-P5110,p5113,GT-P5113,espresso10wifi,espresso10wifixx; this device is " + getprop("ro.product.device") + "."););

However, a little further down in the script, there's :

ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/platform/omap/omap_hsmmc.1/by-name/FACTORYFS", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat");
ui_print("Verifying the updated system image...");
if range_sha1("/dev/block/platform/omap/omap_hsmmc.1 /by-name/FACTORYFS", "32,0,32770,32833,32835,33347,65535,65536,65538,66050,72216,98304,98306,98369,98371,98883,131071,131072,131074,163840, 163842,163905,163907,164419,196607,196608,196610,229376,229378,229441,229443,229955,262143") == "c658f16bf6ec12835bf04c015e51aa379aed1e75" then
if range_sha1("/dev/block/platform/omap/omap_hsmmc.1 /by-name/FACTORYFS", "38,32770,32833,32835,33347,65535,65536,65538,66050,72216,72728,97792,98304,98306,98369,98371,98883,131071,131072,131074,131586,163328,163840, 163842,163905,163907,164419,196607,196608,196610,197122,228864,229376,229378,229441,229443,229955,262143,262144") == "8b0629c630f530cde051aeb42ce561756738fbe7" then
ui_print("Verified the updated system image.");
else
abort("system partition has unexpected non-zero contents after OTA update");
endif;
else
abort("system partition has unexpected contents after OTA update");
endif;

And I got the error message "system partition has unexpected contents after OTA update" as in my first attempts.

So actually, the file /dev/block/platform/omap/omap_hsmmc.1/by-name/FACTORYFS doesn't match the hash calculated in the script, which is 8b0629c630f530cde051aeb42ce561756738fbe7.

I said to myself, "Well, let's comment this bit out", because the rest of the script is :

package_extract_file("boot.img", "/dev/block/mmcblk0p5");

but it didn't help much because at the moment, I've got a tablet that doesn't run anything at all except download mode or TWRP :)

Is there any other way to get more verbose logs and/or how to troubleshoot this?

In the meantime, I've found a recovery.log file in /tmp where you can see the build, which may have been pushed? But I'm not sure I understand everything it says:

Spoiler content hidden.

Thank you for all your help so far :)