USB has two sides: if it works, it is great :-). If it does not, it is really bad :-(. It took a while in the desktop and PC world until USB for common devices (mouse, keyboard, memory sticks, …) was working without issues. But ‘non-standard’ devices like a USB debugging probe/cable are not of that kind of category.
Occasionally I run into USB driver issues in my class. So this post is about identifying the different USB driver parts for the P&E OpenSDA, P&E OSBDM/OSJTAG and P&E Multilinks. And how to install the drivers manually if something is not going well.
Without anything connected, I have the Jungo WinDriver installed and showing up in my Device Manager:
The Jungo WinDriver is used by many companies for their own USB stack development. So for all the cases below, that Jungo WinDriver is *required*. As of today, I have this version of the driver in my system:
If I connect the debug port of the OpenSDA on the FRDM-KL25Z board, then two more drivers show up:
One is the PEMicro OpenSDA Debug Driver: the connection between the debugger and the debug circuit on the board. The other is the CDC virtual COM port driver.
As of today, I have these versions installed:
P&E USB Multilink
Connecting a P&E USB Multilink/Multilink Universal/Multilink Universal FX, it shows a ‘USB Multilink 2.0’ (without USB CDC port, of course):
As of today, I have this driver installed:
OSBDM/OSJTAG looks different depending on if the latest firmware with USB CDC virtual COM port is installed or not.
If the board is using an older driver, then it looks like this:
It has the PEMicro USB Serial Port which only works with the P&E Terminal utility (but not with a normal terminal program). Additionally there is the LibUSB Open Source BDM – Debug Port driver.
Updating the firmware to V31.xx will show the USB CDC port (see this post how to upgrade the firmware):
Troubleshooting: Installing WinDriver
What if the WinDriver is not present at all? The trick is to install it manually. For this I use the context menu in the Windows Device manager and select ‘Add Legacy Hardware‘:
This opens the ‘Add Hardware Wizard’:
Next, I select to install the hardware manually:
In the next dialog, I select ‘Show all devices’:
In the next dialog I select ‘Have Disk’:
In the next dialog, I again select ‘Have Disk’:
Here I browse to
<MCU installation path>\Drivers\P&E\Drivers\windriver
and select the WinDriver .inf file:
With this, I’m going to install the Jungo Windriver:
And installation is only one click away:
With this, we have installed the WinDriver again :-).
Troubleshooting: Updating the drivers
Sometimes things are going wrong, and drivers are not properly installed. What helps here is to re-install the USB drivers.
The other way is to use the drivers from the CodeWarrior installation. I find it inside my installation folder:
<CW Installation Path>\Drivers\P&E\Drivers
To install/update the driver I go to the driver properties and select ‘Update Driver…’:
Next I Browse my computer for driver software (Search automatically will not solve the problem!):
In the next dialog I select Let me pick from a list of device drivers on my computer:
Next, I press ‘Have Disk…‘ button:
Now I browse to the <MCU>\Drivers\P&E\Drivers folder to pick my driver:
The dialog will propose the matching driver name. Press Open. With this we have set where we copy the driver files from:
Pressing OK gets us back to this dialog:
Pressing ‘Next’ will install the drivers, and hopefully I get:
And we are done 🙂
Screwed up USB drives is a major frustration. Knowing what kind of drivers are present, and knowing how to install them with the device manager helps a lot. Important to note is that the ‘automatic’ way in Windows usually does not help for me: I have to explicitly browse for the drivers, and tell Windows that I have the driver files for it, as shown above. With this it has always worked out well for me.
Happy Installing 🙂