fwupd/plugins/dfu/dfu.quirk
Richard Hughes 6bbc4c787b jabra: Move the Jabra-specific detach out into its own plugin
This also lets us remove the call to dfu_device_wait_for_replug() which was
causing a deadlock due to unsafe main context usage. Splitting the code allows
us to use the device list to watch for replug, without adding even more Jabra-
specific plugin code to the DFU plugin.

Looking at this with a 40,000ft view, the Jabra runtime really doesn't have
much in common with DFU and the reason it was originally all lumped together
was that the daemon couldn't "change" plugins between detach and update.

It's unfortunate that we have to include a sleep() in the DFU code after the
DFU probe, but this is specified by Jabra themselves. Attempting to open the
device without waiting reboots the hub back into runtime firmware mode, so we
can't even retry the failing setup action.
2019-10-30 15:09:49 +00:00

328 lines
8.2 KiB
Plaintext

# All DFU devices
[DeviceInstanceId=USB\CLASS_FE&SUBCLASS_01]
Plugin = dfu
# Realtek USB camera
[DeviceInstanceId=USB\VID_0BDA&PID_5850]
CounterpartGuid = USB\VID_0BDA&PID_5800
[DeviceInstanceId=USB\VID_0BDA&PID_5855]
CounterpartGuid = USB\VID_0BDA&PID_5800
[DeviceInstanceId=USB\VID_0BDA&PID_58FE]
CounterpartGuid = USB\VID_0BDA&PID_5800
[DeviceInstanceId=USB\VID_0BDA&PID_5800]
Flags = detach-for-attach
# on PC platforms the DW1820A firmware is loaded at runtime and can't
# be stored on the device itself as the flash chip is unpopulated
[DeviceInstanceId=USB\VID_0A5C&PID_6412]
Flags = only-supported
# Openmoko Freerunner / GTA02
[DeviceInstanceId=USB\VID_1D50&PID_5119]
Plugin = dfu
Flags = ignore-polltimeout,no-pid-change,no-dfu-runtime,needs-bootloader,no-get-status-upload
# OpenPCD Reader
[DeviceInstanceId=USB\VID_16C0&PID_076B]
Plugin = dfu
Flags = ignore-polltimeout
# SIMtrace
[DeviceInstanceId=USB\VID_16C0&PID_0762]
Plugin = dfu
Flags = ignore-polltimeout
# OpenPICC
[DeviceInstanceId=USB\VID_16C0&PID_076C]
Plugin = dfu
Flags = ignore-polltimeout
# Siemens AG, PXM 40 & PXM 50
[DeviceInstanceId=USB\VID_0908&PID_02C4]
Plugin = dfu
[DeviceInstanceId=USB\VID_0908&PID_02C5]
Plugin = dfu
[DeviceInstanceId=USB\VID_0908&PID_02C4&REV_0000]
Flags = ignore-polltimeout
[DeviceInstanceId=USB\VID_0908&PID_02C5&REV_0000]
Flags = ignore-polltimeout
# Midiman M-Audio Transit
[DeviceInstanceId=USB\VID_0763&PID_2806]
Plugin = dfu
Flags = ignore-polltimeout
# LPC DFU bootloader
[DeviceInstanceId=USB\VID_1FC9&PID_000C]
Plugin = dfu
Flags = force-dfu-mode
# m-stack DFU
[DeviceInstanceId=USB\VID_273F&PID_1003]
Flags = attach-upload-download
[DeviceInstanceId=USB\VID_273F&PID_100A]
Flags = attach-upload-download
# HydraBus
[DeviceInstanceId=USB\VID_1D50&PID_60A7]
Plugin = dfu
Flags = no-dfu-runtime,needs-bootloader
# Jabra 410 [appIDLE & dfuIDLE]
[DeviceInstanceId=USB\VID_0B0E&PID_0411]
Plugin = dfu
Flags = no-pid-change,ignore-upload,attach-extra-reset
# Jabra 510 [appIDLE & dfuIDLE]
[DeviceInstanceId=USB\VID_0B0E&PID_0421]
Plugin = dfu
Flags = no-pid-change,ignore-upload,attach-extra-reset
# Jabra 710 [appIDLE & dfuIDLE]
[DeviceInstanceId=USB\VID_0B0E&PID_0982]
Plugin = dfu
Flags = no-pid-change,ignore-upload,attach-extra-reset
# Jabra 810 [appIDLE & dfuIDLE]
[DeviceInstanceId=USB\VID_0B0E&PID_0971]
Plugin = dfu
Flags = no-pid-change,ignore-upload,attach-extra-reset
# Atmel AT90USB Bootloader
[DeviceInstanceId=USB\VID_03EB&PID_2FF7]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
[DeviceInstanceId=USB\VID_03EB&PID_2FF9]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
[DeviceInstanceId=USB\VID_03EB&PID_2FFA]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
[DeviceInstanceId=USB\VID_03EB&PID_2FFB]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
# Atmel ATMEGA Bootloader
[DeviceInstanceId=USB\VID_03EB&PID_2FEE]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
[DeviceInstanceId=USB\VID_03EB&PID_2FEF]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
[DeviceInstanceId=USB\VID_03EB&PID_2FF0]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
[DeviceInstanceId=USB\VID_03EB&PID_2FF2]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
[DeviceInstanceId=USB\VID_03EB&PID_2FF3]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
[DeviceInstanceId=USB\VID_03EB&PID_2FF4]
Plugin = dfu
Flags = use-any-interface,legacy-protocol,force-dfu-mode
# Atmel XMEGA Bootloader
[DeviceInstanceId=USB\VID_03EB&PID_2FE2]
Plugin = dfu
Flags = use-any-interface,force-dfu-mode
# Leaflabs Maple3
[DeviceInstanceId=USB\VID_1EAF&PID_0003&REV_0200]
Plugin = dfu
DfuForceVersion = 0110
# Atmel FLIP Bootloader
[DeviceInstanceId=USB\VID_03EB]
Plugin = dfu
DfuForceVersion = ff01
# AT32UC3B1256 [BLDR][USER] USER@0x2000, BLDR+USER=0x40000
[AvrChipId=0x58200203]
DfuAltName = @Flash/0x2000/1*248Kg
# AT32UC3A3256 [BLDR][USER] USER@0x2000, BLDR+USER=0x40000
[AvrChipId=0x58200204]
DfuAltName = @Flash/0x2000/1*248Kg
# AT90USB1287 [USER][BLDR] BLDR@0x1e000, BLDR+USER=0x20000
[AvrChipId=0x581e9782]
DfuAltName = @Flash/0x0/1*120Kg
# AT90USB647 [USER][BLDR] BLDR@0x0e000, BLDR+USER=0x10000
# AT90USB646 [USER][BLDR] BLDR@0x0e000, BLDR+USER=0x10000
[AvrChipId=0x581e9682]
DfuAltName = @Flash/0x0/1*56Kg
# ATmega32U4 [USER][BLDR] BLDR@0x07000, BLDR+USER=0x08000
[AvrChipId=0x581e9587]
DfuAltName = @Flash/0x0/1*28Kg
# ATmega16U4 [USER][BLDR] BLDR@0x03000, BLDR+USER=0x04000
[AvrChipId=0x581e9488]
DfuAltName = @Flash/0x0/1*12Kg
# ATmega32U2 [USER][BLDR] BLDR@0x07000, BLDR+USER=0x08000
[AvrChipId=0x581e958a]
DfuAltName = @Flash/0x0/1*28Kg
# ATmega16U2 [USER][BLDR] BLDR@0x03000, BLDR+USER=0x04000
[AvrChipId=0x581e9489]
DfuAltName = @Flash/0x0/1*12Kg
# AT90USB162 [USER][BLDR] BLDR@0x03000, BLDR+USER=0x04000
[AvrChipId=0x581e9482]
DfuAltName = @Flash/0x0/1*12Kg
# ATmega8U2 [USER][BLDR] BLDR@0x01000, BLDR+USER=0x02000
[AvrChipId=0x581e9389]
DfuAltName = @Flash/0x0/1*4Kg
# AT90USB82 [USER][BLDR] BLDR@0x01000, BLDR+USER=0x02000
[AvrChipId=0x581e9382]
DfuAltName = @Flash/0x0/1*4Kg
# ATxmega16A4 [USER] USER=0x4000
[AvrChipId=0x1e9441]
DfuAltName = @Flash/0x0/1*16Kg
# ATxmega16C4 [USER] USER=0x4000
[AvrChipId=0x1e9544]
DfuAltName = @Flash/0x0/1*16Kg
# ATxmega16D4 [USER] USER=0x4000
[AvrChipId=0x1e9442]
DfuAltName = @Flash/0x0/1*16Kg
# ATxmega32A4 [USER] USER=0x8000
[AvrChipId=0x1e9541]
DfuAltName = @Flash/0x0/1*32Kg
# ATxmega32C4 [USER] USER=0x8000
[AvrChipId=0x1e9443]
DfuAltName = @Flash/0x0/1*32Kg
# ATxmega32D4 [USER] USER=0x8000
[AvrChipId=0x1e9542]
DfuAltName = @Flash/0x0/1*32Kg
# ATxmega64A4 [USER] USER=0x10000
[AvrChipId=0x1e9646]
DfuAltName = @Flash/0x0/1*64Kg
# ATxmega64C3 [USER] USER=0x10000
[AvrChipId=0x1e9649]
DfuAltName = @Flash/0x0/1*64Kg
# ATxmega64D3 [USER] USER=0x10000
[AvrChipId=0x1e964a]
DfuAltName = @Flash/0x0/1*64Kg
# ATxmega64D4 [USER] USER=0x10000
[AvrChipId=0x1e9647]
DfuAltName = @Flash/0x0/1*64Kg
# ATxmega64A1 [USER] USER=0x10000
[AvrChipId=0x1e964e]
DfuAltName = @Flash/0x0/1*64Kg
# ATxmega64A3 [USER] USER=0x10000
[AvrChipId=0x1e9642]
DfuAltName = @Flash/0x0/1*64Kg
# ATxmega64B1 [USER] USER=0x10000
[AvrChipId=0x1e9652]
DfuAltName = @Flash/0x0/1*64Kg
# ATxmega64B3 [USER] USER=0x10000
[AvrChipId=0x1e9651]
DfuAltName = @Flash/0x0/1*64Kg
# ATxmega128C3 [USER] USER=0x20000
[AvrChipId=0x1e9752]
DfuAltName = @Flash/0x0/1*128Kg
# ATxmega128D3 [USER] USER=0x20000
[AvrChipId=0x1e9748]
DfuAltName = @Flash/0x0/1*128Kg
# ATxmega128D4 [USER] USER=0x20000
[AvrChipId=0x1e9747]
DfuAltName = @Flash/0x0/1*128Kg
# ATxmega128A1 [USER] USER=0x20000
[AvrChipId=0x1e974c]
DfuAltName = @Flash/0x0/1*128Kg
# ATxmega128A1D [USER] USER=0x20000
[AvrChipId=0x1e9741]
DfuAltName = @Flash/0x0/1*128Kg
# ATxmega128A3 [USER] USER=0x20000
[AvrChipId=0x1e9742]
DfuAltName = @Flash/0x0/1*128Kg
# ATxmega128A4 [USER] USER=0x20000
[AvrChipId=0x1e9746]
DfuAltName = @Flash/0x0/1*128Kg
# ATxmega128B1 [USER] USER=0x20000
[AvrChipId=0x1e974d]
DfuAltName = @Flash/0x0/1*128Kg
# ATxmega128B3 [USER] USER=0x20000
[AvrChipId=0x1e974b]
DfuAltName = @Flash/0x0/1*128Kg
# ATxmega192C3 [USER] USER=0x30000
[AvrChipId=0x1e9751]
DfuAltName = @Flash/0x0/1*192Kg
# ATxmega192D3 [USER] USER=0x30000
[AvrChipId=0x1e9749]
DfuAltName = @Flash/0x0/1*192Kg
# ATxmega192A1 [USER] USER=0x30000
[AvrChipId=0x1e974e]
DfuAltName = @Flash/0x0/1*192Kg
# ATxmega192A3 [USER] USER=0x30000
[AvrChipId=0x1e9744]
DfuAltName = @Flash/0x0/1*192Kg
# ATxmega256 [USER] USER=0x40000
[AvrChipId=0x1e9846]
DfuAltName = @Flash/0x0/1*256Kg
# ATxmega256D3 [USER] USER=0x40000
[AvrChipId=0x1e9844]
DfuAltName = @Flash/0x0/1*256Kg
# ATxmega256A3 [USER] USER=0x40000
[AvrChipId=0x1e9842]
DfuAltName = @Flash/0x0/1*256Kg
# ATxmega256A3B [USER] USER=0x40000
[AvrChipId=0x1e9843]
DfuAltName = @Flash/0x0/1*256Kg
# ATxmega384C3 [USER] USER=0x60000
[AvrChipId=0x1e9845]
DfuAltName = @Flash/0x0/1*384Kg
# ATxmega384D3 [USER] USER=0x60000
[AvrChipId=0x1e9847]
DfuAltName = @Flash/0x0/1*384Kg
# ATxmega8E5 [USER] USER=0x2000
[AvrChipId=0x1e9341]
DfuAltName = @Flash/0x0/1*8Kg
# ATxmega16E5 [USER] USER=0x4000
[AvrChipId=0x1e9445]
DfuAltName = @Flash/0x0/1*16Kg
# ATxmega32E5 [USER] USER=0x8000
[AvrChipId=0x1e954c]
DfuAltName = @Flash/0x0/1*32Kg