48 lines
2.3 KiB
Markdown
48 lines
2.3 KiB
Markdown
# UniFlash: an opensource Unisoc/Spreadtrum phone flash reader/writer
|
|
|
|
## About
|
|
|
|
Cross-platform MediaTek feature phone dumping had been achieved long ago with [MTreader](https://gitlab.com/suborg/mtreader). Now it's time to do the same for Unisoc (ex-Spreadtrum) phones. And not only that, but also to be able to flash them!
|
|
|
|
Unfortunately, the architecture of Unisoc chipset boot ROM doesn't allow us to get away without any loader blobs. So, some FDL binaries are also shipped in this repo.
|
|
|
|
UniFlash started out as UniDump (see [this blog post](https://chronovir.us/2021/12/18/Opus-Spreadtrum/)) but had been quickly upgraded to do both tasks.
|
|
|
|
The `uniflash.py` file is the main script to use. The `unicmd.py` file is the library created for easier command interface encapsulation.
|
|
|
|
For further dumped firmware unpacking/repacking, I recommend [bzpwork](https://github.com/ilyazx/bzpwork) by ilyazx.
|
|
|
|
**Note: the flasher part is still under testing/study, use at your own risk!**
|
|
|
|
## Dependencies
|
|
|
|
Python 3.8+ and PyUSB.
|
|
|
|
## Usage
|
|
|
|
Run `python uniflash.py -h` to see all parameters. But there are several typical scenarios that UniFlash officially supports.
|
|
|
|
**Note**: you need to hold a bootkey pressed when connecting the device for it to be detected correctly. This key can vary across devices. Typically it's Call, Soft Left, Soft Right, Center, 9 or #, but it can be anything else.
|
|
|
|
### SC6531E
|
|
|
|
This is the default target for UniFlash, FDLs for it are shipped in the repo and you don't need to configure anything else unless your model requires signed FDLs.
|
|
|
|
For SC6531E, firmware is usually 4MB long, so you just need to run `python uniflash.py dump your-output-file.bin` to dump the firmware image and `python uniflash.py flash your-input-file.bin` to flash it.
|
|
|
|
### SC6531F/M
|
|
|
|
For SC6531F or SC6531M, **only readback is supported as of now, attempts to write flash can make the device unbootable!**
|
|
|
|
Here, firmware can be larger, so you need to pass in the length. As with any integer parameter here, you can pass it in hexadecimal format as well.
|
|
|
|
E.g. for CAT B26 (bootkey is `#`) the dumping command is: `python uniflash.py -l 0x6b7000 dump b26.bin`
|
|
|
|
### SC6531D and lower
|
|
|
|
For now, SC6531DA and other single-FDL variants of SC6531 chipset are not supported.
|
|
|
|
## Credits
|
|
|
|
Created by Luxferre in 2021. All files except the FDL blobs are public domain.
|