Joulescope UI does not connect to JS220

I am using Joulescope UI on a windows 10 PC and it does not connect to the JS220.
However, it is working fine on another PC, so we do not think there is a hardware problem.
I would like to get it to work on my computer, so please let me know if you have any solutions.

Device Manager shows “Joulescope JS220” under “Universal Serial Bus devices”.
When I check the properties of Joulescope JS220,
on a PC that is working properly, the driver provider is “Microsoft”,
but on my PC that does not connect to JS220, the driver provider is “libwdi”.

I have checked the technical session here and think that “libwdi” may be the cause.
I have read through the technical sessions but could not figure out how to work around the problem.

Hi @yokoyama and welcome to the Joulescope forum!

It definitely sounds like you have the same issue with libwdi incorrectly claiming the Joulescope JS220. Did you try the solution at the bottom of that forum topic? Open PowerShell, and then copy this in:

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

Does this fix the problem?

Thank you for your reply.

After executing the command, Joulescope JS220 was recognized as a “COM port”.
By using Zadig 2.7, it can be reverted to be recognized as “Universal Serial Bus devices”.
Joulescope UI is still unable to connect to JS220.

Your Joulescope JS220 includes Microsoft OS descriptors, which are supposed to tell Windows to use the WinUSB driver that is included with Windows with your JS220.

You must have something installed on that computer that is greedily binding its driver by a sloppy use of USB VID/PID.

Have you been using Zadig for a lot of things on this computer? That could cause a problem.
However, if you are comfortable using Zadig, you can use it to force the WinUSB driver for this JS220. As long as the JS220’s driver is WinUSB, it should work.

By explicitly selecting the driver from the device manager, it could be replaced with the Microsoft driver.
The properties of the driver now look like the following, which is the same as a PC that is working properly.

  • Driver Provider : Microsoft
  • Driver Date: 2006/06/21
  • Driver Version : 10.0.19041.1
  • Driver Signer : Microsoft Windows

However, Joulescope UI still cannot be connected to the JS220.
It seems there was still a problem besides libwdi.

So, something is very wrong with driver enumeration on your computer. Joulescopes should “just work” and bind with the WinUSB driver when you connect them. The device itself provides all necessary information. However, Windows allows manually installed drivers to override this information. Based upon what you have found so far, multiple other drivers are trying to claim your Joulescope!

I took a closer look at how Joulescopes enumerate, and they do require a DeviceGUID. This DeviceGUID normally comes for the Microsoft OS Descriptors. It appears that your computer is completely ignoring or overwriting that data provided by the Microsoft OS Descriptors. If this is the case, then switching to WinUSB manually is not enough to make your Joulescope work. We could try editing the registry manually, but it would be much better to use the normal Microsoft OS Descriptor method.

Let’s start again.

Unplug your Joulescope. Start PowerShell, and run the same script above:

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

Within PowerShell,

Get-PnpDevice -Class 'USBDevice' -FriendlyName '*Joulescope*'

should return

Now connect your Joulescope to USB. Within PowerShell, what does the same Get-PnpDevice command return? I see:

What do you see?

What happens if you run:

pnputil /enum-drivers /class USBDevice

Any suspicious drivers? Any you can uninstall? Based on what I have read, at least one of these is claiming your Joulescope…

After unplugging Joulescope, I ran the following command in a powershell.

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

The following commands were then executed,

Get-PnpDevice -Class 'USBDevice' -FriendlyName '*Joulescope*'

The results below returned. Sorry it’s in Japanese, but it’s the same result you showed me.

Next, after connecting Joulescope to USB I ran the command again and got the same result as before.

I ran the following command, many drivers were listed. It also contains many libwdi drivers.

pnputil /enum-drivers /class USBDevice

I suspect that one of those drivers is incorrectly claiming the JS220’s USB VID and PID, which seems to override the desired behavior. I do not know how/if you can tell Windows to do the “default” behavior and ignore INFs.

I do know that you can delete drivers. If you open PowerShell as adminstrator, you can delete a driver using:

pnputil /delete-driver {name}.inf

If these libwdi drivers are temporary things you created, then you may be able to simply delete them all.

If you want to be careful about what you delete, you can open each INF and try to find the misbehaving one. You are looking for one that claims VID 0x16D0 and PID 0x10BA. You can browse C:\Windows\INF to find the matching INF files and open them in your favorite text editor.

Sorry I can’t be more help, but this really isn’t a Joulescope problem. It’s hard to be specific about what driver is causing the problem.

I also found this.

So, you may be able to find the offending driver:

foreach ($dev in Get-PnpDevice -Class 'USBDevice' -PresentOnly) {
   echo $dev;
   Get-PnpDeviceProperty -InstanceId $dev.InstanceId -KeyName DEVPKEY_Device_DriverInfPath;

You want the DeviceID that starts with USB\VID_16D0&PID_10BA\

Then use pnputil /delete-driver {name}.inf to delete the matching driver.

I will try the method you gave me and see if it solves the problem.
If that doesn’t work, I will consider using another working PC.
Thank you for your many advices.