
Experimental Nikon Z7 camera firmware research lab: source patcher, QEMU emulation harness, and validation tooling for building and testing modified firmware images locally.
EXPERIMENTAL CAMERA FIRMWARE RESEARCH. A failed or incorrect flash can permanently brick a camera, destroy data, or require paid repair/replacement. Use entirely at your own risk. To the fullest extent permitted by law, the authors/contributors accept no liability. No warranty or verified emergency recovery is provided. Read RISK_NOTICE.md.
Independent, modified research workspace for the original Nikon Z7 C 3.80. This is not an official Nikon or Wonder Lantern release. Component licenses, credits and notices are preserved; see UPSTREAMS.json.
Experimental source/patcher prerelease v0.1.0-grid-preview.1
The preview adds 3x3 / 4x4 / Off to the native framing-grid menu, with the choice stored in the camera's existing internal settings. It has no timed reversion. The owner reports that the latest build is installed and keeps 3x3 after more than ten seconds switched off on one original Z7. That limited result is not certification or proof of compatibility with every Z7.
Source/patcher release only: no stock or modified Nikon firmware BIN is
redistributed. Build the exact reviewed image locally using your own official
Z_7_0380.bin. Start with the release/build guide,
then read the exact-candidate assessment.
Target scope is original Z7 C 3.80 without Nikon's paid RAW-video upgrade;
other bodies/versions, including Z7 II, are not supported by this preview.
The exact image passed 107 instruction checks, 16 assisted QEMU checks and 12
selected updater probes. Test boundaries and remaining gaps are documented in
NATIVE_GRID_SETTINGS.md. Owner hardware results are
recorded separately in evidence/20261026-grid-saved-owner-hardware.json.
Off intentionally clears the selected type; presets/import/export, indirect
consumers, wake behavior, extended use and failure recovery need further review.
The source also retains earlier sound, splash and added-journal-record work.
Those are not included in the grid preview's generated image. Automatic
shutter sound still has the reported live-view repetition defect; its
port audit hold remains. Do not substitute older presets or the
held 90-record journal prototype for the preview's --native-choice build.
For continuing development, read HANDOFF.md.
Earlier assisted-emulator runs passed 21 general UI checks and 17 sound-submenu checks for each sound-capable preset. Those results establish selected emulator behavior; they do not clear the capture-trigger defect or establish physical capture timing, recording, recovery or compatibility with other camera models.
z7-qemu/: complete source overlay and tools, with local changes included.z7-firmware-extensions/: complete patcher source, including all sound fixes.tools/: local build, validation, setup and launch helpers.evidence/: source-only validation summary; no firmware or camera screenshots.The two component directories are vendored source snapshots, not submodules. Their upstream licenses and notices remain in place. This repository is a modified research workspace and does not claim to be an official WonderLantern release.
The lab also supports native Windows using an isolated MSYS2/UCRT64 build.
It does not require WSL. After setup, double-click Start-Z7.cmd to open the
local browser app, or run ./Run-Z7.ps1 from PowerShell.
For a fresh build, obtain the official Z_7_0380.bin in Downloads and use
Python 3.12+:
.\Setup-Z7.ps1
# Or select an unregistered Python explicitly:
.\Setup-Z7.ps1 -PythonPath C:\path\to\python.exe
The helper checks the firmware hash, creates a private Python environment,
downloads a digest-checked MSYS2 environment under .private/toolchain/,
builds the hash-checked QEMU source and all four firmware presets, and checks
the native host contracts and candidate admission. It preserves existing firmware and build directories.
See WINDOWS_BUILD.md for rebuilding and validation commands.
Use Linux or WSL with Python 3.12+. In an already installed Ubuntu environment:
sudo apt-get update
sudo apt-get install build-essential ninja-build pkg-config python3-venv \
libglib2.0-dev libpixman-1-dev zlib1g-dev libfdt-dev
python3 tools/setup_lab.py --jobs 4
Obtain your own official Nikon Z_7_0380.bin and place it at
.private/stock/Z_7_0380.bin. Check its SHA-256 against the handoff, then:
LAB_PY="$HOME/.local/share/wonderlantern-z7/venv/bin/python"
"$LAB_PY" tools/build_firmware.py --output .private/builds/20261020-09
"$LAB_PY" tools/check_candidate_inputs.py --build .private/builds/20261020-09
"$LAB_PY" tools/launch_z7.py