none
Virtual Serial Port Driver for Windows 7 for use with standard USB CDC devices

    Question

  • Hi,

    I have a USB CDC (communications device class) device (Atmel microcontroller) that I want to communicate with via USB. This device implements the CDC services that are required to make a simple serial connection and under XP the driver was simply an INF which instructed the OS to create a virtual serial port using the standard USB drivers.

    Now Ive upgraded to Windows 7 and the INF no longer works, when I try and 'add legacy hardware' I just receive a message that a suitable driver could not be found.

    I have a hard time believing that MS just removed all this functionality from the USB stack/drivers in 7 so there must be a way to set this up just as it was done in XP but I don't know enough about the INF files to see why mine no longer works.

    This is the original INF that worked with XP; does anyone know how to do the same in 7?:

    ; Windows 2000 and XP setup File for AT32UC3 demo 
    
    [Version] 
    Signature="$Windows NT$" 
    Class=Ports 
    ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} 
    
    Provider=%ATMEL% 
    LayoutFile=layout.inf 
    DriverVer=10/15/1999,5.0.2153.1 
    
    [Manufacturer] 
    %ATMEL%=ATMEL 
    
    [ATMEL] 
    %ATMEL_CDC%=Reader, USB\VID_03EB&PID_2307 
    
    
    ;[Reader_Install.NTx86] 
    ;Windows2000 
    
    [DestinationDirs] 
    DefaultDestDir=12 
    Reader.NT.Copy=12 
    
    [Reader.NT] 
    CopyFiles=Reader.NT.Copy 
    AddReg=Reader.NT.AddReg 
    
    [Reader.NT.Copy] 
    usbser.sys 
    
    [Reader.NT.AddReg] 
    HKR,,DevLoader,,*ntkern 
    HKR,,NTMPDriver,,usbser.sys 
    HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" 
    
    [Reader.NT.Services] 
    AddService = usbser, 0x00000002, Service_Inst 
    
    [Service_Inst] 
    DisplayName = %Serial.SvcDesc% 
    ServiceType = 1 ; SERVICE_KERNEL_DRIVER 
    StartType = 3 ; SERVICE_DEMAND_START 
    ErrorControl = 1 ; SERVICE_ERROR_NORMAL 
    ServiceBinary = %12%\usbser.sys 
    LoadOrderGroup = Base 
    
    [Strings] 
    ATMEL = "ATMEL, Inc." 
    ATMEL_CDC = "AT32UC3 CDC USB to UART" 
    Serial.SvcDesc = "USB Serial emulation driver" 
    
    

    Thanks for any ideas!
    SJF
    Friday, January 22, 2010 1:14 AM

Answers

  • Hello,

    I have managed to sort out my problem; for anyone else with a similar one:

    I found a company that provides a USB CDC driver compatible with Windows 7:

    http://www.recursion.jp/avrcdc/driver.html

    I modified the provided INF to include only what was utilized in that provided by Atmel, changed the hardware ID to match that of my device and after installing using the legacy hardware option it is working.

    I won't post my modified INF as I don't have permission from Recursion and I don't know how theyd take to that but the process is fairly simple for anyone else who needs it.

    Thanks!
    SJF

    • Marked as answer by SebastianF Friday, January 22, 2010 8:41 PM
    Friday, January 22, 2010 8:41 PM

All replies

  • Hello,

    I recommned you install xp mode and then use this device in xp mode. If your computer cannot support xp mode, you can use a third-party Virtual PC like Sun VirtualBOX.
    Thomas77
    Friday, January 22, 2010 9:20 AM
  • Hi Thomas_77,

    Thanks for your reply.

    I have been using XP Mode so far and it connects OK but its a little difficult to develop the application to drive the device via the virtual serial port and then have the device connect to, what might as well be, a completely different computer.

    Not to mention that USB was being touted as the solution for embedded developers to the dropping of serial ports by manufacturers, now its just started being taken up and it suddenly becomes useless again with an upgrade to 7 without extra hardware or expensive licensed third party drivers?

    There are third party virtual serial drivers available (generic drivers that are compatible with any CDC implementation) but the licenses run at about 3000euro from some companies.

    Is there a way to work out what the problem Windows has with that INF is when I try and add it via the legacy hardware method?

    Am I correct in assuming that Windows no longer utilizes INF files, if so, would it be possible to create a replacement using the Windows Driver Development Kit without acctually having to code a new driver?

    Thanks again,
    SJF

    • Marked as answer by SebastianF Friday, January 22, 2010 8:41 PM
    • Unmarked as answer by SebastianF Friday, January 22, 2010 8:41 PM
    Friday, January 22, 2010 1:34 PM
  • Hello,

    I have managed to sort out my problem; for anyone else with a similar one:

    I found a company that provides a USB CDC driver compatible with Windows 7:

    http://www.recursion.jp/avrcdc/driver.html

    I modified the provided INF to include only what was utilized in that provided by Atmel, changed the hardware ID to match that of my device and after installing using the legacy hardware option it is working.

    I won't post my modified INF as I don't have permission from Recursion and I don't know how theyd take to that but the process is fairly simple for anyone else who needs it.

    Thanks!
    SJF

    • Marked as answer by SebastianF Friday, January 22, 2010 8:41 PM
    Friday, January 22, 2010 8:41 PM
  • Here is the best answer the problem that I've found.   All you have to do is

     

    1. grab the INF file from here:

    http://blogs.6bit.com/josh/2009/10/usb-communications-device-class-on-64-bit-windows/

     

    2. modify the VID and PID lines

    3. modify the strings to your liking at the end

     

    Works for me on Windows 7 64 bit.

    • Proposed as answer by bp100a Saturday, October 26, 2013 9:45 PM
    Thursday, February 10, 2011 2:32 AM
  • Hello,
    I have the problem that windows 7 recognizes two same devices, one works and the other not.
    GP
    Thursday, March 03, 2011 9:50 AM