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 drivers and Windows 7

Other Parts Discussed in Thread: MSP430F5528, MSP430F5510, MSP430F5529

Hi,

We have developed a product using a MSP430F5528 which is USB enabled using the CDC API stack. We have a windows app that talks to our device. We introduced it a couple years ago and it runs well ... with Windows XP. It never worked very well with Windows 7 which we really need to have work at this point. When you plug our device into a Windows XP computer the hardware wizard starts up and you are able to point to the .inf file which is in the same directory as our windows app and it works fine. With Windows 7 the hardware wizard does not start up automatically, it just looks for the .inf file somewhere but I don't know where. I suspect that we need to modify our installer to put the .inf file in a certain spot but I'm guessing a little.

I have a new version of the CDC API stack and the newest .inf file and it works fine on XP.

What do I need to do to get it to work on Windows 7?

I'd appreciate any help on this.

Thanks.

Mike

  • I've made a small breakthrough. I've found that there is a directory named Windows\System32\DriverStore\FileRepository. I believe that perhaps my install program should but the .inf file in here but still don't know the right way to do that. As a result of me forcing the hardware wizard to run there is a directory called ops_new_usb.inf_x86_neutral_7bdbab0e265276dc. My .inf file is called ops_new_usb.inf. I don't know what the purpose of the rest of the name is or how it is created. Inside that directory is my .inf file and a .pnf file.

    What does it mean!?

    Mike

  • Hi Mike or anyone else listening,

    I am also trying to get CDC working on Windows 7. When I open my port I get a windows error 121 which is a semaphore timeout error. I looked this up on line and many of the helps say it is a registrey problem. I just wanted to get an opinion from the embedded point of view.

    Joe

  • Similar problem:
    I backed off of my custom code and compiled TI's Example 5 using CCS.
    I have a 430F5529 design.  The MSP430_CDC.inf file has the correct bits.
    I load it to windows\inf.  When the design connects, I get "Unrecognized device"
    The hardware wizard is useless - it won't do anything with the unrecognized device.
    The device properties is useless: it gives "Windows has stopped this device because it has reported problems. (Code 43)"

    The really frustrating thing is that this worked at one time but then I revised the code,
    added a new VID/PID and it quit working.  I attempted to return to the old & nothing works.

    Help?

    Dennis

  • One thing to note is that putting the .inf file into the proper folder doesn't really help.
    Windows doesn't scan all INF files when a device is plugged. This would take eternally. It has a precompiled database with the information whcih VID/PID belongs to which INF file.If you don't initiate a database update (or simply delete it), windows won't recognize your new devie PID/VID even if you apply the proper INF file.
    Worse: it seems that if you plug in a device that couldn't be indentified in a previous attempt, this device is apparently blacklisted in the detabase too and won't ever try again finding a driver - unless you initiate a database rebuild.

  • The USB API stack manual advises updating the PID numbers for every revision.  I've done so.
    The result, is seems , is that it quits enumerating the device.  In any case, bumpin the PID didn't help.
    The problem appears to be finding and loading the CDC virtual COM driver.  Where the heck is it?

  • ...and just how does one "initiate a database rebuild" ???   Feels like I'm sinking in quicksand -- that's where struggling gets you!

  • The instructions that come with the 5529 EXP board sez:  

    Terminal Echo: Select Terminal Echo to display an informational screen and connects to the PC.
    Make sure to connect a USB cable from the USB port labeled "5529 USB" to the host PC.
    Open a hyperterminal window and connect to the MSP430.
    Text that is typed in the hyperterminal window is echoed back to the terminal and
    is displayed on the LCD screen of the Experimenter Board.
    And just how does one "connect to the MSP430" when there is no driver loadable or loaded?
  • Dennis Kodimer said:
    ...and just how does one "initiate a database rebuild" ???

    I don't know how this is intended to be done (I have no system developer knowledge on Windows), but IIRC, just deleting the database files (two files, the big ones in the INF folder) causes Windows to rebuild it. (make a backup first).

    Windows driver and DLL managing always was a mess form the beginning of this product.

  • Hi, I am having a similar problem with the MSP430f5510 and the CC1 example. The device gets enumerated with VID/PID 0x2047/0x0313 but Win7/64bit tells me that there is a problem with the device, it gets a yellow triangle in the Windows Device Manager.

    Windows thinks the device is to be driven by:  usbccgp.sys

    When I now try to update the driver and point to the correct .inf-file CC1_term2term.inf  Windows tells me "There is no compatible driver for this device. If there is a driver in the folder make sure the driver is made for "Windows 64 bit Systems"". (This is a translation from German Windows, the english text may be different.

    Thanks for any advice.

  • Herr Martin,

    I'm not so sure about the TI examples but over the last few months we have figured out what we should do for our product on Windows 7. I need to talk to the guy that built the installer but we have figured out the right combo of putting the .inf file in the right place and adding it to the registry or whatever. I would think that as part of the TI examples there would be a similar installer that would do this, yes? Now, that we have this it works very smoothly. We run the installer which installs our Windows app and the .inf file and when our device is plugged in it just works.

    Mike

  • Thanks for your efforts.

    The problem in my case is also (as described) that the .inf file is not accepted by Windows7 when I try to invoke it manually.

    I also do not know how to delete the described database file in windows/inf/xyz because the hint "the two largest files" only leads me to some log files and afterwards to some inf files with similar sizes.

    Greetings

  • I really need help on this topic. It is an urgent problem in my project.

    I am using the MSP430DevelopersPackage_4_00_00 to generate the descriptor.c and .h files and the .inf.

    Does anybody else encounter this problem with Win7 ?

    Greetings

  • I had two problems at once:  1) The MSP-EXPF5529 experimenter's board which wouldn't connect to the virtual COM port driver and 2) my MSP430F5529 design would never go to connected status.  I've given up on the former and write off the EXPERIMENTER'S board as a poor attempt by TI to dazzle us.  Without a Windows USB interface, this board is just a toy.

    But, on my MSP430F5529 design, two things saved the day................

    1) I changed my MSP430F5529 code so the state machine for the USB ports ran regularly.  I have the a timer running at 1 ms / interrupt and pumping the USB state machine at this rate kept (I guess) the delay time within USB standards for inquiry-response.  (before it had been pumped less frequently - about 1/4 ms/interrupt and that wasn't fast enough.  And, if I gave up low power sleep mode between timer ticks, it ran OK also.  So, there is a minimum response time you must maintain otherwise Windows will throw the connection into the junk heap.

    2) I placed the       MSP430_CDC.inf       file into "C:\windows\inf"  directory.   I did this by guessing.  Regedit never did anything useful.   I notice that after successful install - which happened in a snap (after hours and days of hacking, this majik combination worked in an instant)             - that the file  MSP430_cdc.pnf appeared.

    There is still a trail of USB devices in the registry from advancing the PID many times.  I just left it there.

    So the inf directory appears to be the right place for the configuration tool's    inf    file to be plopped.

    Wish the TI developer had given some clue.

  • Martin Mayer said:
    I also do not know how to delete the described database file in windows/inf/xyz because the hint "the two largest files" only leads me to some log files and afterwards to some inf files with similar sizes.

    Things have changed over the years - and some INF files are now larger than the database. Also, other files have started to be stored in this folder too (log files, admin policy templates (*.adm), even exe files (to uninstall drivers).

    For installed devices (all you ever used!), the INF data is written into INFCACHE.1
    If you replace an INF file, it is ignored for any device that was ever installed. For those, the INFCACHE.1 date is used, even if outdated.

    This file is either found in %systemroot%\inf (XP, vista?) or %systemroot%\system32\driverstore (WIn7). On Win8, HKML\Drivers in the registry is used and the hive data is stored in %systemroot%\system32\config\drivers

    Disconnect the device, delete the device from the device manager, delete INFCACHE.1, then reboot. After re-attaching the device, Windows will rebuild INFCACHE.1

    You might need to take over ownership of this file and remove the write protection before you can delete it.

    There are also infpub.dat, infstor.dat and infstrng.dat, but not always. They contain a compiled database of all INF files in the inf folder. (the ones I was talking about earlier in this thread)
    Alternatively, there might be individually compiled versions of the INF files (*.PNF).
    The mechanisms differ between windows versions and even service packs.
    As if it weren't complex enough already. :(

  • It's not so easy sometimes to get the Device Manger to show unplugged devices. What I've found I have to do is enter these commands from a command line.

    set devmgr_show_nonpresent_devices=1

    start devmgmt.msc

    Maybe you can start the device manager through Windows rather than the command line but I've gotten in the habit of just using the command line.

    After you do this then you can Show Hidden Devices in the Device manger and delete any that you need to.



  • Hey folks,

    I was just working through this with someone else who was having trouble getting Windows 7 64bit to recognize the CDC - Virtual Com Port Driver.  

    This Windows driver resolved it.USB_config.zip 

    Similarly you are also able to force Windows to recognize the device correctly by choosing from a list of pre-existing drivers. 

**Attention** This is a public forum