[Huawei P9 Plus Guides, News, & Discussion] jnakoda:
Sometimes Huawei releases an update package without approving it. For instance, my device (VIE-L29C636) is getting a B382 update, but the update isn't approved for installation. Here's how to update to those update packages.

NOTE: Using this method, you can also safely upgrade your device even if it is rooted, or has some files system partitions altered. (Of course after finished this process, your device will become unrooted and any alteration to the system partitions mentioned below will revert).

Prerequisites:

Your device is already running EMUI 5 (do not attempt this procedure on EMUI 4 ROM, as the partition layout may differ, and the various firmware (modem, sensor hub, etc.) may not compatible.

Unlocked Bootloader AND FRP.

Latest TWRP from OpenKirin (more on that, including download link, click here).

Huawei Update Extractor, for extracting UPDATE.APP.

imgtool, to convert the sparse android image into an ext4 raw image file.

Method:

Download your preferred update package from Firmware Finder app (Make sure to select the one which has 'FullOTA' designation on it. The package doesn't have to be a 'PV' package). Choose 'update.zip' and the other zip that has your region name on it (for instance, on my C636, look for the zip which has 'spcseas' on it's name). I will refer this 2nd zip as 'regional zip'.

Extract the 'UPDATE.APP' from both zip archive.

Using the Update Extractor on a Windows PC, Extract BOOT, SYSTEM, PRODUCT and VENDOR partitions from UPDATE.APP retrieved from 'update.zip', and extract CUST and VERSION from UPDATE.APP retrieved from your regional zip. You should end up with BOOT.IMG, SYSTEM.IMG, PRODUCT.IMG, VENDOR.IMG, CUST.IMG and VERSION.IMG.

Convert PRODUCT.IMG, VENDOR.IMG and VERSION.IMG to an ext4 image using imgtool, for example:

imgtool PRODUCT.IMG extract

Beware of overwriting the converted image. imgtool is hardcoded to output the converted file to 'extracted/image.img' folder. ALWAYS rename the image.img to something like 'product.ext4.img' after conversion.

Reboot your device to bootloader mode. Flash BOOT.IMG, SYSTEM.IMG and CUST.IMG via fastboot. For example:

fastboot flash boot BOOT.IMG

Reboot your device to recovery mode. Type

fastboot reboot

and hold the Vol Up button on your device to enter recovery mode.

Upload the *.ext4.img converted earlier to your device (doesn't matter where, but I recommend using a safe place like '/sdcard', or USB OTG or external micro SD card). you can use 'adb push', MTP or OTG to upload/copy the ext4.img files to your device.

for each *.ext4.img files, flash it to the appropriate named partitions in

/dev/block/platform/hi_mci.0/by-name/*

. You can use adb shell on your PC, and a command line program called dd on your device. For faster transfer, try to adjusting the block size to 8M. Example commands (execute from adb shell):

dd if=/sdcard/product.ext4.img bs=8M of=/dev/block/platform/hi_mci.0/by-name/product
dd if=/sdcard/vendor.ext4.img bs=8M of=/dev/block/platform/hi_mci.0/by-name/vendor
dd if=/sdcard/version.ext4.img bs=8M of=/dev/block/platform/hi_mci.0/by-name/version

Exit TWRP (reboot to system), wait for several minutes for the system to build up it's AOT cache, and enjoy your new EMUI 5 with newer security patch, newer kernel and various features and bug fixes :cool: .

EDIT: I apologize that IMGTOOL isn't available in binary form for windows. You can try to use Linux virtual machines to run the IMGTOOL. Any modern GNU/Linux distro should be able to run the IMGTOOL.