Vision Client on Raspberry Pi – 400 Bad Request from legacyClient.sh

Hi everyone,

I’m trying to run an Ignition Vision Client on a Raspberry Pi 5 running Ubuntu 24.04 LTS Desktop. The Ignition Gateway is installed locally on the same Pi and is running fine (confirmed via browser access to http://127.0.0.1:8088).

I’m using the legacyClient.sh script to launch the Vision Client with the following command:

./legacyClient.sh address=http://127.0.0.1:8088 scope=C project=PLC_Teststand windowmode=W

The bootstrap process starts, downloads the launchclient.jar, and initializes the JVM, but then fails with the following error:

sudo ./legacyClient.sh address=http://127.0.0.1:8088 scope=c project=PLC_Teststand windowmode=F
[sudo] password for scada: 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 6684k  100 6684k    0     0   123M      0 --:--:-- --:--:-- --:--:--  125M
Initialization performed successfully
JVM-wide ObjectInputFilter set up successfully
Platform serialFilter has 88 pattern(s)
Starting Bootstrap Loader v3.0
Connect Step [attempt 1] connecting to: http://127.0.0.1:8088...
Downloading manifest at http://127.0.0.1:8088/system/launchmf/C?os=linux
Connect attempt 1 for address http://127.0.0.1:8088 failed.
com.inductiveautomation.ignition.client.launch.steps.HttpResponseException: 400: Bad Request
	at com.inductiveautomation.ignition.client.launch.steps.ConnectStep.downloadManifest(ConnectStep.java:192)
	at com.inductiveautomation.ignition.client.launch.steps.ConnectStep.downloadManifest(ConnectStep.java:116)
	at com.inductiveautomation.ignition.client.launch.steps.ConnectStep.run(ConnectStep.java:58)
	at com.inductiveautomation.ignition.client.launch.AbstractStepRunner.run(AbstractStepRunner.java:33)
	at java.base/java.lang.Thread.run(Thread.java:829)
com.inductiveautomation.ignition.client.launch.steps.HttpResponseException: 400: Bad Request
	at com.inductiveautomation.ignition.client.launch.steps.ConnectStep.downloadManifest(ConnectStep.java:192)
	at com.inductiveautomation.ignition.client.launch.steps.ConnectStep.downloadManifest(ConnectStep.java:116)
	at com.inductiveautomation.ignition.client.launch.steps.ConnectStep.run(ConnectStep.java:58)
	at com.inductiveautomation.ignition.client.launch.AbstractStepRunner.run(AbstractStepRunner.java:33)
	at java.base/java.lang.Thread.run(Thread.java:829)


###What I’ve checked so far:

  • The Gateway is accessible in the browser on the Pi at http://127.0.0.1:8088
  • The project PLC_Teststand exists and launches fine from another (x86) client
  • The command works on an x86_64 machine, so the arguments are correct
  • The system is running in Trial Mode
  • Using BellSoft Liberica JDK 11 for ARM

What I suspect:

  • This could be architecture-related (ARM vs x86)
  • It might relate to how the legacy launcher handles the launchmf call or project name
  • Possibly the os=linux parameter or a missing header is causing the 400

My Questions:

  1. Is launching Vision Clients via legacyClient.sh officially supported on ARM (e.g. Raspberry Pi)?
  2. Are there any known limitations or fixes for this?
  3. Are there other relevant loggers I should enable to trace this (e.g. for the launchmf handler)?
  • So far I tried setting gateway.FederationRoutes to DEBUG – but I didn’t see anything related to this 400 error.

Thanks in advance for any suggestions!

...
Downloading manifest at http://127.0.0.1:8088/system/launchmf/C?os=linux
...

I believe it is getting a 400 here due to arch not being supplied. As of 8.1.47, arch is a required parameter. That said, the launchclient.jar that the legacy script downloads from the gateway should have the corresponding logic to provide that arch argument with the manifest download (based ultimately on the os.arch system property set by the JVM).

Can you provide some additional details?

  • What version of Ignition are you using
  • You mention Raspberry Pi 5 running Ubuntu 24.04, I'm assuming architecture is aarch64? (please provide output of uname -a)
  • What version of Java are you using (where you're launching legacyClient.sh, perhaps just the response from java --version)

Thanks for the quick reply!

Here are the details you asked for:

System Details

  • Ignition Version: 8.1.48
  • Platform: Raspberry Pi 5
  • OS: Ubuntu 24.04 LTS 64-bit
  • Architecture: Output of uname -a:
Linux scada-desktop 6.8.0-1030-raspi #34-Ubuntu SMP PREEMPT_DYNAMIC Mon Jun 23 05:50:33 UTC 2025 aarch64 aarch64 aarch64 GNU/Linux
  • Java Version (Liberica JDK 11):
scada@scada-desktop:~/Downloads$ java --version
openjdk version "11.0.27" 2025-04-15 LTS
OpenJDK Runtime Environment (build 11.0.27+9-LTS)
OpenJDK 64-Bit Server VM (build 11.0.27+9-LTS, mixed mode)
scada@scada-desktop:~/Downloads$ echo $JAVA_HOME
/usr/lib/jvm/bellsoft-java11-aarch64

You'll need to use Java 17 for Ignition 8.1.33+. Let's try that first...

You could probably try this temporarily using the one shipped with Ignition if it is installed on the same device:

export IGNITION_INSTALL_LOCATION="/usr/local/bin/ignition"
export JAVA_HOME="${IGNITION_INSTALL_LOCATION}/lib/runtime/jre-aarch64"
export PATH="${JAVA_HOME}/bin:$PATH"
java --version

... which should then emit:

openjdk 17.0.14 2025-01-21 LTS
OpenJDK Runtime Environment Zulu17.56+16-SA (build 17.0.14+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.56+16-SA (build 17.0.14+7-LTS, mixed mode)

Thanks again for the follow-up.

I’ve now switched to Java 17 using the runtime provided by Ignition itself:

export IGNITION_INSTALL_LOCATION=/usr/local/bin/ignition
export JAVA_HOME="${IGNITION_INSTALL_LOCATION}/lib/runtime/jre-aarch64"
export PATH="${JAVA_HOME}/bin:$PATH"

Output from java --version confirms it's active:

openjdk 17.0.14 2025-01-21 LTS
OpenJDK Runtime Environment Zulu17.56+16-SA (build 17.0.14+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.56+16-SA (build 17.0.14+7-LTS, mixed mode)

However, I still get the same 400 error when launching the Vision Client via legacyClient.sh:

Starting Bootstrap Loader v3.0
Connect Step [attempt 1] connecting to: http://127.0.0.1:8088...
Downloading manifest at http://127.0.0.1:8088/system/launchmf/C?os=linux
Connect attempt 1 for address http://127.0.0.1:8088 failed.
com.inductiveautomation.ignition.client.launch.steps.HttpResponseException: 400: Bad Request

Thanks again for the help!

It doesn't look like aarch64 is a supported architecture for the launch manifest for 8.1.x, unfortunately. The only workaround that might work at this time is to use Raspberry Pi OS (32-bit) on your Pi 5 (Ubuntu doesn't offer a 32-bit variant).

The good news is that I was able to mock this up (via tigervnc-standalone-server package inside a Docker container) on aarch64 under our 8.3 dev branch--so once 8.3.0 is released, it might work. We don't formally support launching Vision/Designer on linux/arm or linux/arm64 though.