You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reading a radio's settings and applying them straight back fails for 13 images. Upload aborts with the generic wrapper:
RuntimeUnsupportedError: Radio settings validation failed before upload
Behind that wrapper, _validate_and_apply_radio_settings (web/python/runtime_bridge.py:970) reports four distinct causes. This is the settings-side analogue of #31: in most cases the read path emits values the write path refuses.
Categories
A. Value CHIRP itself emitted is rejected — 1 image
Retevis_C2.img:
dtmf.dtmf_local_id: Value '1234 ' contains invalid character ` '
The trailing-space padding comes from the driver's own stored value. Exactly the to_csv / really_from_csv asymmetry from #31, in the settings tree.
B. Current value is not in the setting's own option list — 3 images
Retevis_MA1: basic.backlight -> "8 is not valid for this setting"
Retevis_MA1: basic.p1 -> "Enter is not valid for this setting"
Retevis_RA685: advanced.savemode -> "On is not valid for this setting"
Retevis_RA85: advanced.savemode -> "On is not valid for this setting"
The image holds a value the driver does not list as selectable. Reading is fine; writing the same value back is refused.
C. Setting disappears between read and re-apply — 4 images
Setting is not available for this radio image. — the settings tree built on re-apply does not contain a path that was present when reading. Related to settings-need-backing-state in FINDINGS.md: these drivers build the tree conditionally from image content, so a tree serialized from one instance does not necessarily map onto a freshly constructed one.
D. Validation crashes — 5 images
Yaesu_FT-25R, FT-4VR, FT-4XE, FT-65E, FT-65R:
misc.cw_id -> object of type 'NoneType' has no len()
misc.passwd -> object of type 'NoneType' has no len()
Not a validation failure but an exception surfacing as one. A setting whose value is None reaches a length check. Worth fixing first — it is the only category that is unambiguously a defect on our side rather than a data/driver mismatch.
Categories B and C — need per-driver triage; C may not be fixable by replaying a serialized tree at all, and may want re-reading the tree from the same instance instead.
Summary
Reading a radio's settings and applying them straight back fails for 13 images. Upload aborts with the generic wrapper:
Behind that wrapper,
_validate_and_apply_radio_settings(web/python/runtime_bridge.py:970) reports four distinct causes. This is the settings-side analogue of #31: in most cases the read path emits values the write path refuses.Categories
A. Value CHIRP itself emitted is rejected — 1 image
Retevis_C2.img:The trailing-space padding comes from the driver's own stored value. Exactly the
to_csv/really_from_csvasymmetry from #31, in the settings tree.B. Current value is not in the setting's own option list — 3 images
The image holds a value the driver does not list as selectable. Reading is fine; writing the same value back is refused.
C. Setting disappears between read and re-apply — 4 images
Setting is not available for this radio image.— the settings tree built on re-apply does not contain a path that was present when reading. Related to settings-need-backing-state in FINDINGS.md: these drivers build the tree conditionally from image content, so a tree serialized from one instance does not necessarily map onto a freshly constructed one.D. Validation crashes — 5 images
Not a validation failure but an exception surfacing as one. A setting whose value is
Nonereaches a length check. Worth fixing first — it is the only category that is unambiguously a defect on our side rather than a data/driver mismatch.Reproduction
Suggested order
NoneTypecrash; aNonevalue should serialize and validate as empty.Measured across
chirp/tests/images/after #32.