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.
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?
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.
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.
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 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."
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?
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.
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.
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?
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?
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.