Skip to main content
Use a Joulescope inline with an external supply to measure current and voltage during a known firmware workload. Captures appear in the Monitor’s Power tab. A Joulescope doesn’t supply power. The models differ in terminals, ranges, sampling, and digital I/O. Identify the model and serial number before you measure. Embedder rejects settings the connected model doesn’t support. For example, it rejects the 2 A range on a JS220 or JS320 instead of silently substituting another range.

Prepare

  1. Connect the Joulescope by USB and close the Joulescope application and any other software that uses it.
  2. In the Monitor, select +, then select the Joulescope under On the bench. It’s listed by model, such as Joulescope JS220. You can also ask Embedder to check the Joulescope.
  3. Select Set up & connect to approve setup. The device bar shows progress. See Connect a bench instrument.
If you set up from chat instead, approve Install Python 3? if Python is missing, Create Embedder Python environment?, and Install joulescope?.

JS320 requirements

  • Python 3.12 or newer. If Embedder’s Python environment uses an older Python, Embedder asks Upgrade Embedder Python environment for Joulescope JS320? and rebuilds the environment. Other instruments reinstall their packages the next time you use them. If the rebuild fails, your previous environment is kept. If Python 3.12 isn’t installed, Embedder offers Install Python 3.12?. If that install fails, install Python 3.12 or newer yourself, then retry.
  • Firmware 1.1.3 or newer. Embedder refuses to connect to a JS320 on older firmware, because it can report wrong current. See Update JS320 firmware.
If you decline the JS320 upgrade, a JS110 or JS220 attached to the same computer keeps working. Embedder offers the upgrade again the next time you use a Joulescope.

Wire the current and voltage paths

A Joulescope doesn’t supply voltage. Connect it between an external supply and the target, using the wiring for your model and front panel.
On a JS220 or JS320, tie V+ to I+ for a simple two-wire setup. Without that tie, the voltage reading floats. For four-wire (Kelvin) sensing, connect V+ and V- at the target’s supply pins instead, so the voltage reading excludes the drop across the wiring. Turning on DUT power opens the current path from your external supply. It doesn’t set a supply voltage. Stay within the device’s input ratings.

Measure a workload

Ask Embedder for a one-shot capture when you need numbers for a single workload.
Specify the supply, settling period, workload, duration, and whether the current path should stay on afterward. Embedder uses automatic current ranging unless you ask for a fixed range. Use a fixed range only when a known workload needs one. A one-shot capture appears in the Power tab automatically. Keep it to 60 seconds or less. For longer tests, see Record a longer test. If you ask for a raw sample rate, use one the model supports: Check the applied settings in the result before you compare runs.

Record a longer test

Choose the method that gives the result you need:
  • Statistics: each read returns the latest statistics window, not an aggregate of the whole wait. Ask Embedder to reset the charge and energy totals when a new workload phase starts.
  • JLS recording: choose any of current, voltage, and power. Current and voltage are recorded by default. Stop a live sample stream before you start a recording.
To revisit a completed recording, give its .jls path and ask Embedder to open it in Power. The recording must contain both current and voltage. Long recordings are averaged to at most 1,000,000 points for display, so keep the JLS file for sample-level inspection. Record the workload, firmware revision, supply voltage, and settling period with the result so another run is comparable.

Correlate digital activity

Use the Joulescope’s digital inputs to mark firmware states while you measure. Give Embedder the input pin and the target’s logic voltage. Set the I/O reference for your model: On a JS320 attached to a target, wire VREF to the target’s logic supply and select it. The internal reference can back-power a target that is switched off. You can:
  • Read the digital inputs, or drive gpo0 and gpo1. Say what state the outputs should be left in.
  • Measure between edges on one input. Embedder waits for the start edge, 5 seconds by default, and fails if none arrives. It stops at the end edge or the maximum duration, 2 seconds by default. On a JS320, you can also use the BNC trigger input. Embedder detects edges by polling, and checks for the end edge about every 50 ms, so use this for longer state windows, not microsecond timing.
  • Decode UART on a JS220. Two decoders can each read 8N1 serial data on gpi0–gpi3 while you measure power. JS110 and JS320 don’t support this.
The UART result contains the received bytes without timestamps aligned to current samples. Use it to confirm that markers arrived during a capture. To compare current by state, hold the target in each known state and measure settled intervals separately.

Update JS320 firmware

When Embedder connects to a JS320 and newer firmware is available, it tells you. It updates the firmware only after you confirm.
  1. Stop any stream or measurement that uses the JS320. Leave the USB cable plugged in.
  2. Ask Embedder to update the JS320 firmware. Embedder runs the update on its own, separate from any measurement.
  3. Approve the update. It takes about 10 seconds, and the device briefly disconnects and reconnects.
  4. Reconnect and check the reported firmware version.
If the update reports that the device didn’t reappear, unplug and replug the JS320, then run the update again. It completes the remaining steps and verifies the version.

Configure a live stream

  1. Open a Power tab for the Joulescope. The Setup panel is open until you start streaming; select Setup to show or hide it.
  2. If the tab isn’t bound to a device, choose Joulescope under Instrument.
  3. Choose the Sample rate and ranges.
  4. Select DUT power off to open the current path. The button changes to DUT power on.
  5. Select Start.
The defaults are 2 Hz, auto current range, and 15V. Sample rate counts statistics windows per second, not raw samples. Each live point is one window with mean, minimum, and maximum values. If the instrument applies a different rate, the chart readout marks it actual. Charge and energy start from zero for each stream. The live view connects to the only attached Joulescope. With more than one attached, it reports that multiple Joulescopes were found. Unplug the others, or ask Embedder to measure with the serial number of the one you want. See live power controls for pausing, recording, and stopping the stream.

Use the Joulescope in a hardware script

In a hardware script, use these helpers. Current is in amps, voltage in volts, and power in watts. Use joulescope_measure() on its own, or the streaming helpers on their own. Embedder checks the script before it runs. It flags range values that don’t exist, one-shot captures longer than 60 seconds, and a firmware update mixed with other helpers. There are no helpers to set a supply voltage, because a Joulescope can’t supply one.

Troubleshoot

  • “No Joulescope detected via USB”: check the USB cable and port, then select Rescan in the device bar.
  • Joulescope not found on Linux: install Jetperch’s 99-joulescope.rules udev file in /etc/udev/rules.d/, run sudo udevadm control --reload-rules, and replug. An older rules file can let a JS220 work while a JS320 stays invisible.
  • Multiple Joulescopes found: give Embedder the serial number of the unit to use.
  • Current reads zero: check the current path, the external supply, and DUT power. On a JS320, check for a tripped fuse. Fix the overcurrent cause, then ask Embedder to clear the fuse.
  • Voltage is wrong: check the voltage-sense wiring, the V+ to I+ tie, and the voltage range.
  • Range or sample rate rejected: use a setting the connected model supports.
  • JS320 connect is slow after an interrupted session: Embedder resets the device automatically, which can take several seconds. If it reports that recovery failed, unplug and replug the JS320.
  • JS320 unavailable: complete the Python environment upgrade, or update the firmware.
  • Long capture fails: use statistics, streaming, or a JLS recording instead of a one-shot capture.
  • Digital marker missing: check the pin, ground, I/O reference, and how long the signal holds its state.
See Combined workflows for relating power to firmware behavior.
Last modified on October 13, 2026