Transform workspace into OpenKE Stock USB Installer generator (v1.0.0)
This commit is contained in:
+36
-41
@@ -1,50 +1,45 @@
|
||||
# Firmware Changelog
|
||||
|
||||
Differences between the stock Creality Ender-3 V3 KE image and our custom build.
|
||||
Differences, release milestones, and architecture changes across this workspace.
|
||||
|
||||
## Baseline
|
||||
---
|
||||
|
||||
- Stock image: `Ender-3_V3_KE_F005_ota_img_V1.1.0.17.img`
|
||||
- Custom build line: `DarKE_KE_F005_ota_img_V11034.img`
|
||||
## 1.0.0 — OpenKE Stock USB Installer (2026-09-24)
|
||||
|
||||
## Firmware Changes
|
||||
### New Features & Architecture Transformation
|
||||
* **Transformed Repo into OpenKE Installer**: Repurposed workspace from a stock pre-root patcher into a full-featured stock-compatible installer generator for **OpenKE** (Linux 6.6-rt + Klipper/Moonraker/GuppyScreen).
|
||||
* **Zero-Disassembly / Single-USB Install**: Users can install OpenKE directly from an unmodified stock printer or Nebula Pad via the touchscreen UI without needing Ingenic mask-ROM recovery mode, cloner tools, or prior root access.
|
||||
* **Dual Target Hardware Profiles**:
|
||||
* **Ender-3 V3 KE** (Board target `F005`)
|
||||
* **Creality Nebula Smart Kit / Nebula Pad** (Board target `NEBULA`)
|
||||
* **Standalone Build Script (`build_openke_image.sh`)**:
|
||||
* Automates preflight checks, asset selection, packaging, and validation.
|
||||
* Supports `--target {ke,nebula,all}`, `--version`, `--artifacts`, and `--output`.
|
||||
* **Direct OpenKE Packager (`tools/pack_openke.py`)**:
|
||||
* Directly encapsulates production OpenKE `xImage` and `rootfs.squashfs` without requiring SquashFS re-compression.
|
||||
* Validates hardware partition budgets: Kernel $\le$ 8 MiB (5.54 MiB used), Rootfs $\le$ 500 MiB (330.85 MiB used).
|
||||
* Validates SHA256 checksums against `build-manifest.txt`.
|
||||
* Generates 1 MiB payload chunks, MD5 hash sidecars, and Creality manifests.
|
||||
* Implements pure-Python Unix MD5-crypt password derivation for any Creality board.
|
||||
* Automatically verifies created 7z archives upon completion.
|
||||
* **Cached RTOS Binaries**:
|
||||
* Extracted and cached `assets/zero.bin` (KE, 432 KB) and `assets/zero_nebula.bin` (Nebula, 424 KB), making builds completely standalone without needing the 118 MB stock firmware images.
|
||||
|
||||
- Added `overlay_rootfs/etc/init.d/S05agree_root` to create `/usr/data/creality/userdata/user_agree_root` at boot.
|
||||
- Updated the version metadata used by the UI:
|
||||
- `overlay_rootfs/etc/ota_info`
|
||||
- `overlay_rootfs/usr/share/klipper/config/F005/printer.cfg`
|
||||
- Current display version: `v1.1.0.33`
|
||||
### Forensics, Bug Fixes & Live Qualification
|
||||
* **Resolved OTA Extraction Failure on Stock Updater**:
|
||||
* *Root Cause*: Creality's `/etc/ota_bin/local_ota_update.sh` computes `OTA_UNZIP_FILE_NAME=${OTA_FILE_NAME%.img*}` and expects `ota_config.in` at `<TEMP_DIR>/<OTA_UNZIP_FILE_NAME>/ota_config.in`. When the archive file and internal folder names drifted, extraction aborted.
|
||||
* *Fix*: Ensured root directory inside the 7z archive strictly matches the `.img` filename without `.img`.
|
||||
* **Resolved Version Comparison Rejection**:
|
||||
* *Root Cause*: Creality's `master-server` (`UpgradeManager.c`) parses versions after `ota_img_V` using regex `[0-9]{1,3}`. Raw integers like `11034` failed comparison against dotted stock versions.
|
||||
* *Fix*: Formatted all release versions with standard dotted numbers (e.g. `1.1.0.34`), ensuring `master-server` and `local_ota_update.sh` recognize the update as newer than stock (`1.1.0.30` / `1.1.0.17`).
|
||||
* **Live Qualification**:
|
||||
* Successfully verified on real Creality Nebula Pad hardware via USB flash drive.
|
||||
|
||||
## Package Identity
|
||||
---
|
||||
|
||||
- OTA package version: `11034`
|
||||
- UI/display version: `v1.1.0.33`
|
||||
- The package still flashes through the stock USB updater flow.
|
||||
## 0.0.1 — Pre-Rooted Stock Firmware (Legacy)
|
||||
|
||||
## Build System Changes
|
||||
|
||||
- `tools/ke_firmware.py` now:
|
||||
- extracts the stock OTA archive
|
||||
- unpacks the stock SquashFS rootfs
|
||||
- applies the overlay
|
||||
- rebuilds the rootfs
|
||||
- repacks the archive
|
||||
- Repacking preserves stock metadata:
|
||||
- symlinks stay symlinks
|
||||
- executable bits stay intact
|
||||
- ownership and timestamps are preserved where applicable
|
||||
- Added archive validation and stock-vs-rebuilt compare support.
|
||||
- New `etc/init.d/*` overlay scripts are forced to pack as executable.
|
||||
|
||||
## Verified
|
||||
|
||||
- The rebuilt image matches stock rootfs metadata outside the overlay.
|
||||
- The custom image rebuilds cleanly and flashes successfully.
|
||||
- The root-agree file is created at boot by init, not baked in as a static overlay file.
|
||||
|
||||
|
||||
# Changelog:
|
||||
|
||||
|
||||
## 0.0.1
|
||||
Pre-Rooted
|
||||
* Baseline: `Ender-3_V3_KE_F005_ota_img_V1.1.0.17.img`
|
||||
* Added `overlay_rootfs/etc/init.d/S05agree_root` to create `/usr/data/creality/userdata/user_agree_root` at boot.
|
||||
* Enabled root access on stock CrealityOS.
|
||||
* Provided `tools/ke_firmware.py` for SquashFS metadata-preserving rebuilds.
|
||||
|
||||
Reference in New Issue
Block a user