An unofficial guide and scripts for running the No Hesi mod for Assetto Corsa under Proton. This project isn't affiliated with or supported by No Hesi, Kunos Simulazioni or Custom Shaders Patch (CSP).
| No Hesi Launcher, including its Steam connection | ✅ Works |
| Joining public servers with Quick Play | ✅ Works |
| Encrypted No Hesi cars and maps | ✅ Works on Proton 10, not on Proton Experimental |
| DualSense controller | ✅ Works with some setup |
| Score submission and leaderboards | ❌ HUD says "You're playing offline" (details) |
You can drive on the servers, but your scores aren't saved. This is the one big problem still open, and help is welcome.
This has run on one machine: CachyOS with KDE on Wayland, a Radeon RX 9070 XT with Mesa 26.2.5, Steam's Proton 10.0, launcher 1.0.10 and CSP 0.2.11.
- Installer: run start to finish on a clean Proton 10 prefix, in an isolated test setup.
- Symbol map: generated by the script from the real game, and identical to the map used for real play.
- Launcher without patching: on that machine, the unmodified launcher joined a public server through Steam for a session of about 30 minutes, with no crashes or kicks. The first sign-in and Steam link there were done with an earlier version that patched the launcher file. On a clean prefix, the current method was tested up to the launcher's first screen.
Please open an issue with what you find on other setups.
You'll need native Steam (the Flatpak version isn't covered here) and Assetto Corsa installed.
1. Install the requirements. In Steam's library, under Tools, install Proton 10.0 and Proton 9.0. Then install these with your package manager:
winetricks,python3,curlandunzip- A MinGW compiler:
mingw-w64-gccon Arch,gcc-mingw-w64-x86-64on Debian or Ubuntu,mingw64-gccon Fedora
2. Set the game to Proton 10. Go to Assetto Corsa > Properties > Compatibility, tick Force the use of a specific Steam Play compatibility tool and choose Proton 10.0. Start the game once, then quit.
If you've run the game on a newer Proton, Proton 10 won't be able to use that prefix. Back up anything you want from steamapps/compatdata/244210/pfx/drive_c/users/steamuser/Documents/Assetto Corsa, delete steamapps/compatdata/244210, and start the game again.
3. Run the installer. Use your own resolution and refresh rate:
git clone https://github.com/aDefaultUser/nohesi-linux.gitcd nohesi-linux && ./install.sh --resolution 1920x1080@60It takes a few minutes and picks the most recent Steam login on your PC. If that isn't the account that owns the game, add --steam-id <your SteamID64>.
4. Set the launch options. Go to Assetto Corsa > Properties > General and set Launch Options to the line the installer printed:
/home/YOUR_NAME/.local/bin/nohesi-launcher %command%
5. Set up No Hesi. Press Play in Steam and the No Hesi Launcher opens. Read and accept its license, sign in, link your Steam account and let it install its content, including CSP.
6. Make the symbol map. Close the launcher, then run this from the nohesi-linux folder. The game may open a window for a minute, then close by itself.
./make-symbol-map.sh7. Play. Press Play in Steam and join a server from the launcher. Always join through the launcher, because starting the game directly with an old race.ini gives "Failed to launch the race".
If something goes wrong, see troubleshooting.
No Wine or Proton source patches are needed, and No Hesi's launcher file isn't changed.
| File | What it does | Why it's needed |
|---|---|---|
patches/webview2-flags.c |
A small stand-in for Microsoft's msedgewebview2.exe that starts the real one with --no-sandbox --disable-gpu --in-process-gpu |
Without those flags the launcher is a black window: WebView2's GPU process crashes on Wine's DirectComposition stub and page processes can't start sandboxed. The launcher sets its own browser flags and ignores the usual overrides |
patches/prefix-settings.reg |
Registers WebView2, sets its Windows version to 8, loads CSP's dwrite.dll in the game, and sets the active Steam user |
Without the Steam user, the launcher says "Sign in to Steam" even when you're signed in |
scripts/nohesi-launcher |
Starts No Hesi's launcher instead of the game's when Steam starts the game, caps the frame rate at 120, and points the launcher to WebView2 and the game | Keeps Steam's connection to the game. Uncapped frames made the whole desktop lag on the test machine |
make-symbol-map.sh |
Runs the game once on Proton 9 in a temporary prefix, so CSP writes cache/memory_layout.bin |
Proton 10 can't read acs.pdb, so CSP reports "no symbols" without this map |
patches/video.ini |
Game video settings template | The launcher doesn't create this file, and without it the game fails with a "UI IMGUI final" error |
The installer also downloads these from their original sources, since they can't be redistributed here:
- The WebView2 runtime, from Microsoft
- The No Hesi Launcher, from No Hesi
d3dcompiler_47, through winetricks, because Wine's compiler rejected CSP's weather shaders- The fonts CSP expects, such as
verdana.ttf, from acstuff.club
No Hesi's cars and maps use CSP's encrypted model format. On Proton Experimental (Wine 11) they silently fail to decrypt, so the world turns blue and untextured while unencrypted tracks look fine. The same content renders correctly on Proton 9 and 10. Why Wine 11 fails is still unknown.
Please read the EULA and Terms of Use yourself. This summary isn't legal advice and reflects the versions dated September 2026:
- Modifying the launcher: EULA §5 bars modifying or reverse engineering it. This project leaves the launcher file as No Hesi ships it, and adds its flags when Microsoft's WebView2 starts instead.
- Linux and Proton: neither document mentions operating systems, Wine, Proton or compatibility layers.
- Support: Terms §12.2 says support doesn't cover third-party modifications, so please don't ask No Hesi to support this setup.
- Your account: Terms §4.5 lets No Hesi suspend or close accounts at any time, for any reason. Nothing here can rule that out, so use it at your own risk.
- Frame rate: to change the 120 FPS cap, put
DXVK_FRAME_RATE=180before the wrapper's path in the launch options. - Security: the flags turn off the sandbox for the launcher's embedded browser, because its page processes can't start sandboxed under Wine. A page that managed to exploit that browser would have fewer barriers around it.
- Assetto Corsa updates: the symbol map is tied to the game build, so run
make-symbol-map.shagain after an update.
- Clear the launch options and the Proton override in Steam.
- Delete
~/.local/bin/nohesi-launcherand~/.local/share/nohesi-launcher. - To remove everything from the prefix, including your game settings, delete
steamapps/compatdata/244210. - Delete
cache/memory_layout.binandcontent/fonts/systemfrom the game folder if you don't want them.
The scripts and docs here are under the MIT License. The software they download has its own terms.