On GitHub, mik3y/usb-serial-for-android has picked up 5.7k stars, Java. Android USB host serial driver library for CDC, FTDI, Arduino and other devices.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
This is a driver library for communication with Arduinos and other USB serial hardware on
Android, using the
Android USB Host Mode (OTG)
available since Android 3.1 and working reliably since Android 4.2.
No root access, ADK, or special kernel drivers are required; all drivers are implemented in
Java. You get a raw serial port with read(), write(), and other functions for use with your own protocols.
Quick Start
1. Add library to your project:
Add jitpack.io repository to your root build.gradle:
2. If the app should be notified when a device is attached, add
device_filter.xml
to your project's res/xml/ directory and configure in your AndroidManifest.xml.
// Find all available drivers from attached devices.
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
if (availableDrivers.isEmpty()) {
return;
}
// Open a connection to the first available driver.
UsbSerialDriver driver = availableDrivers.get(0);
UsbDeviceConnection connection = manager.openDevice(driver.getDevice());
if (connection == null) {
// add UsbManager.requestPermission(driver.getDevice(), ..) handling here
return;
}
UsbSerialPort port = driver.getPorts().get(0); // Most devices have just one port (port 0)
port.open(connection);
port.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);
then use direct read/write
port.write(request, WRITE_WAIT_MILLIS);
len = port.read(response, READ_WAIT_MILLIS);
For a simple example, see
UsbSerialExamples
folder in this project.
See separate github project SimpleUsbTerminal
for a more complete example with:
Background service to stay connected while the app is not visible or rotating
Flow control
Probing for Unrecognized Devices
Sometimes you may need to do a little extra work to support devices which
usb-serial-for-android doesn't (yet) know about -- but which you know to be
compatible with one of the built-in drivers. This may be the case for a brand
new device or for one using a custom VID/PID pair.
UsbSerialProber is a class to help you find and instantiate compatible
UsbSerialDrivers from the tree of connected UsbDevices. Normally, you will use
the default prober returned by UsbSerialProber.getDefaultProber(), which
uses USB interface types and the built-in list of well-known VIDs and PIDs that
are supported by our drivers.
To use your own set of rules, create and use a custom prober:
// Probe for our custom FTDI device, which use VID 0x1234 and PID 0x0001 and 0x0002.
ProbeTable customTable = new ProbeTable();
customTable.addProduct(0x1234, 0x0001, FtdiSerialDriver.class);
customTable.addProduct(0x1234, 0x0002, FtdiSerialDriver.class);
UsbSerialProber prober = new UsbSerialProber(customTable);
List<UsbSerialDriver> drivers = prober.findAllDrivers(usbManager);
// ...
Note: as of v3.5.0 this library detects CDC/ACM devices by USB interface types instead of fixed VID+PID,
so custom probers are typically not required any more for CDC/ACM devices.
Of course, nothing requires you to use UsbSerialProber at all: you can
instantiate driver classes directly if you know what you're doing; just supply
a compatible UsbDevice.
Compatible Devices
This library supports USB to serial converter chips with specific drivers
Does mik3y/usb-serial-for-android have a project website?
No homepage URL was recorded for mik3y/usb-serial-for-android in TopGit's last sync. The README tab above frequently contains screenshots and demo links, or check the repository description on GitHub.
Does mik3y/usb-serial-for-android have any tags?
TopGit's last sync did not record any GitHub topics for mik3y/usb-serial-for-android. GitHub topics appear in the right sidebar of a repository page; that's the authoritative place to check.
How active is development on mik3y/usb-serial-for-android?
The most recent commit recorded on mik3y/usb-serial-for-android was 19 days ago, based on the GitHub push timestamp. The repository has 1.7k forks — one of the better signals of community interest.
Is mik3y/usb-serial-for-android open source?
Yes — mik3y/usb-serial-for-android ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/mik3y/usb-serial-for-android.
What license does mik3y/usb-serial-for-android use?
mik3y/usb-serial-for-android is released under the MIT license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
Where do I read more about mik3y/usb-serial-for-android?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/mik3y/usb-serial-for-android is the definitive source.
Read full README in the tab above.
Is usb-serial-for-android worth your time?
ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of usb-serial-for-android.