The same issue seems to occur on Steam Deck. Edit: Also happens on my Desktop using an nvidia card.
Here's my Proton log: steam-2440510.log
Seems as if there is something wrong with a specific DLL file provided by the game. Gotta check it out in my spare time
Don't think it'll add something new, but crashes for me as well.
steam-2440510-proton-experimental.log
steam-2440510-proton-8.log
Seems as if there is something wrong with a specific DLL file provided by the game. Gotta check it out in my spare time
Could you tell us more on what makes you suspect that and what specific DLL?
This error happens on Windows too.
It Happens because of when you first launch the game, it tries to install xbox gaming services(exclusive to windows from what i know) through an .exe on game folder;
gamingrepair.exe, located on Forza Motorsport\gamingservices\gamingrepair.
I think we would not be able to play on proton, unless Turn 10 removes this requirement and do just like Playground games does on Forza Horizon 4 and 5.
Some links:
https://steamcommunity.com/app/2440510/discussions/0/3881597531957253090/
and
https://support.xbox.com/en-US/help/games-apps/troubleshooting/gaming-services-repair-tool
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-1749580185
When I get home, I'll see if I can somehow force it to run and install
For now, best bet is to let your voice be heard and let the Turn 10 developers know of this issue on the Steam discussion in the quote.
This thread was created by turn 10 (notice the T10 in the username), it's under their radar, but that don't mean they will solve it for us
I ran gamingrepair.exe via Proton and I got this log:
https://drive.google.com/file/d/1SPPtF_U7F64Vsh478rwwc2tSdU_gdgUG/view?usp=sharing
I think this will narrow down the problem since we already knew that gamingrepair.exe was the culprit. Now we just need to see what's going on in gamingrepair.exe. These are likely lines of interest.
171.970:0130:0134:err:module:import_dll Library drvstore.dll (which is needed by L"Z:\\home\\user\\Drive2\\SteamLibrary\\steamapps\\common\\Forza Motorsport\\gamingservices\\gamingrepair\\gamingrepair.exe") not found
171.972:0130:0134:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\setupapi.dll" at 000000036D860000: builtin
171.972:0130:0134:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\newdev.dll" at 0000000202880000: builtin
171.972:0130:0134:err:module:LdrInitializeThunk Importing dlls for L"Z:\\home\\user\\Drive2\\SteamLibrary\\steamapps\\common\\Forza Motorsport\\gamingservices\\gamingrepair\\gamingrepair.exe" failed, status c0000135
The game seems to need WINEDLLOVERRIDES="amd_ags_x64=b", since it loads the native version of that dll. Try the following command prompt:
WINEDLLOVERRIDES="amd_ags_x64=b" %command%
At least that should help go further and hopefully reach the graphical screen.
Try the following command prompt: WINEDLLOVERRIDES="amd_ags_x64=b" %command%
Unfortunately this didn't help in my case, I guess this gamingrepair.exe issue needs solving first.
Unfortunately this didn't help in my case, I guess this gamingrepair.exe issue needs solving first.
Thanks. Can you post a new log with WINEDLLOVERRIDES included. The initial logs don't seem to show anything related to gaming services.
PROTON_LOG=1 WINEDLLOVERRIDES="amd_ags_x64=b" %command%
Unfortunately this didn't help in my case, I guess this gamingrepair.exe issue needs solving first.
Thanks. Can you post a new log with WINEDLLOVERRIDES included. The initial logs don't seem to show anything related to gaming services. PROTON_LOG=1 WINEDLLOVERRIDES="amd_ags_x64=b" %command%
To note, I did notice some of the warnings/errors/fixmes being shared between both Forza Motorsport and gamingrepair.exe
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-1749761401
I added a stub drvstore dll and it got to the next step, but as expected it failed to fix anything:
0174:fixme:combase:RoGetActivationFactory (L"Windows.ApplicationModel.Store.Preview.InstallControl.AppInstallManager", {00000035-0000-0000-c000-000000000046}, 0000000000C8FCA8): semi-stub
0174:err:combase:RoGetActivationFactory Failed to find library for L"Windows.ApplicationModel.Store.Preview.InstallControl.AppInstallManager"
0150:fixme:eventlog:ControlTraceW (0, L"GamingRepair_979701AE", 00000000006B9E70, 3) stub
0150:fixme:eventlog:ControlTraceW (0, L"GamingRepair_979701AE", 00000000006B9E70, 1) stub
0150:err:module:DelayLoadFailureHook failed to delay load ext-ms-win-wer-reporting-l1-1-0.dll.WerReportCreate
wine: Call from 0000000174013C17 to unimplemented function ext-ms-win-wer-reporting-l1-1-0.dll.WerReportCreate, aborting
wine: Unimplemented function ext-ms-win-wer-reporting-l1-1-0.dll.WerReportCreate called at address 0000000174013C17 (thread 0150), starting debugger...
It looks like it needs Windows.ApplicationModel.Store.Preview.InstallControl.AppInstallManager. The native drvstore wasn't any different.
Yeah, did this just now too, came to say the same thing, as expected, gamingrepair is trying to open microsoft store and download xbox game services, just as xbox app on windows do. I think we are done, unless they really remove this thing. Hope they do because of a lot of people on windows is having the same problem too
Well, it was worth a try.
Until Turn 10/Microsoft accommodates for Proton players (or for everyone's best, removes this requirement all togehter), just play another racing game like Assetto Corsa (which requires some tweaking and is a bit buggy, but looks better [with mods] and has modding).
With that said, should we close this issue since there's nothing we can really do on our end? Our best bet is to try to let Turn 10/Microsoft hear our voices.
Also, I think the Steam Deck verification should (obviously) be marked as "unsupported," but with a unique reason detailing about gaming services not available on Steam Deck/Proton.
Game doesn't crash for me anymore but doesn't go further than it did while still crashing so I let it run for about 10min to see if it would start. It didn't.
GPU: AMD RX 6900 XT
Video driver version: Mesa-git 23.3.0_devel.178631.0c10cbff558.d41d8cd-1
Kernel version: 6.5.5
Link to full system information report as Gist: https://gist.github.com/SPL0T/e3ab0d76b9297e1168a0f8db75295896
Proton version: Experimental [bleeding-edge]
https://drive.google.com/file/d/1LVoFVHSBJq5lRmcu065G6vPkOmjES0Cy/view?usp=drive_link
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-1751642504
As previously stated, the game needs to open the Microsoft Store and download some Xbox services, which is, unfortunately, impossible under Proton since we don't have any sort of access to Microsoft Store APIs.
I've just installed successfully the gamingrepairtool.exe on a Windows 10 LTSC (21H2) VM. This is an enterprise edition without the Microsoft Store and a few other components, which makes it closer to a wineprefix. The tool installed Gaming Services, Microsoft GameInput and Microsoft Edge WebView2 Runtime. The Gaming Services settings screen functioned properly as well. Also the tool didn't install Microsoft Store during the update.
I don't have the game, so can't test if it works. But if it doesn't require Microsoft Store, then running on Wine seems more possible. It'll likely require a lot of development work, though.
Anyway, let's hope Turn 10 will rethink this and use the Steam Cloud to store the online profiles, since that's the right way to do on Steam (as Playground Games did).
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-1751762086
If you do happen to get the game, could you copy over the installed files over into the game's Wine prefix and see what happens?
If you do happen to get the game, could you copy over the installed files over into the game's Wine prefix and see what happens?
They are not simple dlls. There are assemblies and other executables, that need to be properly registered with the system. The Gaming Services looks like a UWP app. It also seems to require Win 10 version 19041 (21H2), as it failed to install on Win 10 LTSC (2019).
The good news is that the needed components are installed directly by this tool, outside of the Microsoft Store.
I'll get the game, when the things start moving here, and will try to contribute of course.
Trying today on launch day. Seems to get to the splash screen, but no further.
Using Proton Experimental, I get the splash screen, using GE-Proton, I crash after splash. Using EndeavourOS (arch) with kernel 6.5.6.zen2-1
I'll repurchase once it's at least known to be runnable. Looking forward to it.
Computer Information:
Manufacturer: ASUSTeK COMPUTER INC.
Model: TUF GAMING X570-PLUS (WI-FI)
Form Factor: Desktop
No Touch Input Detected
Processor Information:
CPU Vendor: AuthenticAMD
CPU Brand: AMD Ryzen 7 3700X 8-Core Processor
CPU Family: 0x17
CPU Model: 0x71
CPU Stepping: 0x0
CPU Type: 0x0
Speed: 4050 MHz
16 logical processors
8 physical processors
Hyper-threading: Supported
FCMOV: Supported
SSE2: Supported
SSE3: Supported
SSSE3: Supported
SSE4a: Supported
SSE41: Supported
SSE42: Supported
AES: Supported
AVX: Supported
AVX2: Supported
AVX512F: Unsupported
AVX512PF: Unsupported
AVX512ER: Unsupported
AVX512CD: Unsupported
AVX512VNNI: Unsupported
SHA: Supported
CMPXCHG16B: Supported
LAHF/SAHF: Supported
PrefetchW: Unsupported
Operating System Version:
"EndeavourOS Linux" (64 bit)
Kernel Name: Linux
Kernel Version: 6.5.6-arch2-1
X Server Vendor: The X.Org Foundation
X Server Release: 12101008
X Window Manager: KWin
Steam Runtime Version: steam-runtime_0.20230919.60656
Video Card:
Driver: AMD AMD Radeon RX 5700 XT (navi10, LLVM 16.0.6, DRM 3.54, 6.5.6-arch2-1)
Driver Version: 4.6 (Compatibility Profile) Mesa 23.2.1-arch1.2
OpenGL Version: 4.6
Desktop Color Depth: 24 bits per pixel
Monitor Refresh Rate: 164 Hz
VendorID: 0x1002
DeviceID: 0x731f
Revision Not Detected
Number of Monitors: 2
Number of Logical Video Cards: 1
Primary Display Resolution: 2560 x 1440
Desktop Resolution: 5120 x 1440
Primary Display Size: 23.50" x 13.23" (26.97" diag), 59.7cm x 33.6cm (68.5cm diag)
Primary VRAM: 8192 MB
Sound card:
Audio device: ATI R6xx HDMI
Memory:
RAM: 32002 Mb
VR Hardware:
VR Headset: None detected
Miscellaneous:
UI Language: English
LANG: en_US.UTF-8
Total Hard Disk Space Available: 466924 MB
Largest Free Hard Disk Block: 106624 MB
Storage:
Number of SSDs: 4
SSD sizes: 1000G,500G,500G,256G
Number of HDDs: 0
Number of removable drives: 0
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-1755431757
the same with FH5 in today's update
Replying to [#7151 (comment)](https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-1755431757)
the same with FH5 in today's update
I can confirm that Forza Horizon 5 no longer runs in Linux or Steam Deck same as above just a splash screen and immediate exit back to steam.
Might be old news to some here, but it seems like Valve is aware and is looking to push a fix eventually for Forza Motorsport (and FH5 as well I imagine)
Now, until Microsoft either brings them over to Linux or accommodates for us, I'll be playing Assetto Corsa (which I highly recommend due to the modding and it looks better than Forza games with CSP as well)
I've heard (or more like read in the steam forums) with proton experimental bleeding edge Forza horizon 5 works again. Anyone tried that? maybe Forza motorsport will work too now..?
Edit: Ok, just tested Forza Horizon 5 myself. Works again with Proton Experimental Bleeding Edge!
Just tested both, FH5 and FM
FH5: Really works again
FM: Hangs on splash screen now, just like those with problems on windows. Seems to have something to do with admnistrator rights, cant remember correctly
Just tested both, FH5 and FM FH5: Really works again FM: Hangs on splash screen now, just like those with problems on windows. Seems to have something to do with admnistrator rights, cant remember correctly
Could you give us a Proton log for Forza Motorsport?
Sure, here it is:
Log: https://drive.google.com/file/d/1W-Xp1z2H28RwlI_AFl3aPFavF0il48aH/view?usp=drive_link
Had to force close it.
Sure, here it is:
Log: https://drive.google.com/file/d/1W-Xp1z2H28RwlI_AFl3aPFavF0il48aH/view?usp=drive_link
Had to force close it.
Also, is there a way to confirm if the game isn't attempting to install gamingservices?
I dont think it is trying anymore. I am testing on steam deck.
Before, i launched the game, it appeared to me in the bottom of screen, "executing steps of instalattion ("\gamingservices.exe") the splash screen appeared over it and then closed.
Now it passes from the installing proccess, just hangs on the splash alone
I tried launching using Proton Experimental and can confirm that it hangs on the splash screen without crashing. When launching the game on Windows 11, I get this warning every time (using RX 7900 XTX). It needs to be closed or I have to click "Ignore Warning" to boot into the game. Is it possible that it hangs due to this warning that is somehow not visible when launching through Proton?
I will try on desktop mode, I have windows on my steam deck too, it really gives me this error
It really just hangs, no error.
I don't own Forze Motorsport. But i do have FH5 and it works on proton hotfix. Forza Motorsport maybe works aswell. Can someone give it a try and report the outcome?
Iam looking to buy this game, but protondb and this github issue holds me back.
Got impatient and decided if it didn't work i will just play on Windows.
Proton Hotfix also hangs on splash screen. Whatever makes FH5 work with hotfix doesn't do so for FM.
TKG-proton-experimental.bleeding.edge.8.0.59260.20231013 worked for FH5 successfully, can you confirm if it works for Motorsport? (I used ProtonUp-qt to install TKG..)
TKG-proton-experimental.bleeding.edge.8.0.59260.20231013 worked for FH5 successfully, can you confirm if it works for Motorsport? (I used ProtonUp-qt to install TKG..)
Tested with Ge 8-18 and TKG TKG-proton-experimental.bleeding.edge.8.0.59260.20231013
GE : Same as experimental, loop on splash screen, let for 3 hours, had to force stop
TKG: Crashes instantly and returns to Steam library
Just tested the new update with GE, Experimental Bleeding edge and TKG, still the same as before
Any updates on this out of curiosity?
Any updates on this out of curiosity?
Not from what I've heard.
It seems to be an issue that, unfortunately, Microsoft would only be able to fix, since this game requires a service that cannot be installed or run through WINE.
In addition to that there seems to have some memory allocation issue, they are using undocumented flag in VirtualAlloc
In addition to that there seems to have some memory allocation issue, they are using undocumented flag in VirtualAlloc
Could you give us a log and give us an excerpt showing us the unimplemented flag?
The game call VirtualAlloc with flags 0x00002000 (MEM_RESERVE), 0x20000000 (MEM_LARGE_PAGES) and 0x00400000 (MEM_PHYSICAL). Ignoring the two last flags let the call succeed, but encounter a memory error later down the line. I'm not into memory allocation enough to understand what is needed here...
Is there any news on whether the apparent memory allocation bug has been fixed?
Sure, this game is a dumpster fire, but it wouldn't hurt to solve a bug like this since it may as well have the domino effect of fixing other games.
Could we also consider the possibility that while the game does install Gaming Services on first run, it might not be actually working?
UPDATE: The undocumented flags seem to actually be documented. Perhaps we can work on implementing those?
https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc#parameters
Has anyone gotten motorsport working?
-Michael.
I still have not managed to get it working, but i found it after anliec said. Still didnt test as it will "manipulate" the game and can result on ban or something.
https://gist.github.com/Allavaz/23bb92ec4a69fa74f01088cb846b3029
I still have not managed to get it working, but i found it after anliec said. Still didnt test as it will "manipulate" the game and can result on ban or something.
https://gist.github.com/Allavaz/23bb92ec4a69fa74f01088cb846b3029
In that case, could we just use what the vague documentation tells us to create the flags and hope they work? Also, I'm not sure if the game would even detect the debugger at this point if it can't even get past the splash screen.
After launching the game I see only splash screen and hear howl of CPU fan which did not disappear until I stop the game.
Nothing happened within half an hour.
Proton logs:
steam-2440510.zip
steam-2440510-with-WINEDLLOVERRIDES="amd_ags_x64=b".zip
In proton log I see cycling messages:
12233.494:012c:0130:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d.
12233.494:012c:0130:trace:seh:dispatch_exception code=c000001d flags=0 addr=00000001414B2614 ip=1414b2614
12233.494:012c:0130:warn:seh:dispatch_exception EXCEPTION_ILLEGAL_INSTRUCTION exception (code=c000001d) raised
12233.494:012c:0130:trace:seh:dispatch_exception rax=0000000002990001 rbx=000000000011e840 rcx=0000000002f97b89 rdx=0000000000000354
12233.494:012c:0130:trace:seh:dispatch_exception rsi=0000000002356880 rdi=00000000023508f0 rbp=000000000011e0e9 rsp=000000000011e038
12233.494:012c:0130:trace:seh:dispatch_exception r8=0000000000000012 r9=000000000011e0d8 r10=000000000011e840 r11=000000000011e090
12233.494:012c:0130:trace:seh:dispatch_exception r12=0000000000000000 r13=00000000023508f8 r14=0000000000000000 r15=ffffffffffffffff
12233.494:012c:0130:trace:seh:call_vectored_handlers calling handler at 000000014144637C code=c000001d flags=0
12233.494:012c:0130:trace:seh:sigsys_handler SIGSYS, rax 0x73, rip 0x1415afad1.
12233.494:012c:0130:trace:seh:call_vectored_handlers handler at 000000014144637C returned ffffffff
12233.494:012c:0130:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d.
12233.494:012c:0130:trace:seh:dispatch_exception code=c000001d flags=0 addr=00000001414B26B7 ip=1414b26b7
12233.494:012c:0130:warn:seh:dispatch_exception EXCEPTION_ILLEGAL_INSTRUCTION exception (code=c000001d) raised
12233.494:012c:0130:trace:seh:dispatch_exception rax=0000000000000001 rbx=000000000011e840 rcx=0000000000000000 rdx=000000017006e6f0
12233.494:012c:0130:trace:seh:dispatch_exception rsi=0000000002356880 rdi=00000000023508f0 rbp=000000000011e0e9 rsp=000000000011e038
12233.494:012c:0130:trace:seh:dispatch_exception r8=0000000000000092 r9=000000017006d940 r10=00000000036f9955 r11=0000000000000000
12233.494:012c:0130:trace:seh:dispatch_exception r12=0000000000000000 r13=00000000023508f8 r14=0000000000000000 r15=ffffffffffffffff
12233.494:012c:0130:trace:seh:call_vectored_handlers calling handler at 000000014144637C code=c000001d flags=0
12233.494:012c:0130:trace:seh:call_vectored_handlers handler at 000000014144637C returned ffffffff
12233.494:012c:0130:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d.
12233.494:012c:0130:trace:seh:dispatch_exception code=c000001d flags=0 addr=00000001414B2428 ip=1414b2428
12233.494:012c:0130:warn:seh:dispatch_exception EXCEPTION_ILLEGAL_INSTRUCTION exception (code=c000001d) raised
12233.494:012c:0130:trace:seh:dispatch_exception rax=0000000002990001 rbx=000000000011e840 rcx=0000000002f9831f rdx=0000000000002d90
12233.494:012c:0130:trace:seh:dispatch_exception rsi=0000000002356880 rdi=00000000023508f0 rbp=000000000011e0e9 rsp=000000000011e038
12233.494:012c:0130:trace:seh:dispatch_exception r8=0000000000000018 r9=000000000011e0e0 r10=000000000011e840 r11=000000000011e098
12233.494:012c:0130:trace:seh:dispatch_exception r12=0000000000000000 r13=00000000023508f8 r14=0000000000000000 r15=ffffffffffffffff
12233.494:012c:0130:trace:seh:call_vectored_handlers calling handler at 000000014144637C code=c000001d flags=0
12233.494:012c:0130:trace:seh:sigsys_handler SIGSYS, rax 0x73, rip 0x1415afad1.
12233.494:012c:0130:trace:seh:call_vectored_handlers handler at 000000014144637C returned ffffffff
12233.494:012c:0130:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d.
12233.494:012c:0130:trace:seh:dispatch_exception code=c000001d flags=0 addr=00000001414B24CB ip=1414b24cb
12233.494:012c:0130:warn:seh:dispatch_exception EXCEPTION_ILLEGAL_INSTRUCTION exception (code=c000001d) raised
12233.494:012c:0130:trace:seh:dispatch_exception rax=0000000000000001 rbx=000000000011e840 rcx=0000000000000000 rdx=000000017006dd60
12233.494:012c:0130:trace:seh:dispatch_exception rsi=0000000002356880 rdi=00000000023508f0 rbp=000000000011e0e9 rsp=000000000011e038
12233.494:012c:0130:trace:seh:dispatch_exception r8=000000000000002c r9=000000017006d940 r10=00000000036fc711 r11=0000000000000000
12233.494:012c:0130:trace:seh:dispatch_exception r12=0000000000000000 r13=00000000023508f8 r14=0000000000000000 r15=ffffffffffffffff
12233.494:012c:0130:trace:seh:call_vectored_handlers calling handler at 000000014144637C code=c000001d flags=0
12233.494:012c:0130:trace:seh:call_vectored_handlers handler at 000000014144637C returned ffffffff
Adding parameter WINEDLLOVERRIDES="amd_ags_x64=b" nothing change.
Link to full system information report as gist
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-1873504313
Can you trace what causes the exception? From what has been stated previously, it is likely due to unimplemented flags in the VirtualAlloc function.
Anything new? The memory issue fixed? Is Gaming Services still a problem?
Gaming Services is still the main blocking point. For the memory error, ignoring MEM_LARGE_PAGES & MEM_PHYSICAL seams to be the way to go, but until Xbox make a Gaming Services that works with wine that's not helping much.
i wonder if valve could actually submit some request to microsoft to help with making gaming services work through a layer or proton or wine for Deck
i wonder if valve could actually submit some request to microsoft to help with making gaming services work through a layer or proton or wine for Deck
Well considering that Forza's Steam Deck support page mentions Forza Motorsport, it seems they are aware of the issue, but their hands-off language implies it's unlikely they'll do anything.
UPDATE: I contacted Forza support and told them about what's stopping this game from running on Linux and asked if there were plans to support it. They didn't answer my question and just redirected me to their Steam Deck support page.
Was there any progress in making Forza Motorsport running in Wine/Proton? I know that there was some upstream work in progress, but that was months ago.
If you use the new proton (9.0 beta), after the splash screen, is shown an info popup that gaming services needs to be installed. With OK and Cancel options, OK leads to Microsoft support link where it teaches how to install it. All the steps are for windows 10+.
Tried installing with proton launcher on the Motorsport prefix, no Success.
I think we really depend on Turn 10 for this, unless someone discover a way to circunvent this.
If you use the new proton (9.0 beta), after the splash screen, is shown an info popup that gaming services needs to be installed. With OK and Cancel options, OK leads to Microsoft support link where it teaches how to install it. All the steps are for windows 10+. Tried installing with proton launcher on the Motorsport prefix, no Success.
I think we really depend on Turn 10 for this, unless someone discover a way to circunvent this.
Just curious to see, but could you send a screenshot?
Also, someone said they were able to install Gaming Services on Windows LTSC (which does not come with the Microsoft Store). How does it work there if (presumably) there is no way of installing UWP apps, while it fails on Proton?
So here is something odd. @logos128 said he was able to install a version of Windows 10 that doesn't come with the Microsoft Store and was able to install Gaming Services successfully (with the script Microsoft provides on their website).
Yet, on Proton, it fails to run it.
From our observations, gamingrepair.exe tries to open the Microsoft Store to install Gaming Services. Why was it working on @logos128's Windows 10 install that didn't come with the Microsoft Store, but not on Proton, which also lacks the Microsoft Store.
No clue, i tried here to install via get-appxpackage Microsoft.GamingServices without microsoft store, it seems to work, but when i launch the game, it wont connect to server and just let me play offline, i have do manually open xbox app so i can play
No clue, i tried here to install via get-appxpackage Microsoft.GamingServices without microsoft store, it seems to work, but when i launch the game, it wont connect to server and just let me play offline, i have do manually open xbox app so i can play
Wait, you're saying the game actually launches?
If so, then we're one step closer at least.
Forgot to tell that i tested on a Windows laptop and uninstalled microsoft store and dependencies, my bad
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-2054675342
Could you try copying over the Gaming Services stuff to Motorsport's prefix and see if it does anything?
Tried it before, no advance.
At least on my knowledge, its installed here for me:
C:\Program Files\WindowsApps\Microsoft.GamingServices_20.88.5001.0_x64__8wekyb3d8bbwe
But there a lot of registers to every executable of it on my windows installation
@GalacticalEdge, initially I thought the Microsoft Store is a separate app that includes all of the store functionality itself. Appeared it is just a frontend providing convenient access to the store for end users. All functionality is actually part of the Universal Windows Platform (Windows.ApplicationModel.Store, Windows.Services.Store, etc.) and as such is part of the OS.
Back then I did a lot of testing , incl. implementing dozens of api stub calls and even "noname" ordered functions, to try to mix Wine with some native Windows components, but it always ended up asking for more AppModel related stuff in ntdll or kernel32/kernelbase.
So the ApplicationModel will need to be implemented more thoroughly in Wine first (with the store stuff just stub-ed, etc.), for this to progress further. It is part of Win10/11 now, so more apps will need it in the future anyway.
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-2057488457
So you're saying it's possible, but would need to essentially implement UWP on Wine?
Also, to add, I believe Forza Horizon 4's Steam release forced Wine to implement some UWP functions anyway, so at least we got a foundation.
So you're saying it's possible, but would need to essentially implement UWP on Wine?
It depends on how the FM uses GamingServices and whether that involves using any store api from the OS. Implementing any api that would require authentication or exchange of credentials with the MS Store won't be possible, as this is proprietary MS service.
I believe however, that FM does online authentication/communication the same way as FH5, through the XboxLive dll. It could be using GamingServices just for the cloud support. There is also a strong possibility that GamingServices includes all the authentication code itself, and doesn't rely on any system apis for that.
Anyway, GamingServices is an app package service, that will need at least basic support for such apps in Wine (through Windows.ApplicationModel and the related apis in ntdll, etc.).
I was able to run one of the executables in the package - gamingservices.exe I think - as a regular service in a wineprefix. IIRC it mostly needed implementation of app package related apis from ntdll and kernel32/kernelbase. Didn't require any of the store stuff. It returned an error while starting the service, but at least didn't crash. There are few other services in the package, though.
Since there are ways of downloading UWP apps through unofficial sources, could they be used as building blocks for UWP support in Wine (since Gaming Services needs UWP support)?
UWP interfaces are already being worked on - look in dlls/windows.xxxx.., etc. For example windows.gaming.input provides support for force feedback wheels in FH5. There is even an initial implementation of windows.applicationmodel with some app package support.
There are two sets of problems to get GamingServices running on Wine, IMO.
The first problem is to make installation procedure complete successfully. This one involves implementing the MS Store stuff - downloading, installing, etc.
I think though, that if GamingServices and other required components are already installed on the wine prefix, the GamingRepair installer won't attempt to re-download them from the store. So, if for example Valve distributes those components as part of the SteamWorks package, and then Proton manually installs them as part of the FM prefix creation, it would theoretically be possible to skip the MS store downloading. This still involves implementing support for app package services and possibly windows.applicationmodel.store stubs, etc.
The second problem is getting the various GamingServices components to function properly. This one involves implementing a lot of app package related interfaces and possibly other UWP interfaces and ntdll/kernel32 apis. From my testing with one of the executables - gamingservices.exe - it didn't import MS Store related apis IIRC. Also depends on what GamingServices functionality is actually used by FM. It is possible that only a small set of apis really need implementation and others just need to be stub-ed, etc.
As for the unofficial MS Store downloading, I don't think it can be legally supported by Valve.
if for example Valve distributes those components as part of the SteamWorks package, and then Proton manually installs them as part of the FM prefix creation, it would theoretically be possible to skip the MS store downloading.
In that case, Valve would need to convince Microsoft to make Gaming Services itself part of the SteamWorks package (which I highly doubt they'd do)
In that case, Valve would need to convince Microsoft to make Gaming Services itself part of the SteamWorks package (which I highly doubt they'd do)
Yep, in my opinion without MS support this cannot be resolved in an official way.
T10 can even distribute the required components as part of the FM download - somewhere in the folder structure, etc.
By any chance, do the other Forza games rely on anything from Xbox Gaming Services? I know Forza Horizon 4 requires Xbox Game Bar and that stuff for inviting friends and joining clubs (trying on Proton will just throw a "There is no Windows program configured to open this file" error and causes FH4 to show an error saying there was an issue communicating with the server, but continues to run fine), but does not crash on launch.
UWP and WinRT are not intertwined and many regular applications are already using WinRT modules. For Forza Horizon 4, it seems to only require windows.gaming.ui.gamebar.dll and in the Wine implementation all this does is return values saying the gamebar is not visible.
WinRT modules are increasingly being used and most applications won't run without them. Wine does not have any dedicated WinRT developers nor do they seem interested in developing it. I applied to CodeWeavers to work on Wine and specifically WinRT modules but they rejected me despite meeting the listed job requirements and having fixed several WinRT bugs.
If Valve is hiring Proton/Wine developers I'd be more than happy to work on this issue and add more support for WinRT modules.
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-2132044433
So do we know what Gaming Services is used for in the game aside from DRM (I think)?
Also, for the Deck Verified evaluation, it should be changed to "This game is unsupported on Steam Deck due to use of an unsupported anti-cheat or multiplayer service"
This is a dead horse already, so I'm not sure if anyone will notice, but a Wine developer told me stubbing Gaming Services might get the game to at least launch, but in a very limited state. Any thoughts?
It's likely to get the game running, but without online functionality. For the latter, that likely needs a thorough implementation of not only GamingServices but also any dependencies or related services like Xbox Live, which AFAIK is not possible to implement in Wine at the moment.
A person in this thread tried copying GamingServices to the prefix and it didn't work. Error 0x89240101 is E_GAMERUNTIME_DLL_NOT_FOUND or "The game runtime DLL was not found.". In this case, it might be querying the registry first. GamingServices has at least two registry keys:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\GamingServices]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\GamingServicesNet]
What you can try is installing GamingServices on a Windows OS, export those keys, and import them into the Wine registry.
Moreover, if the game is using Win32 API to check if GamingServices is running, like QueryServiceStatus for instance, then you could add a hack into Proton that returns SERVICE_RUNNING.
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-2301210172
The game likely communicates to online services using XboxLive.dll, which is probably similar to Forza Horizon 5 and other Xbox titles. So who knows what Gaming Services is for.
Also, I don't have the time to try your suggested workaround since I am extremely busy.
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-2301210172
Also, could you tell me the location of the Gaming Services files so I can copy them over when I got the time? I will also see if importing the registry keys does anything.
It should be in C:\Program Files\WindowsApps.
I have GamingServicesNet running, but for some reason I can't get Gaming Services service to start:
$ ps aux | grep GamingService
matt 123774 0.0 0.0 263384 21352 ? Ssl 19:40 0:00 C:\Program Files\WindowsApps\Microsoft.GamingServices_23.92.22001.0_x64__8wekyb3d8bbwe\GamingServicesNet.exe
$ WINEPREFIX=/media/games/SteamLibrary/steamapps/compatdata/2440510/pfx wine net start GamingServicesNet
The Gaming Services service is starting.
Service already running.
$ WINEPREFIX=/media/games/SteamLibrary/steamapps/compatdata/2440510/pfx wine net start GamingServices
The Gaming Services service is starting.
02e4:fixme:heap:RtlSetHeapInformation HEAP_INFORMATION_CLASS 1 not implemented!
02e4:fixme:ole:CoInitializeSecurity 00007FFFFE229710, -1, 0000000000000000, 0000000000000000, 0, 2, 0000000000000000, 0, 0000000000000000 stub
02e4:fixme:ole:global_options_Set 00007FFFFE7B0CA0, 1, 2.
02e4:fixme:ole:global_options_Set 00007FFFFE7B0CA0, 5, 1.
02f4:fixme:ntdll:EtwEventSetInformation (deadbeef, 2, 00006FFFFE0F8952, 47) stub
02f4:fixme:ntdll:EtwEventSetInformation (deadbeef, 2, 00006FFFFDFEB6AA, 37) stub
02f4:fixme:ntdll:RtlGetDeviceFamilyInfoEnum 0000000000000000 00007FFFFEDDF900 0000000000000000: stub
02f4:err:ole:com_get_class_object class {0000034e-0000-0000-c000-000000000046} not registered
02f4:err:ole:com_get_class_object no class object {0000034e-0000-0000-c000-000000000046} could be created for context 0x1
Service request timeout.
02e4:fixme:combase:RoGetActivationFactory (L"Windows.Internal.System.Profile.RegionPolicyEvaluator", {00000035-0000-0000-c000-000000000046}, 00007FFFFE1FF920): semi-stub
02e4:err:combase:RoGetActivationFactory Failed to find library for L"Windows.Internal.System.Profile.RegionPolicyEvaluator"
It feels really close tbh
Got past the "failed to find library", now I'm getting this:
$ system32 WINEPREFIX=/media/games/SteamLibrary/steamapps/compatdata/2440510/pfx wine net start GamingServices
The Gaming Services service is starting.
0624:fixme:heap:RtlSetHeapInformation HEAP_INFORMATION_CLASS 1 not implemented!
0624:fixme:ole:CoInitializeSecurity 00007FFFFE229710, -1, 0000000000000000, 0000000000000000, 0, 2, 0000000000000000, 0, 0000000000000000 stub
0624:fixme:ole:global_options_Set 00007FFFFE7B0CA0, 1, 2.
0624:fixme:ole:global_options_Set 00007FFFFE7B0CA0, 5, 1.
0630:fixme:ntdll:EtwEventSetInformation (deadbeef, 2, 00006FFFFE0F8952, 47) stub
0630:fixme:ntdll:EtwEventSetInformation (deadbeef, 2, 00006FFFFDFEB6AA, 37) stub
0630:fixme:ntdll:RtlGetDeviceFamilyInfoEnum 0000000000000000 00007FFFFEDDF900 0000000000000000: stub
0630:err:ole:com_get_class_object class {0000034e-0000-0000-c000-000000000046} not registered
0630:err:ole:com_get_class_object no class object {0000034e-0000-0000-c000-000000000046} could be created for context 0x1
Service request timeout.
0624:fixme:combase:RoGetActivationFactory (L"Windows.Internal.System.Profile.RegionPolicyEvaluator", {00000035-0000-0000-c000-000000000046}, 00007FFFFE1FF920): semi-stub
I have no idea what service request is timing out. I can see on wireshark that when I start up the GamingServices service, it pings 40.65.111.94, which looks like title.mgt.xboxlive.com:
$ nslookup title.mgt.xboxlive.com
Server: 100.100.100.100
Address: 100.100.100.100#53
Non-authoritative answer:
title.mgt.xboxlive.com canonical name = title.mgt.xboxlive.com.akadns.net.
Name: title.mgt.xboxlive.com.akadns.net
Address: 40.65.111.94
I can't see it trying to make that request through wine though
@RiskRunner0
That's very interesting indeed! Are these services installed automatically by FM or did you install them manually?
If FM can install and register them during game installation now, then that's a great improvement over a year ago. I follow Wine development closely and don't recall any significant work being done on the apis necessary for the GamingRepair installer to function properly. So it must have been more of a T10/MS effort. :slightly_smiling_face:
A year ago GamingServices was an app package service, and as there is no support for such services in Wine, it needed manual registration/installation of the various service components (gamingservices.exe, gamingservicesnet.exe, etc.) in the prefix.
Anyway, great progress so far!
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-2387528717
Did you copy over Gaming Services from a Windows install or did the game install them itself?
Also, since you have it partially running, could you see what happens when you launch the game at this point?
I manually installed GamingServices and StateRepository and all the keys needed for them, FM didn't provide them and launching the game is the same since GamingServices doesn't seem to fully run
I manually installed GamingServices and StateRepository and all the keys needed for them, FM didn't provide them and launching the game is the same since GamingServices doesn't seem to fully run
So have you figured why Gaming Services times out during startup yet?
Also, did the game still give the same kind of error while starting up? (The one where it says Gaming Services needs to be installed)
So have you figured why Gaming Services times out during startup yet?
I think I can't get StateRepository started, and since that's a dependency of GamingServices, it barfs. StateRepository is trying to start a group appmode, and I couldn't really find anything about it - it's trying to run svchost.exe -k appmodel -p
I know it's probably nothing new and won't get us closer to fixing anything, but I noticed that Indiana Jones and the Great Circle bundles gamingrepair.exe (https://steamdb.info/depot/2677662/), but it works.
I don't own that game, so could anyone tell me if the game works as it does on Windows without any missing functionality (including Xbox Cloud Saves)? If so, what's so special about this case?
EDIT: I looked and it seems they're not using the same gamingrepair.exe since Indiana Jones has one larger in size and bundles a DLL with the same name, while FM uses a smaller standalone one.
UPDATE: Avowed is also using Gaming Services, but in the same fashion as Indiana Jones, which concerns me about how future games using MS Store dependencies will be handled under Proton.
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-2594572489
Since Microsoft/Xbox have since made claims that they want to make Windows "the leading gaming platform", I suspect they've been making efforts to block out Linux for gaming specifically, however "small" the threat is, it has been gaining momentum because of things like the Steam Deck with SteamOS and other distros popping up/off.
While a bit off-topic: Something else that stood out to me is that the Minecraft-spinoff-games "Dungeons" (2020) and "Legends" (2023) are explicitly stated to not be available or not supported in the Linux-native Minecraft-launcher. Although, the Steam-versions will run through Proton of course and I believe there's a relatively easy way to hook up the standalones (Microsoft Store licenses through the Minecraft-launcher) to Steam and thus Proton. Still, they kinda seem to not want to bother with Linux-support despite the launcher being Linux-native. Perhaps it's also because of different engines and the like, but I don't know.
All that said, this is about 'Forza Motorsport', and I think all of us got the news that the studio (Turn 10) has been dissolved, with remaining developers moved to Playground for "Horizon", and it's unlikely that any updates are coming anymore (unless they're putting the "Motorsport"-series or the current title on the newly combined studio as well).
"Microsoft Gaming Services" is clearly DRM for their own published games since like 2023 and this whole "Microsoft Gaming" effort has probably been quietly in effect since then. - Then again, they didn't shove it into "Horizon 5", but that had already been out for a few years, so I guess they didn't want to cause any potential issues.
Unwelcome back, Games for Windows Live!
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-3049341705
I'd say Microsoft isn't actively trying to sabatoge the Steam Deck or Linux gaming. They just take a hands-off approach. Because if they did, Gears of War: Reloaded wouldn't be working on Steam Deck. Instead, they put in the effort to have it working there.
But yeah, with Turn 10 Studios in hot water, there's no reason to hope at this point.
But yeah, with Turn 10 Studios in hot water, there's no reason to hope at this point.
What do you mean by this?
As @MicHaeL-MonStaR said, in early July, Microsoft layoff most of the development team of Forza Motorsport, basically stopping any ongoing work on current or future Forza Motorsport.
So it would be foolish to expect any update to the game coming from Turn 10 now, even for something as small as an updated "Microsoft Gaming Services" DRM.
https://github.com/Weather-OS/GDK-Proton
Minecraft for Windows is able to run on a Proton build that adds GDK support. Can we test if it works for Forza Motorsport?
https://github.com/Weather-OS/GDK-Proton
Minecraft for Windows is able to run on a Proton build that adds GDK support. Can we test if it works for Forza Motorsport?
I tried it, it gets a little further, but crashes a few seconds after displaying this dialog box:
What's your repro just using the GDK-Proton version?
What's your repro just using the GDK-Proton version?
Yep, I'm just using the tarball the developer provided on GitHub.
Hmm I don't get that far, do you have a different command in the config? Are you using Wayland?
Wait I get it now but I get that with proton-experimental.
I'm still rather annoyed that this is happening, so I keep "spamming" (or requesting) them to sort this out on about every Steam-post they make.
Here's the thing: I'm really curious about how they (and other developers) will respond to the Steam Machine. - Is everyone going to scramble to at least make/let it run through Proton (basically like a lot of developers try to take care of Deck-compatibility already), or are a bunch of them still going to pretend Linux (gaming) isn't a thing and just not bother to do anything?
And I know this is a Microsoft-product and they "should" only care about Windows, but then most of their other Microsoft/Xbox-titles simply run on Linux/Proton, including the "Horizon"-games by the sister-studio, even other games WITH the Microsoft Gaming Service, so it doesn't seem like they actively try to prevent it. - This just seems more of an issue with how 'Forza Motorsport' tries to execute it and they either won't bother to change it or can't change it.
Sorry for the non-contribution, but I really wonder how things will stand 6-12 months from now. - It's just a waiting-game for me. I mean, unless I try to run some custom Windows as a Virtual Machine (which is probably awful for performance), I don't see myself running a machine with Windows anymore, other than the "on the side" Windows-installation I have on a basic laptop.
I paid like 30 Euros for this game, which is a lot for me, and Valve couldn't even cut me some slack for a refund with minutes on the clock. - Disappointed in both parties.
https://github.com/Weather-OS/GDK-Proton
Minecraft for Windows is able to run on a Proton build that adds GDK support. Can we test if it works for Forza Motorsport?I tried it, it gets a little further, but crashes a few seconds after displaying this dialog box:
I believe this relies on AMD AGS, which is set to use the builtin version for Forza Horizon 4 and 5. See if doing that with Forza Motorsport does it in the Proton prefix's winecfg? In my experience, FH4 and FH5 will not even get to the splash screen if you use the native AMD AGS.
This may be especially important if you're on AMD.
I'm on AMD so this is a good callout, can try tonight
I'm on AMD so this is a good callout, can try tonight
Also, see if copying gaming services from a Windows install into the game's prefix helps. Chances are it should work since it implements GDK.
Replying to https://github.com/ValveSoftware/Proton/issues/7151#issuecomment-3645257367
The thing with most other games that use Gaming Services is most of them are single player games (i.e. Indiana Jones and the Great Circle, Avowed. the Outer Worlds 2, etc.) that only need it to use Xbox cloud saves. In those games, trying to use Xbox cloud saves just results in an error, but doesn't stop you from playing it otherwise.
But some multiplayer games like Gears of War and Grounded 2 do rely on Gaming Services for logging into Microsoft. But the former already implements a separate method for Steam Deck that doesn't rely on Gaming Services. And the latter is planning to do something similar. Since Forza Motorsport is an always-online game that insists of cross-play and cross-progression across all available platforms, it would make sense Gaming Services is a hard requirement.
I'm on AMD so this is a good callout, can try tonight
Any update?
Well with this game's end of life, there's now zero reason to hope they will ever fix this.
The most we can try now is to get around the issues preventing the game launching now that Gaming Services can basically be bypassed.
Well with this game's end of life, there's now zero reason to hope they will ever fix this.
The most we can try now is to get around the issues preventing the game launching now that Gaming Services can basically be bypassed.
It's not really "end of life", it's just not going to get content-updates. It also doesn't mean they can never touch it again. - Surely they will have to update some surface-level QoL-things to maintain it as a product. - If they don't, they better de-list it.
From https://forza.net/news/forza-year-in-review-2025 :
we do not plan to introduce new cars, tracks, features, or regular bug fixes for Forza Motorsport
They will not delist it, as it can still bring them money, but they won't change the executable. It's not end of life in the sense that they keep the server running and recycle events:
However, we will continue supporting the game by keeping online servers active, hosting special events and competitions, and reintroducing previously released Featured Tours and reward cars on a monthly basis, until all content is available for you to enjoy anytime.
But will try to find some time to try Proton-GDK on my side!
Does anyone knows it would work with this version of the proton.
Does anyone knows it would work with this version of the proton.
It's unlikely. - I haven't tried it yet (I'm not at home with my regular computer right now), which I tend to do (out of desperation) every time there is a new version, but if they don't resolve the whole "Microsoft Gaming Service"-requirement, from one side or the other (if not both), it just won't be able to launch through to the actual game itself. - Still one of the lamest problems I've encountered in years... I just can't get over how asinine it is. But I'm still playing the waiting-game.
AFAIK getting all of that working from the wine side is very non-trivial, too.
https://github.com/Rosentti/wine-uwp/blob/master/README-uwp.md
I found this wine branch that supports the Xbox app which may allow the game to run with Microsoft gaming services
I managed to get the game running, but sadly I am unable to login and progress further.
The problem was that the game need some DLL stubs/proxies to get it working, namely xgameruntime.dll that proxies to the genuine Microsoft runtime, a gsstub.dll with some COM/WinRT stubs, and a gameplatformservices.dll stub that only has to exist.
I believe the real issue now is getting the Game Services to interact with the game.
Nice! What about the "Free play offline" mode?
Nice! What about the "Free play offline" mode?
Yeah, I tried that. It just goes back to loading forever - I believe the problem I am facing is something to do with some Persistent Local Storage I haven't looked into yet.
UPDATE:
Nevermind, it is not Persistent Local Storage. I added <PersistentLocalStorage> to microsoftgame.config the way FH6 has it.
Clicking the "Free play offline" doesn't even produce a single call into the game runtime, so whatever it checks, it already knows the answer before it asks.
I believe, what it wants next is FM's own backend, gameservices.fm.forzamotorsport.net/Services/o.xtsw or B228E.playfabapi.com/Client/LoginWithCustomID. I managed to capture a Forza Horizon 6 session for comparison since that one works, and it authenticates with a PlayFab entity token in an X-Authorization header, and not an Xbox token. Getting one means PlayFab LoginWithXbox, which needs an XSTS token with title claims, which needs a TitleToken.
That is where it dies. sisu/authorize returns 401 for FM's AppId 000000004CC9D265. Forza Horizon 6's AppId gets 200 on my machine.
I also tried minting a TitleToken myself. Made my own device identity (device.auth returns 200, so the request signing is correct) and then asked title.auth.xboxlive.com using a real RPS ticket under FM's own AppId. That gives 403. A junk ticket gives 401, so the 403 means it accepted who I am and refused the operation.
So from what I could gather on Windows the game never presents that AppId at all, meaning the token exchange happens
inside gamingservices.exe and the game is handed a finished context.
What were the stubs you needed to fill out and how'd you figure out what they were? I can't remember what exactly I tried for this but I'd like to pick it back up too
What were the stubs you needed to fill out and how'd you figure out what they were? I can't remember what exactly I tried for this but I'd like to pick it back up too
Currently, I am trying to get it to work with: https://github.com/Weather-OS/WineGDK and https://github.com/xodus-gaming/xodus
Well, I got signed in, but it crashes right after getting signed in:
How'd you sign in, with a link and code? I think because it doesn't have the service hosts it's upset
How'd you sign in, with a link and code? I think because it doesn't have the service hosts it's upset
Well, it was a lot of trail-and-error, but basically you have to use xodus-service, which is a background service that handles it.
You also have to use a specific Wine branch: https://github.com/Sightem/WineGDK/tree/pr-33-xuser with a lot of specific fixes and implementations.
I finally got in :D
If anyone is interested in getting the game running, then here is a guide (tested on RTX 3080 Ti (Ampere), nvidia-open-dkms 610.43.03, kernel 7.1.5):
Download GE-Proton11-3-FM.tar.gz from
https://github.com/AllanVester/proton-ge-custom-forza-motorsport/releases/tag/GE-Proton11-3-FM
mkdir -p ~/.steam/root/compatibilitytools.d
tar -xf GE-Proton11-3-FM.tar.gz -C ~/.steam/root/compatibilitytools.d/
Restart Steam, then set Forza Motorsport's compatibility tool to GE-Proton11-3-FM.
This is GE-Proton11-3 with the wine submodule replaced by wine-forza-motorsport@forza-online
Forza asks the GDK for Xbox Live tokens carrying a title claim. Those can only be minted by something holding the device identity, which is what this service does.
git clone -b forza-online https://github.com/AllanVester/xodus.git
cd xodus
cargo build --release --workspace
Needs Rust (edition 2024) and protoc.
Sign in to your Xbox account. This opens a login window, once:
cargo run --release --bin xodus-cli -- login
If that doesn't work, run this instead:
WEBKIT_DISABLE_DMABUF_RENDERER=1 cargo run --release --bin xodus-cli -- login
Then start the service and leave it running while you play:
./target/release/xodus-service
It takes no configuration. On first run it generates the key it signs with, keeps it in your keychain, and hands it to the game over the socket - so the two sides cannot end up disagreeing about which key a token is bound to.
PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/xodus.sock WINEDLLOVERRIDES=xgameruntime=b PROTON_VKD3D_HEAP=1 VKD3D_CONFIG=skip_application_workarounds,descriptor_heap,avoid_image_buffer_aliasing %command%
That is the entire configuration. PRESSURE_VESSEL_FILESYSTEMS_RW is required because the Steam Linux Runtime container cannot otherwise see the service's socket, and without it the game reports "Failed to log on to Forza Game Servers". Replace 1000 with your uid if it differs (id -u).
The GDK runtime in this build implements most of what Forza asks for, but for XThreading it uses Microsoft's own implementation.
Copy xgameruntime.dll from a Windows machine and put it in either of these, renamed:
<Forza Motorsport install dir>/xgameruntime.dll.threading
or
steamapps/compatdata/2440510/pfx/drive_c/windows/system32/xgameruntime.dll.threading
Note the name: it is the original xgameruntime.dll with .threading appended, not a replacement for anything the Proton build ships.
I will not distribute this file - it is Microsoft's, so it has to come from your own Windows installation.
If xgameruntime.dll.threading is missing, the game will not launch.
Start xodus-service with XODUS_LOG=debug and you should see:
proof key requested, serving x=...
XSTS issued for http://xboxlive.com
XSTS issued for http://sisu.xboxlive.com/
XSTS issued for http://playfab.xboxlive.com/
XSTS issued for http://xboxliveauth.forzamotorsport.net/
All four relying parties means sign-in succeeded.
First off: god-tier work, I can't thank you enough for working on this!
Great instructions, I only had one problem while doing this - I had a popup that read something like this:
Attention Required!
The game has requested XThreading. It's recommended that you use Microsoft's native binary for this instead.To do so, copy xgameruntime.dll from a Windows machine and place it under the name "xgameruntime.dll.threading" within either the game's binaries or within your prefix's system32 folder.
I had a copy of xgameruntime.dll from when I was trying this work earlier, I ran this, and everything worked:
$ cp /path/to/genuine/xgameruntime.dll \
~/<library>/steamapps/compatdata/2440510/pfx/drive_c/windows/system32/xgameruntime.dll.threading
Here's some of my system info for reference, since you're running nvidia I'm happy to report this works on AMD as well:
OS: CachyOS x86_64
Kernel: Linux 7.1.5-1-cachyos
CPU: AMD Ryzen 7 3800X (16) @ 4.56 GHz
GPU: AMD Radeon RX 7900 XTX [Discrete]
Display: 3440x1440 @ 144Hz, HDR (34GP950G)
DE/WM: KDE Plasma 6.7.3, KWin (Wayland)
See ya on the track!
Oh yeah, totally forgot about that. I will add it to the guide :D Thank you!
Can also confirm it works with gamescope and Steam Controller - but doesn't help me stay on the road!
Here's my gamescope config:
PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/xodus.sock env -u LD_PRELOAD gamescope -W 3440 -H 1440 -w 3440 -h 1440 -f --mangoapp --hdr-enabled -- env LD_PRELOAD="$LD_PRELOAD" RADV_PERFTEST=sam PROTON_VKD3D_HEAP=1 VKD3D_CONFIG=nodxr,descriptor_heap,avoid_image_buffer_aliasing %command%
I also submitted a new report on protondb.com pointing to your comment, so hopefully people can start using if they're still interested!
am i the only who has this pop-up, the game starts and freezes instantly?
Also do i have to have both xgameruntime.dll and xgameruntime.dll.threading in the system32?
No, I get that too - just click Ignore Warning and it should proceed. Basically I think Wine doesn't translate the type of disk correctly, so you get that warning, but if you click Ignore it should go through.
As for the xgameruntime.dll, I'm confident I destroyed my wine prefix and rebuilt it from scratch when trying this, but I'm not positive. If I were you, I'd delete the folder if you had it previously.
Operating System: CachyOS Linux
KDE Plasma Version: 6.7.4
Kernel Version: 7.1.6-1-cachyos (64-bit)
Processors: 12 × AMD Ryzen 5 9600X 6-Core Processor
Graphics Processor 1: AMD Radeon RX 7900 XT
unfortunately, it freezes and crashes after ignoring
Can you add PROTON_LOG=1 to the beginning of the command? The log should dump to your home directory as steam-2440510.log
Did you be sure to set up everything for Xodus? I think when I initially tried, I had the same problem and it was because something within xodus wasn't set up right on my part.
When you run xodus-service, can you set XODUS_LOG=debug and see what it outputs?
Can you try adding WINEGDK_FORZA_QUIRKS=0 to the command?
Did you be sure to set up everything for Xodus? I think when I initially tried, I had the same problem and it was because something within xodus wasn't set up right on my part.
When you run
xodus-service, can you setXODUS_LOG=debugand see what it outputs?
Xodus works fine on my end, tested it with logs.
also, when i delete XGameRuntime.dll and leave only XGameRuntime.dll.threading, i get xbox error.
Yeah, you have to have both XGameRuntime.dll and XGameRuntime.dll.threading - I have XGameRuntime.dll.threading in the game directory
ok, i found the issue, i made a silly mistake, thanks for trying to help!
silly mistake
ONE OF US!!
now i wonder how to make my XSX controller work there 😆
Yeah I did see that in your logs that it was upset about listing a joystick
works with steam input
I cannot get any controller to work :( I have tried everything.
tried:
fixed gamepad issue, PROTON_DISABLE_HIDRAW=1 was the setting that was needed to get it working.
Stellar work by all, looking forward to playing without having to go through Windows.
I'm having issues compiling Xodus with Bazzite. Which way would make the most sense to go about this?
Or would rebasing to the DX branch be the most straightforward...
On SteamOS I compiled xodus inside a distrobox and only ran it on the host later. I think you still have to layer the webkitgtk package though because thats whats needed to launch the login windows iirc.
I am using bazzite-deck on my htpc so I tweaked it a bit. I have attached mine in a zip file along with a systemd service that starts automatically with my user so that I can just launch FM without needing to start anything. I think bazzite comes with webkit so those binaries should be compatible.
unzip xodus.zip
cd xodus
sudo cp -v xodus-cli xodus-service /usr/local/bin/
cp -v xodus.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now xodus
My xodus-service is slightly tweaked. By default Xodus depends on a desktop keyring which prevented it from running while I am in Game Mode on bazzite. I noticed recently Xodus added a no-key-chain-file compilation option: https://github.com/xodus-gaming/xodus/blob/main/crates/xodus/src/secrets.rs#L14
So I ported this into AllenVester's forked code and then compiled and it's been working great.
ge-proton11-3x1 2026-08proton experimentalx7 2025-12proton hotfixx2 2023-10PROTON_DISABLE_HIDRAW=1x1 2026-08PROTON_PREFER_SDL=1x1 2026-08PROTON_LOG=1`x1 2026-08PROTON_VKD3D_HEAP=1x2 2026-08RADV_PERFTEST=samx1 2026-08VKD3D_CONFIG=nodxr,descriptor_heap,avoid_image_buffer_aliasingx1 2026-08VKD3D_CONFIG=skip_application_workarounds,descriptor_heap,avoid_image_buffer_aliasingx1 2026-08WINEDLLOVERRIDES=xgameruntime=bx1 2026-08WINEPREFIX=/media/games/SteamLibrary/steamapps/compatdata/2440510/pfxx2 2024-10WINEDLLOVERRIDES="amd_ags_x64=b"x5 2024-01WINEDLLOVERRIDESx3 2024-01PROTON_LOG=1x2 2023-10LD_PRELOAD="$LD_PRELOAD" RADV_PERFTEST=sam PROTON_VKD3D_HEAP=1 VKD3D_CONFIG=nodxr,descriptor_heap,avoid_image_buffer_aliasing %command%x1 2026-08PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/xodus.sock WINEDLLOVERRIDES=xgameruntime=b PROTON_VKD3D_HEAP=1 VKD3D_CONFIG=skip_application_workarounds,descriptor_heap,avoid_image_buffer_aliasing %commx1 2026-08PROTON_LOG=1 WINEDLLOVERRIDES="amd_ags_x64=b" %command%x2 2023-10WINEDLLOVERRIDES="amd_ags_x64=b" %command%x2 2023-10xgameruntime.dllx7 2026-08gameplatformservices.dllx1 2026-07gsstub.dllx1 2026-07xboxlive.dllx1 2024-08gamebar.dllx1 2024-05ext-ms-win-wer-reporting-l1-1-0.dllx1 2023-10drvstore.dllx1 2023-10newdev.dllx1 2023-10setupapi.dllx1 2023-100x89240101x1 2024-080xc000001dx1 2024-01
Compatibility Report
System Information
I confirm:
[ ] that I haven't found an existing compatibility report for this game.
[ ] that I have checked whether there are updates for my system available.
Symptoms
Game crashes on launch, supposedly due to this in the Proton log
I've noticed many warnings related to NtSetInformationThread throughout the log and a couple fixme errors like
19619.029:0064:0070:fixme:hid:handle_IRP_MN_QUERY_IDand19619.971:0110:0114:fixme:uiautomation:msaa_provider_GetPropertyValue.Here is the full Proton log
https://drive.google.com/file/d/1UWI7cHhhP9cLCMnP7rqm1btflvKbjRh_/view?usp=sharing
Reproduction
Launch the game and observe it show the splash screen and then crash