@yume-chan/adb-backend-webusb
v0.0.19
Published
Backend for `@yume-chan/adb` using WebUSB API.
Downloads
3,231
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