# Licensing the Pro Offline version

Here's how to install the Multiverse "Pro Offline" version with the license you will receive after you have provided us with your license server HOST ID.

# Purchase the Pro Offline version

Go to our website and purchase one or more Pro Offline licenses either from our website via credit card or by contacting sales@j-cube.jp and paying by wire transfer to our bank. Ensure to use a valid e-mail address when purchasing on our website.

# Provide your HOST ID

After purchase contact us at sales@j-cube.jp and provide your license server HOST ID, see below on how to acquire it from your designed license server host.

# Receive by email your license

We will send you a temp license key by e-mail to test on your license server, then, once you confirm it is working, we will send you a final license key.

# Pulsar: the Multiverse license server

Multiverse uses J Cube's proprietary 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 Offline version of Multiverse (the Pro Online versions uses online cloud licensing instead).

Floating license are spawned to your network by the pulsar license server. Pulsar is shipped with the Multiverse Pro Offline 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

Heads Up!

In order to successfully grab a license from the license server the time difference (epoch time synchronization) between the license server and the client must not be larger than 24 hours.

# License Types

There are two types of Multiverse floating licenses:

Type of License Description
Interactive An Interactive license is used within a session of the host 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 (opens new window)

  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 HOST ID (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 (we do not support Windows 11)
  • 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

    In case you do not have this file, you may create a symbolic link to libcrypto.so, so if you are on Debian/Ubuntu you may need something like:

    ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib64/libcrypto.so

    Make sure to verify the correct file name to point at by checking via: ls -al /usr/lib/x86_64-linux-gnu/libcrypto*

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

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 (opens new window) 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 HOST ID. We typically send an e-mail containing first a temporary License Key for testing the license server making sure you provided a working HOST ID, then a final one.

# Identify your HOST ID

Trivia

The HOST ID 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 HOST ID 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 HOST ID 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 HOST ID 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 HOST ID 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

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-7.0.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:

Windows

If you are running the license server on Windows, make sure the file libeay32.dll is located in the Multiverse bin folder.

/Applications/Multiverse-Pro-7.0.0/bin       (macOS example path)
/usr/local/Multiverse-Pro-7.0.0/bin          (Linux example path)
C:\Multiverse-Pro-7.0.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-7.0.0/bin
./Pulsard -h

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

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

This will output something like this:

Pulsar -- Multiverse License Server Utility
7.0.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: ~/license_key.txt)

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

On Linux and OSX, please type **ifconfig** to query 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.

WARNING

When you start the license server we recommend you to specify an ipv4 IP, if you don't, by default Pulsar will bind all interfaces and especially on Linux there are many issues with ipv4 / ipv6 connectivity.

  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 <license_key.txt or folder> -a <address, for example, 192.168.2.117>
1

TIP

Depending on your O/S 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, for example one for interactive and one for render licenses, you can install them one by one, or all at once:
// One by one:
Pulsard -c --key interactive_license_key.txt -a <address>
Pulsard -c --key render_license_key.txt -a <address>

1
2
3
4

// All at once: Pulsard -c -k interactive_license_key.txt render_license_key.txt -a


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

```bash
C:\Multiverse\bin\Pulsard.exe -c -k "C:\Multiverse\bin\interactive-license-key.txt C:\Multiverse\bin\render-license-key.txt" -a <address>`
1
2
3
4
5
6
7

:::

  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.

# Getting verbosity info from the license server

To trace the license server activity you can use the following environment variable on the license server, this should only useful if you run into troubles installing or checking your licenses and in case you need to communicate with our support staff:

export MV_LICENSE_LOG = 1   (Linux/macOS clients)
set MV_LICENSE_LOG = 1      (Windows clients)
1
2

The path to the log will be printed on the command line of the license server once this environment variable is set.

# 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

Hostname or IP?

You can use either use the hostname or the IP address of your license server, depending on your network configuration using the hostname may not work, in such case you should use the IP address.

Port and Firewall

The default port for the license server is 56734: make sure it is no 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
7.0.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

# OPENSSL and Linux Distros

Pulsar depends on some functions in libcrypto/libssl, depending on which Linux distro you are running, if you hit any issue in finding the cryptographic library, you can also the OPENSSL_CRYPTO_LIBRARY_PATH variable, e.g:

export OPENSSL_CRYPTO_LIBRARY_PATH=/path/to/lib{"crypto|ssl"}.so
1

# 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: 3/14/2024, 8:32:54 AM