A cross-platform (Android/Windows/macOS/Linux) USB plugin for Flutter
- List devices
- List devices with additional description
- Get device description
- Check/Request permission
- Open/Close device
- Get/Set configuration
- Claim/Release interface
- Bulk transfer in/out
- Set auto detach kernel driver
await QuickUsb.init();
// ...
var deviceList = await QuickUsb.getDeviceList();
// ...
await QuickUsb.exit();
Returns devices list with manufacturer, product and serial number description.
Any of these attributes can be null.
On Android user will be asked for permission for each device if needed.
var descriptions = await QuickUsb.getDevicesWithDescription();
var deviceList = descriptions.map((e) => e.device).toList();
print('descriptions $descriptions');
Returns manufacturer, product and serial number description for specified device.
Any of these attributes can be null.
On Android user will be asked for permission if needed.
var description = await QuickUsb.getDeviceDescription(device);
print('description ${description.toMap()}');
Android Only
var hasPermission = await QuickUsb.hasPermission(device);
print('hasPermission $hasPermission');
// ...
await QuickUsb.requestPermission(device);
var openDevice = await QuickUsb.openDevice(device);
print('openDevice $openDevice');
// ...
await QuickUsb.closeDevice();
var configuration = await QuickUsb.getConfiguration(index);
print('getConfiguration $configuration');
// ...
var setConfiguration = await QuickUsb.setConfiguration(configuration);
print('setConfiguration $getConfiguration');
var claimInterface = await QuickUsb.claimInterface(interface);
print('claimInterface $claimInterface');
// ...
var releaseInterface = await QuickUsb.releaseInterface(interface);
print('releaseInterface $releaseInterface');
var bulkTransferIn = await QuickUsb.bulkTransferIn(endpoint, 1024, timeout: 2000);
print('bulkTransferIn ${hex.encode(bulkTransferIn)}');
// ...
var bulkTransferOut = await QuickUsb.bulkTransferOut(endpoint, data, timeout: 2000);
print('bulkTransferOut $bulkTransferOut');
Enable/disable libusb's automatic kernel driver detachment on linux. When this is enabled libusb will automatically detach the kernel driver on an interface when claiming the interface, and attach it when releasing the interface.
Automatic kernel driver detachment is disabled on newly opened device handles by default.
This is supported only on linux, on other platforms this function does nothing.
await QuickUsb.setAutoDetachKernelDriver(true);