Introduction to FlexNet licensing


Basic concepts

Flexera (sometimes referred to as Flex or FlexNet) offer a technology that Arm integrates into some of its software development tools that restricts usage of our tools to specific machines or allows limited instances of the tools to be run concurrently. When a license-managed tool is invoked the tool will attempt to locate a valid license for a specific feature and version of the software. If a license is located, and is available, then the tool will run as expected. If a license is not present then the tool will report a licensing error and then exit.

There are two licensing options available, node-locked and floating. There's more details on these options below but fundamentally the difference is that with a node-locked license, FEATURE entitlements are obtained from a local license file, and with a floating license, FEATURE entitlements are obtained from a license server process running on a remote machine. 

Locating a license

1 - License mapping

Arm's FlexNet license managed tools use a system of license mapping that simplifies the way the tools can be delivered. A single executable can be configured to run in a variety of configurations using the license mapping system. When the tool is invoked it checks the settings of some environment variables to locate the license mapping file. The license mapping file is installed with the tools and contains details of exactly which FEATURE the tool needs to request a license for, the tool will then try to find a license entitlement for that FEATURE. When the tools are first installed and the Eclipse IDE is run for the first time it will configure the environment variables correctly according to the license you are working with.

The environment variables used are shown in the table below:

Tool Environment Variable Value
DS-5 ARM_PRODUCT_PATH Location of the "mappings" directory for the tools installation. By default, for DS-5, this is:
Windows - C:\Program Files\DS-5 v5.xx.x\sw\mappings
Linux - /usr/local/DS-5_v5.xx.x/sw/mappings
DS-5 ARM_TOOL_VARIANT Specific variant of the toolchain that is licensed for example: "ult" for an DS-5 Ultimate Edition license or "pro" for a DS-5 Professional Edition license.
Arm-DS ARM_PRODUCT_DEF Specifies exactly which tool mapping to use, for example for Arm-DS Gold edition:
Windows - C:\Program Files\Arm\Development Studio YYYY.R\sw\mappings\gold.elmap
Linux - /usr/local/arm/developmentstudio-YYYY.R/sw/mappings/gold.elmap

 

2 - Obtaining the FEATURE entitlement 

Once the tool has established which FEATURE to request a license for it needs to locate the appropriate license file or license server.  For Arm tools there are several ways this can be achieved but most commonly the environment variable ARMLMD_LICENSE_FILE is used and is set to one of the following:

Node locked licenses The full path to the node-locked license file
Floating licenses <port>@<server> - the port and the hostname of the machine running the license server software

With the correct location established the tool to obtain a license from either a node-locked license file or a license-server.  The license server is a process that is usually running on a remote machine.

Node-locked

A node-locked license is tied to a specific machine by using the MAC address of the primary Ethernet adapter on a machine - Flexera calls this the "machine hostid".  It allows multiple instances of the tools to be run, but only on that machine.  A node-locked license file is supplied that contains details of the supported features and is encrypted against that machine's hostid, so it cannot be used on a machine with a different hostid.  When DS-5 or Arm Development Studio are used to install a node-locked license file the tools update the installation configuration files so that the node-locked license file can be found.  Node-locked licenses are useful for single users that work on a specific machine.

A node locked license file looks like this:

#
# ***** IMPORTANT NOTE *****
#
# This license is encrypted, editing may lead to it being made
# unusable.
#
INCREMENT ds_compiler_rowan armlmd 0.1 10-feb-2020 uncounted \
HOSTID=8c6154fec657 ISSUER="Arm Limited" NOTICE="For support \
see http://www.arm.com/support/" SN=LM02155-140368-1773838167 \
START=11-FEB-2019 ONE_TS_OK SIGN="1DCF 28D0 CC30 22A6 2784 \
11AB B058 F513 6C47 A09E 006C E3F4 2EAE 9AF6 9EDC 08B3 2755 \
F451 67E1 82D3 A394 0FF7 AF56 00EB 7FBD BAA6 2E89 321D 1627 \
328E" SIGN2="0F07 760D D0B8 F006 55FF D456 86F3 462B 6C19 5213 \
8A3C 0FD6 6F89 7274 CA20 003A 4ABB 9BA1 2212 BC99 0889 705C \
3006 F3C7 D7C0 34E4 274D C82E 365E F399"

This license contains the following items:

Item
Description
INCREMENT This describes the details of the features that this license enables.
ds_compiler_rowan This is the name of the actual FEATURE that the compiler shipped with Arm DS Gold Edition will try to obtain when it is invoked.
armlmd This is the name of the software vendor - in this case armlmd refers to the Arm license manager demon.
0.1 The feature version number. This license provides entitlements to the features up to and including this version number.
10-feb-2020 Expiry date of this entitlement.
uncounted The license supports multiple instances of the feature (on this machine only).
HOSTID The MAC address of the machine on which this license will work.
ISSUER The software vendor - in this case Arm.
NOTICE Part of the message issued in the case of a licensing error.
SN License serial number.
START Start date of the entitlement, in this case February 11th 2019.
ONE_TS_OK The license enables FEATUREs to be used by one remote login at a time (ONE_TS = one terminal server).
SIGN License encryption string.

The tool that is invoked will read the node-locked license and if there is a valid FEATURE increment that matches the FEATURE being requested then the tool will run as expected - if not, then a license error will be reported.

Floating 

A floating license allows multiple, different users to access licenses for tools from a pool of licenses that is managed by a license server. The license server uses two separate processes (or daemons) to manage the available licenses:

Daemon
Description
lmgrd The generic license manager daemon supplied by Flexera. Requests made to lmgrd for Arm tool features will be forwarded to the Arm license manager daemon.
armlmd The Arm specific license manager daemon (also referred to as the vendor daemon). This handles requests for Arm tool features. Different software vendors provide their own vendor daemons.

A floating license looks like this:

#
# ***** IMPORTANT NOTE 1 *****
#
# This license is encrypted but certain modifications are recommended.
#
# 1) Replace 'this_host' with the license server name or IP address
#
# 2) Add a port number after the host ID (typically 8224) otherwise
# the OS will select a port automatically.
#
# Thus your modified server line will have the following format:
#
# SERVER servername hostID port
#
SERVER IBMTOWER-LIN 44736e689a52 8224
VENDOR armlmd port=34727
USE_SERVER
PACKAGE ds_compilers_rowan armlmd 0.1 COMPONENTS=ds_compiler_rowan:0.1:1 \
SIGN2="0547 9B8F F62C CE10 307F 2860 047E DC1A B95D 3265 0049 C3DD 2E63 \
129D 5375 1433 689E D65D B138 088A 8E27 82D5 F135 D2D2 F30D DCF3 4220 \
E157 2943 4F24"
INCREMENT ds_compilers_rowan armlmd 0.1 01-dec-2020 3 DUP_GROUP=NONE \
ISSUER="Arm Limited" NOTICE="For support see http://www.arm.com/support/" \
SN=LM02158-138622-1129973321 START=01-DEC-2018 SIGN="08BB 99E6 F903 494C \
DC72 222A EC18 1725 6EC9 4A56 9A68 E07E 6EFA D478 8936 08DF 1D7D 2328 \
D727 56CF AC0E 9E7E 82B4 DC68 51F2 9284 1C2C F075 9919 97E0" SIGN2="14DE \
D5A6 F7A5 CA8C 25B7 933F C1F6 9578 3C92 4D64 1874 5FBB F5FB 6E5B 78A4 \
03F2 DF87 D04A 2A7A 1D09 FCB8 7176 2BF9 11AF 4094 2226 FAC5 EB5C 73D2 5617"

This license contains the following items:

Item
Description
SERVER The SERVER line indicates that this is a floating license file it has the host name of the license server, the MAC address - which Flex also refers to as the hostID and the port that lmgrd will use.
IBMTOWER-LIN Host name of the license server machine.
44736e689a52 MAC address of the license server machine - also referred to as the FlexNet hostID. The INCREMENT lines in the license are encoded using this value.
8224 Port specified for use by lmgrd (optional).
VENDOR The VENDOR line provides details of the vendor daemon that should be used with this license file.
armlmd Vendor demon to use with this license file (can also be the full path to the vendor demon).
port=34727 Optional entry to specify which port the vendor demon should use on the license server machine.
PACKAGE Defines a collection of one or more COMPONENTS that can be exclusively licensed from within a PACKAGE.
COMPONENTS Lists the individual component FEATURES that are contained within a PACKAGE.
SIGN2 License encryption string.
INCREMENT This line describes the details of the features that this license enables.
ds_compilers_rowan This line INCREMENTS the PACKAGE ds_compilers_rowan and therefore all of the COMPONENT features listed in that PACKAGE - so in this case: ds_compiler_rowan.
armlmd This is the name of the software vendor - in this case armlmd refers to the Arm license manager demon.
0.1 The feature version number.  This license provides entitlements to the features up to and including this version number.
01-dec-2020 Expiry date of this entitlement.
3 Number of concurrent instances of the feature that can be used.
ISSUER The software vendor - in this case Arm.
NOTICE Part of the message issued in the case of a licensing error.
SN License serial number.
START Start date of the entitlement, in this case February 11th 2019.
ONE_TS_OK The license enables FEATUREs to be used by one remote login at a time (ONE_TS = one terminal server).
SIGN License encryption string.

If the tool locates the correct feature in the license file or from the license server then execution continues as normal, if not then a license error message is issued and the tool exits.

Further information:

FAQ