This page describes the licensing process for MiraOS, and includes implementation suggestions for production.
All functionalities are not implemented in the current release, which is indicated here when appropriate. Essential functionality is implemented.
A MiraOS license is a cryptographic digital signature specific to a particular hardware device.
MiraOS verifies the signature at initialization.
The license is built on a chain of trust.
The license is stored in non-volatile memory in the device.
MiraOS refuses to operate if the license verification fails.
Example of typical licensing equipment in production
Supplied by LumenRadio¶
License Generator: a USB connected hardware device that can generate licenses.
LumenRadio License Cloud: an Internet service that automates license reporting and refills depleted License Generators. Note: This is not part of the current release. As an alternative, depleted License generators need to be physically replaced.
LumenRadio Sync Service – a service that coordinates the License Generator with the License Cloud. Note: This is not part of the current release. As a temporary alternative, License Generator status needs to be reported manually.
Supplied by production line¶
Device under production (DUP): the unit being produced, requiring a MiraOS license.
Production computer: runs programming tools and production tests.
Licensing computer: generates licenses for DUPs. This computer may be the same as the production computer, as shown in the example above.
Customer production software: performs programming and testing.
The License Generator is a hardware device connected via USB to a licensing computer in production. Use the provided licensing tool on this computer to communicate with the License Generator.
The License Generator is required to:
- Generate a license for a device connected to the computer.
- Generate a license for a device ID provided as a parameter to the tool.
- Create a license report containing the amount of generated and remaining licenses for the License Generator.
- Refill the granted amount of licenses for the License Generator. Note: This is not part of this release.
- Memory of the last 16 (at least) device IDs, for which a license was generated. The purpose is to allow several license generations for the same device ID, without consuming the granted amount of licenses.
Use the provided script licensing tool to communicate with the License Generator.
The licensing tool supports the following features:
- Generate a report including the number of licenses that this License Generator may generate.
- Request the device ID from a connected DUP.
- Generate a license file for a DUP connected to the computer.
- Generate a license file for a Device ID provided as a hex string.
- Flash a license to a DUP, from a provided license file.
- Generate and flash a license to a DUP connected to the computer, in one step.
Internet access and License Cloud¶
The License Generator has permission to generate a given number of licenses. When it has consumed its granted number of licenses, it must be refilled. The License Cloud allows for refilling remotely via Internet.
The granted amount of licenses on a License Generator should allow for continued production in the event of loss of Internet access to the License Cloud.
The Sync Service periodically connects to the License Cloud, and reports the number of licenses generated by the License Generator. It also refills the granted amount of licenses from the License Cloud to the License Generator, if necessary.
Note: License Cloud not implemented in this release. As an alternative, it must be manually refilled by LumenRadio.
MiraOS checks the license validity on the running device at initialization, and stops execution after 10 seconds if invalid.
The validity status of the license is available earlier than that, and can be checked on the DUP through the license API.
One step licensing process description¶
This section describes how the licensing tool and License Generator perform licensing in one step. Some of these steps may be replaced by alternatives with file input or output, allowing to split this process into several steps.
The licensing tool reads the device ID from the DUP.
The licensing tool sends the device ID to the License Generator.
License Generator generates the license (1.5 to 3 seconds).
License Generator increases its counter of generated licenses.
The licensing tool writes the license data into the DUP's non-volatile memory, at the location specified to the licensing tool. Before doing so, it pads the memory area to reach the specified length, and adds required fields as well as the required CRC.
Note: the memory at the specified location may not be altered after writing.
MiraOS verifies the license's validity at initialization.
a. If the verification is successful, the firmware continues to run.
b. If it is unsuccessful, the device restarts after a delay of 10 seconds.
The license verification status is available through the license API, to allow for detecting invalid licenses before the 10 seconds delay.
Production process examples¶
License generation in one step¶
Example of one step license generation in one step in production
The production line generates and programs the license for the DUP at the same time as test and programming.
Use the licensing tool to generate and flash the license for the DUP in one step. This process executes several internal steps as described in One step licensing process description, and may take 5 to 10 seconds from reading the device ID to MiraOS validating the license.
License generation in parallel¶
Example of parallel license generation in production line
Splitting the one step licensing process into several steps allows for license generation to run in parallel to other production steps.
- The licensing tool on the production computer reads the device ID from the DUP. This is ideally performed as soon as possible and necessary on the production line. It does not require a MiraOS firmware on the DUP.
- This production computer sends the device ID to a licensing computer with a License Generator. The licensing computer may be the same as the production computer, or another one, for example communicating via a database for device ID/licenses.
- The licensing computer generates a license file for the requested device ID.
- Production steps may continue while the license is being generated.
- The production computer receives the license from the licensing computer, and flashes it to the DUP with the licensing tool.
Current state of services¶
The current release does not implement the Sync Service or the License Cloud. LumenRadio will instead provide License Generators with a pre-loaded, large number of licenses to allow for several months of production. For details please get in touch with your LumenRadio sales manager.
Monthly, a qualified production technician needs to manually connect to the License Generator and request a report. The customer must send this report to LumenRadio by e-mail, as a basis for invoicing. This report is digitally signed and can be verified to be correct by LumenRadio, to avoid risk of errors in handling.
If a License Generator is running out of licenses, the customer must send it back to LumenRadio, who will in turn provide the customer with a new License Generator and refilled licenses.
For development purposes, LumenRadio provides the customer with License Generators with sufficient licenses for testing and QA. These licenses are not subject to reporting to LumenRadio. Please contact your sales representative for details.