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.

USB Fails to Enumerate

Other Parts Discussed in Thread: MSP430F5528, MSP430F5529, MSP430F5659, MSP430F6659

I have a board with an MSP430F5528 powered by the USB bus and am trying to implement a USB serial port. I used TI's USB Descriptor tool to generate an INF file. I verified that the VID and PID are the same in descriptors.h as in the INF file. However, my device fails to enumerate when I plug it in - I get a "USB Device Not Recognized" message on the PC.

On the PC side, I am running Windows 7 64-bit. In the windows Device Manager under "USB Controllers" I can see the Unknown Device representing my board. I have attempted to install the INF as follows:
- Right-click on Unknown Device and select "Update Driver Software..."
- Click "Browse my computer for driver software"
- Click "Let me pick from a list of device drivers on my computer"
- Click "Have Disk..."
- Click "Browse..."
- Select my MSP430_CDC.inf file and click Open, then Okay

I now get a message box that says "The folder you specified doesn't contain a compatible software driver for your device. If the folder contains a driver, make sure it is designed to work with windows for x64-based systems."

Doing this procedure on a different computer has a similar effect.

I believe the problem has something to do with either the INF file or the descriptor files. Can anyone offer suggestions on how I might get my device to enumerate?

Thanks,
Patrick

  • AFAIK TI USB stack examples are by default prepared for MSP430F5529 with 24MHz XTAL2, so you don't need to do any changes in code, or INF generation.

    If you are changing something regarding VID/PID, than same VID/PID numbers must be in source code and INF file. In TI INF file is message "Supported operating systems:  Windows 32-bit and 64-bit" but don't know if Win7 is able to work with it, or if Win7 need at all INF for CDC device.


  • I'm having this problem as well. I've seen the same error message in other places on the web, i.e., not the TI forum. I've checked both the VID and PID numbers in the descriptors.h file and the MSP430_CDC.inf file and they're identical so I think the problem may have more to do with Windows' USB drivers being incompatible or not current. I know this particular problem was first posted over a year ago, but do you have any further information? I still haven't solved it.Thanks.

  • Hello,

    Is it possible to send me the INF file and the descriptors.h file?    The examples included in the Developers package run with an XT2 oscillator value of 4MHz.  If your device is configured for something else then that needs to be updated in the descriptors.h file.

    If the inf file is generated properly and the VID/PID selected as specified in the Examples_Guide_MSP430_USB.pdf document, then the message the computer should display after downloding your firmware should be the following:

    Device Manager should display the name of your device in the "other devices" category.  Figure 15 in the Examples_Guide_MSP430_USB.pdf document shows the device 'MSP430-USB Example' device as named by TI for the examples included in the USB Developers package under the "Other devices" category.

    Since you are not seeing any of the above listed messages, it tells me that something else is wrong.  Maybe a check of the XT2 crystal value is required.  Also, the Descriptor tool included with the USB Developers package you downloaded should be used to create the INF file and not a previous version of the tool.   Maybe a double check of the VID/PID also maybe required to verify that the VID/PID meets the criteria listed in the Examples_Guide_MSP430_USB.pdf document.

     

    Regards,

    Arthi Bhat

     

  • Sorry, I also forgot to add that maybe a small experiment might work.

    1) Take one of the CDC example included in the USB Developers examples package.

    2) Change the PID to a value of say, 0x03FA in the examples inf file as well as in the associated descriptors.h file.

    3) Re-compile the CDC example with the new PID and run it. 

    4) You should see the messages I listed above.

    5) When you are ready to install the .inf file, select the USB_config folder of the example you selected and the inf file you changed to select from

    Regards,

    Arthi Bhat

  • Hi Arti,

    I'll see if I can include those files. Here's descriptors.h

    7532.descriptors.h

    The INF file won't be inserted; apparently we are only allowed files with certain extensions and .inf is not one of them. I have changed it to .txt.

    2330.MSP430_CDC.txt
    ; --COPYRIGHT--,BSD                                                           
    ; Copyright (c) 2012, Texas Instruments Incorporated                          
    ; All rights reserved.                                                        
    ;                                                                             
    ; Redistribution and use in source and binary forms, with or without          
    ; modification, are permitted provided that the following conditions          
    ; are met:                                                                    
    ;                                                                             
    ; *  Redistributions of source code must retain the above copyright           
    ;    notice, this list of conditions and the following disclaimer.            
    ;                                                                             
    ; *  Redistributions in binary form must reproduce the above copyright        
    ;    notice, this list of conditions and the following disclaimer in the      
    ;    documentation and/or other materials provided with the distribution.     
    ;                                                                             
    ; *  Neither the name of Texas Instruments Incorporated nor the names of      
    ;    its contributors may be used to endorse or promote products derived      
    ;    from this software without specific prior written permission.            
    ;                                                                             
    ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' 
    ; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,       
    ; THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR      
    ; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR            
    ; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,       
    ; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,         
    ; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
    ; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,    
    ; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     
    ; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,              
    ; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          
    ; --/COPYRIGHT--                                                              
    ; MSP430 Virtual COM Port Installation file for Win2000/XP/Vista/7
    ;
    ; Port drivers setup
    ;
    ; Supported operating systems:
    ;   Windows 32-bit and 64-bit
    [Version]
    
    Signature="$Windows NT$" 
    ; CatalogFile=MSP430_CDC.cat
    ; For information on CatalogFile, please see 
    ; http://msdn.microsoft.com/en-us/library/windows/hardware/ff547502(v=vs.85).aspx
    Class=Ports
    ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
    Provider=%TI%
    DriverVer=09/06/2010, 1.02
    
    [Manufacturer]
    %TI%=DeviceList, NTamd64
    
    [DestinationDirs]
    FakeModemCopyFileSection=12
    DefaultDestDir=12
    
    [SourceDisksNames]
    
    [SourceDisksFiles]
    
    ;You can modify next string and place your VID and PID
    [DeviceList]
    %DESCRIPTION0%=TIUSB, USB\Vid_2047&Pid_0300
    
    [DeviceList.NTamd64]
    %DESCRIPTION0%=TIUSB.NTamd64, USB\Vid_2047&Pid_0300
    
     ;------------------------------------------------------------------------------
    ;  Windows 32-bit Sections
    ;------------------------------------------------------------------------------
    
    [TIUSB.nt]
    include=mdmcpq.inf
    CopyFiles=FakeModemCopyFileSection
    AddReg=TIUSB.nt.AddReg 
    
    [TIUSB.nt.AddReg]
    HKR,,NTMPDriver,,*ntkern
    HKR,,NTMPDriver,,usbser.sys 
    HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
    HKR,,PortSubClass,1,01
    
    [TIUSB.nt.Services]
    AddService=usbser, 0x00000002, DriverService
    
    [TIUSB.nt.HW]
    include=mdmcpq.inf
    
    [DriverService]
    DisplayName=%DESCRIPTION%
    ServiceType=1
    StartType=3
    ErrorControl=1
    ServiceBinary=%12%\usbser.sys
    LoadOrderGroup=Base
    
    ;------------------------------------------------------------------------------
    ;  Windows 64-bit Sections
    ;------------------------------------------------------------------------------
    
    [TIUSB.NTamd64]
    include=mdmcpq.inf
    CopyFiles=FakeModemCopyFileSection
    AddReg=TIUSB.NTamd64.AddReg 
    
    [TIUSB.NTamd64.AddReg]
    HKR,,NTMPDriver,,*ntkern 
    HKR,,NTMPDriver,,usbser.sys 
    HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
    HKR,,PortSubClass,1,01
    
    [TIUSB.NTamd64.Services]
    AddService=usbser, 0x00000002, DriverService
    
    [TIUSB.NTamd64.HW]
    include=mdmcpq.inf
    
    ;------------------------------------------------------------------------------
    ;  String Definitions
    ;------------------------------------------------------------------------------
    
    [Strings]
    TI="Texas Instruments"
    DESCRIPTION="MSP430-USB Example"
    DESCRIPTION0="Virtual COM Port (CDC)" 
    

    My XT2 oscillator is 8 MHz and when I ran the Descriptor Tool I used that value.

    The other worrying fact is that the device shows up in the Device Manager under 'Universal Serial Bus controllers' as 'Unknown device' and not under 'Other Devices'.

    As I think I mentioned before, my project started off being copied from the TI Resource Explorer example projects folder - the cdcSendDataInBackground one. And one thing that confounds me is why, when the project was copied, no INF file came with it - only the descriptors.h/.c and UsbIsr.c files. It is a pity the Descriptor Tool can't read these files. Thanks for the help.

    P.S. I'll try your suggestion about changing the PID to 0x003FA.

  • Hi Halo,

    I reviewed your inf and descriptors.h files and I noticed that you have set the value for USB_SUPPORT_SELF_POWERED to 0x80 (externally powered).  Is your device being powered externally?

    Did you download the USB Developers Package from the web or from TI Resource Explorer?  Yes, it was an oversight on our part that we did not inlcude either the .dat or the .inf file in TI-Resource Explorer.   That will be taken care of in an upcoming release. 

    Could you try the following:

    1) Download the 4_10_02 version of the MSP430 USB Developers Package from the following website if you have not already:

    http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430_USB_Developers_Package/latest/index_FDS.html

    There should be an examples directory in the package.

    2) Import the C6 project into CCS or IAR.

    3) Change the value for the XT2 crystal in descriptors.h file (this won't effect inf file).  If you are externally powering the device then change the value for USB_SUPPORT_SELF_POWERED also and make sure that the power to the device is correctly set. 

    Let me know what happens.

    Regards,

    Arthi Bhat

  • Hi Arthi,

    Yes my device is self-powered externally.

    I have downloaded the MSP430 USB Developers package 4.10.02 as you asked and extracted the C6 example. I have left USB_SUPPORT_SELF_POWERED at 0x80, but changed the USB_XT_FREQ_VALUE from 4.0 to 8.0. I notice there is another variable just below it called USB_XT_FREQ and this is set to USBPLL_SETCLK_4_0. I left it the same, but should this be changed too?

    I imported the C6 project into CCS6 and built it. I then initiated a debug session and ran the program. Windows acknowledged a USB device had been connected, but again put it in the Universal Serial Bus controller section and labelled it 'Unknown Device'.

    The fact that it is being placed in the 'USB controllers' section and not an 'Other Devices' section seems to imply that there is more wrong here than a 'simple' error in the descriptors.h file. Also, the error message generated by Windows says:

    "The folder you specified doesn't contain a compatible driver for your device. If the folder contains a driver, make sure it is designed to work with Windows for x64-based systems."

    doesn't contain a compatible driver seems to imply that an INF file is not what it is expecting. On the other hand, designed to work with Windows for x64-based systems seems to imply my computer's driver, presumably usbser,  is not up-to-date. I'm out of my depth here. Any other ideas? Thanks.

  • Well, the USBPLL_SETCLK_4_0 value needs to change to USBPLL_SETCLK_8_0 to match your 8.0MHz crystal frequency.

    So give that a try first with the C6 example you imported yesterday.

    If you are still having issues, then is it possbile for you to get hold of a board that is being fully powered by VBUS.  Remove the external supply.   The examples in both TI Resource Explorer and MSP430 USB Developers Package were designed to work with devices powered fully by VBUS.  

    How to externally power the device is described in SLAA457A.pdf.  What MCU device are you using?  You can also look thru SLAU533b which describes externally powering the MSP430F5529LP's 5V power supply and/or 3.3 LDO. 

    Regards,

    Arthi Bhat

  • Hi Arthi,

    I have another board that uses the same device (MSP430F5529) and tried downloading C6 to it. It worked and the device appeared in the 'Ports' section of the Device Manager without my even having to install it! I have looked at the SLAA452 document you referred me to and can only find a reference to how the USB pins should be configured. Comparing my two boards to Fig3 on page 11 of slaa452b (see insert) I see that the one that works uses exactly the

    same circuit as in that figure while the one that doesn't has no 1 MegOhm resistor to earth only a 1.4kOhm to PUR. It says below the figure that the 1 M resistor keeps PUR low prior to PUR going high. Is this resistor really needed? Could it also be connected directly from PUR to ground. Thanks.

  • Hi Halo,

    Great that you got over the INF issue!  In regards to the resistor, I am not sure.  I ususally follow the guidelines and I have not played around with different resistors or connections to see what is possbile.  Maybe someone else might be able to help answer that question. 

    Regards,

    Arthi Bhat

  • Thanks to all those who helped.

  • Hi Arthi,

    I am facing some problem with C1 LED ON/OFF example. The default .inf file works for me.

    I have changed the PID to 0x1177 and some strings i have changed. I got driver not installed error and in device manager it is listed in other device list

    Now when i tried to install the driver path 

     

    Please let me know what could be the issue here.

  • Hi Nitesh,

    Can you tell me which version of the MSP430USBDevelopersPackage you are using?  If the USB_Config directory that contains the .inf file also includes a .cat file then just changing the VID/PID and some strings in the INF and descriptor files will not work.  Did you use the descriptor tool to generate your descriptors and .inf file?

    In the newer versions of the Developers Package, the descriptor files, .inf file and .cat files that come with the USB Developers package work as a unit.   The .cat file is used to certify TI's certificate as approved by Microsoft for the VID/PIDs packaged with the USB Developers package.  If you want to use any other combination of VID/PIDs then you will have to use the Descriptor Tool to generate the necessary files with the exception of the .cat file.   Once you generate the files, store them in a known location and you use that location to install the newly generated .inf file for the C1 example.

    Regards,

    Arthi Bhat

  • Hi Arthi,

    I am using ver 5.
    Yes i have used the descriptor tool and copied generated file to specific location i.e. USBConfig folder.
    What is .cat file does this generated by tool?

    Nitesh
  • When you look in the USB_config folder in example C1, what files are listed? Is there a .cat file? The descriptor tool will not create this file. Here is what you can do. Move all the files in the USB_config folder to some other random folder. Then regenarate the descriptors.c, .h and .inf file using the Descriptor Tool. Save these to the USB_config folder. Then try and install the .inf file from this folder.

    Regards,
    Arthi Bhat
  • Hi Arthi,

    Thanks for the reply, Just to confirm i am using 5_00_01 version MSP USB developer package.

    Yes i have not seened the .cat file. As you told i copied the C1 projects USB config folder files which has .cat file to another folder and created the new file using descriptor tool and copied all the files to USB config folder (in which .cat file is not there). Is it necessary to keep the .cat file as it is in that folder or not required.

    Please confirm.

    I tried without .cat file placed in USB config folder, it gave error as mentioned yesterday.

    Secondly i have one more thing i.e.  i have evaluation board and my custom board, Is there any problem if i use the same project and driver(config folder) for both?

    My evaluation board MSP-TS430PZ100USB works file for C1 project if i do nothing. But when i change PID its not working as mentioned yesterday.

    My custom board has HUB controller and i am getting Unknown device on connection, if i observe the USB log using analyzer it shows device enumeration failed.

    Please can you help me what could be the issue here, same driver could be the issue( same .inf file)?

    Need help thanks in advance

    Nitesh

  • Hi Nitesh,

    Thanks for providing the information!  Yes, you should be able to use the same C1 project and USB_Config folder on both the evaluation board as well as your custom board if all the settings are the same.  If your custom board has a different crystal or power setup (internal vs. external power supply) to name a few items that might be differnt,  then obviously the descriptors will also have to be changed from the original descriptor files.

    Is it possible to attach the files generated by descriptor tool when you set your new VID/PID and send it to me?  Also any other files you have changed in the C1 example that you indicate does not work on the EVM board.

    Regards,

    Arthi Bhat

  • Nitesh,
    Also can you tell me on which operating system you are trying to run the C1 example? Also which MCU device you are using in the MSP-TS430PZ100USB?

    Regards,
    Arthi Bhat
  • Hi 

    I am using TI-RTOS. MCU device is MSP430F6659 in evaluation and MSP430F5659 for my custom board.

    I  will share the descriptor file on Monday. Also my device is battery powered and when USB connected it uses the VBUS for hub my device. I am bit confused on powering the device part whether it uses the eternal power or VBUS, will get back on this. 

    Earlier in this chat i saw  you were suggesting some other person to change descriptor if device is not powered from VBUS. Please share what we need to change if i find our design is also not powered from VBUS.

    On our issue regarding HUB, we found in our design  the crystal used lesser than recommended, i.e. we have used 4Mhz where design says 24Mhz. Does this could be the issue for suspend condition?

    Thanks,

    Nitesh 

  • i asked whether .cat i needed with new USB config folder? Yes i will send the new descriptor files by Monday.
    No i have not changed any thing in C1 example. Only descriptor got changed while generating descriptor from tool.
    Our board has similar design as EVM board. For USB i will confirm the power settings by Monday.

    Thanks
    Nitesh
  • nit.zip

    Attached the zip file for my descriptor files

  • Hi Nitesh,

    The .cat file is only valid and should be included with the VID/PIDs we provide with our examples.  When the VID/PID changes (you choose your own) then the .cat file is no longer valid and it will not be generated by the descriptor tool.  The .cat file is the certification file that says that our VID/PIDs that we provided with our examples are certified by Microsoft.

    If your board is externally powered by a battery source or the on-board crystal for the USB module is not 4MHz then the following values need to reflect the changes in the descriptor.h file.   Please note that these values can be changed via the descriptor tool also.

    #define USB_USE_INTERNAL_3V3LDO

    #define USB_XT2_BYPASS_MODE

    #define USB_PLL_XT     

    #define USB_XT_FREQ_VALUE

    #define USB_XT_FREQ     

    #define USB_DISABLE_XT_SUSPEND 

    #define USB_SUPPORT_SELF_POWERED

    #define USB_MAX_POWER

    Also there are some great resources that will allow you to figure out if your device is powered externally or not:  The Programmers_Guide_MSP430_USB_API.pdf document,  SLAA457A document and SLAU208o.pdf document. 

    Regards,

    Arthi Bhat

  • Thanks Arthi,

    Today we modified the H/W , i.e. removed the HUB IC and connected D+and D- directly to micro. It's working with C1 project , i have not changed any files from USB folder. Now we are changing the HUB crystal and trying. Hope that also works. 

    Even i want to know how to get new PID/VID for my product. I want free license which TI provides , please can you let me  know how to get that?

    Now with existing PIC/VID if i want to create new descriptor similar to C1 example ,what all things i have to select in descriptor tool?

    Nitesh

  • Nitesh, I am not aware about a free license which TI provides. But if you want to use your own VID/PID then you will need the descriptor tool to generate the .inf file. Basically, once the tool comes up, add the CDC device and then enter the VID/PID you want. Then save the outputs to a known directory and you should have the same settings as the C1 example. The documents included in the USB Developers Package will help with creating the .inf file.

    Regards,
    Arthi Bhat
  • Nitesh Padiyar52 said:

    Even i want to know how to get new PID/VID for my product. I want free license which TI provides , please can you let me  know how to get that?

    http://software-dl-1.ti.com/dsps/forms/vidtracker.html

  • Thanks,

    If we have VID and PID what we should do to get the certificate i.e. .cat file?

    Thanks,

    Nitesh

  • Hi Nitesh,

    We had to send our device with USB CDC/HID/MSC example running on it for WHQL testing and once our device passed the WHQL tests, we went through the process of getting a .cat file that contains TI's digital signature as issued by Microsoft.  I am not sure if that is the same process you will have to follow but Microsoft webiste might help with any questions you have.  Here is an example website:

    msdn.microsoft.com/.../ff537872(v=vs.85).aspx

    Regards,

    Arthi

  • Thanks Arthi,

    I will go through the link attached and will get back if any question.

    Thanks,

    Nitesh

**Attention** This is a public forum