Air Player on Raspberry Pi 4

Support for Air Player desktop on ARM devices, like the Raspberry Pi.

Moderators: russ, Ralph

Message
Author
mar1ram
Posts: 7
Joined: Fri May 22, 2020 6:46 pm

Air Player on Raspberry Pi 4

#1 Post by mar1ram »

Can Air Player Desktop run a Raspberry Pi 4? There doesn't seem to be any issue with system requirements (Debian 32 bit, OpenGL 2.1).

I've replaced "arm64" by "armhf" in Setup.sh and got the libraries installed. But neither Bootloader nor AirPlayer would launch. I get the error "cannot execute binary file: Exec format error". Could it be that 32 bit is not actually supported?

I haven't tried flashing the SD card with the Air Player for RSPI image (would that even work on RSPI 4, system requirements only mention RSPI 2 and 3?), but I need to stick to the OS version I'm using.

On a related note, any plans to package a 32 bit version of Air Manager? Would be nice to run it on a Raspberry Pi too.
Last edited by mar1ram on Sat May 23, 2020 8:45 am, edited 1 time in total.

User avatar
Keith Baxter
Posts: 4685
Joined: Wed Dec 20, 2017 11:00 am
Location: Botswana

Re: Air Player on Raspberry Pi 4

#2 Post by Keith Baxter »

mar1ram wrote: Fri May 22, 2020 7:11 pm Can Air Player Desktop run a Raspberry Pi 4? There doesn't seem to be any issue with system requirements (Debian 32 bit, OpenGL 2.1).

I've replaced "arm64" by "armhf" in Setup.sh and got the libraries installed. But neither Bootloader or AirPlayer would launch. I get the error "cannot execute binary file: Exec format error". Could it be that 32 bit is not actually supported?

I haven't tried flashing the SD card with the Air Player for RSPI image (would that even work on RSPI 4, system requirements only mention RSPI 2 and 3?), but I need to stick to the OS version I'm using.

On a related note, any plans to package a 32 bit version of Air Manager? Would be nice to run it on a Raspberry Pi too.
Hi, welcome to the forum,

This thread will answer most of your questions.

viewtopic.php?f=32&t=2112

Keith
AMD RYZEN 9 5950X CPU, Corsair H80I cooler, ASUS TUF GAMING B550-PLUS AMD Ryzen Mother Board,  32Gb ram Corsair Vengeance 3000Mh, MSI GTX960 4G graphics card 

mar1ram
Posts: 7
Joined: Fri May 22, 2020 6:46 pm

Re: Air Player on Raspberry Pi 4

#3 Post by mar1ram »

Thanks Keith, but I think everyone on that thread were flashing the image on an SD card. I'm trying to see if I can make the Air Player for Desktop (Linux) version work on my Raspberry Pi 4 instead.

-Marwan

User avatar
Keith Baxter
Posts: 4685
Joined: Wed Dec 20, 2017 11:00 am
Location: Botswana

Re: Air Player on Raspberry Pi 4

#4 Post by Keith Baxter »

Hi Marwin,

That @Corjan would only be able to help us with but my feeling is that the Pi is Too small. A RPi 3 battles to run some of the bigger instruments.
Interesting thought though.

Keith
AMD RYZEN 9 5950X CPU, Corsair H80I cooler, ASUS TUF GAMING B550-PLUS AMD Ryzen Mother Board,  32Gb ram Corsair Vengeance 3000Mh, MSI GTX960 4G graphics card 

mar1ram
Posts: 7
Joined: Fri May 22, 2020 6:46 pm

Re: Air Player on Raspberry Pi 4

#5 Post by mar1ram »

@Corjan, any ideas on this one?

In a nutshell, the questions are:
- Is Air Player Desktop really compatible with Debian 32 bit systems? Binary file is non-executable on my Raspberry Pi 4.
- Can Air Manager Desktop be made compatible with 32 bit systems?

Thanks,
Marwan

User avatar
Corjan
Posts: 2939
Joined: Thu Nov 19, 2015 9:04 am

Re: Air Player on Raspberry Pi 4

#6 Post by Corjan »

Hi,


Oops, looks like there was a fault on the wiki with the release notes.
Air Player for Linux is only 64 bits.

I think I read somewhere though that newer Operating systems for the Pi are also 64 bit?


Corjan

mar1ram
Posts: 7
Joined: Fri May 22, 2020 6:46 pm

Re: Air Player on Raspberry Pi 4

#7 Post by mar1ram »

Hi @Corjan ,

Thanks for the reply and good to know Air Player for Linux is only for 64 bit systems.

I was able to install a 64 bit flavor of Ubuntu on my RSPI 4, but the executables seem to have been compiled for an AMD64 architecture, and not ARM64:

Code: Select all

ubuntu@ubuntu:~/Documents/Air Manager 3.7$ ./Bootloader
bash: ./Bootloader: cannot execute binary file: Exec format error
I then installed Bellsoft's Liberica Full JRE 14.0.1+8 ARM 64 bit for Linux, and tried java -jar AirManager.jar, but get the following error:

Code: Select all

ubuntu@ubuntu:~/Documents/Air Manager 3.7$ java -jar ./AirManager.jar 
** (java:13418): WARNING **: 16:17:35.050: AT-SPI: Could not obtain desktop path or name


** (java:13418): WARNING **: 16:17:35.119: atk-bridge: get_device_events_reply: unknown signature

** (java:13418): WARNING **: 16:17:35.119: atk-bridge: get_device_events_reply: unknown signature

** (java:13418): WARNING **: 16:17:35.119: atk-bridge: GetRegisteredEvents returned message with unknown signature

** (java:13418): WARNING **: 16:17:35.131: AT-SPI: Could not obtain desktop path or name


** (java:13418): WARNING **: 16:17:35.133: AT-SPI: Could not obtain desktop path or name

Exception in Application start method
Exception in Application stop method
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
	at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'AppBase': Native library (linux-aarch64/libAppBase.so) not found in resource path (./AirManager.jar)
	at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:277)
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:403)
	at com.sun.jna.Library$Handler.<init>(Library.java:147)
	at com.sun.jna.Native.loadLibrary(Native.java:502)
	at com.sun.jna.Native.loadLibrary(Native.java:481)
	at com.siminnovations.guientity.EBHandler.<init>(Unknown Source)
	at com.siminnovations.guientity.EntityManager.<clinit>(Unknown Source)
	at com.siminnovations.airmanager.AirManager.start(Unknown Source)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
	at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
	at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
	at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
	... 1 more
Exception running application com.siminnovations.airmanager.AirManager
I suspect that the .jar was compiled with OpenJDK 8 and not 14, but the problem is that there is no ARM64 version of a full OpenJDK 8 jre or jdk that includes Liberica FX. When I try running the jar with the standard OpenJDK 8 (without FX), I get:

Code: Select all

ubuntu@ubuntu:~/Documents/Air Manager 3.7$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                                Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/bellsoft-java14-full-aarch64/bin/java   21400013  auto mode
  1            /usr/lib/jvm/bellsoft-java14-full-aarch64/bin/java   21400013  manual mode
* 2            /usr/lib/jvm/java-8-openjdk-arm64/jre/bin/java       1081      manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
ubuntu@ubuntu:~/Documents/Air Manager 3.7$ java -jar AirManager.jar 
Error: JavaFX runtime components are missing, and are required to run this application
Could you please confirm the exact OpenJDK version Air Manager 3.7 uses? And if it's indeed full OpenJDK 8, do you have any ideas?

Thanks a lot!
Marwan

User avatar
Corjan
Posts: 2939
Joined: Thu Nov 19, 2015 9:04 am

Re: Air Player on Raspberry Pi 4

#8 Post by Corjan »

Hi,


Oops, yes you are right, it is completely different platform. Weird that this did not cross my mind.

I'm afraid this is not possible then, since big parts of Air Manager is native code, it is not pure java. I also think performance would be bad anyways in desktop Linux.


Corjan

mar1ram
Posts: 7
Joined: Fri May 22, 2020 6:46 pm

Re: Air Player on Raspberry Pi 4

#9 Post by mar1ram »

Thanks @Corjan. How about Air Player then? Would it be feasible to get an ARM64-compatible version that can run standalone (without flashing the full image)?

User avatar
Corjan
Posts: 2939
Joined: Thu Nov 19, 2015 9:04 am

Re: Air Player on Raspberry Pi 4

#10 Post by Corjan »

Hi,


You can download the application here:
https://www.siminnovations.com/api3/dow ... n=HOME_USE

Note that this application can only run on a headless Linux version (I think). And there is very little documentation on how to get it going, although it is similar to the regular AMD64 Air Player for Linux.


Corjan

Post Reply