FL Studio on Fedora (with PipeASIO and sandboxing)

FL runs suprisingly well under Wine. It’s also a good idea to keep it in a sandboxed environment so it can’t access the rest of your system.

PipeASIO is a brilliant alternative to WineASIO which skips the Jack compatibility layer altogether.

Build PipeASIO on Fedora

First, the building blocks:

sudo dnf install wine cmake gcc-c++ wine-devel pipewire-devel qt6-qtbase-devel firejail

Now you’re ready to build PipeASIO:

git clone https://github.com/M0n7y5/pipeasio.git
cd pipeasio
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build --prefix "$HOME/.local"

Initialize Wine Prefix

Create an isolated container for FL Studio to live in:

mkdir -p ~/isolated-apps/flstudio/wineprefix
firejail \
  --private="$HOME/isolated-apps/flstudio" \
  --whitelist="$HOME/isolated-apps/flstudio" \
  --env=WINEPREFIX="$HOME/wineprefix" \
  --env=WINEARCH=win64 \
  wine wineboot --init

Verify the structure exists:

ls ~/isolated-apps/flstudio/wineprefix

You should see drive_c, system.reg, and related files.

Install FL Studio

Keep the installer inside the sandbox. This way nothing else needs whitelisting.

cp /path/to/FLStudio_installer.exe ~/isolated-apps/flstudio/

Run the installer. Network is open here - it needs to check licensing:

firejail \
  --private="$HOME/isolated-apps/flstudio" \
  --whitelist="$HOME/isolated-apps/flstudio" \
  --env=WINEPREFIX="$HOME/wineprefix" \
  wine "$HOME/flstudio_win64_25.2.5.5319.exe"

The command may hang after the installer finishes. Stop it with Ctrl+C.

Install PipeAsio

On Fedora with Wine-Staging 11, there’s a naming mismatch that breaks at runtime.

Copy the built DLLs into Wine’s system path:

sudo cp ~/.local/lib/wine/x86_64-windows/pipeasio64.dll /usr/lib64/wine-wow64/wine/x86_64-windows/
sudo cp ~/.local/lib/wine/x86_64-unix/pipeasio64.dll.so /usr/lib64/wine-wow64/wine/x86_64-unix/

Now the critical part: create a symlink. Wine’s builtin-DLL loader looks for pipeasio.dll internally, but the actual file is named pipeasio64.dll. Without this, you get “couldn’t load in-process dll” at runtime - the registration succeeds, but the load fails.

sudo ln -sf /usr/lib64/wine-wow64/wine/x86_64-unix/pipeasio64.dll.so \
  /usr/lib64/wine-wow64/wine/x86_64-unix/pipeasio.dll.so

This is a quirk in how pipeasio’s CMake build names its output versus what it bakes into the PE header.

Register into the prefix:

export WINEPREFIX="$HOME/isolated-apps/flstudio/wineprefix"
~/.local/bin/pipeasio-register
wineboot -u

Check it worked:

find ~/isolated-apps/flstudio/wineprefix -iname "*pipeasio*"

You should see the registered DLL entries.

Daily Launch

Create a script that runs FL Studio inside firejail:

cat > ~/isolated-apps/flstudio/run.sh << 'EOF'
#!/bin/bash
firejail \
  --noprofile \
  --net=none \
  --private="$HOME/isolated-apps/flstudio" \
  --whitelist="$HOME/isolated-apps/flstudio" \
  --whitelist=/run/user/1000 \
  --whitelist=/tmp/.X11-unix \
  --env=WINEPREFIX="$HOME/wineprefix" \
  --env=DISPLAY="$DISPLAY" \
  --env=WAYLAND_DISPLAY="$WAYLAND_DISPLAY" \
  --env=XDG_RUNTIME_DIR=/run/user/1000 \
  --caps.drop=all \
  --seccomp \
  --private-dev \
  --nonewprivs \
  --noroot \
  wine "C:\\Program Files\\Image-Line\\FL Studio 2025\\FL64.exe"
EOF
chmod +x ~/isolated-apps/flstudio/run.sh

Run it:

~/isolated-apps/flstudio/run.sh

Open Audio Settings in FL Studio. PipeAsio should appear as an ASIO driver. If you prefer to use FL Cloud or other network features, drop the --net=none flag.