Go Down

Topic: Trademark issues with using Arduino Leonardo bootloader (Read 4591 times) previous topic - next topic

liuzengqiang

I just emailed Arduino LLC about this issue. I am hoping form some community response to this:

"I am working on a project based on Arduino design. Here is the background story that made me consider contacting Arduino LLC. There is a trademark issue related to Arduino USB vendor ID etc. that I would like to raise. I am considering using the ATMEGA32U4 processor that Arduino Leonardo and Micro are using. I also want to use the Arduino bootloader. The bootloader contains Arduino's USB vendor ID and device ID. If I use this bootloader, then my device would identify itself as if it were an Arduino. This is an issue. I am willing to work with you before I put this product into any scale beyond prototyping and testing. I don't have the skills to make changes to bootloader or recompile it (yet).

Here are my actual questions:
What does Arduino LLC do in case a third party is using aforementioned bootloader?
Does Arduino LLC kindly work with educational institutions in developing open-source projects and help them with bootloader trademark and technical issues?
Can someone purchase a section of device IDs from Arduino LLC for their open-source educational projects so they can use the same vendor id, different text to identify themselves? Purchasing one from USB-IF is $5K.
"


I know that forum member Brad has used the same MCU and purchased his own vendor ID. It's expensive. If I used an FTDI chip, I could subcontract with them but Atmel doesn't have this program. What advice do you have for me and others doing similar things?
Serial LCD keypad panel,phi_prompt user interface library,SDI-12 USB Adapter

liuzengqiang

Just a thought, as more people are moving towards ATMEGA32U4 and other processors with embedded USB controllers, this becomes a major issue for Arduino LLC and these developers. Purchasing a $5K vendor ID is out of the reach of most developers.
Serial LCD keypad panel,phi_prompt user interface library,SDI-12 USB Adapter

bobcousins

Good question, I'd like to know the answer too! The issue was discussed a lot but seems to have been left dangling.

The USB VID/PID situation is frankly a mess, but this is entirely the fault of the USB-IF, and nothing to do with Arduino.

Officially according to the USB-IF a VID owner must not sub-license PIDs. Some vendors turn a blind eye. FTDI allow users to reprogram the manufacturer name, but use the FTDI VID/PID. As long as it works like a compatible FTDI device, no one will complain.

It seems that the Microsoft driver certification process does not check the submitter has a right to the USB VID, there are several cases of ID collisions with Atmel products, where the vendor has used Atmel's VID and PID from demo code.

The USB-IF are pretty powerless when it comes to enforcement, you can't protect a number allocation. They can send nasty letters and strike you off the member's list, but if you release products using an illicit VID, they can't reallocate it to another member, so that VID effectively becomes an unofficial allocation.

However, you could get sued if you use the USB-IF trademarks on an unapproved product (although the trident logo does not seem to be trademarked).

Anyway, the options for small vendors/hobbyists are limited. If you use an unofficial VID/PID allocation, there is no guarantee it will be unique, but may work for most purposes, even getting a driver into the Windows driver database.

If you want to go the official route, there is no option other than to integrate an FTDI product, with the limitations that entails, or purchase a vendor ID.

Please ask questions in the forum so everyone can benefit. PM me for paid work.

dlloyd

Quote
I am working on a project based on Arduino design. Here is the background story that made me consider contacting Arduino LLC. There is a trademark issue related to Arduino USB vendor ID etc. that I would like to raise. I am considering using the ATMEGA32U4 processor that Arduino Leonardo and Micro are using. I also want to use the Arduino bootloader. The bootloader contains Arduino's USB vendor ID and device ID. If I use this bootloader, then my device would identify itself as if it were an Arduino. This is an issue. I am willing to work with you before I put this product into any scale beyond prototyping and testing. I don't have the skills to make changes to bootloader or recompile it (yet).


I'm in the same situation with another project that's just a concept at this stage ... Arduino Due + FPGA on small board for training, development and embedded applications. In my research so far, I've found that both the Arduino Due and a new product at Digilent (Cmod S6) use the ATMEGA32U4 processor.

Quote
Anyway, the options for small vendors/hobbyists are limited. If you use an unofficial VID/PID allocation, there is no guarantee it will be unique, but may work for most purposes, even getting a driver into the Windows driver database.

If you want to go the official route, there is no option other than to integrate an FTDI product, with the limitations that entails, or purchase a vendor ID.


A while back, I've obtained a block of Product IDs from FTDI at no charge. I think it would be very advantageous to both Arduino LLC and small makers/vendors/hobbyists to have a similar option available.

liuzengqiang

Thank you guys for  your inputs. I think the USB-IF does state that subcontracting requires their written approval, on the application form. Some companies have this route such as FTDI.

In the case of open source, so few products are going to sell at large volume and paying $5K is just insane. If Arduino LLC can lead the effort to purchase some VIDs from USB-IF for the sole purpose to subcontract to open source communities, for a lower cost, developing ATMEGA32U4-based arduino compatible products will be a lot more promising.

As for me, I am not too sure about if I acquire one VID, am I entitled to use any PID? That would be a huge waste of resources. I'm only cranking out dozen different products for the life time of my project. Someone using my project to design other project could benefit from subcontracting from me but it's going to be NSF funded or school funded. They don't want to deal with selling stuff at all.
Serial LCD keypad panel,phi_prompt user interface library,SDI-12 USB Adapter

bobcousins


A while back, I've obtained a block of Product IDs from FTDI at no charge. I think it would be very advantageous to both Arduino LLC and small makers/vendors/hobbyists to have a similar option available.

FTDI have some useful stuff! I've been wondering how they apparently flout the rules.

I think FTDI must have permission to do this from USB-IF, and I think that the reason is that the USB stack is a USB certified implementation fixed in the FTDI device. The user can alter some config info, but the functionality of the USB is fixed, so it will always be a CDC device for example.

In the case of software stacks used by microcontrollers, the developer can write their own stack, or alter stack provided by the manufacturer. So even if the manufacturer has done a USB qualification, it cannot be passed on to developers, because it is not guaranteed to be unaltered.

We tried to get a block of PIDs from Atmel to use with their VID, but they weren't interested. Some manufacturers allow use of their VID for development and test purposes, but not for product release.

Therefore I think no USB Vendor will officially be able to supply blocks of PIDs to their customers for use in real products, unless USB-IF change their policy.

I think the only way it will change is if some Open group takes an interest and lobbies USB-IF to make some sort of arrangement. The problem is that USB-IF get money from member fees - they've no incentive to let people sell USB products without paying fees. Of course, every company will try to get free PIDs and avoid the fees, then USB-IF have to do loads of vetting to see if the applicant is an accredited student, non-profit etc.

The OpenMoko project have decided to publish and be damned - they are allowing FOSS projects to register PIDs on the VID they acquired from OpenMoko. http://wiki.openmoko.org/wiki/USB_Product_IDs

Still not much help for small businesses trying to a commercial product though. I've seen people say you can get PIDs from vendors, FTDI is the only company actually doing it. All the others I've found are unapproved by USB-IF.
Please ask questions in the forum so everyone can benefit. PM me for paid work.

liuzengqiang

Been a month already. I just sent in my application to openmoko. I was in contact with Arduino people. It seems that they may consider some Arduino PID if you join the Arduino at heart program. Hopefully they make some decision to share their PID or apply for a new vid just for arduino at heart program. That will be very helpful to designers using 32U4 chip.

Another hurdle I am trying to jump across is that once you have your own VID and PID, windows won't find driver for you anymore. You can force install arduino driver but your device shows up as arduino micro on device manager. Not too cool. Tampering with Arduino.inf is futile. It's encrypted with a hash file. Now if arduino llc really want more people to design around their products, they will need to find a way to make it happen. I can prototype my device, I can lay a board, but I can't get the damn windows driver to install automatically. I'll need a mac and a linux.
Serial LCD keypad panel,phi_prompt user interface library,SDI-12 USB Adapter

WanaGo

Hi Liudr,

Did you ever find a solution to this problem with VID/PID and drivers?

I have got a VID and PID sorted, but the windows driver problem has rendered all hopes of using what I created, useless.

Spent so much time trying to sort the VID and PID, and now that I have that sorted, I cannot get Windows to load a driver for it.

Using the 32U4, and setting VID and PID in the makefile etc is sorted, but does that set the bootloader VID/PID or the Sketch VID/PID, as things like the Leonardo have 2 PID's, one for bootloader and one for Sketch, yet I cannot find any reference to how to set them both. Only whichever one is set from the Makefile.

Any info you have on this topic would be appreciated

Regards
WanaGo

Go Up