UI settings are not working?

I’m having the issue of the lagging on the UI, there is a post (Laggy display of Waveform view) where the user disabled OpenGL to solve it, so I tried to do that but seems like the settings are not working.

Here I’m setting to not showing statistics and it is still showing, before I also tried to lower the precision and also nothing changed.

Hi @jano - and welcome to the Joulescope forum!

Settings can get confusing. You are editing the default Waveform widget settings, which will apply to newly created Waveform widgets. If you want to edit the current Waveform widget settings, you have to expand that section and click on the active Waveform widget.

Here is an example where I created two Waveform widgets and used the name field in settings to rename then and then disable show_statistics on the bottom:

In general, it’s easier to right-click on the Waveform widget and select Settings, which always brings up the settings for that widget.

Hi! thanks for your quick reply, that worked.

Unfortunately the lag problem persist. When I launch the UI the data flow smoothly, I activated the show_fps option and it goes 20fps… for a while. After some time (10min or so) the fps rate begins to get lower and lower until it reach 1fps or lower. At this point the UI is completely unusable and even closing it takes a while.

I recorded a screen capture videos to show the problem, but I cannot upload them to this interface, it says: “Sorry, new users can not upload attachments.”

I already cleared the config, installed other versions (now I have the 1.5.1), tried deactivating opengl in the settings but nothing seems to help.

about the computer:

Lenovo P520

Prozessor Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz (3.60 GHz)
Installierter RAM 32,0 GB (31,6 GB verwendbar)
Windows 11 Pro 25H2

Graphics card is Nvidia Quadro P2000, I installed Nvidia drivers also.

Joulescope is JS220 and is connected to a USB3.1 in the back of the workstation (directly to the Main board).

Any idea of what else can I do?

Hi @jano,

Thanks for the additional detail. I just upgraded your account from new user, so you should be able to post attachments now.

While you do have an older CPU and graphics card, it should be able to handle the Joulescope data rate. The performance degradation you are describing usually means that the host computer is running out off resources, usually RAM.

  1. Configure Troubleshooting for the Joulescope UI and watch what happens over time to the resources shown on the status bar:

  2. Turn on the fps (frames per second) overlay. Right-click the waveform → Settings → enable Show fps. It draws the live frame rate and per-frame paint time, which gives objective
    numbers.

The most common causes of this progressive slowdown on Windows include:

  1. Anti-virus / endpoint protection with real-time memory scanning. This is the #1 offender on Windows and it characteristically gets worse over time as the working set grows and the scanner keeps re-inspecting it. Please add an exclusion for the Joulescope UI executable (and your recording folder if you record), then retest.

  2. Graphics driver / GPU selection (Quadro P2000). Two things to try: (a) make sure Windows is actually running the UI on the Quadro and not falling back — in
    Settings → Display → Graphics, set the Joulescope UI to High performance; and (b) update the Quadro driver (the NVIDIA “Production Branch”/Studio driver is the
    most stable for Quadro). If the OpenGL path is misbehaving, the opposite test is also informative: turn OpenGL off on the active waveform (right-click → Settings)
    and restart the UI — if that changes the decay, it’s GPU-related. Note that any graphics settings do not take effect until you restart the UI.

  3. USB / PCIe power management. Set the Windows power plan to High performance; in Device Manager disable USB selective suspend (and “Allow the computer to turn
    off this device to save power” on the USB hub the JS220 is on); and in the power plan’s advanced settings set PCI Express → Link State Power Management → Off.
    These can cause periodic stalls that compound over a session.

I had Claude Code write a PowerShell script to do (3)

<#
.SYNOPSIS
    Apply Joulescope-friendly USB/PCIe power settings to prevent streaming stalls.

    For the ACTIVE power scheme:
      * USB selective suspend (AC + DC)            -> Disabled
      * PCI Express Link State Power Mgmt (AC+DC)  -> Off (ASPM)
    Both settings are also UNHIDDEN so they appear in
    Control Panel > Power Options > Change advanced power settings.

    For USB hubs/host controllers only:
      * Clears MSPower_DeviceEnable.Enable, which for these devices normally
        corresponds to unchecking Device Manager > Power Management >
        "Allow the computer to turn off this device to save power".

.NOTES
    Run as Administrator. If saved as Set-JoulescopePower.ps1, just right-click >
    "Run with PowerShell"; it will self-elevate. Applies to the active scheme only.
#>
[CmdletBinding()]
param()

# --- Self-elevate if not already Administrator ---------------------------------
$isAdmin = ([Security.Principal.WindowsPrincipal] `
    [Security.Principal.WindowsIdentity]::GetCurrent()
    ).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)

if (-not $isAdmin) {
    if (-not $PSCommandPath) {
        Write-Error 'Not elevated. Re-run this script from an Administrator PowerShell.'
        return
    }
    Write-Host 'Elevating to Administrator...' -ForegroundColor Yellow
    Start-Process -FilePath (Get-Process -Id $PID).Path -Verb RunAs -ArgumentList `
        @('-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', "`"$PSCommandPath`"")
    return
}

# --- Helper: run powercfg and throw on failure ---------------------------------
function Invoke-PowerCfg {
    param(
        [Parameter(Mandatory)]
        [string[]] $Arguments
    )

    $output = & powercfg @Arguments
    if ($LASTEXITCODE -ne 0) {
        throw "powercfg $($Arguments -join ' ') failed with exit code $LASTEXITCODE"
    }
    return $output
}

# --- Well-known power setting GUIDs --------------------------------------------
$USB_SUB     = '2a737441-1930-4402-8d77-b2bebba308a3'   # USB settings
$USB_SUSPEND = '48e6b7a6-50f5-4782-a5d4-53bb8f07e226'   # USB selective suspend
$PCIE_SUB    = '501a4d13-42af-4429-9fd1-a8218c268e20'   # PCI Express
$PCIE_ASPM   = 'ee12f906-d277-404b-b6da-e5fa1a576df5'   # Link State Power Mgmt

# Values: USB selective suspend  0 = Disabled, 1 = Enabled
#         PCIe ASPM              0 = Off, 1 = Moderate, 2 = Maximum

# --- Resolve the active power scheme -------------------------------------------
$activeScheme = (Invoke-PowerCfg -Arguments @('/GetActiveScheme')) `
    -replace '.*GUID:\s*([0-9a-fA-F-]{36}).*', '$1'
Write-Host "Active power scheme: $activeScheme" -ForegroundColor Cyan

# --- Apply power-plan settings to the active scheme ----------------------------
Invoke-PowerCfg -Arguments @('/SETACVALUEINDEX', $activeScheme, $USB_SUB,  $USB_SUSPEND, 0) | Out-Null
Invoke-PowerCfg -Arguments @('/SETDCVALUEINDEX', $activeScheme, $USB_SUB,  $USB_SUSPEND, 0) | Out-Null
Invoke-PowerCfg -Arguments @('/SETACVALUEINDEX', $activeScheme, $PCIE_SUB, $PCIE_ASPM,   0) | Out-Null
Invoke-PowerCfg -Arguments @('/SETDCVALUEINDEX', $activeScheme, $PCIE_SUB, $PCIE_ASPM,   0) | Out-Null
Write-Host '  USB selective suspend -> Disabled (AC/DC)'
Write-Host '  PCIe Link State Power Management -> Off (AC/DC)'

# --- Unhide both settings in the Control Panel UI ------------------------------
Invoke-PowerCfg -Arguments @('-attributes', $USB_SUB,  $USB_SUSPEND, '-ATTRIB_HIDE') | Out-Null
Invoke-PowerCfg -Arguments @('-attributes', $PCIE_SUB, $PCIE_ASPM,   '-ATTRIB_HIDE') | Out-Null
Write-Host '  Unhid both settings in Power Options'

# --- Re-activate so the changes take effect now --------------------------------
Invoke-PowerCfg -Arguments @('/SETACTIVE', $activeScheme) | Out-Null

# --- Per-device: USB hubs/host controllers only --------------------------------
Write-Host 'Updating per-device USB power management (hubs/controllers only)...'
try {
    $usbDevices = Get-PnpDevice -Class USB -PresentOnly -ErrorAction Stop |
        Where-Object {
            $_.InstanceId -and
            (
                $_.FriendlyName -match 'Hub|Host Controller|xHCI|eXtensible Host Controller|Root Hub' -or
                $_.InstanceId   -match 'ROOT_HUB|ROOT_HUB30|USB\\ROOT'
            )
        }
    $usbIds = $usbDevices.InstanceId

    $power = Get-CimInstance -Namespace root\wmi -ClassName MSPower_DeviceEnable -ErrorAction Stop

    foreach ($p in $power) {
        foreach ($id in $usbIds) {
            # MSPower InstanceName is "<PnP InstanceId>_0". Escape the PnP id so
            # any wildcard-significant characters are treated literally by -like.
            $pattern = [System.Management.Automation.WildcardPattern]::Escape($id) + '*'
            if ($p.InstanceName -like $pattern) {
                try {
                    # For USB hubs/controllers, clearing Enable normally unchecks
                    # "Allow the computer to turn off this device to save power".
                    # NOTE: Microsoft documents the MSPower_DeviceEnable boolean as
                    # device-dependent, so this is not guaranteed for every device type.
                    Set-CimInstance -InputObject $p -Property @{ Enable = $false } -ErrorAction Stop
                    Write-Host "  Enable=False  $($p.InstanceName)"
                } catch {
                    Write-Warning "  Could not update $($p.InstanceName): $($_.Exception.Message)"
                }
                break
            }
        }
    }
} catch {
    Write-Warning "Per-device step skipped: $($_.Exception.Message)"
}

# --- Verification --------------------------------------------------------------
Write-Host "`nVerification (active scheme):" -ForegroundColor Cyan
Invoke-PowerCfg -Arguments @('/QUERY', 'SCHEME_CURRENT', $USB_SUB,  $USB_SUSPEND) |
    Select-String 'Setting|Index'
Invoke-PowerCfg -Arguments @('/QUERY', 'SCHEME_CURRENT', $PCIE_SUB, $PCIE_ASPM) |
    Select-String 'Setting|Index'

Write-Host "`nDone. Replug USB devices or reboot Windows for best results." -ForegroundColor Green

Does any of this help?