1-Wire, and the whole I2C - DS2482 - 1-Wire stack, for ESP32 firmware work

Asked by Andre by email, 9 October 2026. Thank you: here is what NovaOS does now.

being built · DHO800/900, MHO900 · the video is NovaOS's own screen on a synthetic DS18B20 line, driven with a mouse

What was asked

Biggest problems for me is total absence of iWire protocol analysis. My primary use is in Espressif ESP32-xx MCU firmware development, both application and testbench (baselining/profiling) focused.
1-Wire decode on the DHO924S and the MHO98, for ESP32 firmware development and profiling.
1-Wire, yes the Maxim spec, mainly with DS2482 master and currently primarily DS1990 tags. Also have a DS18x20 requirement and it would be wonderful to decode/interpret the whole stack I2C <> DS2482 <> DS1990/18x20
Decode the whole stack in one view: the I2C commands to a DS2482, the 1-Wire traffic they make, and what it means for a DS1990 tag or a DS18x20.
UART, now and then when working on autobaud between testjig and DUT.
UART with a baud rate that changes, between a test jig and the device under test.
Subsequent, and in current phase of development, mainly SCPI since that is the functionality currently being added to my testjig
Profiling and measurement driven over SCPI from a test jig.

What NovaOS does now

1-Wire on the Decode sheet

Decode > NovaOS > 1-Wire on any of the four decoders, on one line with its own threshold. NovaOS finds standard or overdrive speed from each reset by itself and decodes the whole conversation: reset and presence, the ROM command (Read ROM, Match ROM, Skip ROM, Overdrive Skip and Match, Resume, Search ROM and Alarm Search with every search triplet), the ROM id with its CRC8 checked, then the function command and its data. A DS18B20 or DS18S20's Read Scratchpad has its CRC8 checked and its temperature shown. The event table gives one row per transaction, reset to reset: Reset/Presence, ROM Cmd, ROM ID, Function, Data, CRC and Errors (short reset, no presence, presence or slot timing, ROM or scratchpad CRC, search errors, a byte cut short, a slot released too close to the sample point).

DS1990A iButtons named

A ROM id of family 01h is shown as DS1990A/DS2401: the DS1990A serial-number iButton and the DS2401 share that family code, so a tag's id reads with its part name on the bus row and in the event table.

Trigger on the reset

The Decode sheet's Trigger on B1 (B2, B3, B4) sets the scope's pulse-width trigger on the bus's reset pulse (low for longer than 480 us, or 48 us at overdrive), so every capture starts at a transaction.

Over SCPI, for scripted test benches

:NOVAos:BUS1:MODE OWIRe picks it, :NOVAos:BUS1:OWIRe:SOURce, :THReshold and :SPEed set it, and :NOVAos:BUS1:DATA? returns the event table as CSV, so a Python test bench can read every transaction the scope decoded.

A UART's baud found from the line

Identify reads a UART line and names its baud rate (the bit time from the shortest runs, snapped to a standard rate), its idle level, frame length and parity, then puts it on the first free decoder and triggers on it: one tap after the jig and the device under test change speed.

Where it stands

What we need from you

To check it end to end on a real bus, not only ours:

Try it and tell us what to change: reply to our email, or post on NovaOS's EEVblog thread. Every release is listed in the changelog.