feat: Support Y700 5G (TB324ZC) - #91
Open
miner7222 wants to merge 7 commits into
Open
Conversation
TB324ZC is a distinct device from TB323FU, not a hardware-equivalent token, so it gets its own class and no fingerprint equivalence. Its firmware dump matches TB323FU, so the two share one portrait asset. Co-authored-by: Claude (claude-opus-5) <noreply@anthropic.com> Co-authored-by: Codex (gpt-5.6-sol) <noreply@openai.com>
The efisp/GBL route and the PRC-only restriction are now capability predicates rather than TB323FU and TB322FC checks. The EDL-start PRC recheck no longer rides on a missing rollback floor, which TB324ZC has. Co-authored-by: Claude (claude-opus-5) <noreply@anthropic.com> Co-authored-by: Codex (gpt-5.6-sol) <noreply@openai.com>
A real dump shows TB324ZC has proinfo where the other Y700 models have oemowninfo. Field-only matching now covers proinfo, whose build strings a blind scan would rewrite. Co-authored-by: Claude (claude-opus-5) <noreply@anthropic.com> Co-authored-by: Codex (gpt-5.6-sol) <noreply@openai.com>
Co-authored-by: Claude (claude-opus-5) <noreply@anthropic.com>
mod6 extends the patches that did not land on TB324ZC. All four asset digests move with the tag; the names are unchanged. Co-authored-by: Claude (claude-opus-5) <noreply@anthropic.com>
Co-authored-by: Codex (gpt-5.6-sol) <noreply@openai.com>
miner7222
force-pushed
the
feat/y700-infinite-tb324zc
branch
from
August 30, 2026 06:32
573223b to
a437710
Compare
Y700 Infinite was an unofficial name. The loader hint now names the shared Snapdragon 8 Elite Gen 5 instead of listing both models, since the manifest requirement follows the SoC rather than the model. Co-authored-by: Claude (claude-opus-5) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds support for the Lenovo Y700 5G (TB324ZC) — Snapdragon 8 Elite Gen 5,
CN-only. No ROW firmware exists and none is expected.
Reports on coolapk that the Y700 5G still loads efisp are what prompted
this. ABL analysis has since confirmed that TB324ZC does load efisp. Some of the
patches did not land, which
5.3.120-mod6resolves by extending them.Approach
TB324ZC follows TB323FU (Y700 5th gen) at every existing decision point, and adds
TB322FC's PRC-only restriction — but not TB322FC's rollback-protection exemption,
since TB324ZC is assumed to have rollback protection.
Rather than duplicating a TB324ZC check beside each TB323FU and TB322FC check —
there are roughly thirty of them across the GUI, update handlers and workers, and
missing one would fail silently — the two behaviours became capability
predicates:
DeviceClass::uses_efisp_gbl_route()(TB323FU, TB324ZC) andDeviceClass::is_prc_only()(TB322FC, TB324ZC), plus a fingerprint-sidefingerprint_uses_efisp_gbl_route().Two details worth calling out:
live-device identity — GBL/ARB work follows the firmware fingerprint, while
the region skip follows fingerprint or device model. Those stayed two
predicates rather than collapsing into one.
rollback_floors == Nonesentinel. TB324ZC has rollback protection and so always has floors, which means
it would never have hit that check. It is now keyed on an explicit PRC-only
predicate, with TB322FC's behaviour preserved exactly.
TB324ZC is not hardware-equivalent to TB323FU, so no
fingerprint_model_matchequivalence was added — the two must stay distinguishable, and each has its own
dashboard portrait.
Flashing
Because TB324ZC is PRC-only,
modify_regioncan never be set for it, so theexisting
need || modify_regionGBL condition already reduces to what is wanted:the efisp GBL is downloaded and flashed only when a rollback bypass is
required, and the install is otherwise a plain re-sign. No special case was
added for that; it falls out of the PRC-only restriction.
efisp uses the same pinned baldur release and name + SHA-256 allow-list as
TB323FU. That pin moves to
5.3.120-mod6,which carries the extended patches TB324ZC needs; TB323FU moves with it.
Country code
TB324ZC has
proinfowhere the other Y700 models haveoemowninfo, so it usesproinfo+persist. Field-only country matching now coversproinfoas wellas
persist:proinfocarries build strings such asTB324ZC_PRC, and a blindscan would be rewritten across every occurrence by
replace_in_place.Unverified assumptions
These cannot be settled from the repository or without hardware, and are the
reason this should not merge yet:
5.3.120-mod6GBL behaves as intended on TB324ZC end to end, andthat moving TB323FU onto the same tag is safe for it.
proinfo+persistcarry the country code in the same field layout thesibling Lenovo models use.
vendor_boot/vbmetaLUNs match TB323FU's — Boot Recovery isblocked on that assumption, and root GKI is blocked for the same reason it is
on TB323FU.
(That TB324ZC loads efisp at all is no longer an assumption — it is confirmed.)
Note on overlap
The
proinfofield-only one-liner also exists in #90 (Xiaoxin Pro 13). The twobranches are otherwise independent; whichever lands second resolves a one-line
conflict in
country_field_only.Verification
cargo clippy --workspace --all-targets -- -D warningsis clean andcargo test --workspaceis green (ltbox-core 51, ltbox-device 59, ltbox-gui 226,ltbox-patch 174, locale guards 3). All coverage is static; nothing here has been
exercised against a device.
Do not merge until verified on real hardware.