== simtrace2-remsim-client The client interfaces with GSM phones / modems via dedicated "Card Emulation" devices such as the Osmocom SIMtrace2 or sysmocom sysmoQMOD board + firmware. This hardware implements the ISO7816-3 electrical interface and protocol handling and passes any TPDU headers received from the phone/modem to `remsim-client` for further processing of the TPDUs associated to the given APDU transfer. `remsim-client` connects via a RSPRO control connection to remsim-server at startup and registers itself. It will receive configuration data such as the `remsim-bankd` IP+Port and the ClientId from remsim-server. After receiving the configuration, `remsim-client` will establish a RSPRO data connection to the `remsim-bankd` IP:Port. As the USB interface for remote SIM in simtrace2.git uses one interface per slot, we can implement the client in blocking mode, i.e. use blocking I/O on the TCP/RSPRO side. This simplifies the code compared to a more complex async implementation. === Running simtrace2-remsim-client currently has the following command-line options: ==== SYNOPSIS *simtrace2-remsim-client* [...] ==== OPTIONS *-h, --help*:: Print a short help message about the supported options *-s, --server-host A.B.C.D*:: Specify the remote IP address / hostname of the remsim-server to which this client shall establish its RSPRO control connection *-p, --server-port <1-65535>*:: Specify the remote TCP port number of the remsim-server to which this client shall establish its RSPRO control connection *-c, --client-id <1-65535>*:: Specify the numeric client identifier of the SIM bank this bankd instance operates. The tuple of client-id and client-slot must be unique among all clients connecting to the same remsim-server. *-n, --client-slot <0-65535>*:: Specify the slot number served within this client. The tuple of client-id and client-slot must be unique among all clients connecting to the same remsim-server. *-i, --gsmtap-ip A.B.C.D*:: Specify the IP address (if any) to which APDU traces are sent in GSMTAP format (useful for debugging; supported by wireshark). *-k, --keep-running*:: Specify if the remsim-client should terminate after handling one session, or whether it should keep running. Fast respawn (i.e. no --keep-running) is probably the more robust option at this point. *-V, --usb-vendor*:: Specify the USB Vendor ID of the USB device served by this client, use e.g. 0x1d50 for SIMtrace2, sysmoQMOD and OWHW. *-P, --usb-product*:: Specify the USB Product ID of the USB device served by this client, use e.g. 0x4004 for sysmoQMOD. *-C, --usb-config*:: Specify the USB Cofiguration number of the USB device served by this client. Default will use current configuration of the device. *-I, --usb-interface*:: Specify the USB Interface number (within active configuration) of the USB device served by this client. Default will use FIXME. *-S, --usb-altsetting*:: Specify the USB Alternate Setting to be used within the USB Interface of the USB device served by this client. Default will use FIXME. *-A, --usb-address <0-255>*:: Specify the USB Address of the USB device served by this client. This is useful in case multiple identical USB devices are attached to the same host. However, the address changed at every re-enumeration and it's therefor recommended to use the USB path (see below). *-H, --usb-path*:: Specify the USB path of the USB device served by this client. This is usefule to disambiguate between multiple identical USB devices attached to the same host. You don't need this if you have only one SIM emulation device attached to your system. *-a, --atr HEXSTRING*:: Specify the initial ATR to be communicated to the modem/phone. Can and will later be overridden by the ATR as specified by remsim-bankd once a card has been mapped to this client. === Logging remsim-client currently logs to stdout only, and the logging verbosity is not yet configurable. However, as the libosmocore logging framework is used, extending this is an easy modification.