Headless Server Software/ARM

From Resonite Wiki
Revision as of 19:02, 18 May 2025 by J4 (talk | contribs) (add base of guide (via SublimeText.Mediawiker))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
While this method can work, it is currently not officially supported. See issue GH-2555 for the status on official support

With some work, it is possible to run the Headless Server Software on ARM-based machines, such as the Oracle Cloud free tier.

Do note this page concerns aarch64 CPUs. If you are using a different kind of ARM CPU, those instructions will not apply and further steps will need to be taken.

Similarly, this page assumes you are using a Linux-based system.

Steps

Pre-requisites

Several pre-requisites are needed to run the Headless:

  • .NET 8 SDK
  • .NET 9 Runtime
  • ILSpy Command Line Tool (ilspycmd on most distributions)
    • You can install it using dotnet tool install --global ilspycmd
  • Either SteamCMD or DepotDownloader to Download the headless
    • SteamCMD is not officially supported on ARM

Downloading the Headless Server Software

SteamCMD

Downloading the Headless Server Software through SteamCMD is done as following:

steamcmd +force_install_dir /path/to/install \
  +login YOUR_STEAM_USERNAME YOUR_STEAM_PASSWORD \
  +app_update 2519830 -beta headless -betapassword HEADLESS_BETA_CODE validate \
  +quit

DepotDownloader

Downloading the Headless Server Software through DepotDownloader is done as following:

DepotDownloader -app 2519830 \
  -username YOUR_STEAM_USERNAME -password YOUR_STEAM_PASSWORD \
  -branch headless -branchpassword HEADLESS_BETA_CODE \
  -dir /path/to/install

Getting native libraries

The Headless Server Software needs a number of native libraries to function properly.

A set of libraries pre-compiled for ARM is available, courtesy of J4. More information is available on its website.

First, download and unzip the libraries:

wget https://i.j4.lc/resonite/libraries-arm.zip
unzip libraries-arm.zip

Then copy the libraries to the directory in which the Headless Server Software is present:

find . -type f -exec cp {} /path/to/install/ \;

Finally, rename libfreetype to ensure compatibility with the one needed:

mv /path/to/install/libfreetype.so /path/to/install/libfreetype6.so
SteamWorks.NET

Among the libraries needed for the Headless Server Software, SteamWorks.NET is a special case as it is simply not available for ARM systems at the moment, due to some technical constrains.

You will need to recompile it with the correct architecture, which can be done like so:

Create a de-compilation directory, then de-compile SteamWorks.NET to it:

mkdir decomp && cd decomp
ilspycmd /path/to/install/Headless/Steamworks.NET.dll -r ./ -p -o .

Open the Steamworks.NET.csproj with a text editor (nano and vim are commonly used), and edit the PlatformTarget and PlatformTarget tags so they match the following:

<PlatformTarget>x86</PlatformTarget>

And:

<PlatformTarget>AnyCPU</PlatformTarget>

You can then build the library using dotnet build -c Release.

Once the compilation is finished, you can copy the built DLL library file to the headless location:

cp bin/Release/netstandard2.1/Steamworks.NET.dll /path/to/install/Headless/Steamworks.NET.dll

Launching the Headless Server Software

You can now launch the Headless Server Software like on x64-based machines:

dotnet /path/to/install/Headless/Resonite.dll

Acknowledgements

Several people made running Resonite on ARM-based machines possible:

  • Orion Moonclaw for helping and testing native libraries
  • WattleFoxxo for compiling the information and writing the original version of this guide on Discord
  • J4 for providing build processes and pre-compiled native libraries