Exploring USB Applications with AVR
When building USB applications with AVR, there is really only one key consideration: whether the chip itself features native USB support. Currently, the available chip options include1:
- ATmega8U2
- AT90USB82
- ATmega16U2
- AT90USB162
- ATmega32U2
- ATmega16U4
- ATmega32U4
- AT90USB646
- AT90USB647
- AT90USB1286
- AT90USB1287
At this point, the ATmega32u4 is practically the only one still being sold. However, due to the global semiconductor shortage, it’s virtually impossible to get your hands on one unless you have special supply channels.

Shipping won’t start until November 23rd of next year—that is the harsh reality. The semiconductor shortage is steadily choking upstream supply, and one day it might quietly sweep across every aspect of our daily lives. On the flip side, it feels like a miracle that giants like Apple can still reliably churn out new phones and laptops.
Among Arduino boards, the Pro Micro is pretty much the only one that uses the ATmega32u4. However, the official original board doesn’t seem to be sold anymore; what’s left on the market are third-party clones of varying quality.
I’m currently using one from Aideepen (Amazon link without an affiliate tag, so I don’t earn any commission if you buy it). You have to solder the header pins yourself, you need to select “Old Bootloader” in the Arduino IDE to flash it properly, and there’s a slight chance it’ll throw an error. But considering how cheap it is, I can’t really complain.
Another alternative is to simply ditch AVR altogether and go straight to STM32, the piping-hot Raspberry Pi Pico, or the bare RP2040.
Footnotes
Related Posts
- When a Measure Becomes a Target: From the Window Tax to Pull Request Counts I once wrote a script to tally how many PRs I contributed in a quarter, how many reviews I left, and how many tickets I closed, hoping to use numbers to prove my output to my manager. My manager simply remarked that performance isn't just about output. Years later, I finally understood—when a measure becomes a target, it ceases to be a good measure. From the British window tax and the Hanoi rat bounty to evaluating developers by PR counts today, the underlying mechanism is exactly the same.
- Using Cloudflare Images for Image Storage and Transformation Putting an image on a webpage is the simplest task in frontend development. But doing it properly—including resizing, generating multiple formats, and withstanding heavy traffic—is actually an entire end-to-end solution. Eventually, I offloaded everything to Cloudflare Images, keeping only a single original image.
- Stop Using AWS Access Keys Access Keys are an easily overlooked security risk in AWS. By pairing OIDC with IAM Roles, GitHub Actions can securely operate AWS resources without storing any secrets.
- Database Primary Keys: AUTO_INCREMENT, UUID, and UUIDv7 Backend developers often face the choice of primary keys: should you use auto-increment or UUID? What about collisions? How does UUIDv7 compare to created_at + index in performance? Here are the design decisions and benchmark results from testing 20 million rows.