Patent Description:
In an embodiment, an Internet of things (IoT) devices wireless communication service enablement platform is disclosed. The IoT devices wireless communication service enablement platform comprises a non-transitory memory, a processor, and an IoT devices wireless communication service enablement application stored in the non-transitory memory. When executed by the processor, the IoT devices wireless communication service enablement application receives a rule set for enabling wireless communication service for a plurality of IoT devices, where the rule set associates a plurality of service codes to a matching plurality of wireless communication quality of service (QoS) levels to be provided to the IoT devices, receives a message from one of the IoT devices, where the message comprises information about a communication context of the IoT device, and receives a message from the one of the IoT devices, where the message comprises one of the service codes. The IoT devices wireless communication service enablement application further identifies a QoS level in the rule set that matches the service code received from the one of the IoT devices, determines an eSIM profile based on analyzing the information about the communication context of the IoT device and based on the QoS level that matches the service code received from the one of the IoT devices, and sends a command to activate the eSIM profile to the one of the IoT devices, whereby the one of the IoT devices is enabled to receive wireless communication service according to the QoS level that matches the service code sent by the one of the IoT devices.

In another embodiment, a method of enabling wireless communication service delivery to Internet of things (IoT) devices is disclosed. The method comprises receiving a rule set for enabling wireless communication service for a plurality of IoT devices by an IoT devices wireless communication service enablement application executing on a computer system, where the rule set associates a plurality of service codes to a matching plurality of wireless communication quality of service (QoS) levels to be provided to the IoT devices and receiving a message by the IoT devices wireless communication service enablement application from one of the IoT devices, where the message comprises one of the service codes. The method further comprises identifying by the IoT devices wireless communication service enablement application a QoS level in the rule set that matches the service code received from the one of the IoT devices, determining an eSIM profile by the IoT devices wireless communication service enablement application based on analyzing the information about the communication context of the IoT device and based on the QoS level that matches the service code received from the one of the IoT devices, and sending a command to activate the eSIM profile by the IoT devices wireless communication service enablement application to the one of the IoT devices, whereby the one of the IoT devices is enabled to receive communication service according to the QoS level that matches the service code sent by the one of the IoT devices.

Dependent claims define preferred embodiments.

It should be understood at the outset that although illustrative implementations of one or more embodiments are illustrated below, the disclosed systems and methods may be implemented using any number of techniques, whether currently known or not yet in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, but may be modified within the scope of the appended claims along with their full scope of equivalents.

Internet of things (IoT) devices are expected to find widespread application in many different industries and ultimately may count tens of billions of devices. An IoT device may be a wireless communication module that can be installed into another system or mounted to another system. In some cases, the IoT device may communicate with the system it is installed in, for example to send commands to the system and/or to collect data from the system and send the collected data to a data store or terminal via the wireless network. In other cases, however, the IoT device may not communicate with the system but simply track and report a location of the system it is attached to, for example a shipping container. It is thought that some corporations may desire to reap the benefits of IoT devices without taking on the burden of managing the complexities of the wireless communication services of those IoT devices as the communication needs (e.g., quality of service (QoS level)) of these IoT devices change and as the IoT devices transition out of a wireless communication service area of a first mobile network operator (MNO) and into the wireless communication service area of a second MNO.

The present disclosure teaches an Internet of things (IoT) devices wireless communication service management platform that is used to manage wireless communication service of IoT devices on behalf of an owner of the IoT devices. The platform may also be referred to as an IoT devices wireless communication service enabler platform. The owner of the IoT devices engages the service enabler to provide wireless communication service to the owner's IoT devices. The service enabler uses the IoT devices wireless communication service enabler platform to manage and provide appropriate wireless communication service coverage for the IoT devices as their context changes. This may involve the IoT devices moving across national boundaries and coming into and out of the service areas of different mobile network operators.

The service enabler platform can migrate profiles (e.g., eSIM profiles) of the loT devices transparently to the owner of the IoT devices. The service enabler platform automatically monitors the context of the IoT devices and commands them to activate a different eSIM profile as needed. This may involve commanding an IoT device to use a different international mobile subscriber identity (IMSI: a kind of phone number) in some cases. The IoT devices may transmit context data updates to the IoT devices wireless communication service enabler platform for use in deciding what eSIM profile to activate on the IoT devices. The service enabler platform may proactively uninstall a first plurality of eSIM profiles from an IoT device and install a second plurality of eSIM profiles into the IoT device prospectively, conjecturing that the IoT device will soon desirably be commanded to activate one of this second plurality of eSIM profiles.

Because IMSIs are limited and anchored to a specific MNO, it may be desirable that the service enabler establish wireless communication subscriptions with MNOs in a plurality of different regions, where each subscription is associated with a unique IMSI. As different IoT devices enter and leave the service area of an MNO, the service enabler platform may build a first eSIM profile having a first IMSI, provide the first eSIM profile to a first IoT device entering the service area of the first MNO, and make the first eSIM profile active on the first loT device, thereby enabling the first IoT device to communicate at least in part based on the first IMSI in the service area of the first MNO. As the first IoT device leaves the service area, the service enabler platform may build a second eSIM profile having a second IMSI associated with a second MNO, provide the second eSIM profile to the first IoT device entering the service area of the second MNO, and make the second eSIM profile active on the first IoT device, thereby enabling the first IoT device to communicate at least in part based on the second IMSI in the service area of the second MNO. The service enabler platform may build a third eSIM profile having the first IMSI (e.g., reusing the first IMSI), provide the third eSIM profile to a second IoT device entering the service area of the first MNO, and make the third eSIM profile active on the second device, thereby enabling the second IoT device to communicate at least in part based on the first IMSI in the service area of the first MNO. In this way the service enabler can maintain a pool of subscriptions in a plurality of different MNO service areas and share the wireless communication coverage among a plurality of IoT devices that may belong to a plurality of different owners. This can create efficiencies for the IoT owners who might otherwise be obliged to maintain an excess pool of subscriptions.

In an embodiment, IoT device owners may use an interface provided by the service enabler platform to define rule sets for providing appropriate communication services to the IoT devices. Each different IoT device owner may define its own rule set or even a plurality of different rule sets. When registering IoT devices with the service enabler platform, the IoT device owner indicates what rule set pertains to each of the IoT devices. The service enabler platform then enables wireless communication service for the IoT devices in accordance with the rules.

A rule in a rule set may define a correspondence between a service code and a quality of service (QoS) level. The IoT device may communicate with the service enabler platform and send a service code based on a current desired communication function. The service enabler platform may then look up the QoS level that matches to the specified service code in the rule set to which the subject IoT device is associated. The service enabler platform may then determine what eSIM profile would provide the designated QoS level to the IoT device, build the eSIM profile, send the eSIM profile to the IoT device, and command the IoT device to activate the eSIM profile. Alternatively, if the IoT device is already provisioned with the subject eSIM profile, the IoT devices wireless communication service enabler may not send the eSIM profile but simply command the IoT device to make the subject eSIM profile active.

The IoT devices may collect data on their communication environment or communication context and transmit that data to the service enabler platform. The communication context data may include a location of the IoT device. The communication context data may include identities of MNO coverages detected. The communication context data may include signal strength of MNO coverages detected. The communication context data may include weather information, for example precipitation information. The service enabler platform may determine the content of eSIM profiles that it builds in part based on the QoS level requested by the IoT devices as well as in part based on the reports of the communication contexts of the IoT devices.

The IoT devices wireless communication service management platform may be used by a third party to provide a service offering to IoT devices owners, such as an enterprise that uses IoT devices in conducting its business. The IoT devices wireless communication service management platform may be used by a mobile network operator to manage IoT wireless communication connectivity on behalf of its subscriber customers. The IoT devices wireless communication service management platform may be used by an owner of IoT devices, for example an enterprise, to manage the wireless communication connectivity of its own IoT devices. Hence, the service enabler spoken of above may be an employee, a contractor, or team associated with a third party services company, a MNO, or an enterprise.

Turning now to <FIG>, a communication system <NUM> is described. In an embodiment, the system <NUM> comprises an Internet of things (IoT) device wireless communication module (henceforth an IoT device) <NUM> that comprises a processor <NUM>, a memory <NUM>, an embedded universal integrated circuit card (eUICC) <NUM>, and a cellular radio transceiver <NUM>. The IoT device <NUM> may establish a wireless communication link with a cell site <NUM> according to a <NUM>, a long term evolution (LTE), a code division multiple access (CDMA), or a global system for mobile communications (GSM) telecommunication protocol. The cell site <NUM> may communicatively link the IoT device <NUM> to a network <NUM> and via the network <NUM> to a monitoring system <NUM>. The system <NUM> may comprise any number of IoT devices <NUM>, any number of cell sites <NUM>, and any number of monitoring systems <NUM>. The network <NUM> comprises one or more private networks, one or more public networks, or a combination thereof.

The IoT device <NUM> may be associated with another object such as an appliance, a container, a vehicle, a parcel, or other object. The IoT device <NUM> may interact with the object to which it is associated in various ways. It can provide commands or configuration data to the object, for example commands or configuration data sent to the loT device <NUM> by a monitoring system <NUM> to which the loT device <NUM> is associated. The monitoring systems <NUM> may be implemented as a computer. Computer systems are described further hereinafter.

The loT device <NUM> can provide reporting data from the object to which it is associated back to the monitoring system <NUM> to which it is associated. This may permit an owner of the loT devices <NUM> and of the objects to which the loT devices <NUM> are associated to monitor and/or control the objects. It is understood that the loT devices <NUM> may be owned by a variety of different and possibly unaffiliated owners and/or businesses. Each owner of loT devices <NUM> may operate their own independent monitoring system <NUM> whereby to monitor and control their own IoT devices <NUM> and the objects to which they are associated. The monitoring and controlling of the loT devices <NUM> and/or the objects to which they are associated may be thought of as an application layer functionality that is carried out on top of or by virtue of the communication layers under that application layer functionality.

The system <NUM> further comprises an loT devices wireless communication service enablement platform (henceforth service enablement platform) <NUM> communicatively coupled to the network <NUM> that executes an loT devices wireless communication service enablement application (henceforth service enablement application) <NUM>. The service enablement platform <NUM> may be implemented by a computer. Computer systems are described further hereinafter. The service enablement application <NUM> interworks with the loT devices <NUM> to enable the loT devices <NUM> to obtain wireless communication service from the cell sites <NUM>. In some cases, the service enablement application <NUM> may accomplish this, for example, by commanding one of the loT devices <NUM> to activate an eSIM profile <NUM> that is already stored in the eUICC <NUM> of the subject loT device <NUM>, where the eSIM profile <NUM> is selected based on a current communication context of the loT device <NUM>. In some cases, the service enablement application may enable the loT device <NUM> to obtain wireless communication service from the cell sites <NUM> by building an eSIM profile <NUM>, sending the eSIM profile <NUM> to the loT device <NUM>, and commanding the loT device <NUM> to store and to make the subject eSIM profile <NUM> active in its eUICC <NUM>.

The system <NUM> may further comprise a plurality of workstations <NUM>. The workstations <NUM> may be desktop computers, laptop computers, notebook computers, tablet computers, a combination of these different kinds of computers, or another kind of computer. The workstations <NUM> are able to communicate via the network <NUM> to the service enablement application <NUM> and to present a user interface provided by the service enablement application <NUM> to a human user of the workstation <NUM>. The workstations <NUM> are able through this user interface to register loT devices <NUM> with the service enablement platform <NUM> and to define wireless communication service enablement rules. These rules identify the wireless communication service that the owner of the loT devices <NUM> want their loT devices <NUM> to receive from the cell sites <NUM>.

As the loT device <NUM> and the object to which it is associated move about, the mobile network operators (MNOs) who own the cell sites <NUM> providing wireless communication service coverage to the loT device <NUM> may change. Said in other words, as the loT device <NUM> and the object to which it is associated move about, the loT device <NUM> may leave the service area of a first MNO and enter the service area of a second and different MNO. In this case, to receive service from the second MNO, the loT device <NUM> may need to activate a different eSIM profile <NUM> stored in its eUICC <NUM> and/or download a different eSIM profile <NUM>, store it in the eUICC <NUM>, and make that downloaded eSIM profile <NUM> active. The service enablement application <NUM> may monitor the location of the loT devices <NUM>, determine when an loT device <NUM> is leaving a coverage area of a first MNO and entering the coverage area of a second MNO, and command the loT device <NUM> to deactivate an eSIM profile <NUM> associated with the first MNO and activate an eSIM profile <NUM> associated with the second MNO.

In some circumstances, the eUICC <NUM> of the subject loT device <NUM> may store a plurality of eSIM profiles <NUM>, and the service enablement application <NUM> only commands the loT device <NUM> to swap the active eSIM profile <NUM>. In other circumstances, the eUICC <NUM> of the subject loT device <NUM> does not store an eSIM profile <NUM> suitable for obtaining wireless communication service in the coverage area of the second MNO. In this case the service enablement application <NUM> may build an eSIM profile <NUM> suitable for obtaining service in the coverage area of the second MNO, send the eSIM profile <NUM> it built to the loT device <NUM>, command the loT device <NUM> to store the eSIM profile <NUM> it built in the eUICC <NUM> of the loT device <NUM>, and make the eSIM profile <NUM> it built active in the eUICC <NUM>.

An eSIM profile <NUM> comprises one or more of radio access network access credentials, a phone number or an international mobile subscriber identity (IMSI), a preferred roaming list (PRL), one or more access point names (APNs), branding information, executable applications, and other data artifacts. An eSIM profile adapter application <NUM> of the loT device <NUM> may moderate the downloading of eSIM profiles <NUM> into the eUICC <NUM> and deleting disused eSIM profiles <NUM> out of the eUICC <NUM>. The ESIM profile adapter application <NUM> (eSIM adapter <NUM> to be concise) may provide data from the active eSIM profile <NUM> to the cellular radio transceiver <NUM> on request, for example when the cellular radio transceiver <NUM> and/or a radio modem of the cellular radio transceiver <NUM> reboots or powers on. The cellular radio transceiver <NUM> may use the phone number/IMSI, the network access credentials, the APNs, and the PRL to obtain a wireless communication link with the cell sites <NUM>.

Turning now to <FIG>, an example rule set <NUM> is described. In an embodiment, the rule set <NUM> comprises a plurality of rules that define for the service enablement application <NUM> the wireless communication service desired by the owner of one or more IoT devices <NUM>. The rule set <NUM> may be associated with a defined set of IoT devices <NUM>, for example a list <NUM> of identities of IoT devices <NUM>. The list <NUM> may comprise a first loT device identity <NUM>, a second loT device identity <NUM>, and a third loT device identity <NUM>. It is understood that the list <NUM> may comprise any number of identities of IoT devices <NUM>. The identity of loT devices may be specified by a mobile equipment identity (MEID), by an electronic serial number (ESN), by an embedded universal integrated circuit card identity (EID), or by another identity. The rules may be defined in any way. The rules may define a communication profile or communication policy to be provided for all the loT devices <NUM> associated with the subject rule set <NUM>.

In an embodiment, the rules comprise associations of service codes to quality of service (QoS) levels. For example, a first rule <NUM> associates a first service code <NUM> to a first QoS level <NUM>, a second rule <NUM> associations a second service code <NUM> to a second QoS level <NUM>, and a third rule <NUM> associates a third service code <NUM> to a third QoS level <NUM>. It is understood that the rule set <NUM> may comprise any number of different rules. QoS levels may define a minimum data throughput rate supported by the QoS level. QoS levels may define a priority of access supported by the QoS level. QoS levels may define a reliability supported by the QoS level. QoS levels may define a maximum jitter supported by the QoS level. QoS levels may define a maximum latency supported by the QoS level. QoS levels may define network services supported by the QoS level. QoS levels may define an asymmetrical data throughput service such as high uplink data flow rate and low downlink data flow rate or low uplink data flow rate and high downlink data flow rate.

With reference now to both <FIG> and <FIG>, the loT device <NUM>, for example the ESIM profile adapter application <NUM> or another application executing on the loT device <NUM>, may collect and monitor a communication environment of the loT device <NUM>. Information about the communication environment may comprise a location of the loT device, identities of cell sites <NUM> that the cellular radio transceiver <NUM> detects, signal strengths of the detected cell sites, weather conditions such as precipitation. The loT device <NUM> may send the information about the communication environment of the loT device <NUM> to the service enablement application <NUM>. The service enablement application <NUM> can use the information about the communication environment of the loT device <NUM> to determine what eSIM profile <NUM> the loT device <NUM> ought to make active. For example, the location of the loT device <NUM> may be used by the service enablement application <NUM> to determine that the loT device <NUM> is leaving the service area of a first MNO and is entering the service area of a second MNO, and hence the service enablement application <NUM> may send a new eSIM profile <NUM> to the loT device <NUM> to store in its eUICC <NUM> and to activate, whereby the loT device <NUM> is enabled to obtain wireless communication service in the service area of the second MNO.

The loT device <NUM>, for example the ESIM profile adapter application <NUM> or another application executing on the loT device <NUM>, may monitor its own location and determine a service code that corresponds to its current wireless communication service needs. For example, an loT device <NUM> coupled to a container on a container ship in the middle of the Atlantic Ocean may not desire to communicate often or at a high data throughput rate with a monitoring station <NUM> associated with the loT device <NUM>. This same loT device <NUM>, when the container ship is <NUM> miles from the destination port of the container, may desire to communicate with high priority at a high data throughput rate. The loT device <NUM> can transmit a service code that it has selected to the service enablement application <NUM>. The service enablement application <NUM> can map this service code, based on the rules set <NUM> applicable to that loT device <NUM> based on the identity of that loT device <NUM>, and select an eSIM profile <NUM> that can provide the QoS level to which the service code transmitted by the loT device <NUM> matches. If the subject eSIM profile <NUM> is stored in the eUICC <NUM> of the loT device <NUM>, the service enablement application <NUM> may command the loT device <NUM> to activate that eSIM profile <NUM>. Alternatively, the service enablement application <NUM> may build a suitable eSIM profile <NUM>, based on the QoS level that matches the service code sent by the loT device <NUM>, send the eSIM profile <NUM> it built to the loT device <NUM>, and command the loT device <NUM> to store the eSIM profile <NUM> it built in the eUICC <NUM> and make the eSIM profile <NUM> it built active.

In an embodiment, the service enablement application <NUM> may be provided a travel itinerary of the loT device <NUM>, for example by the workstation <NUM> at the same time it provides the rule set <NUM>. The service enablement application <NUM> may analyze the travel itinerary of the loT device <NUM> and preload a plurality of suitable eSIM profiles <NUM> into the eUICC <NUM> of the loT device <NUM>. The preloading of eSIM profiles <NUM> by the service enablement application <NUM> to the eUICC <NUM> of the loT device <NUM> can be done at a time when the loT device <NUM> has network connectivity (cellular wireless coverage, WiFi wireless coverage, or other wireless coverage) available, thereby avoiding the eventuality that when the loT device <NUM> might desirably be provided with a different eSIM profile <NUM> at its time of need it cannot be received due to a lack of wireless connectivity. The service enablement application <NUM> may still be able to push through a command to the loT device <NUM> to switch to a different preloaded eSIM profile <NUM>, although wireless connectivity is poor, because the eSIM switch command message may be relatively small in comparison to the size of the eSIM profile <NUM> itself. In an embodiment, the eSIM profile adapter <NUM> may itself select an eSIM profile <NUM> and activate it based on a service code it has generated. In support of this, the service enablement application <NUM> may associate a service code with each of the different eSIM profiles <NUM> that it preloads in the eUICC <NUM>.

The service enablement application <NUM> may analyze the information received from the loT device <NUM> about its communication environment in order to determine the contents of the eSIM profile <NUM> that will provide the QoS level designated by the service code sent by the loT device <NUM>. Providing the same QoS level in different communication environments may entail different eSIM profiles <NUM>. This may be because the different MNOs have different communication services, different reliability levels, and/or different coverages.

The loT device <NUM> may be addressed using a phone number or international mobile subscriber identity (IMSI). These numbers are a limited resource. The service enablement application <NUM> may maintain a plurality of wireless communication service subscription accounts with each of a plurality of MNOs. As one of the loT devices <NUM> supported by the service enablement application <NUM> enters the service area of a first MNO, the service enablement application <NUM> may build a first eSIM profile comprising a first IMSI associated with the first MNO. The first IMSI may be one of <NUM> IMSIs associated with <NUM> different subscription accounts the service enablement application <NUM> maintains with the first MNO. The service enablement application <NUM> may send the first eSIM profile <NUM> comprising the first IMSI to the loT device <NUM> and command it to store the first eSIM profile <NUM> in its eUICC <NUM> and to activate the first eSIM profile <NUM>. Later, as the loT device <NUM> is leaving the service area of the first MNO, the service enablement application <NUM> may build a second eSIM profile comprising a second IMSI associated with the second MNO. The second IMSI may be one of <NUM> IMSIs associated with <NUM> different subscription accounts the service enablement application <NUM> maintains with the second MNO. The service enablement application <NUM> may send the second eSIM profile <NUM> comprising the second IMSI to the loT device <NUM> and command it to store the second eSIM profile <NUM> in its eUlCC <NUM> and to activate the second eSIM profile <NUM>. At the same time, the service enablement application <NUM> can recover and reuse the first IMSI associated with the first MNO for use with a different loT device <NUM> that may be entering the service area of the first MNO.

The service enablement application <NUM> may maintain a set of aliases in the data store <NUM> that associates identities of loT devices <NUM> to an IMSI currently associated to each of the loT devices <NUM>. Thus, when the eSIM profile <NUM> comprising the first IMSI is made active in the loT device <NUM>, the service enablement application <NUM> destroys an entry in the aliases <NUM> that associates the identity of the subject loT device <NUM> with another IMSI and creates an entry associating the identity of the subject loT device <NUM> with the first IMSI. Alternatively, the service enablement application <NUM> simply updates the previous entry for the identity of the loT device <NUM> to associate that identity to the first IMSI. Later, when the same loT device <NUM> is activated to the second eSIM profile <NUM> comprising the second IMSI, the service enablement application <NUM> may replace or update the entry in the aliases associated with the identity of the subject loT device <NUM>, to then associate the identity of the subject loT device <NUM> to the second IMSI. Thus, to communicate with the loT device <NUM>, the service enablement application uses the unchanging identity of the loT device <NUM> to look up the IMSI temporarily assigned to the loT device <NUM>, and then uses the IMSI to communicate with the loT device <NUM>. In an embodiment, the service enablement application <NUM> provides an API to the monitoring systems <NUM> to obtain the current IMSI of IoT devices <NUM> whereby the monitoring systems <NUM> are able to communicate with its loT devices <NUM> as their IMSIs change over time.

Turning now to <FIG>, a method <NUM> is described. In an embodiment, the method <NUM> is a method of enabling wireless communication service delivery to Internet of things (IoT) devices. At block <NUM>, the method <NUM> comprises receiving a rule set for enabling wireless communication service for a plurality of loT devices by an loT devices wireless communication service enablement application executing on a computer system, where the rule set associates a plurality of service codes to a matching plurality of wireless communication quality of service (QoS) levels to be provided to the loT devices.

At block <NUM>, the method <NUM> comprises receiving a message by the loT devices wireless communication service enablement application from one of the loT devices, where the message comprises one of the service codes. At block <NUM>, the method <NUM> comprises identifying by the loT devices wireless communication service enablement application a QoS level in the rule set that matches the service code received from the one of the loT devices.

At block <NUM>, the method <NUM> comprises determining an eSIM profile by the loT devices wireless communication service enablement application based on analyzing the information about the communication context of the loT device and based on the QoS level that matches the service code received from the one of the loT devices. At block <NUM>, the method <NUM> comprises sending a command to activate the eSIM profile by the loT devices wireless communication service enablement application to the one of the loT devices, whereby the one of the loT devices is enabled to receive communication service according to the QoS level that matches the service code sent by the one of the loT devices.

<FIG> illustrates a computer system <NUM> suitable for implementing one or more embodiments disclosed herein. The computer system <NUM> includes a processor <NUM> (which may be referred to as a central processor unit or CPU) that is in communication with memory devices including secondary storage <NUM>, read only memory (ROM) <NUM>, random access memory (RAM) <NUM>, input/output (I/O) devices <NUM>, and network connectivity devices <NUM>. The processor <NUM> may be implemented as one or more CPU chips.

It is understood that by programming and/or loading executable instructions onto the computer system <NUM>, at least one of the CPU <NUM>, the RAM <NUM>, and the ROM <NUM> are changed, transforming the computer system <NUM> in part into a particular machine or apparatus having the novel functionality taught by the present disclosure. It is fundamental to the electrical engineering and software engineering arts that functionality that can be implemented by loading executable software into a computer can be converted to a hardware implementation by well-known design rules. Decisions between implementing a concept in software versus hardware typically hinge on considerations of stability of the design and numbers of units to be produced rather than any issues involved in translating from the software domain to the hardware domain. Generally, a design that is still subject to frequent change may be preferred to be implemented in software, because re-spinning a hardware implementation is more expensive than re-spinning a software design. Generally, a design that is stable that will be produced in large volume may be preferred to be implemented in hardware, for example in an application specific integrated circuit (ASIC), because for large production runs the hardware implementation may be less expensive than the software implementation. Often a design may be developed and tested in a software form and later transformed, by well-known design rules, to an equivalent hardware implementation in an application specific integrated circuit that hardwires the instructions of the software. In the same manner as a machine controlled by a new ASIC is a particular machine or apparatus, likewise a computer that has been programmed and/or loaded with executable instructions may be viewed as a particular machine or apparatus.

Additionally, after the system <NUM> is turned on or booted, the CPU <NUM> may execute a computer program or application. For example, the CPU <NUM> may execute software or firmware stored in the ROM <NUM> or stored in the RAM <NUM>. In some cases, on boot and/or when the application is initiated, the CPU <NUM> may copy the application or portions of the application from the secondary storage <NUM> to the RAM <NUM> or to memory space within the CPU <NUM> itself, and the CPU <NUM> may then execute instructions that the application is comprised of. In some cases, the CPU <NUM> may copy the application or portions of the application from memory accessed via the network connectivity devices <NUM> or via the I/O devices <NUM> to the RAM <NUM> or to memory space within the CPU <NUM>, and the CPU <NUM> may then execute instructions that the application is comprised of. During execution, an application may load instructions into the CPU <NUM>, for example load some of the instructions of the application into a cache of the CPU <NUM>. In some contexts, an application that is executed may be said to configure the CPU <NUM> to do something, e.g., to configure the CPU <NUM> to perform the function or functions promoted by the subject application. When the CPU <NUM> is configured in this way by the application, the CPU <NUM> becomes a specific purpose computer or a specific purpose machine.

The secondary storage <NUM> is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if RAM <NUM> is not large enough to hold all working data. Secondary storage <NUM> may be used to store programs which are loaded into RAM <NUM> when such programs are selected for execution. The ROM <NUM> is used to store instructions and perhaps data which are read during program execution. ROM <NUM> is a non-volatile memory device which typically has a small memory capacity relative to the larger memory capacity of secondary storage <NUM>. The RAM <NUM> is used to store volatile data and perhaps to store instructions. Access to both ROM <NUM> and RAM <NUM> is typically faster than to secondary storage <NUM>. The secondary storage <NUM>, the RAM <NUM>, and/or the ROM <NUM> may be referred to in some contexts as computer readable storage media and/or non-transitory computer readable media.

I/O devices <NUM> may include printers, video monitors, liquid crystal displays (LCDs), touch screen displays, keyboards, keypads, switches, dials, mice, track balls, voice recognizers, card readers, paper tape readers, or other well-known input devices.

The network connectivity devices <NUM> may take the form of modems, modem banks, Ethernet cards, universal serial bus (USB) interface cards, serial interfaces, token ring cards, fiber distributed data interface (FDDI) cards, wireless local area network (WLAN) cards, radio transceiver cards, and/or other well-known network devices. The network connectivity devices <NUM> may provide wired communication links and/or wireless communication links (e.g., a first network connectivity device <NUM> may provide a wired communication link and a second network connectivity device <NUM> may provide a wireless communication link). Wired communication links may be provided in accordance with Ethernet (IEEE <NUM>), Internet protocol (IP), time division multiplex (TDM), data over cable service interface specification (DOCSIS), wavelength division multiplexing (WDM), and/or the like. In an embodiment, the radio transceiver cards may provide wireless communication links using protocols such as code division multiple access (CDMA), global system for mobile communications (GSM), long-term evolution (LTE), WiFi (IEEE <NUM>), Bluetooth, Zigbee, narrowband Internet of things (NB loT), near field communications (NFC), radio frequency identity (RFID). The radio transceiver cards may promote radio communications using <NUM>, <NUM> New Radio, or <NUM> LTE radio communication protocols. These network connectivity devices <NUM> may enable the processor <NUM> to communicate with the Internet or one or more intranets. With such a network connection, it is contemplated that the processor <NUM> might receive information from the network, or might output information to the network in the course of performing the above-described method steps. Such information, which is often represented as a sequence of instructions to be executed using processor <NUM>, may be received from and outputted to the network, for example, in the form of a computer data signal embodied in a carrier wave.

Such information, which may include data or instructions to be executed using processor <NUM> for example, may be received from and outputted to the network, for example, in the form of a computer data baseband signal or signal embodied in a carrier wave. The baseband signal or signal embedded in the carrier wave, or other types of signals currently used or hereafter developed, may be generated according to several methods well-known to one skilled in the art. The baseband signal and/or signal embedded in the carrier wave may be referred to in some contexts as a transitory signal.

The processor <NUM> executes instructions, codes, computer programs, scripts which it accesses from hard disk, floppy disk, optical disk (these various disk based systems may all be considered secondary storage <NUM>), flash drive, ROM <NUM>, RAM <NUM>, or the network connectivity devices <NUM>. While only one processor <NUM> is shown, multiple processors may be present. Thus, while instructions may be discussed as executed by a processor, the instructions may be executed simultaneously, serially, or otherwise executed by one or multiple processors. Instructions, codes, computer programs, scripts, and/or data that may be accessed from the secondary storage <NUM>, for example, hard drives, floppy disks, optical disks, and/or other device, the ROM <NUM>, and/or the RAM <NUM> may be referred to in some contexts as non-transitory instructions and/or non-transitory information.

In an embodiment, the computer system <NUM> may comprise two or more computers in communication with each other that collaborate to perform a task. For example, but not by way of limitation, an application may be partitioned in such a way as to permit concurrent and/or parallel processing of the instructions of the application. Alternatively, the data processed by the application may be partitioned in such a way as to permit concurrent and/or parallel processing of different portions of a data set by the two or more computers. In an embodiment, virtualization software may be employed by the computer system <NUM> to provide the functionality of a number of servers that is not directly bound to the number of computers in the computer system <NUM>. For example, virtualization software may provide twenty virtual servers on four physical computers. In an embodiment, the functionality disclosed above may be provided by executing the application and/or applications in a cloud computing environment. Cloud computing may comprise providing computing services via a network connection using dynamically scalable computing resources. Cloud computing may be supported, at least in part, by virtualization software. A cloud computing environment may be established by an enterprise and/or may be hired on an as-needed basis from a third party provider. Some cloud computing environments may comprise cloud computing resources owned and operated by the enterprise as well as cloud computing resources hired and/or leased from a third party provider.

In an embodiment, some or all of the functionality disclosed above may be provided as a computer program product. The computer program product may comprise one or more computer readable storage medium having computer usable program code embodied therein to implement the functionality disclosed above. The computer program product may comprise data structures, executable instructions, and other computer usable program code. The computer program product may be embodied in removable computer storage media and/or non-removable computer storage media. The removable computer readable storage medium may comprise, without limitation, a paper tape, a magnetic tape, magnetic disk, an optical disk, a solid state memory chip, for example analog magnetic tape, compact disk read only memory (CD-ROM) disks, floppy disks, jump drives, digital cards, multimedia cards, and others. The computer program product may be suitable for loading, by the computer system <NUM>, at least portions of the contents of the computer program product to the secondary storage <NUM>, to the ROM <NUM>, to the RAM <NUM>, and/or to other non-volatile memory and volatile memory of the computer system <NUM>. The processor <NUM> may process the executable instructions and/or data structures in part by directly accessing the computer program product, for example by reading from a CD-ROM disk inserted into a disk drive peripheral of the computer system <NUM>. Alternatively, the processor <NUM> may process the executable instructions and/or data structures by remotely accessing the computer program product, for example by downloading the executable instructions and/or data structures from a remote server through the network connectivity devices <NUM>. The computer program product may comprise instructions that promote the loading and/or copying of data, data structures, files, and/or executable instructions to the secondary storage <NUM>, to the ROM <NUM>, to the RAM <NUM>, and/or to other non-volatile memory and volatile memory of the computer system <NUM>.

In some contexts, the secondary storage <NUM>, the ROM <NUM>, and the RAM <NUM> may be referred to as a non-transitory computer readable medium or a computer readable storage media. A dynamic RAM embodiment of the RAM <NUM>, likewise, may be referred to as a non-transitory computer readable medium in that while the dynamic RAM receives electrical power and is operated in accordance with its design, for example during a period of time during which the computer system <NUM> is turned on and operational, the dynamic RAM stores information that is written to it. Similarly, the processor <NUM> may comprise an internal RAM, an internal ROM, a cache memory, and/or other internal non-transitory storage blocks, sections, or components that may be referred to in some contexts as non-transitory computer readable media or computer readable storage media.

While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted or not implemented.

Claim 1:
An Internet of things, IoT, devices wireless communication service enablement platform (<NUM>), comprising:
a non-transitory memory;
a processor; and
an IoT devices wireless communication service enablement application (<NUM>) stored in the non-transitory memory that, when executed by the processor:
receives a rule set for enabling wireless communication service for a plurality of IoT devices, where the rule set associates a plurality of service codes to a matching plurality of wireless communication quality of service, QoS, levels to be provided to the loT devices,
receives a message from one of the loT devices, where the message comprises information about a communication context of the loT device,
receives a message from the one of the loT devices, where the message comprises one of the service codes,
identifies a QoS level in the rule set that matches the service code received from the one of the loT devices,
determines an eSIM profile based on analyzing the information about the communication context of the loT device and based on the QoS level that matches the service code received from the one of the loT devices, and
sends a command to activate the eSIM profile to the one of the IoT devices, whereby the one of the loT devices is enabled to receive wireless communication service according to the QoS level that matches the service code sent by the one of the loT devices.