Command-Line Tools for Licensing

We bundle RSI software with our application install. For an intelligent install, it is useful for us to be able to acquire a few pieces of information.

  • INtime dongle identifier / RMP serial number
    • I have had some trouble building a simple tool to get this information.I have to be licensed to sucessfully instantiate the MotionController class in order to get the RMP serial. I can extract the serial number from the error created when I try. (error message below)
    • If there is an easier way to accomplish this, that would be cool.
  • Is a specific instance of the install licensed? (i.e. Is rsi.lic valid for this machine?)
    • For example, if I’m upgrading from 8.0.7 to 8.2.1, the old license won’t work. How can I know without running RapidSetup and having it complain? It would prefer to to be able to scriptomatically detect this situation rather than require the human to run a GUI tool and see what happens.
    • I suppose I could attempt to instantiate MotionController and see if it fails and look for key words in the error text.

Error Creating MotionController:
Error Number: 5133
Text: Win32 RMP: Platform: incorrect file version :: {platformOS.c, line 1867} : Could not find license file : Contact RSI with serial #: 13739 (0x35AB) (Error 5133) (RSI::RapidCode::Impl::MotionController::InitControl) (Object 0) (File …\source\motioncontroller.cpp) (Line 405) (Version 8.2.1 for 04.04.02.RMP)

The biggest down side to producing my own tools is that they may be specific to versions of RSI software with binary incompatibilities to previous versions. If there were “standard” tools to accomplish this, that would prove useful.

Do you have recommendations for how I can accomplish an “intelligent” install that allows me to inform the user of specific situations, like “you will need an updated license for serial #…” rather than the user having to know/remember to start RapidSetup and see whether it complains.

Hey Todd,
I can add some methods to our API to get the USB serial number. Would this work?
If I recall correctly you’re exclusively using USB dongles for locking now, right?

I don’t think there’s any reason why a license that worked on 8.0.7 wouldn’t work on 8.2.1. Can you describe a little more whats happening with the license failure on upgrade? That said I can look into adding some method to allow you to check.

For both of these are you ok with making an API call from a MotionController handle from which you can retrieve the license status/serial number, or would you prefer if we add a similar functionality to one of our existing utilities like rsiconfig with a switch? (rsiconfig.exe --get-serial or —is-licensed)

We are using USB dongles for licensing, and for development, this is a very convenient solution.

It was my understanding that starting with version 8.1, using USB dongles was the only option. Is that incorrect? Prior to that, we were using soft locking, where the RMP serial number was some one-way hash of a set of (secret) locking criteria (e.g. MAC addresses, HDD ID, installation ID, programmer blood type, etc.). Is this incorrect? It seems like the reported RMP serial number changes between 8.0.7 and 8.1.2 (the first 8.1+ version we ran).

Anyway, I think the solution that I’d most prefer is to extend rsiconfig. (I’d also like an API for the information, too, but only secondarily.) You guys are far better at dealing with everythng on the RTOS side (especially since Tenasys will absolutely not speak to me). If I could use rsiconfig, then I could query things without having to worry about binary dependencies.

rsiconfig --get-serial
This sounds good.

rsiconfig --check-license <path_to_rsi_lic_file>
This would probably be very useful, too.

Having APIs that did something like this would be useful, so long as I didn’t have to be licensed to call them. Looking through error messages for bits of text is not something I like doing as a robust solution.