This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DFU not showing in composite device / Not recognized by dfuprog.exe

Other Parts Discussed in Thread: TM4C123FE6PM, TM4C1294NCPDT

I am trying to add DFU to my TM4C123 project.

I followed the instructions in the USB Library, 2.11.1.  

Using Microsoft's USB Device Viewer, I see the interface descriptor information for DFU:

===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x06
bAlternateSetting: 0x00
bNumEndpoints: 0x00
bInterfaceClass: 0xFE -> This is an Application Specific USB Device Interface Class
-> This is a Device Firmware Application Specific USB Device Interface Class
bInterfaceSubClass: 0x01
bInterfaceProtocol: 0x01
iInterface: 0x00

===>HID Descriptor<===
bLength: 0x09
bDescriptorType: 0x21
bcdHID: 0xFF0F
bCountryCode: 0xFF
bNumDescriptors: 0x00

Other than the interface descriptor numbers, this is the same as I see on the launch pad's debugger ICDI USB.

I erased the target TM4C123FE6PM, reset, and the Rom BootLoader enumerates the DFU  and dfuprog -e enumerates the blank device.  

 I do see slight differences in enumeration information:

bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x00
bInterfaceClass: 0xFE -> This is an Application Specific USB Device Interface Class
-> This is a Device Firmware Application Specific USB Device Interface Class
bInterfaceSubClass: 0x01
bInterfaceProtocol: 0x02
iInterface: 0x00

===>HID Descriptor<===
bLength: 0x09
bDescriptorType: 0x21
bcdHID: 0xFF07
bCountryCode: 0xFF
bNumDescriptors: 0x00

I tried to hack the boot_demo_usb from DKTM4C129x to EKTM4C1294XL to see if I could step through.  I changed the processor define to PART_TM4C1294NCPDT and changed the project device.  I had to comment out the various calls to the LCD and various signals not on the ek board.

The program runs and displays as a mouse.  However, it does not show up in  dfuprog -e enumeration.  

  • Hello Dan,

    If you go through the documentation on USB DFU class, there are two types of DFU descriptors that are published.

    www.usb.org/.../DFU_1.1.pdf

    I am trying to dig more into it.

    Regards
    Amit
  • I complied DfuProg.exe and the LmDfu library to walk through the search for my device (boot_demo_usb).

    I found that DfuProg doesn't exhaustively search all Pid/Vids but instead looks for devices with a service GUID:

    //
    // Tiva DFU Device Interface GUID
    // {D17C772B-AF45-4041-9979-AAFE96BF6398}
    //
    DEFINE_GUID(GUID_DEVINTERFACE_TIVA_DFU,
    0xd17c772b, 0xaf45, 0x4041, 0x99, 0x79, 0xaa, 0xfe, 0x96, 0xbf, 0x63, 0x98);

    I then found that the boot_demo_usb.inf had not properly loaded in Win10/64.

    When I tried to update the driver, Windows reported a bad signature.  I reviewed that the files were un-altered. 

    From there, I had to go install the inf by turning off signature checking.  You can do that with BCDEdit, but I used the GUI.

    Settings-> Update&Security > Recovery > Advanced Startup/Restart Now. 

    From there, select the advanced options and F7 or simply 7 to reboot without signature checking.

    Updating from Device Manager then worked and showed my device as properly installed.

    Running DfuProg again reported my device as index 3 in my system. (1  = Unprogrammed Tiva device, 2=ICDI, 3=Boot_demo)

    So, it is important to make sure that the TI DFU guid is included in the .inf.  

    Two days of struggle for something that should be simple. 

  • Dan Beadle said:
    So, it is important to make sure that the TI DFU guid is included in the .inf.  



    You may pass the interface GUID (TI DFU guid) over a MS OS descriptor from your USB device to Windows. And then, you need neither ANY INF file nor signed driver package.

    We have discussed on this implementation in this topic.
    "USB Bulk Device Driver / INF as Device 0 in Composite Device"
    https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/p/480438/1741636#1741636

    You may be interested in this topic, too.
    "WinUSB Device" implementation for Tivaware

    https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/481401

    Tsuneo

    PS.

    The forum engine blocks to access to the link to above topics, even though the link targets are in this forum.

    Copy-paste the URL under the link.

  • Hello Tsuneo

    Can you try the same in "rich formatting mode"?

    Regards
    amit