This function opens an SOL session with the specified client over a new TCP connection. If the client uses secure communications, a TLS session will be negotiated with it. The function optionally defines a proxy connection with an MPS. The function returns only when the session is established or if an error has occurred. If the credentials are not NULL and there is no corresponding ACL entry, the connection attempt will fail. If the credential parameters are NULL, the library will attempt to connect with the Active Directory credentials of the application user. If the params structure is based on TCPSessionParamsEx2, the credentials are explicit Active Directory credentials that can include a domain name.

note-icon Note:

In Releases 4.2 through 6.2 if an SOL/IDE-R session fails to open, retry to open the session.


Function Header

IMRResult IMR_SOLOpenTCPSessionEx(

ClientID id,

TCPSessionParamsEx *params or TCPSessionParamsEx2 *params,

SOLTouts *touts,

SOLLoopbackMode *loopback


Function Parameters



Value or Description



The ID of the relevant client.



A pointer to a struct with session parameters. This parameter must not be NULL.

When the structure is based on TCPSessionParamsEx, the connection is established using explicit Digest credentials or implicit Active Directory credentials.

When the structure is based on TCPSessionParamsEx2, the connection is established using explicit Active Directory credentials (Windows username and domain).



A pointer to a struct with timeout parameters. This parameter may be NULL, in which case the default values of the parameters will be used. See the struct definition for the default values.

Note: using a NULL to cause the library to use default values may result in undesirable behavior: the library uses 0 as a default value for the fifo_rx_flush_timeout, which will result in the client dropping the connection when the receive FIFO overflows. This can occur if there is no application on the client emptying the FIFO. Use a struct to send values to the library, including a value of 100 msec or more for the fifo_rx_flush_timeout.



A pointer to a variable specifying the requested serial loopback mode for the SOL session. Opening an SOL session in loopback mode will cause the remote client to loopback all serial data to itself, without sending it over the LAN. This is useful for testing and diagnostics use cases. If a loopback is requested but such a mode is not supported by the client, the variable pointed to by ‘loopback’ will be updated to be SOL_LOOPBACK_NONE. This parameter may be NULL, in which case no loopback is used.

Function Return Status

For a complete list of possible error codes, see Error Codes.


Value or Description


The command finished successfully.


The library has already opened an SOL session with the specified client.


The specified client already has an open SOL session with another application.


Command cannot complete until user consent sequence completes.

Copyright © 2006-2022, Intel Corporation. All rights reserved.