# Licensing the Pro Version

# Introduction

Multiverse | USD uses J Cube’s own licensing system called "Pulsar".

Trivia

Pulsar is named after: pul·sar ˈpəlˌsär/ noun — astronomy a celestial object, thought to be a rapidly rotating neutron star, that emits regular pulses of radio waves and other electromagnetic radiation at rates of up to one thousand pulses per second.

Pulsar handles Floating Licenses which are used by the Pro version of Multiverse (the Free version uses online cloud licensing instead).

Floating license are spawned to your network by the pulsar license server. Pulsar is shipped with the Multiverse Pro Version on all platforms: Windows, Linux and macOS, you can find it in the following location:

/path/to/multiverse-pro-install-root/bin/pulsard
1

Any client machine in the network will be able to grab a license as long as:

  • it can ping the hostname/IP of the license server
  • the pulsard license server is running and some licenses are installed
  • there are available licenses

# License Types

There are two types of Multiverse floating licenses:

Type of License Description
Interactive An Interactive license is used within a session of thehost application (e.g. Maya).
Render A render license is checked out when rendering, either from the host application (e.g. Maya) or from a standalone rendering command (3Delight NSI renderdl, Arnold kick, Renderman prman, Vray vray.bin).

# When a license is checked?

The Pro version of Multiverse will always check a license in the following cases:

  • When loading the Maya plug-in
    • An interactive floating license is checked.
  • When writing USD assets/compositions/overrides
    • An interactive floating license is checked.
  • When rendering (within the host application context (e.g. Maya) or within the standalone rendering context):
    • A render floating license is checked (if no render license is available, then an interactive floating license will be checked, if available).

Note

All Multiverse Licenses are “per-host”, this means you can launch as many instances of the DCC App (e.g. Maya) or the renderer (e.g Arnold, 3DelightNSI, Vray, Renderman, Redshift) from the same machine, and still use 1 single interactive or render license.

# Obtain Floating Licenses

  1. Start by purchasing floating licenses: refer to our website to know how to buy directly form us, or from our resellers → http://multi-verse.io/buy

  2. Then, go to our website and Download the Multiverse PRO Version:

  1. Now it’s time to choose a machine in your network that shall act as the license server and identify your HostID (typically this is the MAC address of the license server active interface with an associated IP address). We recommend to choose as a license server an actual server and not a machine that is continuously used by a user.

We support the following operating systems for the license server:

  • Windows 7 or 10
  • Enterprise Linux 7 (RedHat 7 / CentOS 7)
  • macOS 10.15+

Linux

On Linux the license server uses the operating system OpenSSL library which should be installed at:

  • /usr/lib64/libcrypto.so

    Note that this might be also a symbolic link to libcrypto.

If your license server system does not have OpenSSL installed, you can install it via yum install openssl-devel (on RedHat/CentOS).

macOS

On macOS you have two possibilities:

  1. Have the license server use the operating system OpenSSL library which should be installed at:

    • /usr/lib/libcrypto.dylib

    This will require you to disable SIP because Apple makes some security restriction on their openssl.

  2. Install openssl via the macOS package manager "brew" (and NOT with "macports" as the macports library does not work well!):

    $ brew install openssl

    Then set the OPENSSL_CRYPTO_LIBRARY_PATH variable:

    export OPENSSL_CRYPTO_LIBRARY_PATH=/usr/local/Cellar/openssl@1.1/1.1.1g/lib/libcrypto.dylib
    
    1

    If needed we can give you a copy of the ssl library.

  1. Contact sales@j-cube.jp and provide us your HostID. We typically send an e-mail containing first a temporary License Key for testing the license server making sure you provided a working HostID, then a final one.

# Identify your HostID

Trivia

The HostID is typically the “MAC address” where MAC stands for “Media Access Control” network identifier, and really is totally unrelated to the Apple Macintosh.

# On Windows

On Windows, start a command prompt and type the ipconfig /all command, then press enter. In the command output, look for the “Physical Address”.

C:\ipconfig /all


Windows IP Configuration

Host Name . . . . . . . . . . . . . . . : Multiverse-PC
Primary Dns Suffix:
Node Type . . . . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . . . . : No
WINS Proxy Enabled. . . . . . . . . . . : No

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix:
Description . . . . . . . . . . . . . . : Intel(R) 82579LM Gigabit Network Connection
Physical Address . . . . . . . .  . . . : 00-BA-DD-EC-AF-00
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

In the example above (on line 13) the HostID would be 00BADDECAF00 (you shall ignore the dashes). You may obtain a more complex output because of:

Multiple physical addresses

If the ipconfig /all command output shows multiple physical addresses you shall look for:

  • The "Ethernet adapter Local Area Connection" (if you are on a Desktop and generally use a wired connection)
  • The "Ethernet adapter Wireless Network Connection" (if you are on a laptop and generally use a wireless connection)
  • If you have two network cards, and only one has an associated IP address then use the MAC address of the card with the IP address.
  • “Media State: Media disconnected” — If an adapter has “Media State: Media disconnected" you probably don't want to use that HostID address. If you're not sure simply contact us and make sure to include the output of the ipconfig /all command.

# On Linux

On Linux, start a terminal and type the ifconfig -a command, then press enter. In the command output, look for the “ether” or “Ethernet HWaddr” (the exact output also depends from your Linux distribution).

[joebang@localhost ~] ifconfig -a

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.201.243  netmask 255.255.255.0  broadcast 172.16.201.255
        inet6 fe80::b22:2348:cc24:6457  prefixlen 64  scopeid 0x20<link>
        ether 00:DE:AD:BE:EF:00  txqueuelen 1000  (Ethernet)
        RX packets 475  bytes 69367 (67.7 KiB)
...
eth1 Link encap:Ethernet  HWaddr 00:BA:DD:EC:AF:00
...
1
2
3
4
5
6
7
8
9
10

In both above examples, the HostID Address is 00BADDECAF00 (you shall ignore the dashes).

# On macOS

On macOS, start a terminal and type the ifconfig -a command, then press enter. In the command output, look for the “en0” “ether”.

$ ifconfig -a

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
        nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
XHC1: flags=0<> mtu 0
XHC20: flags=0<> mtu 0
XHC0: flags=0<> mtu 0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether 00:BA:DD:EC:AF:00
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

In the above example, the HostID Address is 00BADDECAF00 (you shall ignore the dashes).

# Server Side

# Running the License Server

First of all install Multiverse | USD Pro Version on the license server.

Windows Tip

If you are running the license server on Windows, remember to append to your PATH environment variable the path to the Multiverse lib folder, e.g:

set PATH=%PATH%;C:\Multiverse-Pro-6.5.0\lib
1

After installing Multiverse, open your Terminal/Shell or Command Prompt and change the directory to to the Multiverse distribution folder. You will find the Pulsard license server in the /bin folder inside the Multiverse root, e.g:

/Applications/Multiverse-Pro-6.5.0/bin       (macOS example path)
/usr/local/Multiverse-Pro-6.5.0/bin          (Linux example path)
C:\Multiverse-Pro-6.5.0\bin                  (Windows example path)
1
2
3

Then, run the license server with the -h option to learn about its usage:

cd /Applications/Multiverse-Pro-6.5.0/bin
./Pulsard -h

cd /opt/local/Multiverse-Pro-6.5.0/bin
./Pulsard -h

cd C:\Multiverse-Pro-6.5.0\bin
Pulsard -h
1
2
3
4
5
6
7
8

This will output something liek this:

Pulsar -- Multiverse License Server Utility
6.5.0-Network-de86b21
2019-12-08T16:49:42Z

  -h [ --help ]               print help info
  -v [ --version ]            print the version info
  -l [ --log ]                output verbose
  -s [ --status ]             control wants to query the current status from daemon
  -d [ --daemon ]             execute as as daemon
  -c [ --control ]            execute this command as utility
                              (required to install a key to the daemon)
  -k [ --key ] arg            install the key, arg is the /path/to/licensefile or folder;
                              (multiple license file names can be specified at once)
  -a [ --address ] arg        specify the IP address of the daemon or connect to it
  -o [ --control_port ] arg   specify the control port on the daemon
  -p [ --service_port ] arg   specify the daemon service port
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

The pulsar license server is designed to allow the user to append a new key without shutting down your license server, so that you can add licenses without any service discontinuity for your users.

Now, let’s install a license key:

  1. Make sure you have a copy of the license key that you have received from J CUBE available on the system somewhere (e.g: /tmp/licensefile.txt)

  2. Get the publicly exposed IP address or host name to the network.

On Linux and OSX, please type **ifconfig** to quer all the local connections.

[zorg@linux bin]$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:69:7E:B4
          inet addr:192.168.2.117  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe69:7eb4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:93577 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53031 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7374193 (7.0 MiB)  TX bytes:3729947 (3.5 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:17406 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17406 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:879260 (858.6 KiB)  TX bytes:879260 (858.6 KiB)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Here, we should use the **192.168.2.117** as the valid address for the license server.

  1. On the terminal/prompt launch the license server as a daemon, use the log argument so you can see the status of the license server as verbose:
Pulsard -d --log -k <key.txt or folder> -a <address, for example, 192.168.2.117>
1

TIP

The -k flag supports a folder name, this means you can put the all license under a folder, and every time when the Pulsard starts it will grab all the license files from that folder. The extension name of every key file in the folder must be .txt.

  1. Open another terminal/prompt and install your license key, if you have received multiple license keys install them one by one or at once:
Pulsard -c --key license_render.txt -a <address>
Pulsard -c --key license_interactive.txt -a <address>

Pulsard -c -k license_interactive.txt licernse_render.txt -a <address>
1
2
3
4

Windows Tip

When passing a file path to the -k or —key options you must use double quotes, e.g:

`C:\Multiverse-Pro-6.5.0\bin\Pulsard.exe -c -k "C:\Multiverse-Pro-6.5.0\bin\mv-license-key.txt" -a 10.0.0.10`
1
  1. Once you have successfully installed your license key(s), you should see the output from the daemon as the following:
[2018-01-26T15:06:35] INSTALLED THE NEW KEY Eo2Gbm1B...  EXPIRED TIME IS 2018-03-31T09:35:33
1

It means that key was installed successfully into the license server.

# Client side

# Look for a License Server

Now you want your client machines to reach the license server on your network to checkout a valid license.

On your client machines all you need to do is to set an environment variable:

export MV_LICENSE = hostname_or_ip@port   (Linux/macOS clients)
set MV_LICENSE = hostname_or_ip@port      (Windows clients)
1
2

Notes:

  • you can use either use the hostname or the IP address of your license server.
  • the default port is 56734 (make sure it is not blocked by a firewall)

Please contact sales@j-cube.jp for any licensing-related questions.

# Testing

# Check License Server Status

The Pulsar license server allows to be queried to retrieve license usage informations.

Let’s assume that we have the Pulsar daemon running at 192.168.2.100, we could query the status of the license server using the following command, via the -s/--status parameter:

[zorg@linux bin]$ ./Pulsard -c -s -a 192.168.2.100
1

It would print the status of the daemon, in this example:

Multiverse License Server Utility
6.5.0-10017d2
2019-12-18T09:11:29Z
========================== INSTALLED KEY ==========================
KEY [L5fdUy...] HAS [1] RENDER LICENSES
KEY [eNcNQ8...] HAS [1] INTERACTIVE LICENSES

* INSTALLED TOTAL [1] RENDER LICENSES
* INSTALLED TOTAL [1] INTERACTIVE LICENSES

========================== CONNECTION INFO ========================
CONNECTION FROM [192.168.2.100]
    LICENSE TYPE [Render] SINCE [2018-05-18T09:47:50]
CONNECTION FROM [192.168.2.105]
    LICENSE TYPE [Interactive] SINCE [2018-05-18T09:48:06]

* USING [1] RENDER LICENSES
* USING [1] INTERACTIVE LICENSES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Through this command the admin user can easily check how many keys were installed into the daemon, and how many licenses are being used from each client.

# Use the "TestFloating" tool

You can also use the TestFloating command line tool to check the license status from any Linux host:

$ export MV_LICENSE=192.168.1.1@56734
$ ./TestFloating i
$ ./TestFloating r
1
2
3

The I here means checkout an interactive license, while r means to checkout a render license.

If it succeeds, it will prints 0, if there is an error, it will print a number with a "license lost" message. We use this tool to verify the system in our local environment.

# Best Practices

# Run the License Server on Linux

On Linux to meet best practices for daemon installation, the server must not run as “root”, and must run as a user that cannot login to the system and should be installed as a service.

To do this you will need a systemd service file, here’s an example:

[Unit]
Description=Multiverse License Daemon
After=network.target network.service

[Service]
User=multiverse
ExecStart=/opt/multiverse/bin/Pulsard -d --log -a 192.168.1.1
Restart=always
RestartSec=30
Type=simple

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13

To use this you will need to copy the file into /etc/systemd/system, or /usr/share/systemd, then invoke:

systemctl daemon-reload
systemctl enable multiverse.service
1
2

This will enable the service to be used with systemctl. Additionally you will need to create the user and modify permissions on the license server such that the user has full control of the files:

useradd multiverse
usermod -d /opt/multiverse multiverse
usermod -c "Multiverse License Service"multiverse
usermod -s /sbin/nologin multiverse
groupadd multiverse
chown -R multiverse:multiverse /opt/multiverse/
1
2
3
4
5
6

With that done you should be able to start and stop the license server as a service.

systemctl {start|stop|restart|status} multiverse.service
1
Last Updated: 10/2/2020, 6:49:38 PM