tinyusb
An open source cross-platform USB stack for embedded system (by hathach)
lufa
LUFA - the Lightweight USB Framework for AVRs. (by abcminiuser)
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
tinyusb
Posts with mentions or reviews of tinyusb.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-05-05.
- An open source cross-platform USB stack for embedded system
-
Bluetooth to USB Audio bridge
Implementing the required USB host interface is another hurdle, but tinyusb seems to have sorted most of that out, except that UAC2 is implemented as a device while you need a host.
- So I started porting braids to the PI PICO and ended with a generative drum machine
-
USB CDC: Multiple Virtual COM Ports
Have a look at TinyUSB. It supports the STM32WB and demo programs for the Nucleo-WB55RG. It even offers an example for dual CDC ports, so very close to what you're looking for.
-
Looking for well written, modern C++ (17/20) example projects for microcontrollers
Second: Distrust, misunderstanding, and out of date opinions of C++ in embedded spaces. I often see "compatibilty" thrown around as a goal for using C and not C++, but for most modern embedded systems, C++ compilers exist and are (usually) well tuned. Arm is a shining example here*. C++ is more optimizable than C as the intent can be clearer to the compiler. C++ constexpr and templates are a godsend for embedded systems, and I used both heavily in my recent arduino and pico testing. I combined both of them for a really cool experimental USB interface descriptor builder that runs at compile time and avoids the need to count byte sizes, but I gave up on it when the maintainer said C only, despite the fact that C can't do that. I was similarly disappointed when the pico "C++" was C only, as there was no backwards compatibility necessary.
-
Pico + CH559 = USB Midi host?
I looked at this but the fork seems to have had a lot of problems from looking at the PR: https://github.com/hathach/tinyusb/pull/1219
-
Badger 2040: tiny kit ereader
I think a better solution might be to use a USB flash drive in the usbc port. Unfortunately micropython and circuitpython don't support this (yet), so you'd have to use c++ https://github.com/hathach/tinyusb
-
ESP32-S3 Update via USB?
It's possible to make the s3 be a mass storage device via TinyUSB. https://github.com/hathach/tinyusb/tree/master/examples/device/cdc_msc_freertos
- Microcontroller that can read voltage?
- how do emulate a keyboard over usb? wherever I look I only see libraries and tutorials on how to use the eps32 as a Bluetooth keyboard not a wired one
lufa
Posts with mentions or reviews of lufa.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-04-12.
-
QMK can't flash my keyboard
* QMK Toolbox 0.2.2 (https://qmk.fm/toolbox)* Supported bootloaders:* - ARM DFU (APM32, Kiibohd, STM32, STM32duino) via dfu-util (http://dfu-util.sourceforge.net/)* - Atmel/LUFA/QMK DFU via dfu-programmer (http://dfu-programmer.github.io/)* - Atmel SAM-BA (Massdrop) via Massdrop Loader (https://github.com/massdrop/mdloader)* - BootloadHID (Atmel, PS2AVRGB) via bootloadHID (https://www.obdev.at/products/vusb/bootloadhid.html)* - Caterina (Arduino, Pro Micro) via avrdude (http://nongnu.org/avrdude/)* - HalfKay (Teensy, Ergodox EZ) via Teensy Loader (https://pjrc.com/teensy/loader_cli.html)* - LUFA/QMK HID via hid_bootloader_cli (https://github.com/abcminiuser/lufa)* - LUFA Mass Storage* Supported ISP flashers:* - AVRISP (Arduino ISP)* - USBasp (AVR ISP)* - USBTiny (AVR Pocket)* Auto-flash enabled* Auto-flash disabled* Auto-flash enabledUSB device disconnected (CH341SER_A64): wch.cn USB-SERIAL CH340 (COM15) (1A86:7523:0264)USB device connected (CH341SER_A64): wch.cn USB-SERIAL CH340 (COM15) (1A86:7523:0264)
- QMK Toolbox flash fails on YMD 09 Macro pad
- TinyUSB: Open-source cross-platform USB Host/Device stack for embedded systems
-
ATmega32u4 (Pro Micro) + LUFA Library + Arduino IDE
I briefly checked its code - wrapping it for reasonably convenient use with Arduino IDE would be not that simple. USB is quite abstract protocol and a particular device type requires a matching handler code. You can find example for keyboard HID here: https://github.com/abcminiuser/lufa/tree/master/Demos/Device/ClassDriver/Keyboard - as you can see, there is not so small amount of code for handling it: even though all really hard work is done inside the library, you still need to make a lot of proper calls to make it work.
-
Ben Eater || How does a USB keyboard work?
For AVR devices I've always liked LUFA because it has tons of examples to get you started and works great even on low-end devices like the AT90USB162 (16MHz 8-bit cpu with 512 bytes of SRAM).
What are some alternatives?
When comparing tinyusb and lufa you can also consider the following projects:
esp32-s2-usb-host-cdc
arduino-pico - Raspberry Pi Pico Arduino core, for all RP2040 boards
libusb - A cross-platform library to access USB devices
Adafruit_TinyUSB_Arduino - Arduino library for TinyUSB
hid-remapper - USB input remapping dongle
qmk_firmware - Open-source keyboard firmware for Atmel AVR and Arm USB families
rt-thread - RT-Thread is an open source IoT real-time operating system (RTOS).
display-switch - Turn a $30 USB switch into a full-featured multi-monitor KVM switch
mdloader - Massdrop Firmware Loader - for CTRL / ALT / SHIFT / Rocketeer keyboards
arduino-esp32 - Arduino core for the ESP32
facedancer - Implement your own USB device in Python, supported by a hardware peripheral such as Cynthion or GreatFET