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
✓ DoneThe 1-Wire decoderStandard and overdrive speed, every ROM command, the function layer, CRC8 on ROM ids and DS18x20 scratchpads, and the timing errors, on both the DHO800/900 and the MHO900. On the scopes since r50.
✓ DoneChecked against Saleae Logic 2The decode is held row for row to what Saleae's Logic 2 decodes from the same recorded 1-Wire capture, frames and error flags included.
✓ DoneDecoded on screen and over SCPIA DS18B20's Read ROM, Match ROM and Read Scratchpad decoded on the studio screen from a Single capture (the video), and through :NOVAos:BUS1:DATA? with the temperature, on both families.
✓ DoneDS1990A tags namedFamily 01h shows as DS1990A/DS2401.
✓ DoneYour setupFrom your reply: a DS2482 master, DS1990 tags and DS18x20s, a 1-Wire slave driven from GPIOs to stress the DS2482 and the IoT devices, UART autobaud between the test jig and the device under test, and measurement over SCPI. Thank you.
○ NextYour hardware on our benchBeing set up: a DS2482S-800 and a DS2484, DS1990A iButtons with a DS9092 probe, DS18B20 (normal and parasite-power-only), DS18S20 and DS2431 parts, ESP32-S3 boards for the jig and a GPIO-driven slave, and long cable. Each case is decoded on our DHO924S and compared on the same wires.
○ NextThe I2C - DS2482 - 1-Wire stackA decoder layer on the I2C bus that reads a DS2482's (and a DS2484's) commands -- reset, write byte, read byte, single bit, triplet, channel select, configuration, status -- and ties each to the 1-Wire slots it makes, so one view reads from the ESP32's I2C write to the DS1990's id or the DS18x20's temperature. The command codes come from Maxim's DS2482 and DS2484 data sheets. On the DHO924S it takes three channels: SCL, SDA and the 1-Wire line.
○ NextExact decode while the scope runs at slow timebasesStopped or after Single, the decoder reads the whole record at full rate (the video). While the scope runs at 1 ms/div or slower with the memory depth at Auto, it decodes the screen's trace, which is too coarse for 1-Wire's shortest pulses, so bits can be lost; until that is fixed, use Single or Stop, or set the memory depth to 1 Mpts.
○ NextA readable event table for 1-WireThe screen's event table splits its side panel evenly between 1-Wire's seven columns, too narrow for a ROM id or the scratchpad and its temperature: they are cut short there. The bus row on the trace (zoomed in, as in the video) and :NOVAos:BUS1:DATA? carry them in full.
○ NextDSView captures read directlyReading DSLogic / DSView session files, so a capture from your DSLogic Plus decodes in NovaOS and becomes a test case as it is.
What we need from you
To check it end to end on a real bus, not only ours:
1.Which DS2482The DS2482-100 (one channel) or the DS2482-800 (eight, with channel select), and its I2C address, so the stack decoder is checked on your exact part.
2.Your DSLogic capturesYes please: one or two DSView captures with SCL, SDA and the 1-Wire line together (a DS1990 read, a DS18x20 conversion, and your GPIO slave at its worst), and what each should decode to. They become test cases every NovaOS build has to pass.
3.Your SCPI test jigThe SCPI commands your jig sends to the DHO924S, so we check that each one answers as your jig expects on NovaOS.
4.On your own DHO924SOnce the DHO install is out (beta from October 19), run it on your bus and tell us what decodes wrong or is missing.
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.