(Disclaimer)
If something goes wrong and you corrupt your Android OS or wipe the wrong partition or get stuck in a bootloop, there is a method for recovering that doesn't require the main Android OS to be functional. I do believe this requires the recovery
partition to be intact though, so be sure not to wipe that one.
Basically, you format a USB key at FAT32 (not NTFS, probably not ExFAT), create a specific folder, and put the UpdateFull.zip
package in it. Some things to note though:
- This isn't the actual
UpdateFull.zip
file itself, but rather the update.zip
file inside it, renamed to UpdateFull.zip
UPDATE (17/5/24): After I upgraded to 2403, I found this recovery process would no longer accept 2307's ‘update.zip’, but would accept 2403's ‘UpdateFull.zip’ with ‘update.zip’ and ‘metadata’ files replaced with 2307's. I didn't test just using 2307's unmodified 'UpdateFull.zip' as another user on Telegram told me they hit a similar issue and had to resolve it by replacing update.zip and metadata as mentioned, and I was running short of time to experiment. Thanks @fp_876 for the suggestion.
If I need to downgrade again in the near future I'll spend more time probing this change of the recovery process to see if this workaround is really required.
- I've found some USB disks are only sometimes recognized by the boot code involved here. It seems to be very picky. I've got a couple SanDisk USB keys that have proven to be very compatible across the board with other embedded systems but this one just doesn't want to talk to them when in this ‘engineering mode’. In the end, I had to use a crappy Kingston micro-SD in a cheap flimsy sd-to-usb adapter. Somehow it was happier with this arrangement ¯\_(ツ)_/¯
- DO NOT interrupt the process. I'm pretty sure this uses the recovery partition. It likely also writes the recovery partition from the update payload. Disrupting it at that particular stage would break this recovery mechanism and render the head unit a literal brick that could only be recovered by a BYD hardware engineer with a JTAG/SWD cable or SPI bus for the NAND flash chip (if it's even exposed). Something your local BYD service centre will not be able to do.
- Download the most recent
UpdateFull.zip
(or an earlier one if you want to downgrade to a specific version)
- Create an MBR partition table on a USB disk, create a primary partition within it, and format it as FAT32.
- Although older Windows would create a ‘wholedisk’ FAT32 file system without a partition table on removeable media, I'm pretty sure newer versions would create a partition table if one didn't already exist. You have to make sure it's an MBR partition though and not GPT. I don't know the steps off-hand to explicitly create an MBR disk under Windows.
- On Linux and MacOS it's trivial though as the tools (Disk Utility, gparted/parted) will ask you what type of partition table to use when initializing a disk.
- Unzip the
UpdateFull.zip
file and locate the update.zip
file within it.
- Create this folder on the USB disk in the base directory:
BYDUpdatePackage\msm8953_64\
- Copy the
update.zip
file into BYDUpdatePackage\msm8953_64\
, renaming it to UpdateFull.zip
ie: BYDUpdatePackage\msm8953_64\UpdateFull.zip
- Plug the USB disk into the USB-A port under the centre console. Ensure there is not OTG cable plugged into the micro-usb port on the head unit, as this disables data transfer on the ‘normal’ USB ports.
- Hold down the ‘left’ button on the steering wheel controls (where the volume roller is) while holding the centre console volume wheel button down (ie the power button)'. After a few (10?) seconds, the unit will reboot into ‘engineering mode’.
- IF the engineering mode program detected and recognized the USB key, it will begin writing it to the Android unit's flash immediately and will show progress.
- Again, DO NOT interrupt this process. It will reboot automatically when it completes and you should be at the version matching the UpdateFull.zip used.
If ‘engineering mode’ immediately reboots without applying the update it means that it didn't detect the USB disk, or that the format is wrong or the path is incorrect. Retry it a couple times before changing disks. It takes mine about 3 or 4 attempts before it starts applying it using my sd card. It's really fussy.