Package Exports
- @yume-chan/adb-backend-webusb
- @yume-chan/adb-backend-webusb/esm/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@yume-chan/adb-backend-webusb) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@yume-chan/adb-backend-webusb
Backend for @yume-chan/adb
using WebUSB (MDN, Spec) API.
Use in browser
Chrome | Edge | Firefox | Internet Explorer | Safari |
---|---|---|---|---|
611 | 791 | No | No | No |
1: Chrome for Android is supported, Chrome for iOS is NOT supported.
Use in Node.js
Node.js | usb NPM Package |
---|---|
10.5 | 2.8.1 |
Node.js doesn't have native support for WebUSB API, but the usb
NPM package provides a WebUSB compatible API.
To use a custom WebUSB API implementation, pass it to the constructor of AdbWebUsbBackend
, AdbWebUsbBackendManager
and AdbWebUsbBackendWatcher
via the usb
parameter.
AdbWebUsbBackend
constructor
public constructor(
device: USBDevice,
filters: AdbDeviceFilter[] = [ADB_DEFAULT_DEVICE_FILTER]
usb: USB
);
Create a new instance of AdbWebBackend
using a specified USBDevice
instance.
USBDevice
and USB
types are from WebUSB API.
The filters
parameter specifies the classCode
, subclassCode
and protocolCode
to use when searching for ADB interface. The default value is [{ classCode: 0xff, subclassCode: 0x42, protocolCode: 0x1 }]
, defined by Google.
connect
public async connect(): Promise<
ReadableWritablePair<AdbPacketData, AdbPacketInit>
>
Claim the device and create a pair of AdbPacket
streams to the ADB interface.
AdbWebUsbBackendManager
A helper class that wraps the WebUSB API.
BROWSER
public static readonly BROWSER: AdbWebUsbBackendManager | undefined;
Gets the instance of AdbWebUsbBackendManager
using browser WebUSB implementation.
May be undefined
if the browser does not support WebUSB.
constructor
public constructor(usb: USB);
Create a new instance of AdbWebUsbBackendManager
using the specified WebUSB API implementation.
requestDevice
public async requestDevice(
filters: AdbDeviceFilter[] = [ADB_DEFAULT_DEVICE_FILTER]
): Promise<AdbWebUsbBackend | undefined>
Request access to a connected device.
This is a convince method for usb.requestDevice()
.
The filters
parameter must have classCode
, subclassCode
and protocolCode
fields for selecting the ADB interface. It can also have vendorId
, productId
or serialNumber
fields to limit the displayed device list.
Returns an AdbWebUsbBackend
instance, or undefined
if the user cancelled the picker.
getDevices
public async getDevices(
filters: AdbDeviceFilter[] = [ADB_DEFAULT_DEVICE_FILTER]
): Promise<AdbWebUsbBackend[]>
Get all connected and authenticated devices.
This is a convince method for usb.getDevices()
.
Note on secure context
WebUSB requires a secure context (HTTPS).
localhost
is considered secure, so local development works. But to access a self-hosted server running on another machine, either add a certificate, or add the domain name to the allowlist on each client machine:
- Open
chrome://flags/#unsafely-treat-insecure-origin-as-secure
- Add the protocol and domain part of your url (e.g.
http://192.168.0.100:9000
) to the input box - Choose
Enable
from the dropdown menu - Restart browser