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.

TM4C1237E6PM: usb_dev_serial.c no longer works properly when USB connected to Win10 machine

Part Number: TM4C1237E6PM
Other Parts Discussed in Thread: EK-TM4C123GXL

We use a TIVA device, and imbedded in the code is the usb_dev_serial.c file provided for TI for USB interfaces.  This has been working fine for 3+ years when a Win7 or Win10 laptop is connected to the USB port on our board.  Just this past week, one user laptop was upgraded to Win10 2004, and now the USB interface works differently.  A second Win10 laptop running update 1903 was connected, and it also had USB problems.  On the laptop running updated 1903, if the cable is connected between the board and laptop and Tera Term is not running, the USB interface gets hung up in an infinite loop transmitting data to the laptop.  If Tera Term is started on the laptop, the data is consumed and the board runs just fine.

Apparently the Win10 USB driver is setting the usb_dev_serial flags like g_bUSBConfigured differently than what was done in prior Win10 releases or in Win7.  Is there a solution or a workaround to resolve this problem with Win10?

  • Hello Chuck,

    This is the first time I have heard of this issue, but if it is related to a new version of Win 10, that doesn't surprise me that no one else has raised it yet. Windows 10 has caused past issues with our USB device examples. I will see about looking into this. My PC has version 2004 so I will see what happens with it using our EK-TM4C123GXL LaunchPad.

  • Hello Chuck,

    I tested our usb_dev_serial example from TivaWare 2.2.0.295 with my PC that has WIndows 10 version 2004 and I saw the device correctly enumerate and transfer data over USB like normal.

    We did not make any changes which should affect single CDC device mode, but the library did get updated for USB composite device mode. Are you only using a single port CDC device?

    Also did you base the Windows device drivers off of TI drivers? We did have to update those for Win 10.

  • Ralph,

      When this project started 4 years ago, we adapted the USB serial code from v2.1.0.12573 of the DK-TM4C123G Firmware Package.  The code depends on the function usb_configured() to determine if there a process running that will consume the text that my application wants to write.  On my Win7 machine, either usb_configured() is returning false and the text is not transmitted, or it returns true but the USB driver accepts the transmitted data and drops it.  On the Win10 machine, the function returns true and the application writes the text to the USB.  Because the Win10 isn't running Tera Term, there is nothing to consume the text, and the transmit buffer fills up.  Once it fills up, my application will hang while trying to transmit.

       It's likely that a newer TivaWare release uses a different algorithm to determine USB configuration.  Where would I find a more up-to-date TI usb_dev_serial.c file?  I need the code to recognize that the Win10 laptop is not configured to accept transmitted data.

  • I modified my application code to look for an additional USB event before considering the USB connection to be established.  After I did that, I was able to run on both a Win7 and a Win10 laptop.