Adafruit
USB Host FeatherWing with MAX3421E
· MPN: ADA5858
Add USB host capability to a Feather-based project, so your microcontroller can talk to devices like keyboards, mice and USB mass storage drives. This board ...
Get notified when back in stock
Add USB host capability to a Feather-based project, so your microcontroller can talk to devices like keyboards, mice and USB mass storage drives. This board is built around the MAX3421E, a well-proven USB host controller that communicates with the main Feather over SPI plus an IRQ pin.
It is a handy way to bring common off-the-shelf USB peripherals into embedded projects, especially where TinyUSB host support is available in Arduino. Adafruit recommends the TinyUSB Arduino library for supported chips, making it a good fit for Feather mainboards based on RP2040, ESP32-S2, ESP32-S3, nRF52840 and SAMD21/51. There is also a widely used USB Host Library that is best known for AVR support and also appears to support nRF52 and ESP32.
Alongside the host controller, the board includes a 5V 1A booster with a 500mA fuse to provide clean 5V power from USB or battery input, plus an enable pin so you can power-cycle the USB port when needed. It comes as an assembled FeatherWing with header included; simply solder the header and plug it into a compatible Feather mainboard.
Because the MAX3421E is an older chip and communicates over SPI, it is not intended for blazing-fast 480Mbps high-speed transfers. It is better suited to practical host tasks such as HID devices and basic read/write access to USB mass storage. As with any USB host setup, make sure your Feather mainboard and your target USB device are supported by the available software before getting started.
Specifications:
- Product Dimensions: 52.0mm x 22.8mm x 8.8mm / 2.0" x 0.9" x 0.3"
- Product Weight: 6.3g / 0.2oz
Jargon buster
Plain-language definitions for the technical terms used above.
- AVR
- AVR is a family of 8-bit microcontrollers (made by Microchip, formerly Atmel) used in many classic Arduino-style boards such as the Uno and Nano. They are widely supported but older, which can be a limit for memory- or speed-intensive tasks.
- ESP32
- ESP32 is a family of low-cost microcontroller chips and modules from Espressif with built-in WiFi and Bluetooth. They support programmable firmware and over-the-air updates, and are commonly programmed with toolchains such as the Arduino core and ESP-IDF.
- FeatherWing
- A FeatherWing is an add-on board made to plug into the Feather microcontroller board layout. Knowing a product is a FeatherWing helps you check whether it will physically and electrically fit your Feather-style mainboard.
- HID
- Human Interface Device is a USB device class used for keyboards, mice, gamepads and similar controls. If a board supports HID over USB, it can act like an input device to a computer without needing a custom driver.
- IRQ
- IRQ (interrupt request) is a signal line a device uses to alert a microcontroller that something needs attention, so the microcontroller does not have to poll continuously. Wiring an IRQ pin to a free input lets code respond promptly to events such as new data being ready.
- MAX3421E
- The MAX3421E is a chip that adds USB host controller hardware to a microcontroller project. It matters because it handles much of the low-level USB communication, but it also limits the board to the speeds and device support that this controller and its software libraries can provide.
- microcontroller
- A microcontroller is a small computer on a single chip that runs a stored program and controls connected inputs and outputs such as buttons, sensors, displays and communication interfaces. In a device built around one, it is the part that executes the code and coordinates the device's behaviour.
- nRF52840
- The nRF52840 is a Nordic Semiconductor system-on-chip built around a 32-bit Arm Cortex-M4 processor, with built-in Bluetooth Low Energy and native USB. It is widely used in maker and wearable boards, where it offers BLE and USB support along with broad library coverage in common maker toolchains.
- RP2040
- The RP2040 is a dual-core Arm Cortex-M0+ microcontroller chip from Raspberry Pi, used on many maker boards and offering programmable I/O, multiple GPIO pins and reasonable processing speed. Code and accessories built for that chip should work where RP2040 compatibility is listed, though demanding tasks such as reading a camera can require careful pin allocation and timing.
- SAMD21
- The SAMD21 is a Microchip (formerly Atmel) 32-bit Arm Cortex-M0+ microcontroller used in many Arduino-compatible boards. The exact chip affects which libraries, clock speeds and peripheral features are available, so software needs to support the SAMD21 specifically.
- SPI
- A fast serial communication bus often used for displays, memory cards, and sensors. It matters because SPI devices need specific pins for clock and data, plus a separate chip-select line for each device.
- TinyUSB
- TinyUSB is an open-source USB software library used on many microcontroller boards. For a USB host product, library support is important because the hardware alone is not enough; your mainboard must have software that knows how to talk to the USB devices you want to use.
- USB host
- A USB host is the side of a USB connection that controls attached devices, like a computer talking to a keyboard or flash drive. This matters because most microcontroller boards are normally USB devices, so adding USB host support lets them use common USB peripherals.
- USB mass storage
- USB mass storage is the standard USB device class used by many flash drives and external storage devices. If a board supports it, your project may be able to read and write files on compatible USB storage, provided the software library also supports the device.
Find this product in
MAX3421E Datasheet
Datasheet · 254.6 KB · Click any page to view full size
Supplier page — adafruit.com
Supplier Description · 1.9 MB · Click any page to view full size
Source Code
Open-source libraries, firmware & example projects for this product
Arduino library for TinyUSB
08c7dab
2 months ago
· 975 commits
- .codespell update tinyusb core to commit https://github.com/hathach/tinyusb/commit/8a9f44bdd267d05640d1028c07269d044291243b 4 months ago
- .github update tinyusb to commit 89f8fbc 10 months ago
- docs update the local landing page about 4 years ago
- examples skip video example for metro_m0_tinyusb 2 months ago
- src update tinyusb core to commit https://github.com/hathach/tinyusb/commit/dcd2a4bd0f005835d3edc193309ef3484cd9c8b3 2 months ago
- tools update pio-usb host requirement to only multiple of 12Mhz (previously 120Mhz) about 1 year ago
- .codespellrc add codespell ci over 3 years ago
- .gitignore update dual examples: serial_host_bridge, hid_device_report, msc_file_explorer to work with max3421e almost 3 years ago
- .pre-commit-config.yaml add clang to pre-commit over 3 years ago
- AGENTS.md add AGENTS.md with project overview, build instructions, and developer guidelines 2 months ago
- changelog.md fix typos over 3 years ago
- CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md about 7 years ago
- library.json Bump version to 3.7.4 5 months ago
- library.properties Bump version to 3.7.7 2 months ago
- LICENSE add msc about 7 years ago
Revision 2.0 of USB Host Library for Arduino.
e5bc995
about 2 months ago
· 1.5k commits
- .github fix: Remove "-Wno-incompatible-pointer-types" 11 months ago
- doc Install GraphViz, make sure Jekyll is disabled and updated the doc README over 7 years ago
- examples HID/scale: fix invalid extended char almost 2 years ago
- .gitattributes Removed content from merge conflict over 11 years ago
- .gitignore Added support for Teensy 4.0 and 4.1 over 5 years ago
- .gitmodules Add RTClib almost 13 years ago
- address.h Release part of the code under "GPLv2 or later", so it is compatible with GPLv3 over 8 years ago
- adk.cpp Merge branch 'master' of github.com:felis/USB_Host_Shield_2.0 over 8 years ago
- adk.h all sources to LF over 11 years ago
- AMBX.cpp Remove unneeded delays, rewrite main loop in example over 5 years ago
- AMBX.h Commit for AMBX support over 5 years ago
- AMBXEnums.h Commit for AMBX support over 5 years ago
- avrpins.h Added the pin definitions to support the m5 usb model on m5stack s3 11 months ago
- BTD.cpp Parse Extended Inquiry Result events and fix parsing class of device when more than one response was returned in a Inquiry Result event over 4 years ago
- BTD.h Parse Extended Inquiry Result events and fix parsing class of device when more than one response was returned in a Inquiry Result event over 4 years ago