Skip to content

v0.4.1 — Four controls that only moved their label

Latest

Choose a tag to compare

@DavidClawson DavidClawson released this 05 Oct 21:33
· 31 commits to main since this release

⚠️ This is development firmware — read this block before flashing

Back up your factory calibration before your first flash. Stock keeps
per-device calibration in MCU flash at 0x08006000, and our firmware
overwrites that sector. Flash openscope-2c53t-v0.4.1-caldump.bin once and
photograph the values it shows on the LCD, then flash a scope image. This
is not recoverable after the fact. (Unchanged since v0.3.0.)

Two scope images this time. Pick one:

  • openscope-2c53t-v0.4.1-coldtrace.bin is the same build as v0.4.0's image. Its meter reads DC volts only, using the meter chip's own automatic mode.
  • openscope-2c53t-v0.4.1-coldtrace-meter.bin adds the other meter functions. Resistance, capacitance, diode and DC volts were checked part by part against two reference meters on bench unit #1 this week (below). Continuity, temperature, AC volts and the current ranges have not been checked on our unit yet.

Coming from v0.4.0? Flash this through the IAP drive. Don't use the USB-staged fwapply while running v0.4.0: that release's installer can hang (#42). From v0.4.1 on it is fixed.

Validated on bench unit #1. If you run it on yours, please say so in an issue, working or not.

The headline: four controls that didn't do what they said

An audit of what each scope button actually writes found that four of them, in v0.4.0, changed only their label:

  • Coupling (CH1/CH2, DC/AC): the relays were set to DC at boot and never moved again, whatever the screen said. They now switch, and the label only changes if reading the pin back confirms it. On the bench, AC now blocks a 1 V DC step (0.0 counts) and DC passes it (~50). GND is gone from the cycle: no ground path is known on this board.
  • Probe 1X/10X scaled nothing, so a 10× probe read ten times low. It now scales every volts readout.
  • 20 MHz limit: no hardware path is known, so it now says n/a.
  • SAVE didn't save anything. In scope mode it silently switched CH1's input onto the wrong gain path for its range, so the volts/div stayed wrong until you changed range. It now does nothing and says so.

If you stay on v0.4.0: don't press SAVE in scope mode, and treat the coupling label as "always DC".

New: waveform pass/fail masks

Show the scope a good signal, press AUTO to teach a mask from the next 8 captures, and from then on every capture is judged PASS or FAIL. Captures that can't be compared, for example because you changed range or the trigger, are skipped and counted rather than scored. Columns that break the mask are drawn red, the mask's limits are drawn as dotted lines, and stop-on-fail holds the failing capture on screen until you press OK. MOVE → Mask sets the tolerances. On the bench: a +30 % amplitude change or a +5 % frequency change failed every capture, with no false fails in 140+ captures of the unchanged signal.

The meter, against reference meters

With a component kit on the leads and every part also measured on a handheld DMM or a FNIRSI DMC100, every reading the decoder handles now agrees within 0–1.5 %. Getting there fixed three decoder bugs:

  • Negative DC volts read positive. A reversed AA cell now reads −1.6153 V (DMC100: −1.615).
  • Resistors around 220 Ω–2 kΩ read 10× high (a 1 kΩ showed "10103 kΩ"). It now reads 1.0091 kΩ.
  • Diode mode rejected every real diode. A 1N4007 now reads 0.629 V (DMC100: 0.635), and a red LED 1.808 V (1.817).

These fixes apply to both images, but only the -meter image reaches resistance and diode mode.

USB-staged updates work

The installer behind fwapply called a function that lives in the flash it had just erased, so v0.4.0's could hang. @mquerostudio found the root cause and fixed it (#42, #45), and a new checker proves, per image, that the installer cannot leave RAM. This release image itself was installed onto unit #1 over USB.

Thanks

  • @saulvalenzuela23 captured the meter chip's traffic on his early board revision. That is where the sign bug and the decimal-range rule came from (#37). He also confirmed v0.4.0 on that revision.
  • @mquerostudio found and fixed the installer hang (#42, #45), and archived calibration pages from three units (#28, #38).
  • @Stlkv: the meter decoder these fixes build on (#33, #35).

How this release was checked

  • Bench regression on the exact coldtrace release file (bench unit #1), flashed over USB with the fixed installer: trigger suite, mask suite, and coupling/probe suite, GREEN 3/3. Each has controls that must fail.
  • The -meter image's meter functions were checked part by part on a pre-release build. Its meter code is identical to the release; only #45's installer changes landed since. The exact -meter file has not been through the regression.
  • Every meter result above was measured against a reference meter, and the fixed image was re-checked on the device.
  • test_ramfunc_isolated.py --check-bin: ok on both scope images. The caldump image has no installer.
  • Full write-ups: EXP-69 (masks), EXP-70 (the four controls), EXP-71 (meter). The story behind them: devlog "The label was the only thing that moved".

Checksums are in SHA256SUMS.