Skip to content

Session Handoff [hw-cli]: #35 to a 3.15.6 RV3028 EEPROM procedure; Zephyr change next #37

Closed

Description

@ptr727

Next steps, in priority order

  1. rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35's next iteration: close its "Open, for the next iteration" list (ten failure-path items in the PR body, none reached on a healthy chip and bus). Take 1-6 together: fail fast in rv3028_eeprom_idle() on an I2C error; an idle wait before the fallback re-enables switchover; apply the configured RAM 37h after any failed step, not only when the Refresh did not complete; read 37h back on every boot; check the fallback and EERD writes; retry from a periodic path rather than only on save. MeshCore's fix (Store RV3028 backup switchover and trickle charger config in EEPROM (iteration branch) meshcore-dev-MeshCore#11, 6faac3bc and later) already does each of these and is the reference. Done means: those items fixed through local-strict-review (two edit rounds, then push with the remainder listed), the TCR = 01 round-trip and a reboot on the RAK4631, pushed, Copilot and CodeRabbit answered.
  2. Zephyr upstream: hold backup switchover off for RV3028 EEPROM access. The maintainer decided "3.15.6 everywhere" (MeshCore, ZephCore, Zephyr). Zephyr's drivers/mfd/mfd_rv3028.c (boot Refresh, update_cfg with Update) and drivers/eeprom/eeprom_rv3028.c (single-byte 21h/22h) all access the EEPROM with BSM live. No upstream issue or PR covers it (searched 2026-10-03). Work in a new worktree of the Zephyr fork, not the CH390 session's checkout; validate with a Zephyr sample on the RAK4631 + RAK12002. Done means: a fork iteration PR on ptr727's Zephyr fork, hardware-tested, with proposed upstream text. Opening the upstream PR needs the maintainer's go-ahead naming it.
  3. Upstream ZephCore PRs, one at a time, only on the maintainer's go-ahead naming each (companion: mark a CLI reply cut to the app frame (iteration branch) #27 to companion: never treat an over-the-air CLI command as local (iteration branch) #32, then rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35 once step 1 lands), per hub upstream-contribution-workflow. Fetch upstream/dev first.
  4. hw CLI on hardware (Add hw hardware-report CLI command (iteration branch) #1, Add the hw hardware-report CLI command (rebased, hw CLI only) #16), still not re-run since the separation.

External blockers

Internal dependencies

State (re-derive at resume: git worktree list, gh pr list)

The parked decision queue

0 issues carry decision on this fork. Open maintainer questions, ranked:

  1. Upstream go-ahead per fork PR (companion: mark a CLI reply cut to the app frame (iteration branch) #27-companion: never treat an over-the-air CLI command as local (iteration branch) #32; rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35 after step 1).
  2. Go-ahead for the Zephyr upstream PR once step 2's fork PR is clean.

What the last round did

What not to repeat

  • A retry that writes back a saved register value goes stale. 46bfd7c restored a pre-step 37h; once the EEPROM write had landed and a Refresh loaded it, the retry put the old value back. Re-run the procedure that reads the source of truth, or write the configured value, never a snapshot.
  • Self-review rounds on failure paths did not converge. Five passes each found defects in the previous round's failure handling. Stop at the edit budget, push, and list the rest; bot review and a cross-review found the same items faster.
  • Two datasheet slips from recall again: 3.17 for what is 3.15.6, and "about 70 ms" for a cost that was never computed. Grep the extracted manual (pdftotext is absent; uv run --with pypdf works) before writing a section number or a timing.
  • Never state a hardware fact the maintainer has not given. "USB plus a LiPo" went into a commit message and a peer report; both RAKs are USB only.
  • A logger started with $! from the platformio uv Python left a child running when the saved PID was killed; two readers then split the console and a boot line was lost. Read the real PID from ps before killing.

New learnings

Activity

  1. added
    handoffA link in the session handoff chain, one open issue per track
    on Oct 4, 2026
  2. ptr727 commented on Oct 4, 2026

    @ptr727
    OwnerAuthor

    Parked decisions, answered 2026-10-03:

    1. Upstream PRs for companion: mark a CLI reply cut to the app frame (iteration branch) #27-companion: never treat an over-the-air CLI command as local (iteration branch) #32: go-ahead for the next session to open them against liquidraver/ZephCore dev, one at a time, starting with companion: mark a CLI reply cut to the app frame (iteration branch) #27. Re-check upstream/dev before each and squash per hub upstream-contribution-workflow. rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35 follows once its open list is closed.
    2. Zephyr RV3028 change (next step 2): the Zephyr session drives it, not this track. It plans the issue and PR itself, and its upstream PR still needs the maintainer's go-ahead. It was briefed on 2026-10-03: the 3.15.6 finding, the BSF data, both fixes' procedure, the failure-path lessons and the hardware rules. This track keeps rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35.
    3. Asked: how much of the ZephCore change remains once the Zephyr fix lands? All of it. ZephCore does not use Zephyr's RV3028 driver or RTC subsystem. Its RTC support is its own raw-I2C autodiscovery (ZEPHCORE_RTC_AUTODISCOVER, upstream 01fd56a), so a Zephyr driver fix changes nothing in ZephCore. Dropping rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35's EEPROM step would mean moving the RAK4631 onto Zephyr's microcrystal,rv3028 driver, which is a ZephCore design change for upstream to decide.

    Queue now: 0 issues labelled decision. Item 1 is answered; item 2 is delegated to the Zephyr session.

  3. ptr727 commented on Oct 4, 2026

    @ptr727
    OwnerAuthor

    Cross-reference at session end, 2026-10-03: the MeshCore session's state is in handoff ptr727/meshcore-dev-MeshCore#12 (track rv3028-eeprom). Its iteration PR #11 is at 037d493b, the reference for #35's open items 1-6. Its clean branch fix/rv3028-eeprom-config (f64cfc2c) is on the fork only; nothing has gone upstream. Its board, 1CAB516AE4885AB2, runs a diagnostic build. This track's board was not touched by that session.

  4. ptr727 commented on Oct 4, 2026

    @ptr727
    OwnerAuthor

    Continued in #41, round 4 on track hw-cli.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    handoffA link in the session handoff chain, one open issue per track

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions