I am having trouble getting the linux native client launcher working on several Raspberry Pi 3’s the plant uses as heads-up-displays. This issue started as a result of upgrading Ignition from v7.9.0 to v7.9.10. Using v7.9.0, I have been successfully running the linux NCL on these devices for almost a year now. The new linux NCL does nothing when I click on the clientlauncher.sh file. I loaded a fresh most-up-to-date copy of Raspbian and downloaded the linux NCL with the same outcome. I realize there have been modifications to the NCL after v7.9.2. Is there any way to still run my Pi 3’s as client?
Yes - you can either keep using the old NCLs (you don't particular need to upgrade them between Ignition versions) or download the "7.9.10" versions that don't have Java embedded:
Thanks for the reply. The old NCL no longer works on any of the 10+ Pi 3 displays I have out on the floor. They all show the error “java.lang.ExceptioninitializereError” when launching the old v7.9.0 NCL. My clientlauncher.log file shows:
ERROR [SplashFrame ] [21:47:04,981]: Primary Gateway: connection exception
java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.http.HttpClient.(HttpClient.java:211)
at sun.net.www.http.HttpClient.New(HttpClient.java:308)
at sun.net.www.http.HttpClient.New(HttpClient.java:326)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1169)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:933)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at com.inductiveautomation.ignition.client.nativelaunch.util.GatewayCommUtil.getGatewayConnection(GatewayCommUtil.java:94)
at com.inductiveautomation.ignition.client.nativelaunch.util.GatewayCommUtil.getGatewayRawResponse(GatewayCommUtil.java:124)
at com.inductiveautomation.ignition.client.nativelaunch.util.GatewayCommUtil.pingGateway(GatewayCommUtil.java:150)
at com.inductiveautomation.ignition.client.nativelaunch.ui.SplashFrame$CommWorker.initConnect(SplashFrame.java:527)
at com.inductiveautomation.ignition.client.nativelaunch.ui.SplashFrame$CommWorker.doInBackground(SplashFrame.java:419)
at com.inductiveautomation.ignition.client.nativelaunch.ui.SplashFrame$CommWorker.doInBackground(SplashFrame.java:375)
at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javax.swing.SwingWorker.run(SwingWorker.java:334)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
ERROR [SplashFrame ] [21:47:36,901]: Primary Gateway: connection exception
java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.http.HttpClient.(HttpClient.java:211)
at sun.net.www.http.HttpClient.New(HttpClient.java:308)
at sun.net.www.http.HttpClient.New(HttpClient.java:326)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1169)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:933)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at com.inductiveautomation.ignition.client.nativelaunch.util.GatewayCommUtil.getGatewayConnection(GatewayCommUtil.java:94)
at com.inductiveautomation.ignition.client.nativelaunch.util.GatewayCommUtil.getGatewayRawResponse(GatewayCommUtil.java:124)
at com.inductiveautomation.ignition.client.nativelaunch.util.GatewayCommUtil.pingGateway(GatewayCommUtil.java:150)
at com.inductiveautomation.ignition.client.nativelaunch.ui.SplashFrame$CommWorker.initConnect(SplashFrame.java:527)
at com.inductiveautomation.ignition.client.nativelaunch.ui.SplashFrame$CommWorker.doInBackground(SplashFrame.java:419)
at com.inductiveautomation.ignition.client.nativelaunch.ui.SplashFrame$CommWorker.doInBackground(SplashFrame.java:375)
at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javax.swing.SwingWorker.run(SwingWorker.java:334)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
etc…
As I mentioned above, the new v7.9.10 linux NCL will not install at all on the Pi 3s. Any suggestions?
This doesn't seem related to the embedded Java - has something else happened on your network? Can you ping/echo/tracert between the clients and the gateway? Specifically on whatever http port you've assigned your gateway to use?
I am able to ping from each of the Pi 3s to the server and vice versa.
Another symptom is that on all of my windows devices, the NCL links did not work after the upgrade. I had to delete them and and download the v7.9.10 windows NCL to access the projects.
I would think that if the new windows NCL works that there is no port or network issue. The only element that has changed is the version of Ignition.
Why does the v7.9.10 linux NCL no longer open on the Pi 3s?
Something is up with the “new” launchers and running on the RPi, I’m looking into it currently. In the meantime, as Paul mentioned, you can use the legacy launchers, which are included as part of your 7.9.10 install. They can be found in installdir/lib/core/launch, where installdir is the root of the Ignition installation.
For ease in deployment, you can rename legacyclientlauncher.tar.gz to clientlauncher.tar.gz (after renaming the current clientlauncher.tar.gz to something else), which will allow for the legacy launchers to be downloaded through the link on the gateway web page.
Thanks for the input. Having followed your suggestions, the v7.9.10 legacy native client launcher opens and installs on the raspberry pi’s but gives the error “java.lang.ExceptioninitializerError” at the final stage of opening a project. Is it possible there is java issue? The RPis are running java 8 v1.8_65
A long shot, but do you have the Web Browser module loaded on your Gateway? Our RPI clients quit working a while back right after the module was installed, since the clients were trying to load the module and the platform was not supported. This may have been fixed by now, but I thought I’d mention it.
I was going to have you enable the Java console in the Java Control Panel, but it doesn’t appear that the control panel is included with the ARM JDK.
In any event, my suspicion is the same as what Oscar mentioned above, which is that the error is happening because the client is trying to load the Web Browser module, and the module isn’t supported on ARM. If you have the Web Browser installed and don’t have any clients using it, just uninstall it - otherwise, you can try reverting just the Web Browser module to the 7.9.0 version.
A fix was already made in 7.9.11 - we fixed the behavior of the web browser module, so that if the client OS isn't supported by JxBrowser, the component will simply fail to load - the rest of your project will load fine, and you won't need to make changes to your gateway.
Not yet - there are a few other issues with the NCLs in 7.9.10 that we've identified and would like to fix, and then it all needs to go through some more QA.
Would using and older version of Web Browser module work until v7.9.11 is released? Or is the issue that the NCL will try to load it no matter what version it is?
The NCL will always try to load whatever modules the gateway it’s pointed at has - but rolling back the browser module may work because in 7.9.3 we upgraded the underlying browser library, and in that upgrade the third-party dropped compatibility for certain platforms.
Has there been any resolution yet? We are having the same launcher problem. Is it possible to get just the loader from .11 even if it has not gone through QA? All our ARM processor computers are pretty much useless right now.