Class: UsbTransport
USB transport over libusb for Node.js.
Defaults to interface 0 — covering single-interface printer-class devices used by @thermal-label/* drivers (LabelManager, LabelWriter, Brother QL). Pass { bInterfaceNumber } to claim a different interface; this is needed for composite devices like the LabelWriter 450 Duo, which exposes one interface per engine.
Two transports may be opened against the same (vid, pid) device on different interfaces; they share the underlying libusb handle via an internal refcounted cache so that closing one does not invalidate the other.
Implements
Accessors
connected
Get Signature
get connected(): boolean;Whether the transport is currently connected.
Returns
boolean
Implementation of
Transport.connectedMethods
close()
close(): Promise<void>;Close the connection.
Always safe to call multiple times. Always await the result.
Returns
Promise<void>
Implementation of
Transport.closeread()
read(length: number, timeout?: number): Promise<Uint8Array>;Read bytes from the printer.
Buffers until length bytes are available or the timeout fires.
BLE implementations: there is no "read N bytes" primitive in BLE. Implementations must buffer incoming GATT notifications internally and satisfy read() calls from that buffer. Document this in your transport class — every BLE implementation must handle buffering consistently so drivers get the same pull-based API on every transport.
Parameters
| Parameter | Type |
|---|---|
length | number |
timeout? | number |
Returns
Promise<Uint8Array>
Throws
TransportTimeoutError on timeout.
Throws
TransportClosedError if the transport is closed mid-read.
Implementation of
Transport.readwrite()
write(data: Uint8Array): Promise<void>;Send bytes to the printer.
Parameters
| Parameter | Type |
|---|---|
data | Uint8Array |
Returns
Promise<void>
Implementation of
Transport.writeopen()
static open(
vid: number,
pid: number,
options?: UsbOpenOptions): Promise<UsbTransport>;Open a USB Printer Class device by VID/PID.
Enumerates via libusb, opens (or refcount-acquires) the device, claims the requested interface, detaches the usblp kernel driver on Linux if attached, and locates Bulk IN / OUT endpoints on that interface.
Parameters
| Parameter | Type |
|---|---|
vid | number |
pid | number |
options? | UsbOpenOptions |
Returns
Promise<UsbTransport>
Throws
DeviceNotFoundError if no matching device is attached.
openDevice()
static openDevice(entry: DeviceEntry, options?: UsbOpenOptions): Promise<UsbTransport>;Convenience wrapper for opening a device from a DeviceEntry.
Parameters
| Parameter | Type |
|---|---|
entry | DeviceEntry |
options? | UsbOpenOptions |
Returns
Promise<UsbTransport>
Throws
DeviceNotFoundError if the entry has no transports.usb block (network-only printers cannot be opened over USB).