FAudio for Dummies (Ubuntu based distros)

What is FAudio?

FAudio was created by Ethan Lee to as part of the FNA project to make XNA libraries open source. Specifically, FAudio is a drop in replacement for XAudio2, X3DAudio, XAPO, and XACT3.

Okay, how does this differ from “winetricks xact”?

Winetricks’ xact verb uses non-free DLLs that can’t be redistributed with something like Proton. Same goes for corefonts, which is why Proton uses a open source derivative of corefonts and FAudio is the replacement for XAudio.

Is it bundled with Proton?

Absolutely. Proton releases come with FAudio already so it is OOTB ready for games that use XAudio.

I’m hearing about “Protonified” Wine builds… Is it similar to a standalone Proton?

Sort of… Most likely where you heard this term is either from TK-Glitch or GloriosEggroll’s specialized Wine builds that are sometimes hosted on Lutris.

GloriousEggroll goes as far to offer drop-in replacements for Steam’s Proton as an all in one package:

These have pretty much all the fixes you could possibly need, and FAudio, FFmpeg, D9VK and DXVK packaged all together. The installation instructions also only require you to make a new folder in your Steam install directory called compatibilitytools.d.

I like Lutris, but I want to upgrade my vanilla Wine Staging prefix to a Protonified one from Lutris without the client doing it for me… (AKA, I use Lutris’ Wine Builds outside of Lutris)

Not so fast. The difference between a build such as tkg-4.6 and ge-protonified-4.10 means the protonified build requires more dependencies on your system. Lutris bundles everything, but running a Lutris build in /opt/wine-staging will not have proper environment variables so you have to install system libraries for what it bundles rather than using what’s bundled.

Lutris does some behind the scenes housekeeping to get that sorted out by setting environment variables, but for the uninitiated, (or if Lutris DOESN’T do it for you) let’s get the FAudio System Libraries working first.

Installing FAudio and FFmpeg from PPAs (Ubuntu based distros)

You will need the latest FFmpeg PPA or this installation will not work as smoothly. Use the following PPA to get started:

sudo add-apt-repository ppa:mc3man/bionic-media

and do

sudo apt install ffmpeg

OR

If you want to live on the risky side, you can get git master builds of FFmpeg here:

https://johnvansickle.com/ffmpeg/ (this won’t satisfy dpkg dependencies though, hence why I’m recommending the mc3man PPA)


Next, add the FAudio PPA:

sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport

and install the libfaudio-dev package:

sudo apt install libfaudio-dev

libsdl2-2.0.0 2.0.9 should also be installed.

You are now ready to swap your vanilla Wine Staging prefix to the Lutris build by renaming /opt/wine-staging to /opt/wine-staging-old, and renaming ge-protonified* from the tar.gz you obtained from https://lutris.net/api/runners/wine to wine-staging and copying that to /opt/wine-staging, then running a winecfg to finish it off.

But what about if I already did winetricks?

I used to think that was the root cause of the issues with the Protonified builds, but it turns out you can just leave the winetricks verbs present in the prefix and the Wine build itself will just reference elsewhere. Early failures were actually because the FAudio System Libraries weren’t installed, not because the Winetricks stuff was conflicting with FAudio. It is perfectly safe to update a winetricks xact prefix to FAudio, but remember the system libraries.

What about other distros?

You will need to find a package maintainer for FAudio or build from source yourself. This does make it hard to use FAudio versions of Wine from Lutris without Lutris, so I would recommend using Lutris. (Unless you have applications outside of games that need a system installation of Wine, which means you need to build system libraries and install them from source. FFmpeg may also need to be installed from source in the worst case scenario.)

Why all of a sudden this change now?

TK-Glitch, who made his all purpose Wine builds available to Lutris to their Wine Buildbot, recently severed ties with Lutris after GloriousEggroll came back to making Wine versions. Unfortunately, all future Wine versions are Protonified FAudio builds, with no plans to make builds without FAudio or using a vanilla Wine Staging base with TKG patches on top. This puts people in the position where it’s Protonified and FAudio or bust. And to those without the Lutris client installed simply using the buildbot builds, this caught people off guard. Since there is no support for using a Lutris Wine build in place of a system Wine Staging build, this thread was basically made to say “this change is here to stay, here’s how to move forward without breaking anything.”

I like wine-tkg-4.6 though…

You’re gonna be stuck in the same situation many Windows 7 users will be facing next year, a Wine version with no new updates, and unable to adapt to changes like Overwatch breaking older versions of Wine, or fixes to controller rumble in Wine 4.10.

If you play any online games, it is highly recommended to keep current in terms of Wine versions. Battle Net for instance recently stopped working for everything except Lutris Wine 5.2+

TL;DR?

The new Lutris builds of Wine all use FAudio. Remember to have the FAudio system libraries and FFmpeg also installed in case you unofficially put a recent Lutris build of Wine in place of your vanilla Wine Staging system installation. If FAudio shared libraries are not installed, Lutris Wine builds will no longer work in /opt/wine-staging.

Thanks for reading! If you found this useful, please leave a reply.

3 Likes

Out of curiosity, what does wine tkg provide that protonified does not?

It’s based off of vanilla Wine Staging with only TKG patches and no Proton patches or FAudio. Some online multiplayer games don’t like the Proton patches, especially EA ones. One case of someone being banned for using Protonified playing Battlefield has been reported… and EA being EA, the person was unable in any way to appeal the ban.

This info is outdated

No it isn’t. It’s just the latest stable version rather than from Git. You must be thinking of git builds.

You can just use Proton-GE instead, about 10x easier.

Yes, but that’s not a good solution for non-Steam games like Overwatch. I couldn’t get Proton to work on non-Steam games at all.

Odd, I can. Did you make sure you added them correctly since steam botches the target and commands up the first time… No idea when valve intend to fix that issue but allot of new comers get snagged on it.

There are LOADS of ways to get snagged on steamplay, it is not as simple as it looks.

Corrected the commands and it still doesn’t work. I tried many times to get Cinebench R15 working in Proton and all attempts have thus far failed.

Proton is a fickle thing, there are 100 ways it can just break completely depending on how you set it up, for example the proton resources can’t be installed on a secondary drive, must be in $HOME .steam folder etc…

In saying that I have never tried Cinebench R15, will see if I can give it a go. (no idea why someone would want such a program running under wine)

Benchmarks. It’s like the Unigine Valley benchmark but for CPUs.

But running it through wine/proton would be kinda pointless? I mean is there not a native version? or native CPU benchmark?

There is no native version.

But the point would be comparing Windows performance vs. WINE performance…

/edit
Then again: not sure why one would need Proton for this?

System WINE (4.15 staging):

/edit2
Also… Cinebench under Proton (4.11-3):

Huh, so version 20 somehow works? I couldn’t for the life of me get version 15 working in Proton.

I didn’t try 15, don’t think it’s on their site anymore.

But either way, Proton doesn’t like doing non-steam games.

It’s basically a hack-around… you need to install a windows-only game, “play” that with Proton once so it sets up the environment, then move the files of whatever you want to actually play/execute into that games directory (or symlink it), and rename both .exes so that steam executes the right .exe.
It’s kind of a stupid way to do things but currently it appears that’s the only way.

/edit
Same method works fine:

Proton just doesn’t recognize it when adding an non-steam game’s .exe

Huh? Really? So you’re basically replacing files like how I just described to shift from the wine-staging version of Wine to a Lutris build? No wonder not many people have gotten this.

I’ll try with Age of Empires II to launch Cinebench R20 when I have time.

Yeah, oldest trick in the book :stuck_out_tongue:

I tried it with Clickerheroes because that was in my Library from ages ago. There’s also scripts on google/reddit that automate swapping the files around if you want/need to run different applications in a given dummy-game.

I suppose this will work for everything that doesn’t need any specific settings to be applied to the prefix.

Also to clarify: I did try adding Cinebench as a non-steam game, and trying to start it just immediately closed it, not even any errors…

Yup, immediately closing it was the symptom I got each time.

Huh funny… regarding the “not even any errors”… I started Steam from the command line and tried starting cinebench:

/bin/sh: /home/tarulia/Downloads/CinebenchR20/Cinebench.exe: Permission denied
>>> Adding process 28385 for game ID 33554432
Game removed: AppID 0 "Cinebench.exe", ProcID 28384 

OK I guess? Pretty sure I have permissions for my home…



Oh my god… guess we’re both a little slow…
chmod +x Cinebench.exe and it works perfectly fine :woman_facepalming:

Not sure what Proton does different then System WINE that it needs +x tho…

Getting a metric shitton of 002b:fixme:msvideo:DrawDibDraw wFlags == 0x00001000 not handled, but it runs through the benchmark fine.

For me it didn’t do anything… “Launch” was a placebo. No log entries, no nothing.