This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
The controlTransferOut() method of the USBDevice interface returns a Promise that resolves with a USBOutTransferResult when a command or status operation has been transmitted from the USB device.
controlTransferOut(setup, data)
setupAn object that sets options for. The available options are:
requestTypeMust be one of three values specifying whether the transfer is "standard" (common to all USB devices) "class" (common to an industry-standard class of devices) or "vendor".
recipientSpecifies the target of the transfer on the device, one of "device", "interface", "endpoint", or "other".
requestA vendor-specific command.
valueVendor-specific request parameters.
indexThe interface number of the recipient.
dataA TypedArray containing the data that will be transferred to the device. Not all commands require data; some commands can send data just through the value parameter. Check with your device to see what the specific request requires.
A promise that resolves with a USBOutTransferResult.
| Specification |
|---|
| WebUSB API> # dom-usbdevice-controltransferout> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
controlTransferOut |
61 | 79 | No | 48 | No | 61 | No | 45 | No | 8.0 | No | No |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/USBDevice/controlTransferOut