HE910 USB CDC-ACM serial port Fails

2 thoughts on “HE910 USB CDC-ACM serial port Fails

  1. Hello,


    Not sure where to post this! I have also posted xE910, but that’s probably the wrong location too, but there isn’t a product specific location for the HE910.


    The problem we have is with the virtual serial ports provided by the Telit CDC-ACM driver in Windows Embedded Compact 7, as detailed below.

    Our platform is a custom TI DM3730 based board running Windows Embedded Compact 7, and connects to the HE910 module over USB only.

    We are running a simple test application that uses the standard Windows CE functions:
    CreateFile, WriteFile, ReadFile etc.

    We are using the Telit supplied CDC-ACM driver, details as follows:
    SO    : WEC7;
    Driver: UA.00.00.RC1;
    Module: HE910-EUR;
    FW    : 12.00.203

    If we set up a new connection from the Start menu, using the standard Windows dialogs:

    Start–>Settings–>Network and Dial-up Connections–>Make New Connection and select Dial-up Connection, then Next, and select the main Telit port (COM6:, but actually COM5: on our platform, as we have relabelled the ports), and accept the default settings. Then when we open the port using CreateFile, and send the string ‘AT’ using WriteFile, the ReadFile file returns count of zero bytes, with nothing in the buffer.

    If the platform is reset, and we open the port before going into the
    Make New Connection dialog, then ReadFile returns ‘OK’ as expected.

    Why does setting up a connection to the main Telit modem port prevent he serial file ReadFile from working?

    Note that CreateFile, WriteFile and ReadFile always give a return value
    indicating a successful call. That is, no errors are indicated.


    I have now tried CreateFile(), WriteFile(), where I write AT, and ReadFile() multiple times until ReadFile() returns some data, and it appears that after setting up a connection in Network and Dial-up Connections, the port will now open successfully after 4 attempts.


    Is this due to a bug in the Telit supplied CDC-ACM driver?

    1. We are following the same issue via email. Here is the answer sent one week ago:


      We don’t think it is a driver issue. We have not found any failure in it at the moment.

      First thing we noticed is that between write and read, there isn’t any
      interval, so the read is sent immediatelly (not in a while cycle) and it
      is possible that the answer of the module is not available yet to be

      In the below example we put a 4s sleep but the read function should be
      put into a cycle that will exit only after a certain numbers of tries or
      after the answer is read.

         if (readData is ok)
      }while (try = N)

      Another thing is that the example only works if echo ATE1 is enabled, but we are checking this.

      About DTR, it should be set high before the write function, but we are verifying also this.

      This is the customer code with some modifications:

            h = CreateFile(_T("COM6:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

            // returns a valid HANDLE

           EscapeCommFunction(h, SETDTR);

             b = WriteFile(h, "ATr", 3, &dw, NULL);

             // returns TRUE, dw = 3

             Sleep(4000);    // a cycle should check for an answer

             b = ReadFile(h, by, 128, &dw, NULL);

             // returns TRUE, dw = 0 (i.e. no response)

           printf(" dw = %d    b = %d ",dw, b);