Joulescope UI does not discover connected Joulescope

We received a report from a customer with a new Joulescope JS110. When they connected the JS110 to the host Windows 11 computer, the status LED next to the USB host connector illuminated green. The Joulescope device appeared in Device Manager. However, the Joulescope UI did not list the device. What we found is very strange. Hopefully, this post helps in case someone else encounters this issue!

Upon investigation, another driver was claiming the Joulescope:

The libwdi driver is so broad that it claims all WinUSB devices, which is very unfriendly. Here is the INF template. Unfortunately, it overrides the DeviceInterfaceGUID, which is how the Joulescope host software discovers Joulescope devices on Windows. Normally, the Windows-specific USB descriptors populate DeviceInterfaceGUID and several other registry entries.

Manually selecting Update Driver and selecting the correct, default WinUsb driver did not fix the problem:

However, Uninstall device, unplugging, and replugging seems to have fixed the issue, even though the libwdi driver still claimed the Joulescope.

The Joulescope provides information to the host computer when it connects using Windows-specific descriptors. You can manually verify the registry entries using regedit.

The most important key is the “DeviceInterfaceGUID” in “Device Properties”:

Here are some related posts:

And if you are still running Windows 7:

I filed issue #251 with libwdi, and I received a quick & thorough reply. The net is that I do not know how the computer arrived at this situation, only that it did. The libwdi project does work to respect USB VID/PID so this situation does not happen. Hopefully, this is a one-time occurrence!

This issue with libusb claiming the Joulescope JS110 occurred again separately. Here is what a normal Windows 10 / 11 installation should look like under device manager properties:

This happened again, but this time a Joulescope JS220 was bound to a Windows Phone driver. The user does not know what software caused this. However, here are a few PowerShell commands that can help.

To list all connected Joulescopes:

Get-PnpDevice -Class 'USBDevice' -FriendlyName '*Joulescope*' -PresentOnly | select Status,Class,FriendlyName,InstanceId

For example:

To uninstall all Joulescopes and then reinstall:

Start-Process powershell -ArgumentList {
  foreach ($dev in Get-PnpDevice -Class 'USBDevice' -FriendlyName '*Joulescope*') {
    pnputil /remove-device $dev.InstanceId
  pnputil /scan-devices
} -Verb runAs