# tejado/android-usb-gadget

Convert your Android phone to any USB device you like! USB Gadget Tool allows you to create and activate USB device roles, like a mouse or a keyboard.  🛠🛡📱

Repository: https://github.com/tejado/android-usb-gadget
Canonical: https://ross.abutalabs.com/products/android-usb-gadget
Language: Kotlin
License: GPL-3.0
License Family: copyleft
Topics: android, usb, gadget, kernel, configfs, usb-hid, usb-devices, ctap, ctap2, ccid, smartcard, hid, functionfs, authorizer, usb-gadget, root
Last push: 2024-04-19T14:52:46+00:00

## Health v2 (maintenance only)
Score: 23/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 0, release rhythm 8, longevity 100
- inputs: {"age_days": 2228, "days_push": 866, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1125, forks 91 (observed 2026-08-28T04:03:41.124638+00:00)

## What it is
An Android app that uses the Linux kernel's ConfigFS API to create and activate arbitrary USB gadget device roles, such as keyboard, mouse, FIDO CTAP authenticator, CCID smartcard reader, or UVC camera. It requires root permissions and a kernel with ConfigFS support, and manages gadget profiles rather than implementing the device endpoints themselves.

## Use cases
- turn my android phone into a usb keyboard or mouse
- use my phone as a fido ctap hardware security key for webauthn
- emulate a ccid smartcard reader over usb from android
- disable adb and mtp usb functions for security
- create custom usb composite device profiles on android
- activate usb gadget roles automatically at boot

## When to choose
- you have a rooted Android device with a ConfigFS-capable kernel and want to redefine its USB device role
- you need a software-defined USB HID device, FIDO token, or CCID reader without extra hardware
- you want to harden a phone by disabling default USB functions like adb and mtp

## When to avoid
- your device is not rooted or its kernel lacks ConfigFS USB gadget support
- you need the actual endpoint implementations (e.g. sending keystrokes) rather than gadget management - you'll need companion apps like Authorizer
- you want a no-root solution or support for non-Android platforms

## Facets
- artifact type: application
- maturity: active
- function: security, developer-tools, embedded
- domain: android-tools, security, hardware, developer-tools
- platform: -
- tags: usb-gadget, configfs, usb-hid, root-required, fido-ctap, ccid, smartcard, uvc-camera, kotlin, android

## Member repositories
- tejado/android-usb-gadget (main) score 23

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:03:41.124638+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T06:39:35.863069+00:00, confidence not recorded.
  - readme: https://github.com/tejado/android-usb-gadget (fetched 2026-08-28T04:03:41.124638+00:00, sha 9771e80b6ab8)
- Data as of 2026-08-30T08:39:29.467469+00:00.
