Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux compatibility #2

Open
pepinpin opened this issue Jan 2, 2019 · 106 comments
Open

Linux compatibility #2

pepinpin opened this issue Jan 2, 2019 · 106 comments

Comments

@pepinpin
Copy link

pepinpin commented Jan 2, 2019

Hi, now that steam is fully and properly supported on Linux, any plans on bringing this awesome mod on it ?? I m dying to get better at RL and I m sure your mod is the perfect tool for it

Thx in advance

@DatL4g
Copy link

DatL4g commented Jan 4, 2020

Any progress on this @Bakkes ?

@d2vydov
Copy link

d2vydov commented Jan 8, 2020

Bump, Mac OS support also will be so awesome

@DatL4g
Copy link

DatL4g commented Mar 29, 2020

Since Rocket League can only be used with Proton without restrictions, you can theoretically start BakkesMod with protontricks.

Usage

Step 1

Installs winetricks and protontricks

Step 2

Install Visual C++ Redistributable Packages by executing:

$ protontricks 252950 vcrun2019

This installs the VCRedist Packages 2015 - 2019

Step 3 (maybe optional)

This step depends on wether you use Proton 5 (or higher) or not.
If you use Proton >5.0 this is no longer needed.

Setting Runtime Configuration Options for Rocket League to use D9VK.
This can be done by configuring Properties and set Launch Options to

PROTON_USE_D9VK=1 %command%

Step 4

Start Rocket League and wait till it's loadded then run BakkesMod using protontricks

$ protontricks -c 'wine path/to/bakkesmod/BakkesMod.exe' 252950

Maybe use WINEFSYNC or WINEESYNC according to your configuration.

$ WINEFSYNC=1 protontricks -c 'wine path/to/bakkesmod/BakkesMod.exe' 252950
$ WINEESYNC=1 protontricks -c 'wine path/to/bakkesmod/BakkesMod.exe' 252950

However

When I press F2 the game gets totally black and I can't use it.

Issue created here

@DatL4g
Copy link

DatL4g commented Mar 30, 2020

I got BakkesMod fully working after @Bakkes mentioned that Proton is using a diffrent d3dcompiler.lib

Thanks for that by the way

Additional Step

After following my above steps, you have to set a launch option for Rocket League to use the OpenGL-based wined3d.

PROTON_USE_WINED3D=1 %command%

How to use this is described in step 3

However

It's very laggy when you enable this

@BishopT
Copy link

BishopT commented May 5, 2020

Hi, I encounter same assertion failed even with the additional step. I just get a frozen screen instead of black screen. Any clue? How can I check the RL launch option is well taken into account? How can I check that it uses the right d3dcompiler.lib?

@DatL4g
Copy link

DatL4g commented May 5, 2020

@BishopT
If you follow my steps exactly you will get it to run but it is practically useless as it is extremely laggy.

@Justkant
Copy link

Justkant commented May 5, 2020

I can confirm that, even with the additional step, I still encounter the assertion failure described in bakkesmodorg/BakkesModInjectorCpp#8

I can also say that while running on Gnome using X, and trying to run rocket league with the OpenGL-based wined3d, I don't get the very laggy behavior that @DatL4g talk about.

But when using Gnome with Wayland I get the laggy behavior and I can only start rocket league with the OpenGL-based wined3d (if not the game won't start, probably related to dx11 with xwayland, haven't tried PROTON_USE_D9VK=1 %command%, F2 did nothing too, no crash & no window).

Also while using no launch option in X, after injecting the mod, the game always crash and will only work if I use PROTON_USE_WINED3D=1 %command% (and with no lag) to inject the mod.

Linux: 5.6.10-arch1-1
Nvidia: 440.82
Proton: 5.0-7
Gnome: 3.36.2

@BishopT
Copy link

BishopT commented May 5, 2020

@DatL4g I followed steps described here so same steps but vcrun2017 has been installed instead of vcrun2019. Then added PROTON_USE_D9VK=1 %command% in RL launch options

The game is not laggy even with PROTON_USE_D9VK=1 %command%

Linux 5.3.0-51-generic
GTK 3.22.30
Nvidia 435.21
Proton 5.0-7

@DatL4g
Copy link

DatL4g commented May 6, 2020

@BishopT
D9VK launch option is no longer needed in Proton >5.0
Instead follow my additional step.

I'll send my protontricks configuration later.

@BishopT
Copy link

BishopT commented May 6, 2020

My bad, I wanted to say PROTON_USE_WINED3D=1 %command%. Just copy-paste wrong text 😬

@DatL4g
Copy link

DatL4g commented May 6, 2020

@BishopT @Justkant
Here my additional protontricks configuration

Setup

Run protontricks 252950 --gui to get a GUI for your Rocket League protontricks configuration
Choose Default Prefix

Installed DLLs

  • d3dcompiler_42
  • d3dcompiler_43
  • d3dcompiler_47
  • vcrun2017
  • vcrun2019

Installed Fonts

  • corefonts

Linux 5.4.0-7626-generic
Nvidia 440.82
Proton 5.0-7
Gnome 3.36.1

@DatL4g
Copy link

DatL4g commented Jul 14, 2020

I created a post on Reddit in which everything is explained again and how to work around the performance problem

@BishopT
Copy link

BishopT commented Aug 26, 2020

Works like a charm with GloriousEggroll's proton!
Thank you @DatL4g for spotting that one

And many thanks to all the people who contributed to that version :)

@kescherCode
Copy link

kescherCode commented Jan 19, 2021

Ever since EGS support was introduced, suddenly, I get this dialog on injection (for the Steam version!):
image
Note both x86 and x64 versions of vc_redist are installed in the prefix.

image

Here's a version info screenshot, in case something's off there
image

Here's the injector log, if that is of any use.
injectorlog.log
I wonder what the hell is happening between the last line and the one before it in this excerpt, considering the exit code indicated there is 0:

2021-01-20 00-50-27.320 [Info] (IsSafeToInject) Steam is ready!
2021-01-20 00-50-27.337 [Info] (TimerTimeout) Rocket league process ID is 188
2021-01-20 00-50-27.337 [Info] (SetState) Switching from BAKKESMOD_IDLE (1) to INJECT_DLL (9)
2021-01-20 00-50-32.338 [Info] (TimerTimeout) Trying to inject C:\users\steamuser\Application Data\bakkesmod\bakkesmod/dll\bakkesmod.dll
2021-01-20 00-50-32.474 [Info] (TimerTimeout) Already injected check: 0
2021-01-20 00-50-32.485 [Info] (GetPlatform) Z:\mnt\data\kescher\Steam\steamapps\common\rocketleague\Binaries\Win64\RocketLeague.exe || 0000000140000000
2021-01-20 00-50-32.486 [Info] (DetectRocketLeagueFolder) Could not find steamapps folder, detected 0000000001BA6E80
2021-01-20 00-50-32.486 [Info] (GetSteamRocketLeagueDirFromLog) Found RL dir from log: Z:\mnt\data\kescher\Steam\steamapps\common\rocketleague\Binaries\Win64\
2021-01-20 00-50-32.486 [Info] (GetSteamInstallLocation) Automatically detected Rocket League path using log: "Z:\\mnt\\data\\kescher\\Steam\\steamapps\\common\\rocketleague\\Binaries\\Win64\\"
2021-01-20 00-50-32.486 [Info] (GetSteamVersion) Looking for steam manifest in Z:\mnt\data\kescher\Steam\steamapps\common\rocketleague\Binaries\Win64\..\..\..\..\appmanifest_252950.acf
2021-01-20 00-50-32.486 [Info] (GetSteamVersion) Path contains a manifest file
2021-01-20 00-50-32.486 [Info] (GetSteamVersion) Steam buildID 6066322
2021-01-20 00-50-32.486 [Info] (IsSteamVersionReady) Test 6066322
2021-01-20 00-50-32.486 [Info] (IsSteamVersionReady) Comparing steam buildid 6066322 to 6066322
2021-01-20 00-50-32.505 [Info] (InjectDLL) GetExitCodeThread(): 0
2021-01-20 00-50-32.505 [Info] (InjectDLL) Last error: 0
2021-01-20 00-50-32.636 [Info] (SetState) Switching from INJECT_DLL (9) to INJECTION_FAILED (11)

@Mistra
Copy link

Mistra commented Jan 25, 2021

@kescherCode
Confirmed, i have the same exact problem with the same (pointless) log. I've installed the redist both from ms site and from the protontricks console.
Tomorrow I'll keep on digging.

@JokerGermany
Copy link

JokerGermany commented Jan 30, 2021

Didn't have this issue, i only can't use the autouploader Feature, because of a "FIX" which they released...

Would be nice if they would develop against the wine sdk.
Then it would work on windows and every os which is supported by wine...
Wouldn't be more work, but then it would work on linux, too...

@eren-kemer
Copy link

Didn't have this issue, i only can't use the autouploader Feature, because of a "FIX" which they released...

Would be nice if they would develop against the wine sdk.
Then it would work on windows and every os which is supported by wine...
Wouldn't be more work, but then it would work on linux, too...

Do you happen to know which date/release this first started not working anymore?
Are there any log entries for the issue?
Maybe i could take a look.

@JokerGermany
Copy link

JokerGermany commented Feb 13, 2021

@eren-kemer
Something around
2020-12-02
https://www.reddit.com/r/bakkesmod/comments/k45z46/crashing_when_game_ends/geeje0c?utm_source=share&utm_medium=web2x&context=3

This should be this commit:
bakkesmodorg/AutoReplayUploader@6638caf
It fixes the crash of the game, but they seems to have implemented a hard coded \

@kentslaney
Copy link

kentslaney commented Feb 22, 2021

Any progress @Mistra @kescherCode? I'm running into the same error and I've tried everything I can think of. I also ran into this issue on the way, though I'd be surprised if it's relevant to this one. Also I recently enabled AMD SVM, though, again, I doubt it's related.

@kescherCode
Copy link

@kentslaney No, still no progress. None of the things you mentioned should make a difference (vcrun2015 is not an issue here, and I use an Intel CPU)

@kentslaney
Copy link

kentslaney commented Feb 22, 2021

@kescherCode Sorry, with AMD SVM I just meant that I have hardware emulation enabled, which changes how instruction addressing happens in (particularly 64 bit) virtual environments. I know Wine Is Not an Emulator and it does on the fly conversion, but I wasn't sure if it might quietly enable some optimization that BakkesMod isn't expecting.

Edit: turned it off and the bug still happens

@blastrock
Copy link

I'd really like this to work too. I investigated this last error a bit about the injection failing because of vcredist. It looks like for some reason the injection from bakkesmod.exe always fails. I have written my own injector (by copy-pasting pieces from bakkesmod) and used that instead.

I can confirm that the injection is indeed successful from wine logs. Also, starting bakkesmod.exe after this injection makes it say that everything is alright and you need to press f2.

Now the issue is that I get a black screen in the game as soon as inject the dll. The game is still running, making sounds and responding to inputs, but the screen is black.

Btw, I'm using the epic version of the game on Proton 5.13. You can find my dll injector here: https://gist.github.com/blastrock/6958033f03a0bdffa52c6dfa2ce0e60a in case someone wants to take this further. If someone has a hint or two to debug this blackscreen, please do tell :)

@kescherCode
Copy link

@blastrock the blackscreen issue has always been the case, and you need to use a custom Proton version for this not to happen (proton-ge-custom, wine-tkg-git proton, ...)

@sadn1ck
Copy link

sadn1ck commented Apr 21, 2021

can confirm, @blastrock 's method worked for me with proton-tkg 6.5, had to update a few commands (was getting winpthread dll error, so had to add -static flag)

https://gist.github.com/sadn1ck/d68cfdc28067b329bc82e7f80ab0b71e

@blastrock
Copy link

Thanks @kescherCode . I didn't know these forks of proton, I haven't got time to test one yet, but I will definitely do.

@sadn1ck thanks for testing! So this injector does work for other people than me.

Now I'm not sure what to conclude from that. I really wrote that by copy pasting code from bakkesmod, so it should do pretty much the same thing. The only difference I noticed is that bakkesmod uses a Windows path with a mix of / and \ like C:\users\steamuser\Application Data\bakkesmod\bakkesmod/dll\bakkesmod.dll (taken from injectorlog.log) and my injector uses a full unix path. I'll try to patch my injector with the same Windows path to see how it behaves and if it's the source of the problem. Or if you are motivated @sadn1ck please go ahead :)

@ayush123460
Copy link

@blastrock on the recommendation of @sadn1ck i have tried the same injector of yours by changing the rocket league path (i'm using the epic launcher through lutris due to steam issues) with wine-tkg, and can confirm it works. I don't believe it's a problem caused by the injector. However, I do believe you should try the staging build of wine if you're unsure about a fork.

@blastrock
Copy link

Ok, I just tested again with proton ge, it does work! Thanks!

I also tested replacing the path with a Windows path as I said just before, but the injector still works. I can't explain why the official injector doesn't work.

@kentslaney
Copy link

kentslaney commented Apr 22, 2021

Thanks @blastrock! I got it working on Ubuntu 20.04, Proton GE 6.5 r2, command sequence looked roughly like:

sudo apt install mingw-w64
mkdir -p ~/Games/bakkes
cd ~/Games/bakkes
curl -LO https://gist.githubusercontent.com/blastrock/6958033f03a0bdffa52c6dfa2ce0e60a/raw/1e9f4208eac9f8392e670f9465b3fae3b8503645/inject.cpp
curl -LO https://github.com/bakkesmodorg/BakkesModInjectorCpp/releases/download/1.9.5/BakkesModSetup.exe
curl -LO https://github.com/bakkesmodorg/BakkesModInjectorCpp/releases/download/1.9.5/BakkesModInjectorWin7.zip
unzip BakkesModInjectorWin7.zip
# run setup if not already done to create the dll
WINEESYNC=1 protontricks -c '~/.steam/steam/compatibilitytools.d/Proton-6.5-GE-2/dist/bin/wine64 /home/$USER/Games/bakkes/BakkesModSetup.exe' 252950
# update the ws variable in wmain on line 115 of inject.cpp using the output from this:
find ~/.steam/steam/ -name bakkesmod.dll
x86_64-w64-mingw32-c++ -I/usr/x86_64-w64-mingw32/include\;/usr/x86_64-w64-mingw32/lib inject.cpp -municode -std=c++17 -static-libgcc -static-libstdc++ -static -o inject.exe
# actual command
WINEESYNC=1 WINEPREFIX=/home/$USER/.steam/steam/steamapps/compatdata/252950/pfx/ WINEPATH=/usr/x86_64-w64-mingw32/include\;/usr/x86_64-w64-mingw32/lib ~/.steam/steam/compatibilitytools.d/Proton-6.5-GE-2/dist/bin/wine64 inject.exe
WINEESYNC=1 protontricks -c '~/.steam/steam/compatibilitytools.d/Proton-6.5-GE-2/dist/bin/wine64 /home/$USER/Games/bakkes/BakkesMod.exe' 252950

(This is a guide not a script, doesn't really copy/paste)

@mgalgs
Copy link

mgalgs commented Apr 24, 2021

Thanks @kentslaney . Where does the dll end up during the BakkesModSetup.exe step? I'm running:

WINEESYNC=1 protontricks -c '~/.steam/steam/compatibilitytools.d/Proton-6.5-GE-2/dist/bin/wine64 /home/mgalgs/src/bakkesmod-on-arch-gist/BakkesModSetup.exe' 252950

but it's just exiting with no output and a return code of 0. Can't find the dll in any of these places:

find ~/.steam/steam/ -name bakkesmod.dll
find /opt/steam/steamapps/compatdata/252950/pfx/drive_c -name bakkesmod.dll

Also, what path are you hard-coding in inject.cpp (ws variable in the wmain function)? Guessing that needs to point to the actual dll on your system?

@gekiclaws
Copy link

@smitchbot I got it working some time ago without a custom injector and Heroic Games launcher.

Download Wine-GE (don't use proton-ge, outside of steam it can break) and select it to run RL in Heroic.

Once you've installed RL within Heroic, you can either create the needed folder inside the prefix RL has assigned (easier) with mkdir drive_c/ProgramData/Epic/EpicGamesLauncher/Data/Manifests -p. or install the Epic Launcher on the prefix. You can drag installers to imatge

Do the same with vcredist x86 and x64. And with bakkesmod itself If bakkes says the windows version is unsupported, go to winecfg and select windows 10 like this: imatge

Then, go to Heroic Global settings and select the RL prefix in "Sync with Installed Epic Games" and click SYNC.

Now, it should be as easy as launching bakkesmod with the same wine executable as RL. Run this with the correct RL prefix and the wine exe (only set WINEESYNC=1 if it is also enabled for RL in heroic, there's a toggle for it):

winexe=/home/$USER/.local/share/lutris/runners/wine/lutris-ge-6.16-1-x86_64/bin/wine bakkesexe=/home/$USER/Games/.rl/drive_c/Program\ Files/BakkesMod/BakkesMod.exe env WINEESYNC=1 WINEPREFIX=/home/$USER/Games/.rl $winexe "$bakkesexe"

That's it, launch RL and it will inject fine. Extra: you can make an easy script for launching RL and Bakkes with the env command from before, but first launch RL with this xdg-open heroic://launch/Sugar and then Bakkes with env (...)

Thanks a lot for this, but I only got this to work up to the "select windows 10 like this:" step, as I am not sure how to find the prefix RL has assigned and setup the appropriate directories in the right places. Moreover, as I am running this on a Mac, I am not sure what command to use to launch bakkesmod with the same wine executable as RL, as I believe the one you gave is for the Unix shell. Thank you very much!

@Fxzzi
Copy link

Fxzzi commented Aug 10, 2022

Hi all! Sorry for the necro-post, but I just wanted to share my bakkesmod setup through steam. It requires no other programs like steamtinkerlaunch or protontricks. For most systems, the script will not even have to be changed to be used - it just needs to be added to the launch options as stated in the script.

#!/usr/bin/env bash

# Set RL launch options to `"/path/to/this/script.sh" & %command%`
# Put any other launch options before `%command%` like normal
# Set Wineprefix for Rocket League
COMPATDATA="$HOME/.local/share/Steam/steamapps/compatdata/252950/pfx"

# Detect what Proton version was used last
PROTON=$(sed -n 4p "$HOME"/.steam/root/steamapps/compatdata/252950/config_info | xargs -d '\n' dirname)

# Start BakkesMod when RL Starts
while ! killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
done

# Open BakkesMod with above wineprefix and proton
## IMPORTANT! MAKE SURE YOU ENABLE WINE E/F SYNC HERE, DEPENDING ON YOUR NEEDS!
WINEFSYNC=1 WINEPREFIX="$COMPATDATA" "$PROTON"/bin/wine64 "$COMPATDATA/drive_c/Program Files/BakkesMod/BakkesMod.exe" &

# Kill BakkesMod process when RL is closed
while killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
done
killall BakkesMod.exe

What this script does:

  • Automatically finds your proton version that you've set for your game
  • launches bakkesmod at the right time (remember, you can enable the option in bakkesmod to minimize the launcher on start)
  • It then waits for the RocketLeague.ex(e) process to stop, and then kills BakkesMod.

I'd like to thank @kentslaney for the original script, which I modified to suit my needs!

P.S. The wiki page definitely needs an update

@JokerGermany
Copy link

JokerGermany commented Aug 25, 2022

Thanks looks a lot more "automated" then "my" script which i showed in the bakkesmod wiki.

I had to change a couple of things for me to get it running.
It only runs with E-Sync (don't know the difference) and the directorys are different (Ubuntu Mate 22.04).
This had the advantage that i can use only one dir.

#!/usr/bin/env bash

# Set RL launch options to `"/path/to/this/script.sh" & %command%`
# Put any other launch options before `%command%` like normal
# Set Wineprefix for Rocket League
RLdir="$HOME/.steam/steam/steamapps/compatdata/252950"

# Detect what Proton version was used last
PROTON=$(sed -n 4p "$RLdir"/config_info | xargs -d '\n' dirname)

# Start BakkesMod when RL Starts
while ! killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
done

# Open BakkesMod with above wineprefix and proton
## IMPORTANT! MAKE SURE YOU ENABLE WINE E/F SYNC HERE, DEPENDING ON YOUR NEEDS!
WINEESYNC=1 WINEPREFIX="$RLdir/pfx" "$PROTON"/bin/wine64 "$RLdir/pfx/drive_c/users/steamuser/My Documents/My Games/Rocket League/TAGame/BakkesMod.exe" &

# Kill BakkesMod process when RL is closed
while killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
done
killall BakkesMod.exe

One Note:
If you use this script and use another proton version:
Sometimes you need to start rl with the new proton version, quit it and start it again to get bakkesmod running.

@npulsipher4
Copy link

I have also got this running through bottles on the steam deck. I just installed epic games, installed rocket league, then ran the bakkesmod installer and bound one of the back pads to f2. If you add bottles to steam and then launch bakkesmod before rocket league it works like a charm.

@0x4rch
Copy link

0x4rch commented Jan 13, 2023

Thanks all for the tips! I was able to get it working with steam and Proton Experimental by slightly modifying the paths referenced above for my debian/ubuntu/pop os installation and my script looks like this:

#!/usr/bin/env bash

# Set RL launch options to `"/path/to/this/script.sh" & %command%`
# Put any other launch options before `%command%` like normal
# Set Wineprefix for Rocket League
COMPATDATA="/home/shad0w/.steam/debian-installation/steamapps/compatdata/252950/pfx"

# Hardcode Proton Path
PROTON="/home/shad0w/.steam/debian-installation/steamapps/common/Proton - Experimental/files"
# Start BakkesMod when RL Starts
while ! killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
done

# Open BakkesMod with above wineprefix and proton
## IMPORTANT! MAKE SURE YOU ENABLE WINE E/F SYNC HERE, DEPENDING ON YOUR NEEDS!
WINEFSYNC=1 WINEPREFIX="$COMPATDATA" "$PROTON"/bin/wine64 "$COMPATDATA/drive_c/Program Files/BakkesMod/BakkesMod.exe" &

# Kill BakkesMod process when RL is closed
while killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
done
killall BakkesMod.exe

Thanks everyone for making this easy 😃

@Rezieo
Copy link

Rezieo commented Jan 20, 2023

I have also got this running through bottles on the steam deck. I just installed epic games, installed rocket league, then ran the bakkesmod installer and bound one of the back pads to f2. If you add bottles to steam and then launch bakkesmod before rocket league it works like a charm.

Could you walk through your bottles process? I’ve been going through hell getting this to work correctly.

@npulsipher4
Copy link

@Rezieo

  1. Install bottles
  2. Run the Epic Games Installer provided by bottles
  3. Install RL
  4. Run the bakkesmod installer on the wine prefix
  5. Add bottles to steam.
  6. Launch bakkesmod and then RL

@CrumblyLiquid
Copy link

Hi! I've written a guide on installing BakkesMod. It mainly focuses on Steam as that is what I'm using.

I'm thinking about publishing it to the wiki. But before that I want to expand (or at least have someone verify that it works) on installing on other platforms (e.g. Lutris, Heroic, Bottles, ...) and catch anything misleading or incorrect advice.

I would really appreciate some feedback. Thanks!

@DarkCalamity
Copy link

Hello! Sorry for the necro, but i am really struggling to understand how i could possibly install Bakkes for Lutris (Epic Games Launcher).
I already had troubles just configurating and making Epic Games work, as i couldnt find any Info on how to properly install it with the right Wine version etc.. Now i just dont understand what i should do to install BakkesMod. Every Guide that i could find has been for Steam and its Proton tool, but because Rocket League got removed from the Steam-store i couldnt make the EP Launcher run on Proton-GE with Lutris or just Steam.
I am using Lutris version 5.13 for Ubuntu 22.04 and the wine version lutris-7.2.2-x86_64

I have seen @CrumblyLiquid 's Guide and read this entire issue, but i am generally not sure where i should even begin to try installing BakkesMod (as in with Lutris or just the Terminal…). So a new and updated Guide for Lutris would be very appreciated.

@Fxzzi
Copy link

Fxzzi commented Jul 24, 2023

Hello @DarkCalamity !!

IIRC, Lutris has options to run EXEs inside their wine prefixes. You can install bakkesmod that way.

I'm also pretty sure that Lutris may have options for wrapper scripts. Check the game settings inside Lutris and update us if you find anything.

@DarkCalamity
Copy link

DarkCalamity commented Jul 25, 2023

The first section irrelevant now, as it now starts but i am keeping it because of the Protocol:

@Fxzzi yes i have tried running BakkesMod on Lutris before, unfortunatley i get the Error "This Programm does not support the version of Windows your computer is running". According to the Wine-Configuration, it is on Windows 10.
grafik
(Sorry, i am German)

This is the Protocol of BakkesMod:

Started initial process 11030 from gamemoderun /home/everest/.local/share/lutris/runners/wine/lutris-7.2-2-x86_64/bin/wine /home/everest/Schreibtisch/Games/BakkesModSetup.exe
Start monitoring process.
ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
fsync: up and running.
ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
Monitored process exited.
Initial process has exited (return code: 256)
Exit with return code 256

.
.
.
.
Update: For some odd reason, the Error does not appear anymore, all i have changed, is only giving the Program its own File system with its own Wine-Prefix. Not entirely sure if BakkesMod is able to access the RL Prefix though.
Installing has worked fine.
BakkesMod wanted to automatically update itself, but nothing happened. It was waiting for an update of some sort, i had to close and reopen it again. Now its installing itself again.
Sadly, after installing it again, its back on "Mod is out of date, waiting for an update" instead of
"Rocket League (Epic Games) is up to date. Uninjected, waiting for user to start Rocket League"
grafik

Opening RL while BakkesMod is running, doesnt do anything. I am unable to open any menus or anything. Pressing Help and Check Injection will say "Rocket League is not running`"
grafik

grafik

Also, the new Protocol that i got:

Started initial process 21968 from gamemoderun /home/everest/.local/share/lutris/runners/wine/lutris-7.2-2-x86_64/bin/wine /home/everest/Schreibtisch/Games/BakkesModSetup.exe
Start monitoring process.
ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
fsync: up and running.
ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
Fehler: Prozess "RocketLeague.exe" konnte nicht gefunden werden.
Fehler: Prozess "BakkesMod.exe" konnte nicht gefunden werden.
Initial process has exited (return code: 0)
gamemodeauto: 
gamemodeauto: 
Monitored process exited.
Exit with return code 0

Summing it up: BakkesMod reinstall itself every time i open it and does nothing than waiting for an Update. It also does not see RL running nor does it see that Epic Games is on my system. It also cannot find BakkesMod.exe?
Perhaps the Epic Games launcher and BakkesMod need to be in the same Wine-Prefix?

@Fxzzi
Copy link

Fxzzi commented Jul 25, 2023

@DarkCalamity ...

The reason bakkesmod is not detecting Rocket League is because they are running on two different wine prefixes. They cannot see each other running.

If you got bakkesmod working on a different wineprefix, try installing rocket league on that same prefix and try again.

@DarkCalamity
Copy link

@Fxzzi It now detects RL and EPL, but i get an Error again.
grafik
Wine doesnt have an anti-virus, right?
(I also didnt update the Mod, in fear that it might break or something)

@Fxzzi
Copy link

Fxzzi commented Jul 25, 2023

Try reinstalling bakkesmod?

@Fxzzi It now detects RL and EPL, but i get an Error again. grafik Wine doesnt have an anti-virus, right? (I also didnt update the Mod, in fear that it might break or something)

@DarkCalamity
Copy link

Okay, i installed it again, because on every startup i have to install it again. This time i updated it and it successfully updated
It successfully injected! Menu works too!
Now the question is "does BakkesMod save its plugins on each startup even though i have to reinstall it?"
Answer: Yes it does!

Thank you very much! Honestly this was very simple, for the amount of time i spent on this ¯_(ツ)_/¯
Maybe the last issue there might be, is that i need to reinstall (without updates) the BakkesMod Setup on every startup, but it should be fine.

@ahmouse15
Copy link

I was able to get it working with @CrumblyLiquid's guide. Thanks for it!

@EmeraldWither
Copy link

EmeraldWither commented Aug 7, 2023

I was able to get BakkesMod working on my Steam Deck.
Can confirm that CrumblyLiquid's Guide does work.

Some things to note about steam deck in particular:

  • Don't bother installing Wine. Just use Protontricks (can be found on flatpak/discover)
  • If you are using NonSteamLaunchers, and installed Rocket League through Epic like I did, make sure that your Wine prefix (mine was 3772819390 or NonSteamLaunchers) contains your install of the Epic Games Launcher, as that will contain your Rocket League install. If you added Rocket League by using the "Find Games" option, use this command as your launch argument instead. "location/to/script/script.sh" & STEAM_COMPAT_DATA_PATH="/home/deck/.steam/steam/steamapps/compatdata/NonSteamLaunchers" %command%
  • It does work in Gaming Mode (including GUI), and you can use Steam Input to create bindings to F2 and ESC. You can hold down the steam button and the right trackpad as a mouse, and left and right triggers to click.

@JokerGermany
Copy link

Hi all! Sorry for the necro-post, but I just wanted to share my bakkesmod setup through steam. It requires no other programs like steamtinkerlaunch or protontricks. For most systems, the script will not even have to be changed to be used - it just needs to be added to the launch options as stated in the script.

#!/usr/bin/env bash

# Set RL launch options to `"/path/to/this/script.sh" & %command%`
# Put any other launch options before `%command%` like normal
# Set Wineprefix for Rocket League
COMPATDATA="$HOME/.local/share/Steam/steamapps/compatdata/252950/pfx"

# Detect what Proton version was used last
PROTON=$(sed -n 4p "$HOME"/.steam/root/steamapps/compatdata/252950/config_info | xargs -d '\n' dirname)

# Start BakkesMod when RL Starts
while ! killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
done

# Open BakkesMod with above wineprefix and proton
## IMPORTANT! MAKE SURE YOU ENABLE WINE E/F SYNC HERE, DEPENDING ON YOUR NEEDS!
WINEFSYNC=1 WINEPREFIX="$COMPATDATA" "$PROTON"/bin/wine64 "$COMPATDATA/drive_c/Program Files/BakkesMod/BakkesMod.exe" &

# Kill BakkesMod process when RL is closed
while killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
done
killall BakkesMod.exe

What this script does:

* Automatically finds your proton version that you've set for your game

* launches bakkesmod at the right time (remember, you can enable the option in bakkesmod to minimize the launcher on start)

* It then waits for the RocketLeague.ex(e) process to stop, and then kills BakkesMod.

I'd like to thank @kentslaney for the original script, which I modified to suit my needs!

P.S. The wiki page definitely needs an update

Do this still work for you?
Stopped working for me a couple of days ago =(

@Fxzzi
Copy link

Fxzzi commented Aug 25, 2023

Hey @JokerGermany ,

Everything is still working as intended for me :)

@JokerGermany
Copy link

Hmmm,

this is the output of steam:
fsync: up and running.
wine: RLIMIT_NICE is <= 20, unable to use setpriority safely
skipping config: /home/jokergermany/.config/MangoHud/wine-explorer.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-explorer.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-explorer.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-explorer.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-tabtip.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-steam.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
MANGOHUD: Connected to D-Bus as ":1.379".
skipping config: /home/jokergermany/.config/MangoHud/wine-tabtip.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-steam.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
MANGOHUD: Connected to D-Bus as ":1.381".
skipping config: /home/jokergermany/.config/MangoHud/wine-tabtip.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
/bin/sh\0-c\0/home/jokergermany/.steam/debian-installation/ubuntu12_32/reaper SteamLaunch AppId=252950 -- /home/jokergermany/.steam/debian-installation/ubuntu12_32/steam-launch-wrapper -- '/home/jokergermany/.steam/debian-installation/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0'/proton waitforexitandrun  '/home/jokergermany/.steam/debian-installation/steamapps/common/rocketleague/Binaries/Win64/RocketLeague.exe' /media/HDD/Nextcloud/rocket.sh\0
chdir "/home/jokergermany/.steam/debian-installation/steamapps/common/rocketleague/Binaries/Win64"
ERROR: ld.so: object '/home/jokergermany/.steam/debian-installation/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jokergermany/.steam/debian-installation/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object '/home/jokergermany/.steam/debian-installation/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jokergermany/.steam/debian-installation/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jokergermany/.steam/debian-installation/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
fsync: up and running.
wine: RLIMIT_NICE is <= 20, unable to use setpriority safely
skipping config: /home/jokergermany/.config/MangoHud/wine-explorer.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-explorer.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-explorer.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-explorer.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-steam.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
MANGOHUD: Connected to D-Bus as ":1.389".
skipping config: /home/jokergermany/.config/MangoHud/wine-tabtip.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-steam.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
MANGOHUD: Connected to D-Bus as ":1.391".
skipping config: /home/jokergermany/.config/MangoHud/wine-tabtip.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
Setting breakpad minidump AppID = 252950
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561197962474445 [API loaded no]
skipping config: /home/jokergermany/.config/MangoHud/wine-tabtip.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-steam.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
MANGOHUD: Connected to D-Bus as ":1.394".
skipping config: /home/jokergermany/.config/MangoHud/wine-tabtip.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
skipping config: /home/jokergermany/.config/MangoHud/wine-steam.conf [ not found ]
skipping config: /home/jokergermany/.steam/debian-installation/steamapps/common/Proton 8.0/dist/bin/MangoHud.conf [ not found ]
skipping config: /home/jokergermany/.config/MangoHud/wine64-preloader.conf [ not found ]
parsing config: /home/jokergermany/.config/MangoHud/MangoHud.conf [ ok ]
MANGOHUD: Connected to D-Bus as ":1.396".
parsing config: /home/jokergermany/.config/MangoHud/wine-RocketLeague.conf [ ok ]
Unknown option 'output_file /home/jokergermany/.config/MangoHud'
parsing config: /home/jokergermany/.config/MangoHud/wine-RocketLeague.conf [ ok ]
Unknown option 'output_file /home/jokergermany/.config/MangoHud'
Warning, Unknown language extension . Defaulting to INT
Setting breakpad minidump AppID = 252950
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561197962474445 [API loaded no]
CAppInfoCacheReadFromDiskThread took 7 milliseconds to initialize
dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
parsing config: /home/jokergermany/.config/MangoHud/wine-RocketLeague.conf [ ok ]
Unknown option 'output_file /home/jokergermany/.config/MangoHud'
parsing config: /home/jokergermany/.config/MangoHud/wine-RocketLeague.conf [ ok ]
Unknown option 'output_file /home/jokergermany/.config/MangoHud'
parsing config: /home/jokergermany/.config/MangoHud/wine-RocketLeague.conf [ ok ]
Unknown option 'output_file /home/jokergermany/.config/MangoHud'
Fossilize INFO: Overriding serialization path: "/home/jokergermany/.steam/debian-installation/steamapps/shadercache/252950/fozpipelinesv6/steamapprun_pipeline_cache".
parsing config: /home/jokergermany/.config/MangoHud/wine-RocketLeague.conf [ ok ]
Unknown option 'output_file /home/jokergermany/.config/MangoHud'
Fossilize INFO: Overriding serialization path: "/home/jokergermany/.steam/debian-installation/steamapps/shadercache/252950/fozpipelinesv6/steamapprun_pipeline_cache".
MANGOHUD: recreating font image
sh: 1: glxinfo: not found

This is nearly your script:

#!/usr/bin/env bash
echo "start"
# Set RL launch options to `"/path/to/this/script.sh" & %command%`
# Put any other launch options before `%command%` like normal
# Set Wineprefix for Rocket League
RLdir="$HOME/.steam/steam/steamapps/compatdata/252950"
COMPATDATA="$HOME/.steam/steam/steamapps/compatdata/252950/pfx"

# Detect what Proton version was used last
PROTON=$(sed -n 4p "$RLdir"/config_info | xargs -d '\n' dirname)

# Start BakkesMod when RL Starts
while ! killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
    echo "warte auf rocket league"
done
echo "starte bakkesmod"
# Open BakkesMod with above wineprefix and proton
## IMPORTANT! MAKE SURE YOU ENABLE WINE E/F SYNC HERE, DEPENDING ON YOUR NEEDS!
WINEESYNC=1 WINEPREFIX="$RLdir/pfx" "$PROTON"/bin/wine64 "$RLdir/pfx/drive_c/users/steamuser/My Documents/My Games/Rocket League/TAGame/BakkesMod.exe" &

# Kill BakkesMod process when RL is closed
while killall -0 RocketLeague.ex 2> /dev/null; do
    sleep 1
done
killall BakkesMod.exe

Don't know where to search the culprit...

@Fxzzi
Copy link

Fxzzi commented Aug 25, 2023

Try disabling all launch options, including the script. Launch up rocket league and run the script manually from a terminal window.

@JokerGermany
Copy link

@Fxzzi
thanks, looks like a option change (i don't know why...)
01b0:err:fsync:fsync_init Server is running with WINEFSYNC but this process is not, please enable WINEFSYNC or restart wineserver.

Now i have to use FSync like you use. I am really sure that FSync didn't worked a year ago oO

(After that i was irritated that it wasn't still working, bakkesmod and rocket league crashed, when i put it in the launch option again it worked, thanks)

@Fxzzi
Copy link

Fxzzi commented Aug 25, 2023

Maybe your distro upgraded to a new kernel with fsync support?

@JokerGermany
Copy link

I updated the kernel a few days ago (wanted to use 8BitDo) but it was still working right after the upgrade 🤔

@LucaCoduriV
Copy link

LucaCoduriV commented Oct 31, 2023

@JokerGermany Hello, I hope you can help me. I tried your script and everything runs fine but bakkesmod does not detect rocketleague. Do you know why ?

Edit: It wasn't working because of steam running with flatpak

@Fmstrat
Copy link

Fmstrat commented Jan 11, 2024

While I know this isn't the place for discussion per-se, I'd like to add a request to this for a formally maintained guide for running with Proton (Steam or Epic versions), as many of us are switching over to Linux full-time.

@kentslaney
Copy link

@Fmstrat I think a good first pass for doing that would be an AUR package since it would support Steam Deck. I've been meaning to put one together myself, but I've been busy with other projects lately.

@Fmstrat
Copy link

Fmstrat commented Feb 22, 2024

@kentslaney I ended up making a pretty formal guide here: https://github.com/Fmstrat/linux-gaming/blob/main/rocketleague/BAKKESMOD.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests