Here you can find my Z-CAM E2 firmware reverse-engineering results.
Z-CAM very often delete links to old firmware versions on the official website, so I have to make copies for you in order not to lose them forever.
| Version | E2 | E2C | E2-M4 | E2G | E2-S6 | E2-F6 | E2-F8 | E2-S6G | E2-F6 Pro |
|---|---|---|---|---|---|---|---|---|---|
| 0.81 | E | X | X | X | X | X | X | X | X |
| 0.82 beta | E | X | X | X | X | X | X | X | X |
| 0.82 | E | X | X | X | X | X | X | X | X |
| 0.83 | DL | X | X | X | X | X | X | X | X |
| 0.84 | E | X | X | X | X | X | X | X | X |
| 0.86 | E | X | X | X | X | X | X | X | X |
| 0.87 | DL | X | X | X | X | X | X | X | X |
| 0.88 | DL | U | X | X | X | X | X | X | X |
| 0.89 | E | E | X | X | X | X | X | X | X |
| 0.93 | DL | E | X | E | E | E | E | X | X |
| 0.94 | DL | E | X | E | E | E | E | X | X |
| 0.95 | DL | E | X | E | E | E | E | X | X |
| 0.96 | DL | E | E | X | E | E | E | X | X |
| 0.97 | DL | DL | DL | DL | DL | DL | DL | X | E |
| 0.97.1 | DL | DL | DL | DL | DL | DL | DL | X | E |
| 0.98 | E | E | E | E | E | E | E | E | X |
| 0.98.1 | E | X | E | X | X | X | X | X | X |
| 0.98.2 | E | X | E | X | X | X | X | X | X |
| 1.0.0 | E | E | E | X | E | E | E | X | X |
| 1.0.1 | E | X | E | X | E | E | E | X | X |
DL : firmware file download link
X : does not exist
E : exists, but no download link for now
U : I don't know if it exists or not
Panasonic-like recording indicator (based on Z-CAM E2 FW v0.93):
https://drive.google.com/file/d/1GijjGMIjitrbCn3K4gdk3OxCYkQl__Sf
E2-M4 0.98.2 (alpha0) with old true ZRAW: https://drive.google.com/file/d/18BHAqMg6at47HqWfkrDi-7cbxiMOozbV/view?usp=sharing
Z-CAM use AES (128-bit) CFB encryption for main firmware data ZIP-archive (update_data.bin).
| E2 firmware version | AES key (hex bytes) | AES initial vector (hex bytes) |
|---|---|---|
| 0.83 | X | X |
| 0.87 0.88 0.93 |
53 7E 15 16 28 AE D2 A6 AB F7 15 88 09 CF 22 3C |
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |
| 0.96 0.97 0.97.1 0.98 0.98.1 0.98.2 |
CF 55 5B B7 BF 0E 45 6E 94 10 D0 15 D7 5F E3 5B |
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |
X : encryption is not used
Here are passwords that are user for each encrypted ZIP-archive (for example, recovery.zip or update_data.zip):
| Version | ZIP password |
|---|---|
| 0.83 0.87 0.93 |
gmi!!emoclew |
| 0.94 0.95 0.96 0.97 0.97.1 0.98 0.98.1 0.98.2 |
1234564698742 |
| Model | SoC | Sensor |
|---|---|---|
| E2 | HiSilicon Hi3559A V100 | Sony IMX299 |
| E2C | HiSilicon Hi3559A V100 | Sony IMX159 |
| E2G | HiSilicon Hi3559A V100 | Sony IMX344 |
| E2-S6 | HiSilicon Hi3559A V100 | Sony IMX571 |
| E2-F6 | HiSilicon Hi3559A V100 | Sony IMX410 |
| E2-F8 | HiSilicon Hi3559A V100 | Sony IMX455 |
| Partition | Description |
|---|---|
| mmcblk0p1 | Boot partition |
| mmcblk0p2 | Environment data partition |
| mmcblk0p3 | Recovery |
| mmcblk0p4 | nv (mounted as /tmp/nv) |
| mmcblk0p5 | Linux Kernel |
| mmcblk0p6 | RootFS |
| mmcblk0p7 | pref (mounted as /tmp/data) |
| mmcblk0p8 | data (mounted as /tmp/storage) |
| mmcblk0p9 | hibernate (???) |
All next actions must be done in case-sensitive filesystem, that supports symbolic links!
You can find firmware file links on Z-CAM official web-site or on this page (watch "Original Firmwares" section above).
mkdir update
unzip update.zip -d update
rm update.zip
cd update
Use my update_data_crypter tool to decrypt update_data.zip for your firmware version.
Example:
/<path_to_crypter>/crypter -d -v0.93 -i update_data.bin -o update_data.zip
Don't forget to use escaping for special characters. For example, password gmi!!emoclew must be converted to gmi\!\!emoclew in terminal.
mkdir update_data
unzip -P <place_password_here> update_data.zip -d update_data
rm update_data.zip
cd update_data
mkdir rootfs
tar -xzf rootfs.tar.gz -C rootfs
rm rootfs.tar.gz
You know what to do here :)
cd rootfs
tar -czvf ./../rootfs.tar.gz *
cd ..
rm -rf rootfs
zip -P <place_password_here> -0 -r ../update_data.zip *
cd ..
rm -rf update_data
Use my update_data_crypter tool to encrypt update_data.zip for your firmware version. Important: DO NOT use old name update_data.bin because this file is needed for signature checking.
Example:
/<path_to_crypter>/crypter -e -v0.93 -i update_data.zip -o update_data_new.bin
rm update_data.zip
A bit complicated to explain here.
md5sum version.txt update_data.bin install_binary update.script > md5.txt
zip -r ../update.zip *
cd ..
rm -rf update
Ready! Now you can flash your firmware to your camera and test it!
U-Boot is started from eMMC memory (partition 1). At this moment splash screen is shown on E2 screen (Z-CAM logo).
If power and record buttons are pressed - recovery OS starts.
Otherwise - main Linux Kernel starts.
This contains own Linux Kernel and LZO-compressed filesystem.