Running multiple Arnold instances on the same computer

Arnold licenses are shared by host. That means all Arnold instances running on the same computer share the same license.

For example, you can have multiple copies of Houdini running on your computer, all doing render regions with HtoA, and you’ll be taking just a single Arnold license. Same thing with Softimage and Maya.

License sharing is defined by your license. The share=h in your license means that all processes (aka instances) running on the same host (aka computer) can share a single license.

Even when licenses are shared, you will still see multiple checkouts in your license usage. For example, here’s my license usage when I have an IPR going in Maya, and render regions in Softimage and Houdini:
The debug log would show something similar:
It might look like there are three licenses checked out, but it’s not. It’s just one license, checked out three times (aka shared three times).

If I check my license pool status, I can see that one license is in use:

And if you have reporting enabled, you can check the report and see that all three licenses have the same share handle (which means that the license is being shared):

[RLM] [Arnold] Troubleshooting watermarks and license problems

If a workstation or render node can’t get a license, you can use the Arnold log to find out what’s happening. If you set the log verbosity to debug, you can see where Arnold is trying to find a license server, whether or not Arnold can connect, and whether Arnold is being refused a license.

First, let’s look at what success looks like:

00:00:00   703MB         | [rlm] checking connection to license servers ...
00:00:00   703MB         | [rlm]  5053@StephenBlair-PC ... UP
00:00:00   703MB         | [rlm] checkout of "arnold 20140917" from StephenBlair-PC in 0:00.01
00:00:00   703MB         | [rlm] expiration date: 31-dec-2016 (768 days left)

These log entries tell me that solidangle_LICENSE (or RLM_LICENSE) is set to “5053@StephenBlair-PC” and that Arnold was able to get a license. I know that solidangle_LICENSE is set because the log entry says “license servers” (plural). If solidangle_LICENSE isn’t set, there’s just one license server to check: the default 5053@localhost.

For example, if you’re running on the same machine as the license server, you might see something like this:

00:00:00    11MB         | [rlm] checking connection to license server on 5053@localhost ...
00:00:00    13MB         | [rlm] checkout of "arnold 20141103" from localhost in 0:00.02
00:00:00    13MB         | [rlm] expiration date: 31-dec-2016 (761 days left)

So, if solidangle_LICENSE isn’t set, then on a workstation or render node you’d see this in the log:

00:00:00   784MB         | [rlm] checking connection to license server on 5053@localhost ...
00:00:05   784MB WARNING | [rlm] could not connect to license server on 5053@localhost

Note the Arnold checks just one license server: 5053@localhost. If solidangle_LICENSE is set, Arnold will check at least two license servers.

If solidangle_LICENSE is set, but Arnold cannot reach the specified server, you’d see this:

00:00:00   751MB         | [rlm] checking connection to license servers ...
00:00:05   751MB         | [rlm]  5053@null ... DOWN
00:00:10   751MB         | [rlm]  5053@localhost ... DOWN
00:00:10   751MB WARNING | [rlm] could not connect to any license server

If the RLM server is up and reachable, but the solidangle ISV server is down, then you’d see this:

00:00:00   745MB         | [rlm] checking connection to license servers ...
00:00:00   745MB         | [rlm]  5053@StephenBlair-PC ... UP
00:00:03   745MB WARNING | [rlm] error checking out license for arnold (version 20140917):
00:00:03   745MB WARNING | [rlm]  * Communications error with license server (-17)
00:00:03   745MB WARNING | [rlm]  * Connection refused at server (-111

The RLM server is the main RLM service that manages all the ISV servers. The ISV servers serve licenses for specific software packages, like solidangle, foundry, or exocortex.

If there are no licenses available:

00:00:00   745MB         | [rlm] checking connection to license servers ...
00:00:00   745MB         | [rlm]  5053@StephenBlair-PC ... UP
00:00:00   745MB WARNING | [rlm] error checking out license for arnold (version 20141103):
00:00:00   745MB WARNING | [rlm]  * All licenses in use (-22)

If the licenses don’t support the newer version of Arnold you’re trying to use:

00:00:00    11MB         | [rlm] checking connection to license server on 5053@localhost ...
00:00:00    13MB WARNING | [rlm] wrong license version for "arnold 20141103", found 1 license for "arnold 20140701"
00:00:00    13MB WARNING | [rlm] your maintenance expired on 2014/07/01, please contact

If the licenses are expired:

00:00:00   745MB         | [rlm] checking connection to license servers ...
00:00:00   745MB         | [rlm]  5053@StephenBlair-PC ... UP
00:00:00   745MB WARNING | [rlm] could not find any license for "arnold 20141103", the license may be expired

[RLM] [Arnold] Figuring out why a certain scene renders with a watermark

If suddenly some scenes render with a watermark, but others don’t, that probably means someone saved those scenes with Skip License Check enabled.

A quick way to check this is with the Arnold log.

If you set the verbosity level to at least Warnings + Info, you would see this:

00:00:00   787MB WARNING | [rlm] skip_license_check enabled

if Skip License Check is enabled.

If you’re using MtoA and rendering Maya scenes, one way to avoid this problem is to render with the -ai:slc off flag (slc = skip license check).

In the very unlikely case that Skip License Check isn’t the problem, the set the verbosity level to Debug and check the log again.

[RLM] [MacOSX] Setting solidangle_LICENSE on Yosemite

In Yosemite, Apple removed support for environment variables in launchd.conf, so you need to find another way to set global, system-wide environment variables. For example, if you want solidangle_LICENSE to be automatically set, you could use a launchd plist.

Here’s an example plist that uses launchctl to set the solidangle_LICENSE environment variable.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "">
 <plist version="1.0">

You’ll need to edit this plist and save it in /Library/LaunchDaemons. The file permissions and ownership should look like this:

-rw-r--r--@ 1 root wheel 661 Oct 22 13:52 com.solidangle.setenv.plist

Use sudo chmod to set the permissions, and sudo chown root:wheel to set the ownerships.
Then load the plist:
sudo launchctl load -w /Library/LaunchDaemons/com.solidangle.setenv.plist

And then restart your machine.


[RLM] Checking the license pool status

It’s always a good idea to confirm basic facts before moving on to more complicated testing, especially when it comes to licensing problems. For example, I’ve had several cases of “watermarks on the render farm” where it turned out the actual number of licenses was rather less than the expected number.

Fortunately, it’s easy to check the number of available licenses (aka the “license pool status”) with the RLM Web Admin page.

  1. In a web browser, open localhost:5054 (tip: you can open this page remotely too: just go to LICSERVER:5054, where LICSERVER is the name or IP address of the license server computer).
  2. Click Status.
  3. Click solidangle in the Server Status column of the ISV Servers table
  4. Check the count in the License Pool Status table

Click to enlarge

[RLM] [Windows] Putting the SolidAngle debug log into append mode

I like the log to be in append mode so it isn’t overwritten every time the license server restarts. This is especially handy for troubleshooting license server problems (otherwise, you lose information that might explain the problem when you restart the server).

You’ll need to Run as administrator when you open a command prompt for this.

First, add a plus sign (+) to the log file name (you can use sc qc to query the config and get the current binPath, or you could just look it up in the Services console).

sc config "RLM SolidAngle" binPath= "C:\Program Files\RLM\rlm.exe -dlog \"+C:\Program Files\RLM\solidangle.log\" -service"
[SC] ChangeServiceConfig SUCCESS

Then restart the service. You could also do this in the Services console.

C:\Windows\system32>sc stop "RLM SolidAngle"

        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

C:\Windows\system32>sc start "RLM SolidAngle"

        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x1388
        PID                : 9008
        FLAGS              :

And finally, check that it really started:

C:\Windows\system32>sc query “RLM SolidAngle”

        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

Adding Arnold licenses to an existing RLM license server

If you’ve already have an RLM license server up and running, it’s easy to add your Arnold license to that server. Just download the Solid Angle RLM package, extract the solidangle.set and solidangle.opt files from the download, and copy them to your RLM folder. Then do a reread/restart of the server to pick up the Arnold licenses.

Just make sure you’re not running an older version of RLM. The Solid Angle license server (solidangle.set) requires RLM v10.1BL2 or later.

RLM is backwards compatible, which means you can always use a newer version of RLM with an older solidangle.set.

But RLM is not forwards compatible. You cannot use an older RLM with a newer solidangle.set. For example, you cannot use the current solidangle.set ISV server with RLM v9.4BL2.

If you use a newer solidangle.set with an older RLM, you’ll see something like this in the RLM log:

08/22 14:23 (rlm) RLM License Server Version 9.4BL2

        Copyright (C) 2006-2012, Reprise Software, Inc. All rights reserved.

08/22 14:23 (rlm) License server started on SOLIDANGLE-PC
08/22 14:23 (rlm) Server architecture: x86_w1
08/22 14:23 (rlm) License files:
08/22 14:23 (rlm)     arnold.lic
08/22 14:23 (rlm)
08/22 14:23 (rlm) Web server starting on port 5054
08/22 14:23 (rlm) Using TCP/IP port 5053
08/22 14:23 (rlm) Starting ISV servers:
08/22 14:23 (rlm)     ... solidangle on port 60008
08/22 14:23 (rlm) New thread created to watch ISV solidangle
(solidangle) Server settings (version 10) incompatible with RLM v9 software
(solidangle) This settings file must be used with RLM v10 (or later) software
08/22 14:23 (rlm)
08/22 14:23 (rlm) solidangle initialization error: 1, not restarting
08/22 14:23 (rlm)
08/22 14:23 (rlm) Server initialization error.
08/22 14:23 (rlm)
08/22 14:23 (rlm) This indicates either:
08/22 14:23 (rlm)  A settings file incompatible with this RLM version
08/22 14:23 (rlm)  - or -
08/22 14:23 (rlm)  The ISV server is built with an incorrect RLM license
08/22 14:23 (rlm)  - or -
08/22 14:23 (rlm)  The ISV server encountered an error processing its options fi
08/22 14:23 (rlm)

For google: “solidangle initialization error: 1, not restarting”

[Houdini] License Error: Unable to connect to hserver for license acquisition

Yeah, this isn’t about a Solid Angle product, but about one of the DCCs that host our plugins (HtoA in this case).

So, I installed Houdini 13.0.476 the other day, and I got this “License Error: Unable to connect to hserver for license acquisition” when I tried to start HoudiniFX. I thought that was strange, because I had been running 13.0.401 moments before.

According to the licensing FAQ, that error means that the hserver service isn’t running. And, in fact, neither hserver nor sesinetd were running: they were both Disabled and marked for deletion, so I couldn’t start them from the Services console. After closing down Process Explorer, Task Manager, and the Services console, I was able to delete the services from the command line with sc delete.

At this point, I could have tried creating the services with sc create, but I was curious to see if the Houdini installer would do it for me. So I uninstalled and reinstalled. The installer asked me if I wanted to replace the newer version of sesinetd that was already on my system (huh???), and I clicked Yes. After the install finished, I had a running sesinetd service but no hserver, so I had to create it myself:

sc create HoudiniServer binPath= C:\windows\system32\hserver.exe

After that, I was able to start HoudiniFX and acquire a license.

[RLM] Checking for license denials by the license server

If you’re seeing watermarks on some machines but not on others, there’s usually a simple explanation: those machines cannot connect to the license server. The first thing you should do is check the RLM diagnostics on the license server. In particular, look for the solidangle Statistics, which will show you whether or not licenses are being denied. For example:

solidangle Statistics --- Since Start --- Since Midnight --- Recent ---
    Start time          03/29 18:40:20    04/01 00:00:24   04/01 12:41:30
    Messages:        39398 (   0/sec)   7755 (   0/sec)    20 (   0/sec)
    Connections:      4874 (   0/sec)   1073 (   0/sec)     4 (   0/sec)
    Checkouts:        4844 (   0/sec)   1050 (   0/sec)     3 (   0/sec)
    Denials:             0 (   0/sec)      0 (   0/sec)     0 (   0/sec)
    License removals:    0 (   0/sec)      0 (   0/sec)     0 (   0/sec)

More here…