# FL Studio on Fedora (with PipeASIO and sandboxing)

July 2, 2026


> Before you commit to FL Studio, I advise you to watch [this video](https://www.youtube.com/watch?v=OEHzvtA8Wzw).

FL runs surprisingly 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](https://github.com/M0n7y5/pipeasio/) is a brilliant alternative to [WineASIO](https://github.com/wineasio/wineasio/) which skips the Jack compatibility layer altogether.

## Build PipeASIO on Fedora

First, the building blocks:

```shell
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:

```bash
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:

```bash
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.

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

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

```bash
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:

```bash
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.

```bash
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:

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

Check it worked:

```bash
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:

```bash
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:

```bash
~/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.

