The browser build's inline PROFILES blob has drifted from the CLI profile data: every chip in it has had PRESTEP0 stripped, including the 65 chips that require a frame-blast handshake. Those chips can still be picked from the dropdown, so the UI silently attempts the wrong handshake.
Evidence
web/index.html carries 109 profiles, none with PRESTEP0:
$ python3 -c "...json.loads(PROFILES)..."
web profiles WITH PRESTEP0 (0):
The CLI data has 66 such profiles, and 65 of them are selectable in the web UI:
66 CLI profiles use PRESTEP0; 65 of them are selectable in the web UI:
hi3110ev500, hi3231v520, hi3251v500, hi3516a, hi3516av200, hi3516cv300,
hi3516cv500, hi3516ev200, hi3518ev200, hi3519, hi3519v101, hi3520dv400,
hi3521a, hi3531a, hi3536, hi3536dv100, hi3559av100, ... (+ ~45 STB parts)
PRESTEP0 is precisely what selects the frame-blast path — hisilicon_standard.py:96:
def uses_frame_blast_handshake(self) -> bool:
return self._profile is not None and self._profile.prestep_data is not None
With it stripped, the web build's Standard path runs DDR step → SPL → U-Boot and never emits the pre-step frame. (The HEAD/AUX blast at web/index.html:394-402 is the V500 path, not this one.)
web/ is deployed verbatim by pages.yml and the blob is hand-maintained — there's no generator keeping it in sync with src/defib/profiles/data/, which is how the two drifted.
Why it matters
The affected list is not exotic — hi3516cv300, hi3516ev200, hi3518ev200 and hi3516av200 are common camera SoCs, and we are now actively pointing users at the web UI as the recommended way past a locked bootloader (OpenIPC/wiki#484, plus replies on OpenIPC/firmware#1494/#1532/#1674/#1827). Two long-standing reports in the retired burn repo are exactly these parts — OpenIPC/burn#21 (hi3518ev200) and OpenIPC/burn#18 (hi3516ev200).
A user on one of these chips gets a chip in the dropdown, a green "U-Boot downloaded, SHA-256 verified", and then a handshake that cannot succeed — with nothing indicating the tool was never going to work for their part.
Note this is a separate defect from #82. #82 is about frame-blast reliability in manual power-cycle mode when the sequence is being sent; here the sequence is never sent at all.
Not yet confirmed on hardware
This is a read of the data and the code path — I have not put a frame-blast chip in front of the web UI. Worth a hardware check before deciding on the fix, in case the plain handshake happens to be tolerated by some of these parts.
Options
- Generate
PROFILES from src/defib/profiles/data/ at build time, carrying PRESTEP0, and implement the frame-blast path in web/protocol.js. Fixes it properly, and stops the two copies drifting again.
- Filter the dropdown to non-
PRESTEP0 chips and show "this SoC needs the CLI" for the rest. Small, honest, shippable now.
- At minimum, stop shipping stripped profiles silently — if the blob is going to stay hand-maintained, add a test that fails when a chip exists in both places with different fields.
I'd suggest 2 immediately and 1 as the real fix, given we're driving traffic at this page right now.
The browser build's inline
PROFILESblob has drifted from the CLI profile data: every chip in it has hadPRESTEP0stripped, including the 65 chips that require a frame-blast handshake. Those chips can still be picked from the dropdown, so the UI silently attempts the wrong handshake.Evidence
web/index.htmlcarries 109 profiles, none withPRESTEP0:The CLI data has 66 such profiles, and 65 of them are selectable in the web UI:
PRESTEP0is precisely what selects the frame-blast path —hisilicon_standard.py:96:With it stripped, the web build's Standard path runs DDR step → SPL → U-Boot and never emits the pre-step frame. (The
HEAD/AUXblast atweb/index.html:394-402is the V500 path, not this one.)web/is deployed verbatim bypages.ymland the blob is hand-maintained — there's no generator keeping it in sync withsrc/defib/profiles/data/, which is how the two drifted.Why it matters
The affected list is not exotic —
hi3516cv300,hi3516ev200,hi3518ev200andhi3516av200are common camera SoCs, and we are now actively pointing users at the web UI as the recommended way past a locked bootloader (OpenIPC/wiki#484, plus replies on OpenIPC/firmware#1494/#1532/#1674/#1827). Two long-standing reports in the retiredburnrepo are exactly these parts — OpenIPC/burn#21 (hi3518ev200) and OpenIPC/burn#18 (hi3516ev200).A user on one of these chips gets a chip in the dropdown, a green "U-Boot downloaded, SHA-256 verified", and then a handshake that cannot succeed — with nothing indicating the tool was never going to work for their part.
Note this is a separate defect from #82. #82 is about frame-blast reliability in manual power-cycle mode when the sequence is being sent; here the sequence is never sent at all.
Not yet confirmed on hardware
This is a read of the data and the code path — I have not put a frame-blast chip in front of the web UI. Worth a hardware check before deciding on the fix, in case the plain handshake happens to be tolerated by some of these parts.
Options
PROFILESfromsrc/defib/profiles/data/at build time, carryingPRESTEP0, and implement the frame-blast path inweb/protocol.js. Fixes it properly, and stops the two copies drifting again.PRESTEP0chips and show "this SoC needs the CLI" for the rest. Small, honest, shippable now.I'd suggest 2 immediately and 1 as the real fix, given we're driving traffic at this page right now.