I'm looking to make a USB HID enabled device with an AVR that I would hopefully sell, but I know that the USB IF gets finicky about how exactly USB is implemented in commercial products. I want to keep it all Arduino IDE compatible, so right now I see that I've got two basic options:
- Use something like the ATmega32u4 used in the Leonardo to get hardware based USB support
- Use v-usb on something like the ATMega328p to get software based USB support
I like the idea of the 32u4 but would like to make the product a kit and surface mount is not very kit friendly. I would prefer through hole.
v-usb is definitely doable and would let me use a through hole chip (the 328p) but the USB implementation would eat up flash space.
Here's my main question though, with either do I have to get a USB vendor ID? I was thinking maybe just going with the 32u4, assuming that it would already have an ID built in and I was OK with the device representing itself as an AVR, but some things I have read lead me to believe I would still need my own ID and pass that to the chip. I would imagine I'd absolutely have to have one for v-usb but is a software implementation even technically valid and allowed to have an ID. v-usb seems to ship with an ID that's marked for educational use and they ask you to not distribute it... but is that only for commercial stuff or could I use it as long as it's just for a kit?
For the most part I would prefer to do what I can to avoid needing one at all since I can't exactly afford the several thousand dollars it would cost.