Leonardo XP enumeration

Hello

I am building a processing project with Arduino IDE 1.8 on Windows10 with Leonardo which will require monitoring by an older XP machine. While every thing works OK on W10, neither the XP machine nor a 2nd one will recognise the Leonardo board. I suspect there is no enumeration.

In case there was a problem with my sketch it has been replaced with the Blink one with the same results. A Uno works as expected and the resulting oem51.inf file also appears to include driver details for the Leonardo but it is not reported in Device Manager. I suspect the ‘virtual port’ may be inhibiting enumeration but don’t know how to do a manual install without some recognition by Windows?

USBDview on XP lists Leonardo as ‘Unknown’ and ‘not connected’ with few details (report attached), while Windows gives an error –

Found New Hardware -
“A problem occurred during hardware installation. Your new hardware might not work properly.’

Unrelated USB port activity causes a flickering of Leonardo LED’s, so there must be some sort of link. Both Arduino monitor and Termite refuse to acknowledge Leo on the XP but are OK with Uno, and both boards on W10. Don’t intend programming on the XP just to monitor the output.

I have run out of ideas and have little knowledge of the enumeration process.

Any suggestions?

Thanks.

Copies attached of the non working Leonardo and working Uno as seen by USBDview.

There is a strong chance you need the older driver for the Leonardo installing on the XP box.

If you look in the IDE install directory you will see a DRIVERS.ZIP file.

C:\Program Files (x86)\Arduino\drivers\Old_Arduino_Drivers

Take that to the XP machine in you dont have the IDE installed on there and extract it and install the drivers from there and install the Leonardo one.

Thanks for the suggestion, I have tried loading the Leonardo file from Old_Arduino_Drivers.zip but with the same results.

However, there has been some progress as DM – Show Hidden Devices did not show the Unkown Device when the Leonardo was plugged in due to XP problems. I had to add -

“set devmgr_show_nonpresent_devices=1”.

It now shows up and I can manually add the driver files but still no connection. However, more information is now available via USBDview.

Attached – leo2.jpg

On checking the DM – Property – Details – Hardware Id shows USB\VID_2341&PID_0036 instead of 8036 as on the W10 machine. This suggests the bootloader port rather than the sketch port. Perhaps this is just due to incomplete enumeration, whether significant or a “red herring”, I don’t know?

You can on the LEO force bootloader mode.

There are a few posts regarding the LEO but one to start you off

Last time my LEO went AWOL it too a reload of the bootloader to bring it back to life.

Its been fine ever since.

Thank you I'll have a look.

I think I have discovered the cause of my problems but not the fix. Two forum items say that XP SP2 (which I have) will not handle HID/CDC modes and they seem to offer coding solutions. Unfortunately, they are well above my current skill level.

= 2012 - blinkenlight comments in
http://discuss.arachnidlabs.com/t/solved-serial-communication-does-not-work-under-windows-xp/131

As these are old posts perhaps there is an up to date fix?

Yes, I acknowledge XP SP2 is old but as I have working machines why not use them as process monitors?

It is an old post for the second link but there was a clue in there when they refer to an older IDE as working with XP !

Most of the older IDE's are available to download as a ZIP file which makes them useful to run from an unzipped location.

A lot of XP machines were also quite suitable for windows 7 (my preferred OS) which would be another option if you have it available and are prepared to go that route.

XP pro X64 overlay would be another option again if you want to invest in your current hardware.

I have decommissioned my XP test boxes so cannot even refer to them to try my leo. :frowning:

Many thanks for you help.

I'll check out the early IDE on XP. Do have a copy of Puppy Linux which I could try, but that is another learning curve which would probably be too steep for this old bugger.

PeterVH talked about an alternative serial connection, will also see if I can get a little understanding of it and the CDC software port? Might need a lie down or a stiff drink!

Thanks again.

Stiff drink (s) help the lie down :wink:

Thanks for the suggestion. I have tried using IDE 1.0.3 on the XP SP2 machine but with same results. It does not appear to fully enumerate and there does not seem to be any attempt to open a com port. My thinking is I first need to remove all trace of previous Arduino drivers.

Unfortunately, I am out of my depth with this but encouraged by PeterVH rather old comments -

"So I thought my Leonardo sketches should work as well if I ran them as "serial only" usb devices (non composite, so no iad needed)."

He lists some code additions then say's -

"I compiled the sketch again and made a .inf file by copying the UNO's in file and adjusting the PID. This made the sketch run on the old xp sp2 box."

http://forum.arduino.cc/index.php?topic=137032.0

My rather vague understand is that his modification removes the HID component from the virtual port thus XP deals with it as an old fashioned USB serial connection? Is this a reasonable interpretation of the above?

Is the virtual port code downloaded with each sketch (which the above suggests to me), part of the bootloader or incorporated in the 32U4 chip? Who is in control? I assume the bootloader lets the virtual s/w run while the speed is other than 1200bd?

Unfortunately I have built a CJMCU-Beetle Leonardo clone hardware which works on W10 and, as XP previously worked with RS232/USB interfaces I just made the assumption Leonardo would also be OK. Wrong, but I would like to try and persevere?

Thanks

OK good to know its not a FULL LEO as that could make a little bit of difference.

Going to send you HERE first

Secondly there are newer IDE`s that do run on XP so were I in your shoes I would be very tempted to download the ZIPPED version

Maybe start with 1.6.0 or 1.6.5

Simply UNZIP the file somewhere you can get to easily.
When its unzipped I would be very tempted to try the drivers from that package.
You could of course just try run the IDE right from the get go.

OOPS dont get the INSTALLER versions as that could mess you up a little.

Thanks for your continuing help.

I have on many occasions grounded the Reset pin to restart the Leo as suggested in the web site link and in forum articles. From memory it helped with partial enumeration. Will retry that approach again with IDE 1.6.

Had also previously installed Arduino IDE 1.8.7 and 1.0.3 unzipped versions on the XP.

Incidentally the CJMCU-Beetle is physically different from the DFR0282 having 3 rows of 6 header pins. See jpg attached. I suspect a cheap Chinese clone but seems to work on W10.

Hello again.

Still chasing my tail, with similar results from IDE 1.6.5, no enumeration on XP.

The following two forum posts suggest XP SP2 can handle a single USB CDC Serial port but not Composite Device data that includes HID. They both successfully used the following USB comms modifications to 3 files. Which I understand disables the HID code during the compiling process?

http://discuss.arachnidlabs.com/t/solved-serial-communication-does-not-work-under-windows-xp/131
http://forum.arduino.cc/index.php?topic=137032.0

in USBDesc.h:

#define CDC_ENABLED
//#define HID_ENABLED
...
#if defined HID_ENABLED && defined CDC_ENABLED
#define COMPOSITE_DEVICE
#endif

in USBCore.h:

#ifdef COMPOSITE_DEVICE
IADDescriptor iad; // Only needed on compound device
#endif

in CDC.cpp:

const CDCDescriptor _cdcInterface =
{
#ifdef COMPOSITE_DEVICE
D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1),
#endif

...

I tried the above on both 1.6.5 & 1.0.3 IDE's with similar results. They successfully compiled and changed the Device Type from Communication to CDC Data as seen in USBDview, but with the loss of the serial link. That is there was no output or response when the monitor or a terminal program was connected using a modified Blink sketch that outputs a line and echos an input character. The Reset was required to invoke the bootloader and reload after removing the modifications.

It did not appear to enumerate on the XP, although as the normal serial link was no longer functioning, I did not take a lot of notice. A more recent forum discussion mentions plugin USB components for connection to tablets and other devices, it looked promising, but I got lost in the technical jargon.

I wonder if any members have recently succeeded in communicating with XP SP2 or any device that does not support the Composite interface?

Two possible leads for you to follow up.

First

Second

Thanks again.

Will have a more detailed look at those sites but note the first one suggests a "MS Hotfix" which I have previously tried locating without success? Unfortunately MS seems to remove many tools and knowledge base items for old unsupported operating systems, which is rather annoying. May be available via 3rd party some where.

Am probably pushing '???? up hill' but the XP boxes work OK (as is) with RS232/USB converters (CH340 drivers) and my Uno, which I think also has a firmware USB interface? So feel I should be able to get the Leonardo to 'look like' these devices, somehow.

I have managed to find a "hack" that gets my Leonardo enumerated by my XP SP2 machine and they will communicate over the USB link. It quite likely does other unwanted things but works for me, in that data sent from the Leonardo is displayed on a terminal window (including IDE Monitor) and it will respond to data sent to it.

After reading many posts about using HID & keyboard devices I felt what was required was a CDC only interface without HID or Keyboard, etc. included. As a guess I have made a minor change to IDE 1.8.7 USBDesc.h file by changing the first line from -

#define PLUGGABLE_USB_ENABLED to #define CDC_ENABLED

By swapping the modification in and out a couple of times, have decided it works OK for my application. As I do not understand how it works, I have only modified the IDE residing on the XP machine.

Many thanks for your help.

Thanks for the follow up,
It may help others and thats what it is about.