Repository navigation
⚠️ This is development firmware — read this block before flashingBack up your factory calibration before your first flash. Stock keeps
per-device calibration in MCU flash at0x08006000, and our firmware
overwrites that sector. Flashopenscope-2c53t-v0.4.1-caldump.binonce 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.binis 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.binadds 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
IAPdrive. Don't use the USB-stagedfwapplywhile 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
coldtracerelease 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
-meterimage'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-meterfile 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. Thecaldumpimage 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.