94 lines
3.8 KiB
Plaintext
94 lines
3.8 KiB
Plaintext
== Overview
|
|
|
|
=== About this manual
|
|
|
|
This manual should help you getting started with the osmo-remsim software.
|
|
|
|
It will cover aspects of configuration and running osmo-remsim as well as some
|
|
introduction about its internal architecture and external interfaces.
|
|
|
|
=== About osmo-remsim
|
|
|
|
osmo-remsim is a suite of software programs enabling physical/geographic
|
|
separation of a cellular phone (or modem) on the one hand side and the
|
|
SIM/USIM/ISIM card on the other side.
|
|
|
|
Using osmo-remsim, you can operate an entire fleet of modems/phones, as
|
|
well as banks of SIM cards and dynamically establish or remove the
|
|
connections between modems/phones and cards.
|
|
|
|
So in technical terms, it behaves like a proxy for the ISO 7816 smart
|
|
card interface between the MS/UE and the UICC/SIM/USIM/ISIM.
|
|
|
|
While originally designed to be used in context of cellular networks,
|
|
there is nothing cellular specific in the system. It can therefore also
|
|
be used with other systems that use contact based smart cards according
|
|
to ISO 7816. Currently only the T=0 protocol with standard
|
|
(non-extended) APDUs is supported. Both T=1 and extended APDU support
|
|
can easily be added as a pure software update, should it be required at
|
|
some future point.
|
|
|
|
=== Credits
|
|
|
|
osmo-remsim was originally developed by Harald Welte with contributions
|
|
by Kevin Redon. It builds on top of pre-existing infrastructure of
|
|
the Osmocom project, including the Osmocom SIMtrace project.
|
|
|
|
Development of osmo-remsim software was funded by GSMK and sysmocom.
|
|
|
|
=== osmo-remsim-server
|
|
|
|
The `osmo-remsim-server` is the central element of the osmo-remsim
|
|
architecture. All other elements connect to it. It maintains the
|
|
inventory of other network elements, as well as the list of
|
|
slot-mappings, i.e. the relationship between each given physical card
|
|
in a bank and each card emulator attached to a phone/modem.
|
|
|
|
The tasks of `osmo-remsim-server` include:
|
|
|
|
* accepting incoming TCP control connections from `osmo-remsim-client` and
|
|
`osmo-remsim-bankd` instances
|
|
* providing a RESTful JSON interface for external application logic to
|
|
|
|
=== osmo-remsim-client
|
|
|
|
The `osmo-remsim-client` software is co-located next to the _user of the card_
|
|
which traditionally is a phone or modem. However, there are other flavors
|
|
of clients available, too. This is for example useful if existing software
|
|
wants to interface remote smart cards, rather than those physically inserted
|
|
into a local reader next to the PC running that application.
|
|
|
|
In the classic phone / modem use case, osmo-remsim-client
|
|
typically runs on an [embedded] computer next to the phone/modem.
|
|
|
|
The tasks of `osmo-remsim-client` include:
|
|
|
|
* interaction with the user application. For phone/modem, that's
|
|
over USB with a device supported by the 'SIMtrace2 cardem'
|
|
firmware, which provides the physical interface to the phone/modem SIM
|
|
interface (ISO 7816-3).
|
|
* establishing a TCP connection with the `osmo-remsim-server`, in order to
|
|
enable the server to issue control commands
|
|
* under control of `osmo-remsim-server`, establishing a TCP connection to a
|
|
`osmo-remsim-bankd` in order to connect a card physically located at the
|
|
bankd.
|
|
|
|
`osmo-remsim-client` supports at this point only one phone/modem. If you have
|
|
multiple phones/modems at one location, you can simply run multiple
|
|
instances of `osmo-remsim-client` on the same system, one for each phone/modem.
|
|
|
|
=== osmo-remsim-bankd
|
|
|
|
The `osmo-remsim-bankd` software is co-located next to a bank of SIM cards.
|
|
|
|
The tasks of `osmo-remsim-bankd` include:
|
|
|
|
* interaction with the actual card reader hardware. At this point, only
|
|
PC/SC based readers are supported, with 1 to 255 slots per reader.
|
|
* establishing a TCP connection with the `osmo-remsim-server`, in order to
|
|
enable the server to issue control commands
|
|
* running a TCP server where TCP connections from `osmo-remsim-client`
|
|
instances are accepted and handled.
|
|
|
|
|