Ignition 8 Client on Raspberry PI

Hi, I’m trying to see if there’s a way to use ignition 8 on raspberry pi as a client. The main ignition install is already on a x86_64 machine and works fine. However, since the change to native client launchers, I don’t see a way to run (easily) ignition on a 32bit pi as the client launchers are expecting a different architecture.

What options do I have?

The easiest option would be to use Perspective as your “client”.

Vision will require you to have your own ARM-compatible JDK installed and run the launchers and client with that.

Seeing as I’ve already developed a vision based system, there’s likely not a simple “perspective shift” is there?
I’ve also dug into the clientlauncher and found the .jar file. Is there no more .jnlp download available?

No, Webstart is dead in Java 11+, which Ignition 8 requires to run.

And, no, there’s no easy migration to Perspective, for a variety of technical reasons.

I think you’ll have to use Oracle JDK or OpenJDK ARM builds to run the launcher and Vision clients: https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=hotspot

The ARM JDK we bundle with the gateway and launchers is headless.

Using this jdk for arm32 I get the following error (followed by others)

pi@RevPi15201:~ $ ./jdk-11.0.3+7/bin/java -jar visionclientlauncher/app/launcher-vision-client-linux.jar 
INFO  [ClientLauncher                ] [2019/04/29 18:10:40]: Using /home/pi/.ignition/clientlauncher-data/visionclientlauncher.log to store logging info. Check there for all future logging events.
OpenJDK Server VM warning: You have loaded library /home/pi/.openjfx/cache/11.0.2/libprism_es2.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Loading library prism_es2 from resource failed: java.lang.UnsatisfiedLinkError: /home/pi/.openjfx/cache/11.0.2/libprism_es2.so: /home/pi/.openjfx/cache/11.0.2/libprism_es2.so: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
java.lang.UnsatisfiedLinkError: /home/pi/.openjfx/cache/11.0.2/libprism_es2.so: /home/pi/.openjfx/cache/11.0.2/libprism_es2.so: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)

Try the arm64 build?

Ok, so it appears that the revpi core 3 (the pi I’m using) doesn’t actually have the armv8 BCM2837 chip in in. /proc/cpuinfo shows BCM2835 (that’s a pi1 cpu) and uname -m shows armv71 (32 bit).

I’ll see what I can do reaching out to them in the meantime.

I guess the launchers aren’t built for ARM either (there’s a JavaFX native component that complicates things).

You’d have to invoke launchclient.jar directly in order to launch a client.

Correct, but will get errors if not on a 64bit os.

There errors were from running the launcher, the launcher in turn is running launchclient.jar which has no native components.

Or am I missing something?

Launch command line should be something like:

/home/pgriffith/.ignition/clientlauncher-data/launchclient.jar -Djavaws.sr.gateway.addr.0=http://10.10.70.55:80 -Djavaws.sr.launchts=1556560041806 -Djavaws.sr.main=com.inductiveautomation.factorypmi.application.runtime.ClientLaunchHook -Djavaws.sr.platform.edition= -Djavaws.ignition.sso=true -Xms32M -Xmx256M -Djavaws.sr.memory.init=32M -Djavaws.sr.memory.max=256M -Dsun.java2d.d3d=false -Dsun.java2d.noddraw=false -Djavaws.sr.screen=0 -Djavaws.sr.scope=C -Djavaws.sr.project=Test com.inductiveautomation.ignition.client.launch.BootstrapSwing

Or, more legibly:

/home/pgriffith/.ignition/clientlauncher-data/launchclient.jar 
-Djavaws.sr.gateway.addr.0=http://10.10.70.55:80 
-Djavaws.sr.launchts=1556560041806 
-Djavaws.sr.main=com.inductiveautomation.factorypmi.application.runtime.ClientLaunchHook 
-Djavaws.sr.platform.edition= 
-Djavaws.ignition.sso=true 
-Xms32M 
-Xmx256M 
-Djavaws.sr.memory.init=32M 
-Djavaws.sr.memory.max=256M 
-Dsun.java2d.d3d=false 
-Dsun.java2d.noddraw=false 
-Djavaws.sr.screen=0 
-Djavaws.sr.scope=C 
-Djavaws.sr.project=Test 
com.inductiveautomation.ignition.client.launch.BootstrapSwing

Let me see what I can do when I get the system back online. Reflashing now with 64bit os.

Where can I find launchclient.jar?

/home/username/.ignition/clientlauncher-data/

obviously, replace “username” with the user you’re logged in as.

Might be easier to take what PGriffith posted, but modify the username

Hardly correct. Ignition isn’t installed on the pi. No .ignition directory exists.

I did get the legacyclientlauncher.tar.gz downloaded from a 7.9 install and ran that on the pi. It worked fine with the 7.9 edge server it was connecting to.

I modified the project name, the platform.edition to blank, and the gateway.addr to the correct ip. I got errors regarding unpacking java-cup-10k.jar

Are the legacy client launcher files no longer available in 8?

You can get a copy of clientlauncher.jar from the lib/core/launch folder of an Ignition 8 install. The location @Paul.Scott suggested is where it ends up when the launcher downloads it but you aren’t able to get that far.

The legacy launchers are not available with Ignition 8.

So it appears that arm is not compatible with Ignition v8. Is this known/intentional? How long will 7.9 be supported?

7.9 is an LTS version so it’s supported for 5 years from the first release, so it’s supported until December 2021 in this case.

Ignition 8.0 supports running the gateway on ARM and we’re aware the Vision Client and Launchers don’t run on ARM. I’m not sure if this will change significantly. We may be able to ship launchers that have native components compatible with ARM sometime in the future but it would still require that the system have its own JDK installed because the ARM JDKs we license and ship with are headless.