[Moto E5 Guides, News, & Discussion] dw63:
Successfully Updated System On Rooted, Encrypted Moto E5 Play

I'm not seeing a lot of information about my particular phone here - Moto E5 Play I bought at Target, XT1921-2. So, I'll post my notes about how I updated it. Note, these are notes - not instructions. Maybe they'll help somebody though. Also note, I'm kinda flying by the seat of my pants here. I really don't know if this is the best/easiest way to update the system. For instance, I'm using a TWRP that doesn't support encryption on this phone. I'm going to try the Hannah TWRP that claims to support encryption at some point, but I haven't yet. All that being said, here's what I did (and it worked).

# These are notes, not instructions. They assume you know stuff like power
# off before inserting or removing SD card.

# Retrieve un-encrypted SD card from hiding place unknown by adversaries and install in phone.
# Change to Swipe security in case something goes bad.
# Titanium Backup in case something goes bad.
# Copy stuff from /sdcard/ to /external_sd/ in case something goes bad.

# Following this posting:
# https://xdaforums.com/moto-e5/how-to/firmware-moto-e5-xt1944-4-dual-sim-t3820901

# Getting firmware from here:
# https://mirrors.lolinet.com/firmware/moto/james/official/RETUS/

# Download XT1921-2_JAMES_RETUS_8.0.0_OPPS27.91-121-7_cid50_subsidy-DEFAULT_regulatory-DEFAULT_CFC.xml.zip
cd /space/Android/e5play/
mv ~/Downloads/XT1921-2_JAMES_RETUS_8.0.0_OPPS27.91-121-7_cid50_subsidy-DEFAULT_regulatory-DEFAULT_CFC.xml.zip .
mkdir update
cd update/
unzip ../XT1921-2_JAMES_RETUS_8.0.0_OPPS27.91-121-7_cid50_subsidy-DEFAULT_regulatory-DEFAULT_CFC.xml.zip

# These are vim editor commands, which might be helpful to someone well versed
# in viming. The upshot is, massage update/servicefile.xml to look like the
# fastboot commands below.
# :r servicefile.xml
# Addresses from '.'. Always reset the cursor before executing.
# :.,$s/^ *<step operation="\([^"]*\)" var="\([^"]*\)"\/>/fastboot \1 \2
# :.,$s/^ *<step operation="\([^"]*\)" partition="\([^"]*\)"\/>/fastboot \1 \2/
# :.,$s/^ *<step MD5="\([^"]*\)" filename="\([^"]*\)" operation="\([^"]*\)" partition="\([^"]*\)"\/>/fastboot \3 \4 \2/
fastboot oem fb_mode_set
fastboot flash partition gpt.bin
fastboot flash bootloader bootloader.img
fastboot flash modem NON-HLOS.bin
fastboot flash fsg fsg.mbn
fastboot erase modemst1
fastboot erase modemst2
fastboot flash dsp adspso.bin
fastboot flash logo logo.bin
fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot flash system system.img_sparsechunk.0
fastboot flash system system.img_sparsechunk.1
fastboot flash system system.img_sparsechunk.2
fastboot flash system system.img_sparsechunk.3
fastboot flash system system.img_sparsechunk.4
fastboot flash vendor vendor.img
fastboot flash oem oem.img
fastboot erase DDR
fastboot oem fb_mode_clear

# Note, also flashed stock recovery. Don't know if this was necessary.
# Now used the phone's system to take the security update.
# Got "bad key" when updating. Seemed to work anyway. Remembered seeing
# this. It seems like these images are unsigned, which isn't a big deal because
# the bootloader is unlocked.
# [dwinker@gozer update]$ fastboot flash boot boot.img
# Sending 'boot' (16384 KB) OKAY [ 0.517s]
# Writing 'boot' (bootloader) Image signed with key bad key
# OKAY [ 0.565s]
# Finished. Total time: 1.085s
# [dwinker@gozer update]$ fastboot flash recovery recovery.img
# Sending 'recovery' (16484 KB) OKAY [ 0.522s]
# Writing 'recovery' (bootloader) Image signed with key bad key
# OKAY [ 1.779s]
# Finished. Total time: 2.303s

# Used Magisk Manager to download Magisk as a zip file. Move the zip file to
# the un-encrypted SD card.
adb shell
cd sdcard/Download/
mv Magisk-v19.3\(19300\).zip /storage/04C7-5787/
cd /space/Android/e5play
fastboot flash recovery twrp_james.img
# Boot into TWRP recovery.
# Swipe to allow modifications.
# Mount Micro SD card (the un-encrypted SD card).
# Use TWRP to install /external_sd/Magisk-v19.
# Reboot system.
# Have root and updated system. Yeah!

# Remove un-encrypted SD card from phone and hide it from adversaries.