Licensing and Host ID's
OpendTect uses FlexNet to manage its licensing. There are two main types of license:
- Node-locked: The license file is tied directly to a specific client machine (or selection of machines) through its ‘HostID’. This option is popular for laptops and for single-user desktop setups. Installation is very simple.
- Floating License: The license file is generated for, and tied to a dedicated server via its ‘HostID’. The license manager on the server then issues licenses to client machines. This option is more suited for multiple users. Installation can be more involved.
In order to generate a license, we need the HostID of the machine or server, depending on license type:
- If Server-based (floating) license
- Server (Host) Name
- Server (Host) ID
- If node-locked license
- Host ID
To discover the HostID:
- OpendTect Pro (all platforms): Utilities > Installation > Licenses > Show HostID…
Note: Licenses > Show HostID… does not appear under the Utilities > Installation… options in the GPL version. You will have to install OpendTect Pro to access this utility.
For additional information (including alternate methods of accessing the HostID), please refer to the FlexNet Licensing End User Guide.
FlexNet Licenses Explained
Let us suppose you have received a 2-user license for a module. Normally you will have obtained a floating license, meaning that you will be able to use the module from any machine, and two users can be busy with it at the same time.
Server side: The License Manager Daemon
To be able to enforce the license, there must be a piece of software somewhere that keeps track of who is using the module. That is the License Manager Daemon (LMD). The LMD can run on any machine, also on machines that you will never use the module itself on. Good candidates are stable UNIX servers.
When the LMD is started, it looks at a file containing the information about what should be supported. This file is called the License File. Actually, the LMD can only be started on the machine indicated in the license file. The license file could look like this:
SERVER licserv 000347e8b845
DAEMON dgbld /apps/opendtect/6.6.0/bin/lux64/lm.dgb/dgbld
FEATURE dTect dgbld 6.600 1-jan-2020 2 6592FDC619EA DUP_GROUP=D
FEATURE dTectDS dgbld 6.600 1-jan-2020 2 011D5153D870 DUP_GROUP=D
The first line tells us that the LMD must be started on the machine
licserv, with FlexNet ID
000347e8b845. The second line is interesting for the LMD only but then you see two actual license
FEATURE lines (
dTectDS). These licenses are valid for versions 6.4 and lower, until the 1st of January 2020, for two users (
6.400 1-jan-2020 2).
The Client side: Your program
Now let's look at the machine that you run your software on. The program will at some point in time need to check whether there is a license for what you are trying to do. For this, the program looks at the same license file. It sees that it has to contact the machine 'licserv' to ask for permission. The LMD keeps track of the number of users already using the license feature. If a license is granted, your program will go on, otherwise you'll get an error message.
In some cases the software will never be used other than on a certain machine. In that case a node-locked license can be issued. For such a license you do not need to start a license manager daemon - an unlimited number of users can use the module at the same time provided they work on that particular machine. A special case is the unlimited demo license, which grants unlimited access for any number of users on any machine. It goes without saying that this kind of license is always for short periods.
For the above schemes to work, the license server or the running machine must be uniquely identified. Therefore, you will be asked to provide a unique host ID and a hostname when you want to obtain a license. Different operating systems require different ways to obtain this information:
- Windows: On windows, there is a FlexNet utility that delivers both in a simple file that can be sent by e-mail. It is delivered together with commercial plugins so you need to install one of those first. From the Start menu, select Programs-OpendTect-License Manager Tools. Select the tab 'System Settings'. Then push the 'Save HOSTID Info to a File' button
- UNIX: The hostname is obtained with the unix command hostname. The host ID differs per UNIX flavor, but can always be obtained by the 'lmhostid' tool. This tool is delivered with OpendTect, and can be run from the Utitlities-Batch Programs dialog.
If you need to obtain the host ID before OpendTect is installed:
- Windows: Open a 'command prompt' (For example, by running 'cmd') and issue a command like:
ipconfig /all > c:\Temp\ipcfg.txtYou can send ipcfg.txt or look for the 'Physical address'
- Linux and Mac OS X: Run
/sbin/ifconfigin a terminal. On Linux look for
HWAddr, on Mac
ether. You want the MAC address, looking like
xx:xx:xx:xx:xx:xx- that's 6 groups of 2 hex numbers. Example:
00:1C:C0:38:22:F1. Usually the first one reported is the main card, in doubt you can provide all
- Solaris: Run
If for some reason one of these commands does not work: we need the MAC address of the main network card. Sending the IP address of a machine is never helpful.
Conclusion (Manager's summary)
The FlexNet license system is based upon internet technology. Therefore you can run your software on any machine, using any operating system, to get licenses from any other machine regardless of operating system or physical location. Thus, a Linux license server in Houston can manage the licenses for Windows, Linux and Mac OS X machines in Houston, Caracas and Paris. The only restriction is the number of users actually using the 'feature' at a certain time, but that is what you pay for.
For more information, see FlexNet Licensing End User Guide.
FlexNet Installation guide
The FlexNet licensing system allows a variety of licensing options. The most important license types are:
- Demo licenses
- Node-locked licenses
- Floating licenses
Demo and Node-locked licenses are the easiest to install but more difficult to maintain. Demo licenses because they are valid for a limited period of time, node-locked because they will only allow usage on one or more computers explicitly named in the license file. Node-locked licenses can be recognised by lines with the 'HOSTID=' in it, like:
FEATURE dTect dgbld 6.4000 1-jan-2020 uncounted 023E2CE466C7 \
Floating licenses are managed by a license server. When the plugin needs a license, FlexNet will contact this server machine. You have a floating license if the first actual line of the license file contains 'SERVER', like:
SERVER houserv001 00146d37ec2a
For a licensing scheme to work, there must be a unique identifier for the server or (in case of a node-locked license) the working computer. In most cases, this identification will be tied to the address of your network card. How to obtain this 'FlexNet Host ID' is dependent on the operating system. The different ways to obtain it are described in the host ID section of the 'FlexNet licenses explained' section.
Note that the FlexNet host ID is never the IP address of the computer.
FlexNet offers a lot of mechanisms to make sure that the licenses are granted to the users that need them. In case you don't have the experience needed to handle this yourself, OpendTect plugin packages come with tools to install the license. How to go about depends largely on the Operating systems involved:
UNIX (Linux and Mac)
First of all: you have to make sure your systems comply with the system requirements. Specifically, FlexNET requires Linux distros to be LSB compliant. To check whether you distro is LSB compliant try running the command 'lsb_release'. If that command is not available on your system, then there is a high chance that FlexNET licensing is impossible on that computer. OpendTect itself does not have that restriction.
In the following we will explain installation for people with no prior knowledge of FlexNet, or at least have no existing procedures to handle FlexNet licenses. System administrators who do will want to find what they need directly on the FlexNet Vendors Packages download page. The packages there contain the binaries you need.
Installation on UNIX variants (Linux and Mac) is done on the command line. OpendTect will generate, during installation, a couple of scripts to install the license and start the license server (if needed).
You can install the license file with a script 'install.xxx.license', where xxx would be your plugin vendor's name. For example: 'install.dgb.license'. These scripts are located in the root of your installation directory. Such a script will ask you where the license file you obtained is located. It will then install this file in your OpendTect installation.
For floating licenses (i.e. license files containing a 'SERVER' line), you will have to start the license manager daemon on the server. For this, there are the 'start.xxx.lmgrd' scripts. You can run this script after installation of the license file. All output from the license manager daemon will be sent to the log file, which is by default 'license.xxx.log'. Errors like './lmgrd: Command not found' can point towards non-LSB compliance (see the start of this chapter).
If for some reason the license fails to be granted, you should examine:
- The OpendTect log file (Utilities-Show log file)
- The 'license.xxx.log' file
- The plugin management window (Utilities-plugins)
When you get an upgrade for one of your license files, you can again use the scripts. The 'start.xxx.lmgrd' script can be used to stop the daemon with:
After that, use install.xxx.license and start.xxx.lmgrd again as if you have obtained a new license. For the advanced users a warning: Windows clients usually have an own copy of the license file. Don't forget to replace those with the new license file too.
On Windows, installation of the license file is quite a bit more difficult than on UNIX variants. Especially if you also have to startup a license manager daemon (i.e. if you have a server-based license) as a Windows service. We therefore recommend, if you have the chance, to use a UNIX server for licensing if you have the chance.
How do you know whether you have a server-based license? Well, you need to look inside the file, with a tool like the Notepad. If you see a line like:
SERVER the_host 00828d72b0
then you know you have a floating license. Setting up the license will be harder, but you will be more flexible in the computers you use. See also the FlexNet Explained section.
The installation starts by putting the license file in a good, stable, safe position on your system. This is not in the installation directory (which is typically \Program Files\OpendTect). A directory like \Licenses and a filename showing the plugin vendor name seems to be a good choice. We recommend not to use spaces or special characters in the directory or file name. Later, when you get a new license file, you simply replace the old one with the new one under the same name. If the license is floating use the 'ReRead License File' button in the 'Start/Stop/ReRead' tab of the license manager tools program.
If you are upgrading, i.e. replacing a license file with a new version, then the easiest way to do it is to replace only the contents of the old file, i.e. keeping the same name. For server-based licenses, first stop the service. In any case, don't keep old copies in existence because FlexNet may sneakily use those rather than trying the new one.
For new installations: on first usage of a plugin, you will see a popup of a window asking for the license file. If this method succeeds, everything should be OK. You can stop reading now.
Unfortunately, in many cases you have to set up the license in a different way. For this, you need to use the 'License Manager Tools' program, which can be started from the Windows start menu for OpendTect.
The first thing you need to be sure of, is that FlexNet is looking at the right file for the right license feature. For this, go to the Utilities tab and check by using the 'List all vendor paths' button whether there is a path to your license file - for the vendor in question. For example, for dGB, the vendor name is 'dgbld', for ArkCls, it's 'arkclsld'. You can find your vendor's name in the license file.
In case you see a wrong path displayed, you can overrule it using the overrule button. Below an example for the dGB daemon ('dgbld'), for other vendors you need to use other names (e.g. 'arkclsld'):
Please note the vendor names for license files: dGB = dgbld; ArkCLS = arkclsld; Sitfal = geoinfo
If you have a node-locked or demo license, you should now be able to use the plugins.
For licenses requiring a server, you must also make sure the FlexNet vendor service is running on the server machine. On the server machine, start the License Manager Tools program. In the top tab select 'Configuration using services'. Go to the 'Config services' tab. Now enter a name for the service, for example 'opendtect_lic' in the 'Service name' field. The location of the lmgrd.exe file may differ per vendor. They are in the installation, under Program Files\OpendTect\6.4.0. Then find the necessary lmgrd.exe in:
- dGB: bin\win64\lm.dgb
- ARK CLS: arkcls\bin\Windows\5.1\i686
- SITFAL: SITFAL\bin\win64\lm.sitfal
The debug log file is traditionally given the license file's name with extension '.log'. Below example is for dGB (for ARK CLS you'd need to use something like arkcls\bin\Windows\5.1\i686\lmgrd.exe):
Press 'Save service' and go to the Start/Stop/Reread tab. After starting the server, the licenses are ready to use.
If for some reason the license fails to be granted, you should examine:
- The OpendTect console messages
- The debug log file (when you started a service)
- The plugin management window (Utilities-plugins)
The license files
It is possible to use, for example, a Linux server to give out licenses on Windows systems. In general, it doesn't matter what Operating system you have on your license server. The OpendTect program will take a look at the local license file and try to contact the host denoted in the 'SERVER' line. For this to work, the computer running OpendTect must be able to 'see' the license file. This can be done by putting the license file on a shared network disk, or putting a copy of the file on each computer.
Sometimes the server host name, as found in the SERVER line is unknown to the client computer (the computer running OpendTect). In that case you can simply edit the copy of the license file to match something that the client computer does understand. For example:
SERVER houserv001 00146d37ec2a
can be changed in:
Note that you cannot change the host ID; that will invalidate the licenses.
Upgrading to a new license file
When you obtain an upgrade for your current license file, then you have to make sure that:
- All license files are replaced with the new version. So, the server's license file needs to be replaced, but also all copies that you may have made - local copies.
- The server(s) is/are re-started (if you have floating licenses). This can be done by using a 'reread' or just by stopping and starting. On Linux and Mac, the script that starts the daemon also stops it if you add 'stop' to the command line.
Quite annoying is the problem of FlexNet 'helping' you by remebering the location of old license files and using those rather than new ones that you have specified. Therefore, it is usually a good idea to remove all old license files that you can find, or at least renaming them just so FlexNet cannot find them.
You can, at some point in time, be confronted with a firewall blocking communication between a client and the server computer. Before starting to change firewall settings, it may be interesting to know that you can specify the port that FlexNet uses to communicate through. This is done on the SERVER line, as follows:
SERVER houserv001 00146d37ec2a 54321
In the above case you specify that FlexNet needs to use port 54321, rather than the default 27000 (and up). Note that this needs to be done for both the server's and the client(s) license file(s).
We stimulate research and education by allowing Universities to use OpendTect Pro and the commercial plugins completely free-of-charge for education and R&D purposes. Currently more than 4000 academic licenses are used by over 400 universities worldwide to teach the next generation.
To obtain an Academic License
- The Hostname & Host ID of the computer that will be used
- The Number of simultaneous users.
An Academic license can be used for academic purposes but not for commercial exploitation. In return dGB and the software should be acknowledged where appropriate and relevant research results should be shared when possible.
"OpendTect was one of the keys of success of our IBA teams who could secure second place in the regional competition for this year 2020 and the first place for the past three years."
--Mohammed Farfour, PhD Earth Science Department, Sultan Qaboos University