Go Down

Topic: Caterina, new VID/PID, USB Driver - Custom atmega32U4 Board (Read 2778 times) previous topic - next topic



If someone can assist I would most appreciate it.

I have design a board, sorted a VID / PID for it, modified the Caterina bootloader make file and other files to suit this new VID / PID, compiled and installed it on the board, and things are looking good.

However I have a few questions.

I got a single VID / PID for this board. Boards like the Leonardo seem to have 2, one for Bootloader and one for Sketch, yet I cannot see anywhere in the Caterina Makefile where to specify one or the other. There seems to be only one place for VID / PID to be entered. Is this something you have to enter, or does it automatically do something to get the 2nd PID? I cant find this documented.

The next question is about a Windows Driver. Now that the VID / PID has changed, Windows doesn't know how to use the device. How do you go about creating a signed driver to tell it to use the same driver as what the Leonardo was using? This is all new to me and I don't even know where to start looking.

If anyone can assist I would hugely appreciate it.



Found some information.
Been searching the forums high and low, and finally found something useful.

If you want to change the PID for the bootloader, it can be changed in the makefile. See 'arduino-1.0.5/hardware/arduino/bootloaders/caterina/Makefile'. Then recompile the bootloader and install.

If you want to change the PID for your program, edit the leonardo entry in the boards.txt file. See 'arduino-1.0.5/hardware/arduino/boards.txt'. Then recompile your program and upload.

So that was right in front of me. Changed the boards.txt file and got the Runtime VID/PID changing. And then coupled with the bootloader, got that changing to me 2nd VID/PID, so thats all good.

However the driver is still a major problem.

I am on Windows 10, and it seems to compensate for Serial Drivers, even if the VID/PID dont match. It has loaded the standard usbser.sys driver from Microsoft, 2006. The only thing is it shows up as a 'USB Serial Device' rather than by the name, but I could live with that.
However, I don't think Windows 7 and 8/8.1 work the same way and I dont think they will load up the standard driver.

So still after answers for what you do about signed drivers for Windows when you change VID/PID.
If anyone knows what to do, please can you share.




Edited standard Arduino driver for Leonardo, the INF file, editing it to suit our requirements.
Microsoft Inf2Cat to create a CAT file from the INF file, then got a certificate from DigiCert.com for code signing. I then used the certificate to sign the CAT file, and installed the driver and all is good.

INF is linked to the VID/PID's, and now I have a certified driver for our product.

In case anyone needs this in the future.
Have received no support from anyone, tried about 6 different places to seek support and all were silent.

DigiCert.com was amazing and they helped me figure out what to do. Seems this process is not typical, as we are not actually creating a driver, just customising an INF to point to an existing Microsoft driver. As typically you sign a driver SYS as well as the INF to make the CAT.

Anyway, there you go.


I love finding posts to which nobody replies but posters still document their findings.
Sometimes we just need to talk openly about an issue and find the solution ourselves.
I bumped into this while searching for info about the Caterina BL and there's sure some interesting insight.
Thank you for sharing :)


Yes. I wish more people would take the time to come back and document the resolution of their problem. More often, someone comes to the forum to ask a question, gets a reply, and we never hear from them again. They evidently found a solution and went on their merry way, but for the next person with the same question who finds that thread in a search it would be so much more helpful to have a follow up reply.

I like to think that the Internet provides a multiplier effect on the work I do. I don't have time to help every Arduino user one-to-one. But hopefully that thread where I help one person will answer the same question for 100 others over time. Beginners especially don't seem to get that concept, or perhaps they just don't care. Maybe a certain level of selfishness is helpful to the learning process. Maybe some of them will pass along their knowledge once they are more experienced.


Go Up