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. 🛠🛡📱

Kotlin

1,134

41 commits

updated Apr 19, 2024

See the code

README

USB Gadget Tool

USB Gadget Tool Screenshot

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. Connected USB hosts (e.g. a normal computer) will then identify your Android device only under that role. It can also be used to deactivate the standard USB Gadget (including mtp, adb, etc.), e.g. for security reasons.

Following USB gadgets are integrated:

  • Keyboard & Mouse (/dev/hidg0, /dev/hidg1)
  • FIDO CTAP (/dev/hidg0; for WebAuthn)
  • CCID (/dev/ccid_ctrl, /dev/ccid_bulk)
  • UVC camera (/dev/video?)

USB Gadget Tool requires root permissions and a Kernel with ConfigFS support. Currently the app only enables the USB Gadget. For the usage of these device endpoints (e.g. /dev/hidg0) further apps are required (see Use-Cases).

Get it on F-Droid

Use-Cases

Features

  • Comfortable USB gadget management (listing, adding and activating)
  • Adding & activating USB Gadgets during boot
  • Adding functions to USB Gadgets
  • Device info (Kernel version and available gadgets in Kernel)
  • Available in F-Droid store

Roadmap

  • Mount of /config if not available
  • Alert if ConfigFS is not supported
  • Import custom USB Gadget profiles
  • Example USB Gadget usage (USB Gadget Tool currently only manages USB Gadgets, not implementations of these)
  • Optional telemetry to understand better how all the Android vendors compile their kernel (e.g. what USB Gadgets are available)
  • Google Play Store distribution

How does it work?

USB Gadget Tool uses ConfigFS - an userspace API inside the Linux Kernel - for creation of arbitrary USB composite devices. https://www.kernel.org/doc/Documentation/filesystems/configfs/configfs.txt

android
authorizer
ccid
configfs
ctap
ctap2
functionfs
gadget
hid
kernel
root
smartcard
usb
usb-devices
usb-gadget
usb-hid

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. 🛠🛡📱

Kotlin

1,134

41 commits

updated Apr 19, 2024

See the code

README

USB Gadget Tool

USB Gadget Tool Screenshot

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. Connected USB hosts (e.g. a normal computer) will then identify your Android device only under that role. It can also be used to deactivate the standard USB Gadget (including mtp, adb, etc.), e.g. for security reasons.

Following USB gadgets are integrated:

  • Keyboard & Mouse (/dev/hidg0, /dev/hidg1)
  • FIDO CTAP (/dev/hidg0; for WebAuthn)
  • CCID (/dev/ccid_ctrl, /dev/ccid_bulk)
  • UVC camera (/dev/video?)

USB Gadget Tool requires root permissions and a Kernel with ConfigFS support. Currently the app only enables the USB Gadget. For the usage of these device endpoints (e.g. /dev/hidg0) further apps are required (see Use-Cases).

Get it on F-Droid

Use-Cases

Features

  • Comfortable USB gadget management (listing, adding and activating)
  • Adding & activating USB Gadgets during boot
  • Adding functions to USB Gadgets
  • Device info (Kernel version and available gadgets in Kernel)
  • Available in F-Droid store

Roadmap

  • Mount of /config if not available
  • Alert if ConfigFS is not supported
  • Import custom USB Gadget profiles
  • Example USB Gadget usage (USB Gadget Tool currently only manages USB Gadgets, not implementations of these)
  • Optional telemetry to understand better how all the Android vendors compile their kernel (e.g. what USB Gadgets are available)
  • Google Play Store distribution

How does it work?

USB Gadget Tool uses ConfigFS - an userspace API inside the Linux Kernel - for creation of arbitrary USB composite devices. https://www.kernel.org/doc/Documentation/filesystems/configfs/configfs.txt

android
authorizer
ccid
configfs
ctap
ctap2
functionfs
gadget
hid
kernel
root
smartcard
usb
usb-devices
usb-gadget
usb-hid

Significant stargazers

Elsa Granger

141 followers · starred Dec 2020

David Duong

634 followers · starred Aug 2022

xctan

105 followers · starred Nov 2022

TonyJiangWJ

412 followers · starred Feb 2025