Reaper (Linux) on FreeBSD

Reaper (Linux) v7.34 tested on FreeBSD Release 14.2-p1 installation with the XFCE 4.20 desktop environment.

This guide assumes:

-a suitable OS configuration for desktop/laptop use is already done
-user membership in the groups: wheel, operator, realtime, video
-Linux Binary Compatibility is enabled in /boot/loader.conf and /etc/rc.conf
-proc mounting is configured correctly in /etc/fstab

Minimum required packages for Reaper to execute successfully:

Rocky Linux 9 Base
emulators/linux_base-rl9

Shared Library for: libasound.so.2
audio/linux-rl9-alsa-lib

Shared Library for: libX11.so.6
x11/linux-rl9-xorg-libs

Shared Library for: libGL.so.1
graphics/linux-rl9-libglvnd

GTK Compatibility for: gdk_init_check
x11-toolkits/linux-rl9-gtk2
x11-toolkits/linux-rl9-gtk3

These are enough to get Reaper running, but deeper testing is needed.
 
Last edited:
Recommended Configuration Settings:

Allow unlimited RAM memory-locking in /etc/login.conf
Code:
:memorylocked=unlimited:\

Allow realtime priority in /etc/rc.conf
Code:
kld_list="mac_priority"
 
Audio Devices:

Please note this installation will default to the 'dummy audio' or 'audio device closed' settings. Reaper supports JACK, ALSA, and PulseAudio as audio devices.

JACK: shows up as [not installed on system] in Reaper's preferences. Reaper is not able to recognize FreeBSD's version of JACK when it is running, at least not with default settings. JACK is (probably) the preferred audio method when running any DAW on FreeBSD, especially considering the work going into the OSS backend currently. I am going to ask the Reaper Linux community if there is more information on how exactly Reaper searches for and connects to a JACK installation.

ALSA: I have audio playback and record working successfully with the onboard internal soundcard of my laptop. I haven't tried a USB audio interface device yet but that will be coming up soon.

Install the OSS plugin for ALSA port:

Set the ALSA input and output devices to "default" by typing it in the boxes (see pic) I also set RT Priority to 99 (maximum) and checked the Disable power management box...these seem like the best settings at the time of this writing, but may change as more is learned. You can improve performance by fiddling with the blocksize and periods settings (see Reaper Handbook).

Screenshot_2025-03-17_23-03-34.png


ALSA is currently the preferred / recommended method of running Reaper on Linux, and while we are lucky to have a great ALSA-to-OSS plugin to compensate, its JACK that we should focus on imo.

PulseAudio: I experimented a bit, but cannot get Reaper to play well with pulseaudio in Rocky Linux at all. Its also very annoying trying to get pulseaudio to play nice with anything besides the built-in soundcard anyways. I am not going to pursue any further testing with pulseaudio and consider it archaic.
 
Last edited:
my hero!

Found my weekend project, I have a registered licence (I am Canadian, that's how we spell it).

Question;: How did you install Reaper? I never used the Linux layer with FreeBSD, complete noob with it

I can help test running it. Thanks kindly
 
slightly off topic but Michael J. Fox was in class of 1984
but he was called Michael Fox

just some pointless movie trivia

most people dont know he's Canadian

Same thing with William Shatner
( i used to watch TJ Hooker )
 
How did you install Reaper? I never used the Linux layer with FreeBSD, complete noob with it
The Linux stuff should just werk after installing the packages in my first post as long as you have proc mounted and Linux enabled in your /etc/rc.conf and /boot/loader.conf as per FreeBSD handbook. The Linux directory and daemons only get used as pointers and don't really affect performance due to the brilliant design. The main issue currently is that ALSA is the default, which isn't ideal for FreeBSD users, hence I'm going to look into getting the JACK option working. Reaper is very modular and it will install the single necessary folder wherever you choose to extract the tarball. It also looks for /home/user/Documents to install the generic REAPER Media folder where new project sessions will default to, the same as it does on all other OSes. Let me know if you have any issues!
 
ardour works really well with the linux studio plugins

 
REAPER works perfectly with Jack, and can also route to Jack on FreeBSD if needed, see my previous link above. 🎶
Awesome I'm going to follow your steps when I get a chance, hopefully over the weekend. I didn't think to experiment with virtual_OSS at all, and actually had it turned off even. This is why collaboration is so great!
 
This is phenomenal. I'm close to having it running with ALSA, but I'm stuck on it not being able to get at /dev/dsp:

Code:
ALSA lib pcm_oss.c:883:(_snd_pcm_oss_open) Cannot open device /dev/dsp

I do have pulseaudio skulking around on my system as a dependency of various other packages. I have wondered if it was blocking /dev/dsp, but running reaper with pasuspender and killing the PA daemon before launching have had no effect. I can also confirm that Reaper won't see the FreeBSD pulseaudio instance or connect to it.

I also tried pipewire briefly, but no joy there, at least not with minimal effort.
 
This is phenomenal. I'm close to having it running with ALSA, but I'm stuck on it not being able to get at /dev/dsp:

Code:
ALSA lib pcm_oss.c:883:(_snd_pcm_oss_open) Cannot open device /dev/dsp

I do have pulseaudio skulking around on my system as a dependency of various other packages. I have wondered if it was blocking /dev/dsp, but running reaper with pasuspender and killing the PA daemon before launching have had no effect. I can also confirm that Reaper won't see the FreeBSD pulseaudio instance or connect to it.

I also tried pipewire briefly, but no joy there, at least not with minimal effort.

In FreeBSD one client does not block an audio device, it has an in-kernel mixer for 16 streams. (unless one client is in bitperfect mode)

The error message is not giving the actual errno. You might want to truss the process to find the actual ernno (like "no such file or directory" or "permission denied" etc.).
 
In FreeBSD one client does not block an audio device, it has an in-kernel mixer for 16 streams. (unless one client is in bitperfect mode)
That was my understanding as well, but I felt somewhat confused by this section of the handbook, which suggests:
Type fstat | grep dsp to check if another application is holding the device open.
Maybe that's a bitperfect mode situation since it's referring to audio daemons (TIL about bitperfect mode)?

TIL also about truss. I appreciate your taking the time to give tips to a noob coming over from Linux!

The truss log is very long; the block that looks to me relevant to audio is this:
Code:
linux_access("/home/geoff/.asoundrc",R_OK)     ERR#-2 'No such file or directory'
linux_access("/home/geoff/.config/alsa/asoundrc",R_OK) ERR#-2 'No such file or directory'
linux_access("/lib64/alsa-lib",X_OK)         = 0 (0x0)
linux_openat(0xffffff9c,0x1e055a0,0x80000,0x0)     = 6 (0x6)
read(0,0x0,0)                     = 832 (0x340)
linux_newfstat(6,0x7fffffff9570)         = 0 (0x0)
linux_mmap2(0x0,0x4108,0x1,0x802,0x6,0x0)     = 34409779200 (0x802fb9000)
linux_mmap2(0x802fba000,0x1000,0x5,0x812,0x6,0x1000) = 34409783296 (0x802fba000)
linux_mmap2(0x802fbb000,0x1000,0x1,0x812,0x6,0x2000) = 34409787392 (0x802fbb000)
linux_mmap2(0x802fbc000,0x2000,0x3,0x812,0x6,0x2000) = 34409791488 (0x802fbc000)
close(6)                     = 0 (0x0)
linux_mprotect(0x802fbc000,0x1000,0x1)         = 0 (0x0)
linux_openat(0xffffff9c,0x17ba2c0,0x0,0x0)     ERR#-95 'Operation not supported'
ALSA lib pcm_oss.c:883:(_snd_pcm_oss_open) linux_write(0x2,0x7fffffff8ed0,0x2b)         = 43 (0x2b)
Cannot open device /dev/dsplinux_write(0x2,0x7fffffff8fb0,0x1b)         = 27 (0x1b)

The most oft repeated line though is this:
Code:
linux_recvmsg(0x3,0x7fffffff8a30,0x0)         ERR#-11 'Resource temporarily unavailable'
 

Attachments

That is not immediately actionable since the Linux version of openat doesn't decode its arguments in truss. Maybe try ktrace/kdump? I doubt it does more Linuxulator decoding but you never know.
 
From ktrace/kdump:
Code:
  4479 reaper   CALL  linux_openat(AT_FDCWD,0x15ceac0,0<O_RDONLY>)
  4479 reaper   NAMI  "/dev/dsp"
  4479 reaper   RET   linux_openat -1 errno -95 Operation not supported
  4479 reaper   CALL  linux_write(0x2,0x7fffffff8ed0,0x2b)
  4479 reaper   GIO   fd 2 wrote 43 bytes
       "ALSA lib pcm_oss.c:883:(_snd_pcm_oss_open) "
  4479 reaper   RET   linux_write 43/0x2b
  4479 reaper   CALL  linux_write(0x2,0x7fffffff8fb0,0x1b)
  4479 reaper   GIO   fd 2 wrote 27 bytes
       "Cannot open device /dev/dsp"
 
Do you have a /dev/dsp?
Strangely, I seem to have an invisible /dev/dsp:
Code:
geoff@freebiez /dev> ls -la /dev/ | grep dsp
crw-rw-rw-   1 root  wheel     0x41 Aug  3 23:25 dsp0
crw-rw-rw-   1 root  wheel     0x43 Aug  3 23:25 dsp1
crw-rw-rw-   1 root  wheel     0x45 Aug  3 23:25 dsp2
crw-rw-rw-   1 root  wheel     0x47 Aug  3 23:25 dsp3
geoff@freebiez /dev> ln -s dsp0 dsp
ln: dsp: File exists
geoff@freebiez /dev [1]>
 
This is the CLOSEST I've got to run REAPER on FreeBSD.

But despite installing all the packages, I *ALWAYS* get the "[audio device closed]". :'‑(


Any help would be greatly appreciated.
 
I still think targeting the jack backend is most promising. Did you try truss'ing the attempt to connect to a jack server?

You said you tried with a FreeBSD jack, you could run a Linux binary jack server.
 
Back
Top