Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update usbpids in avrdude.conf #1919

Merged
merged 3 commits into from
Sep 1, 2024
Merged

Conversation

stefanrueger
Copy link
Collaborator

Fixes #1915 as far as avrdude.conf is concerned. The list in https://github.com/dfu-programmer/dfu-programmer/blob/master/src/arguments.c (thanks @askn37) was used to reliably (and semi-automatically) update avrdude.conf.

@askn37 Would you like to review? avrdude -p '*/st' | grep usbpid should show AVRDUDE's current understanding of usbpid assignments.

@stefanrueger
Copy link
Collaborator Author

Hmm, I suspect that avrdude -p '*/st' | grep usbpid shows quite a few parts with usbpid that shouldn't have one b/c they are not USB parts. That happens when inheritance in avrdude.conf isn't used carefully... Anyway, over to @askn37 ...

@stefanrueger
Copy link
Collaborator Author

stefanrueger commented Aug 31, 2024

Here is a list of XMEGAs that are not mentioned in the DFU list but have an usbpid entry in avrdude.conf: x16d4, x16a4, x32d4, x32a4, x32c3, x32d3, x64d3, x64d4, x64a1, x64a3, x64a4, x128d3, x128d4, x128a1, x128a3, x256d3, x256a1, x256a3, x256a3b, x384d3

How can we check whether their entries are correct?

@mcuee mcuee added the enhancement New feature or request label Aug 31, 2024
@mcuee
Copy link
Collaborator

mcuee commented Aug 31, 2024

Here is a list of XMEGAs that are not mentioned in the DFU list but have an usbpid entry in avrdude.conf: x16d4, x16a4, x32d4, x32a4, x32c3, x32d3, x64d3, x64d4, x64a1, x64a3, x64a4, x128d3, x128d4, x128a1, x128a3, x256d3, x256a1, x256a3, x256a3b, x384d3

How can we check whether their entries are correct?

Some of the chips are documented to support DFU here.
https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ApplicationNotes/ApplicationNotes/doc8429.pdf

  1. Software information
    7.1 Software revision history
    7.1.1 Version 1.0.2 – 2011/09/01
    Initial boot loaders release for the following Atmel parts:
    ATxmega256A3BU, ATxmega256A3U, ATxmega192A3U, ATxmega128A3U, ATxmega64A3U, ATxmega32A4U,
    ATxmega16A4U, ATxmega128B1, ATxmega64B1, ATxmega128B3, ATxmega64B3.

7.1.2 Version 1.0.3 – 2012/03/01
Initial boot loaders release for the following Atmel parts:
ATxmega128A1U, ATxmega64A1U.
Updated version for all other supported parts:
• Fixed system clock configuration to load factory 48MHz RC calibration value from factory raw

7.1.3 Version 1.0.4 – 2012/08/01
Initial boot loaders release for the following Atmel parts:
ATxmega384C3, ATxmega256C3, ATxmega128C3, ATxmega64C3, ATxmega32C4, ATxmega16C4.
Updated version for all other supported parts:
• Reduced initial assumption about system clock initialization to ease bootloader activation from user
application call

@mcuee
Copy link
Collaborator

mcuee commented Aug 31, 2024

Older FLIP 1 parts are documented here.
https://www.microchip.com/en-us/development-tool/flip

megaAVR:

AT90CAN128 - 8-bit AVR Microcontroller, 128KB Flash, 64-pin, CAN Controller
AT90CAN32 - 8-bit AVR Microcontroller, 32KB Flash, 64-pin, CAN Controller
AT90CAN64 - 8-bit AVR Microcontroller, 64KB Flash, 64-pin, CAN Controller
ATmega16M1 - 8-bit AVR Microcontroller, 16KB Flash, 32-pin, LIN and CAN Controller
ATmega32M1 - 8-bit AVR Microcontroller, 32KB Flash, 32-pin, LIN and CAN Controller
ATmega64M1 - 8-bit AVR Microcontroller, 64KB Flash, 32-pin, LIN and CAN Controller
AT90USB1286 - 8-bit AVR Microcontroller, 128KB Flash, 64-pin, USB Controller
AT90USB1287 - 8-bit AVR Microcontroller, 128KB Flash, 64-pin, USB Controller
AT90USB162 - 8-bit AVR Microcontroller, 16KB Flash, 32-pin, USB Controller
AT90USB646 - 8-bit AVR Microcontroller, 64KB Flash, 64-pin USB Controller
AT90USB647 - 8-bit AVR Microcontroller, 64KB Flash, 64-pin, USB Controller
AT90USB82 - 8-bit AVR Microcontroller, 8KB Flash, 32-pin, USB Controller
ATmega16U2 - 8-bit AVR Microcontroller,16KB Flash, 32-pin, USB Controller
ATmega16U4 - 8-bit AVR Microcontroller, 16KB Flash, 44-pin, USB Controller
ATmega32U2 - 8-bit AVR Microcontroller,32KB Flash, 32-pin, USB Controller
ATmega32U4 - 8-bit AVR Microcontroller, 32KB Flash, 44-pin, USB Controller
ATmega8U2 - 8-bit AVR Microcontroller, 8KB Flash, 32-pin, USB Controller

AVR-based CAN MCUs:

AT90CAN32-Automotive - 8-bit Automotive AVR Microcontroller, 32KB ISP Flash, CAN Controller
AT90CAN64-Automotive - 8-bit Automotive AVR Microcontroller, 64KB ISP Flash, CAN Controller
AT90CAN128-Automotive - 8-bit AVR Microcontroller, 128KB ISP Flash, CAN Controller

@mcuee
Copy link
Collaborator

mcuee commented Aug 31, 2024

Okay, this should be the correct source.

The following is the USB driver inf file included in FLIP software.
C:\Program Files (x86)\Atmel\Flip 3.4.7\usb\atmel_usb_dfu.inf

; atmel_usb_dfu.inf
; Copyright (c) 2010 libusb-win32 (GNU LGPL)
[Strings]
VendorName   = "Atmel Corporation"
SourceName   = "DFU Install Disk"
DeviceGUID   = "{1D56CA95-D886-4388-B73B-CBAA759AD3DD}"

[Version]
Signature   = "$Windows NT$"
Class       = "Atmel USB Devices"
ClassGuid   = {EB781AAF-9C70-4523-A5DF-642A87ECA567}
Provider    = "Atmel Corporation"
CatalogFile = atmel_usb_dfu.cat
DriverVer   = 10/02/2010, 1.2.2.0

[ClassInstall32]
Addreg = libusb_class_install_add_reg

[libusb_class_install_add_reg]
HKR,,,0,"Atmel USB Devices"
HKR,,Icon,,-20

[Manufacturer]
%VendorName% = Devices, NT, NTAMD64, NTIA64

;--------------------------------------------------------------------------
; libusb-win32 files
;--------------------------------------------------------------------------

[SourceDisksNames]
1 = %SourceName%

[SourceDisksFiles.x86]
libusb0.sys     = 1,x86
libusb0_x86.dll = 1,x86

[SourceDisksFiles.amd64]
libusb0.sys     = 1,amd64
libusb0.dll     = 1,amd64
libusb0_x86.dll = 1,x86

[SourceDisksFiles.ia64]
libusb0.sys     = 1,ia64
libusb0.dll     = 1,ia64
libusb0_x86.dll = 1,x86

[DestinationDirs]
libusb_files_sys       = 10,system32\drivers
libusb_files_dll       = 10,system32
libusb_files_dll_wow64 = 10,syswow64
libusb_files_dll_x86   = 10,system32

[libusb_files_sys]
libusb0.sys

[libusb_files_dll]
libusb0.dll

[libusb_files_dll_x86]
libusb0.dll, libusb0_x86.dll

[libusb_files_dll_wow64]
libusb0.dll, libusb0_x86.dll

;--------------------------------------------------------------------------
; libusb-win32 device driver
;--------------------------------------------------------------------------

[LIBUSB_WIN32_DEV.NT]
CopyFiles = libusb_files_sys, libusb_files_dll_x86

[LIBUSB_WIN32_DEV.NTAMD64]
CopyFiles = libusb_files_sys, libusb_files_dll, libusb_files_dll_wow64

[LIBUSB_WIN32_DEV.NTIA64]
CopyFiles = libusb_files_sys, libusb_files_dll, libusb_files_dll_wow64

[LIBUSB_WIN32_DEV.NT.HW]
DelReg = libusb_del_reg_hw
AddReg = libusb_add_reg_hw

[LIBUSB_WIN32_DEV.NTAMD64.HW]
DelReg = libusb_del_reg_hw
AddReg = libusb_add_reg_hw

[LIBUSB_WIN32_DEV.NTIA64.HW]
DelReg = libusb_del_reg_hw
AddReg = libusb_add_reg_hw

[LIBUSB_WIN32_DEV.NT.Services]
AddService = libusb0, 0x00000002, libusb_add_service

[LIBUSB_WIN32_DEV.NTAMD64.Services]
AddService = libusb0, 0x00000002, libusb_add_service

[LIBUSB_WIN32_DEV.NTIA64.Services]
AddService = libusb0, 0x00000002, libusb_add_service

; Older versions of this .inf file installed filter drivers. They are not
; needed any more and must be removed
[libusb_del_reg_hw]
HKR,,LowerFilters
HKR,,UpperFilters

; libusb-win32 device properties
[libusb_add_reg_hw]
HKR,,SurpriseRemovalOK,0x00010001,1

; (Optional) the usb configuration value to select when this device
; is started.  If this key does not exist the first config is selected.
;HKR,,InitialConfigValue,0x00010001,<your config value>

;--------------------------------------------------------------------------
; libusb-win32 service
;--------------------------------------------------------------------------

[libusb_add_service]
DisplayName   = "Atmel - LibUsb Kernel Driver 10/02/2010 1.2.2.0"
ServiceType   = 1
StartType     = 3
ErrorControl  = 0
ServiceBinary = %12%\libusb0.sys

;--------------------------------------------------------------------------
; libusb-win32 devices
;--------------------------------------------------------------------------

; Hardware IDs in a 'Devices' section can be installed by libusb-win32
; using usb_install_driver_np(), usb_install_driver_np_rundll(), or the
; inf-wizard utility.
;
[Devices]
"ATxmega16C4"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FD8
"ATxmega32C4"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FD9
"ATxmega64C3"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FD6
"ATxmega128C3"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FD7
"ATxmega256C3"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FDA
"ATxmega384C3"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FDB
"ATxmega64A1U"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE8
"ATxmega128A1U" = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FED
"ATxmega64A4U"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FDD
"ATxmega128A4U" = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FDE
"ATxmega64B3"   = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FDF
"ATxmega128B3"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE0
"ATxmega64B1"   = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE1
"ATxmega128B1"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FEA
"ATxmega256A3BU"= LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE2
"ATxmega16A4U"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE3
"ATxmega32A4U"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE4
"ATxmega64A4U"  = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE5
"ATxmega128A3U" = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE6
"ATxmega192A3U" = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE7
"UC3 L3/L4"     = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FDC
"ATUC3 D"       = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FE9
"AT32UC3C"      = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FEB
"ATxmega256A3U" = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FEC
"ATmega8U2"     = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FEE
"ATmega16U2"    = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FEF
"ATmega32U2"    = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FF0
"AT32UC3A3"     = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FF1
"ATmega32U6"    = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FF2
"ATmega16U4"    = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FF3
"ATmega32U4"    = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FF4
"AT32UC3B"      = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FF6
"AT90USB82"     = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FF7
"AT32UC3A"      = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FF8
"AT90USB64"     = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FF9
"AT90USB162"    = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FFA
"AT90USB128"    = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FFB
"AT89C5130/AT89C5131"= LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FFD
"AT8XC5122"     = LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FFE
"AT89C5132/AT89C51SND1/AT89C51SND2"= LIBUSB_WIN32_DEV, USB\VID_03EB&PID_2FFF

[Devices.NT]
"ATxmega16C4"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FD8
"ATxmega32C4"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FD9
"ATxmega64C3"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FD6
"ATxmega128C3"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FD7
"ATxmega256C3"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FDA
"ATxmega384C3"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FDB
"ATxmega64A1U"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE8
"ATxmega128A1U" = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FED
"ATxmega64A4U"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FDD
"ATxmega128A4U" = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FDE
"ATxmega64B3"   = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FDF
"ATxmega128B3"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE0
"ATxmega64B1"   = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE1
"ATxmega128B1"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FEA
"ATxmega256A3BU"= LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE2
"ATxmega16A4U"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE3
"ATxmega32A4U"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE4
"ATxmega64A4U"  = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE5
"ATxmega128A3U" = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE6
"ATxmega192A3U" = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE7
"UC3 L3/L4"     = LIBUSB_WIN32_DEV,NT, USB\VID_03EB&PID_2FDC
"ATUC3 D"       = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FE9
"AT32UC3C"      = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FEB
"ATxmega256A3U" = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FEC
"ATmega8U2"     = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FEE
"ATmega16U2"    = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FEF
"ATmega32U2"    = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FF0
"AT32UC3A3"     = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FF1
"ATmega32U6"    = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FF2
"ATmega16U4"    = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FF3
"ATmega32U4"    = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FF4
"AT32UC3B"      = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FF6
"AT90USB82"     = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FF7
"AT32UC3A"      = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FF8
"AT90USB64"     = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FF9
"AT90USB162"    = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FFA
"AT90USB128"    = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FFB
"AT89C5130/AT89C5131"= LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FFD
"AT8XC5122"     = LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FFE
"AT89C5132/AT89C51SND1/AT89C51SND2"= LIBUSB_WIN32_DEV.NT, USB\VID_03EB&PID_2FFF

[Devices.NTAMD64]
"ATxmega16C4"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FD8
"ATxmega32C4"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FD9
"ATxmega64C3"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FD6
"ATxmega128C3"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FD7
"ATxmega256C3"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FDA
"ATxmega384C3"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FDB
"ATxmega64A1U"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE8
"ATxmega128A1U" = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FED
"ATxmega64A4U"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FDD
"ATxmega128A4U" = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FDE
"ATxmega64B3"   = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FDF
"ATxmega128B3"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE0
"ATxmega64B1"   = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE1
"ATxmega128B1"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FEA
"ATxmega256A3BU"= LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE2
"ATxmega16A4U"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE3
"ATxmega32A4U"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE4
"ATxmega64A4U"  = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE5
"ATxmega128A3U" = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE6
"ATxmega192A3U" = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE7
"UC3 L3/L4"     = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FDC
"ATUC3 D"       = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FE9
"AT32UC3C"      = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FEB
"ATxmega256A3U" = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FEC
"ATmega8U2"     = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FEE
"ATmega16U2"    = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FEF
"ATmega32U2"    = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FF0
"AT32UC3A3"     = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FF1
"ATmega32U6"    = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FF2
"ATmega16U4"    = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FF3
"ATmega32U4"    = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FF4
"AT32UC3B"      = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FF6
"AT90USB82"     = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FF7
"AT32UC3A"      = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FF8
"AT90USB64"     = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FF9
"AT90USB162"    = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FFA
"AT90USB128"    = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FFB
"AT89C5130/AT89C5131"= LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FFD
"AT8XC5122"     = LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FFE
"AT89C5132/AT89C51SND1/AT89C51SND2"= LIBUSB_WIN32_DEV.NTAMD64, USB\VID_03EB&PID_2FFF

[Devices.NTIA64]
"ATxmega16C4"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FD8
"ATxmega32C4"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FD9
"ATxmega64C3"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FD6
"ATxmega128C3"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FD7
"ATxmega256C3"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FDA
"ATxmega384C3"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FDB
"ATxmega64A1U"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE8
"ATxmega128A1U" = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FED
"ATxmega64A4U"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FDD
"ATxmega128A4U" = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FDE
"ATxmega64B3"   = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FDF
"ATxmega128B3"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE0
"ATxmega64B1"   = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE1
"ATxmega128B1"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FEA
"ATxmega256A3BU"= LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE2
"ATxmega16A4U"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE3
"ATxmega32A4U"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE4
"ATxmega64A4U"  = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE5
"ATxmega128A3U" = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE6
"ATxmega192A3U" = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE7
"UC3 L3/L4"     = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FDC
"ATUC3 D"       = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FE9
"AT32UC3C"      = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FEB
"ATxmega256A3U" = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FEC
"ATmega8U2"     = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FEE
"ATmega16U2"    = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FEF
"ATmega32U2"    = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FF0
"AT32UC3A3"     = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FF1
"ATmega32U6"    = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FF2
"ATmega16U4"    = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FF3
"ATmega32U4"    = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FF4
"AT32UC3B"      = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FF6
"AT90USB82"     = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FF7
"AT32UC3A"      = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FF8
"AT90USB64"     = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FF9
"AT90USB162"    = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FFA
"AT90USB128"    = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FFB
"AT89C5130/AT89C5131"= LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FFD
"AT8XC5122"     = LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FFE
"AT89C5132/AT89C51SND1/AT89C51SND2"= LIBUSB_WIN32_DEV.NTIA64, USB\VID_03EB&PID_2FFF

@askn37
Copy link
Contributor

askn37 commented Aug 31, 2024

https://www.microchip.com/en-us/development-tool/flip
For this application, you can list the PID with:

flip_linux_3-2-1.tar

flip.3.2.1 % grep -RI USB_PID *
bin/PartDescriptionFiles/AT90USB1286.xml:   <USB_PID VALUE="2FFB" />
bin/PartDescriptionFiles/part.dtd:<!ELEMENT Part (USB_PID?, Memory+, Gui?, Protocol+)>
bin/PartDescriptionFiles/part.dtd:<!ELEMENT USB_PID EMPTY>
bin/PartDescriptionFiles/part.dtd:<!ATTLIST USB_PID
bin/PartDescriptionFiles/AT90USB1287.xml:   <USB_PID VALUE="2FFB" />
bin/PartDescriptionFiles/ATOCDTARGET.xml:   <USB_PID VALUE="2FFF" />
bin/PartDescriptionFiles/AT32UC3A1512.xml:	<USB_PID VALUE="2FF8" />
bin/PartDescriptionFiles/AT32UC3A1128.xml:	<USB_PID VALUE="2FF8" />
bin/PartDescriptionFiles/AT32UC3B0256.xml:	<USB_PID VALUE="2FF6" />
bin/PartDescriptionFiles/AT90USB162.xml:   <USB_PID VALUE="2FFA" />
bin/PartDescriptionFiles/AT32UC3A0256.xml:	<USB_PID VALUE="2FF8" />
bin/PartDescriptionFiles/AT32UC3B1128.xml:	<USB_PID VALUE="2FF6" />
bin/PartDescriptionFiles/AT90USB82.xml:   <USB_PID VALUE="2FF7" />
bin/PartDescriptionFiles/AT89C51SND2.xml:   <USB_PID VALUE="2FFF" />
bin/PartDescriptionFiles/AT89C51SND1.xml:   <USB_PID VALUE="2FFF" />
bin/PartDescriptionFiles/AT89C5132.xml:   <USB_PID VALUE="2FFF" />
bin/PartDescriptionFiles/AT32UC3A0128.xml:	<USB_PID VALUE="2FF8" />
bin/PartDescriptionFiles/AT32UC3B1256.xml:	<USB_PID VALUE="2FF6" />
bin/PartDescriptionFiles/AT32UC3A0512.xml:	<USB_PID VALUE="2FF8" />
bin/PartDescriptionFiles/AT89C5131.xml:   <USB_PID VALUE="2FFD" />
bin/PartDescriptionFiles/AT90USB646.xml:   <USB_PID VALUE="2FF9"/>
bin/PartDescriptionFiles/AT32UC3B064.xml:	<USB_PID VALUE="2FF6" />
bin/PartDescriptionFiles/AT90USB647.xml:   <USB_PID VALUE="2FF9"/>
bin/PartDescriptionFiles/AT89C5130.xml:   <USB_PID VALUE="2FFD" />
bin/PartDescriptionFiles/AT32UC3B164.xml:	<USB_PID VALUE="2FF6" />
bin/PartDescriptionFiles/AT32UC3A1256.xml:	<USB_PID VALUE="2FF8" />
bin/PartDescriptionFiles/AT32UC3B0128.xml:	<USB_PID VALUE="2FF6" />

udev rule: "doc/usb\ access\ rules\ under\ linux.txt"

For "udev" systems:
Make a file called 'flip.rules' in the folder '/etc/udev/rules.d/' with the following content:
---
# Atmel flip rules

#add support AT89C5132  AT89C51SND1 AT89C51SND2 ATOCDTARGET
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2fff", GROUP="flip", MODE="0660"

#add support AT89C5130 AT89C5131
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2ffd", GROUP="flip", MODE="0660"

#add support AT90USB1286 AT90USB1287
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2ffb", GROUP="flip", MODE="0660"

#add support AT90USB162
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2ffa", GROUP="flip", MODE="0660"

#add support AT90USB647 AT90USB646
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2ff9", GROUP="flip", MODE="0660"

#add support AT32UC3A0128 AT32UC3A0256 AT32UC3A0512 AT32UC3A1128 AT32UC3A1256 AT32UC3A1512
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2ff8", GROUP="flip", MODE="0660"

#add support AT90USB82
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2ff7", GROUP="flip", MODE="0660"

#add support  AT32UC3B0128 AT32UC3B0256 AT32UC3B064 AT32UC3B1128 AT32UC3B1256 AT32UC3B164
ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2ff6", GROUP="flip", MODE="0660"

I'm sure I can find config files for other devices, but where is the official Xmega DFU application? Is it in ATMEL Studio?

@mcuee
Copy link
Collaborator

mcuee commented Aug 31, 2024

BTW, we (Travis and I) were the admin of libusb-win32 projects back in 2011 and we helped then Atmel to sort out some issues with the FLIP Winodws driver. And we got two demo boards from Atmel and even one USB VID/PID combination.
https://github.com/mcuee/libusbk/tree/master/BmFW/AVR/ASF/Benchmark

@stefanrueger
Copy link
Collaborator Author

OK Looking at the lists above I still don't find evidence for the following usbpids

  'atxmega128a3' => '0x2fd7',
  'atxmega128d3' => '0x2fd7',
  'atxmega128d4' => '0x2fd7',
  'atxmega16a4' => '0x2fe3',
  'atxmega16d4' => '0x2fe3',
  'atxmega256a1' => '0x2fda',
  'atxmega256a3b' => '0x2fda',
  'atxmega256a3' => '0x2fda',
  'atxmega256d3' => '0x2fda',
  'atxmega32a4' => '0x2fe4',
  'atxmega32c3' => '0x2fe4',
  'atxmega32d3' => '0x2fe4',
  'atxmega32d4' => '0x2fe4',
  'atxmega384d3' => '0x2fdb',
  'atxmega64a1' => '0x2fe5',
  'atxmega64a3' => '0x2fe5',
  'atxmega64a4' => '0x2fe5',
  'atxmega64d3' => '0x2fe5',
  'atxmega64d4' => '0x2fe5',

There was one correction, though (pushing that now). Can someone verify above best by proving a source?

@askn37
Copy link
Contributor

askn37 commented Aug 31, 2024

OK Looking at the lists above I still don't find evidence for the following usbpids

  'atxmega128a3' => '0x2fd7',
  'atxmega128d3' => '0x2fd7',
  'atxmega128d4' => '0x2fd7',
  'atxmega16a4' => '0x2fe3',
  'atxmega16d4' => '0x2fe3',
  'atxmega256a1' => '0x2fda',
  'atxmega256a3b' => '0x2fda',
  'atxmega256a3' => '0x2fda',
  'atxmega256d3' => '0x2fda',
  'atxmega32a4' => '0x2fe4',
  'atxmega32c3' => '0x2fe4',
  'atxmega32d3' => '0x2fe4',
  'atxmega32d4' => '0x2fe4',
  'atxmega384d3' => '0x2fdb',
  'atxmega64a1' => '0x2fe5',
  'atxmega64a3' => '0x2fe5',
  'atxmega64a4' => '0x2fe5',
  'atxmega64d3' => '0x2fe5',
  'atxmega64d4' => '0x2fe5',

There was one correction, though (pushing that now). Can someone verify above best by proving a source?

Hmm? It looks like this model doesn't have any built-in USB peripherals?

@MCUdude
Copy link
Collaborator

MCUdude commented Aug 31, 2024

Correct. The ones that has USB has a u suffix, e.g ATxmega128A3U

@stefanrueger
Copy link
Collaborator Author

stefanrueger commented Aug 31, 2024

The ones that [have] USB [have] a u suffix, e.g ATxmega128A3U

A missing U doesn't necessarily mean no USB peripheral:

Screenshot from 2024-08-31 21-54-22

@stefanrueger
Copy link
Collaborator Author

In absence of any more info, I suggest to merge this PR. We can always revisit when there is more info about part pids.

@askn37
Copy link
Contributor

askn37 commented Aug 31, 2024

Approach from header file. Of course, you can also check the presence of USB peripheral functions with ATDF.

avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/avr % grep -I USB_ADDR_gm *
iox128a1u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox128a3u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox128a4u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox128b1.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox128b3.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox128c3.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox16a4u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox16c4.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox192a3u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox192c3.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox256a3bu.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox256a3u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox256c3.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox32a4u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox32c3.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox32c4.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox384c3.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox64a1u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox64a3u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox64a4u.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox64b1.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox64b3.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */
iox64c3.h:#define USB_ADDR_gm  0x7F  /* Device Address group mask. */

For Xmega devices, this applies to the A/B/C/AU families. There does not appear to be any silicon in the D/E families.

Currently, there is no DFU_PID assignment for the AVR-DU family, so it will be mixed in as noise in this search method.

@stefanrueger stefanrueger merged commit d3c4f86 into avrdudes:main Sep 1, 2024
14 checks passed
@stefanrueger stefanrueger deleted the m16u4 branch September 1, 2024 00:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Missing devices in udev rules output?
4 participants