Skip to content

Instantly share code, notes, and snippets.

@fsworld009
Last active March 18, 2025 11:21
Show Gist options
  • Save fsworld009/8c5c5f6c1cff5908ebc3a4bebcacb3bd to your computer and use it in GitHub Desktop.
Save fsworld009/8c5c5f6c1cff5908ebc3a4bebcacb3bd to your computer and use it in GitHub Desktop.
Steam deck setup notes.md

Disk encryption

None. ValveSoftware/SteamOS#771 Be careful on what you are storing in this device (using browser and login to your accounts is NOT a good idea for now).

Barrier

Being able to control Steamdeck by using mouse and keyboard connected to PC/Laptop

Steamdeck: Install from Desktop mode via Discover. Generate SSL pem is required

cd .var/app/com.github.debauchee.barrier/data/barrier
openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout Barrier.pem -out Barrier.pem

PC/Laptop: Also install Barrier, run in server mode

Fan goes on and off constantly

https://www.reddit.com/r/SteamDeck/comments/yc4md2/fix_for_unexpected_7300rpm_fan_bursts_in_latest/ Affect certain models (?), turn off Settings -> Systems -> Updated Fan control for now.

Transfer files btw Windows and Steamdeck (ssh)

https://www.youtube.com/watch?v=pvEZELnbPoI steamdeck:

passwd

setup user pw

sudo systemctl enable --now sshd

To enable ssh

sudo systemctl disable --now sshd

To disable afterwards

can prepare script files to run via Konsole in game mode

Windows: download WinSCP Host: steamdeck port: 22 username deck pw: (userpw) (Use output of ip a on steamdeck if hostname doesn't work)

language support

By default only en.utf-8 is installed (will be changed in 3.5?)

https://forum.gamer.com.tw/C.php?bsn=60599&snA=38831

zh_TW.EUC-TW EUC-TW
zh_TW.UTF-8 UTF-8
zh_TW BIG5
ja_JP.EUC-JP EUC-JP  
ja_JP.UTF-8 UTF-8  
sudo steamos-readonly disable
sudo pacman-key --init
sudo pacman-key --populate archlinux
# languages
Languages=("ja_JP.EUC-JP" "ja_JP.UTF-8" "zh_TW.EUC-TW" "zh_TW.UTF-8" "zh_TW" )
for lang in "${Languages[@]}"; do
  sudo sed -r -i "s/#($lang)/\1/" /etc/locale.gen
done
sudo pacman -S glibc
sudo locale-gen
sudo steamos-readonly enable
echo "Done. Restart to take effect"

Note: At 3.5 all non UTF-8 codes result in error when locale-gen

Konsole in game mode

start size too small https://www.reddit.com/r/SteamDeck/comments/vv7a3p/konsole_in_game_mode/ Seems like saving the size as 156x40 on the profile did the trick, thanks!

Or, F11 for full screen

(Note: not useful, since there's bunch of errors when starting bash session in game mode)

Proton GE

Install ProtonUp-Qt from discover

Gaming mode tweaks

  • Settings -> General -> developer mode on
  • Display -> disable dim and sleep on power
  • Developer -> Allow external display refresh control (I manually lock refresh rate to 60, some how it always read monitor as 144Hz even though I selected @60 in display settings).

Note: using the built in fps locker seems to have input latency issue https://old.reddit.com/r/SteamDeck/comments/vwckdi/input_latency_on_the_steam_deck_what_its_like_now/

Decky loader

https://www.youtube.com/watch?v=kNGJ13VSRLk Power managerment is great, steamgrid db is essential for non-steam games

CSS fullscreen screenshot view

https://deckthemes.com/themes/view?themeId=9b219b1d-c23e-43b1-8269-e7a7f59af45f

View Media in Fullscree

Sharing External USB disk btw Windows laptop and Steamdeck

Disk needs to be formated as ext4 (no encryption), as Proton doesn't work well with NTFS or exFAT

Format it in steamdeck https://retroresolve.com/how-to-set-up-external-hard-drives-on-steam-deck/ Note: permission issue: had to sudo chown -R deck games then use Dolphin UI to change owner Note2: 5%is used by default: change to 1% sudo tune2fs -m 1 /dev/sdc1 Ref: https://ubuntuforums.org/archive/index.php/t-1579633.html

Mount ext4 drives in Windows with https://www.paragon-software.com/us/home/linuxfs-windows/ (paid sw) (this can also be used to format drives to ext4) Should mount with 1000user/group https://deckdrivemanager.com/linux-file-systems-for-windows/

Note: On steamdeck, need to mount in Desktop before. using https://github.com/scawp/Steam-Deck.Mount-External-Drive offers auto mount scripts (commit https://github.com/scawp/Steam-Deck.Mount-External-Drive/commit/1068b31d2b8a55eaf9fb3e9d6fcce3c7bdcb684a)

Note: need to manually move games if you install mods https://www.reddit.com/r/Steam/comments/kr08m0/how_to_bypass_the_the_integrity_check_when_moving/

  • common/(Game)
  • compatdata/(ID)
  • appmanifest_######.acf

Using built-in move feature would trigger integrity check and can overwrite modes

Name your controller

  1. Bluetooth: Desktop -> Bluetooth

  2. Steam UI: open steam with steam -vgui (enable old Big Picture mode) Steam -> Settings -> Controller -> General Controller config

If old big picture is completely killed in the future, maybe need to do it manually. In Steam -> Settings -> Controller Randomly do a change on the target controller (like toggle rumble) Then use find to grep which config file it is

(2)(deck@steamdeck ~)$ find /home/deck/.local/share/Steam/ -cmin -2 | grep "/home/deck/.local/share/Steam/steamapps/common/Steam Controller Configs/(your_user_id)/config/preferences_"
/home/deck/.local/share/Steam/steamapps/common/Steam Controller Configs/(your_user_id)/config/preferences_45e-2e0-6f3e94cg.vdf
/home/deck/.local/share/Steam/steamapps/common/Steam Controller Configs/(your_user_id)/config/preferences_45e-2e0-6f3e94ch.vdf
/home/deck/.local/share/Steam/steamapps/common/Steam Controller Configs/(your_user_id)/config/preferences_45e-2e0-6f3e94c.vdf

Open the vdf file and edit "name" property

Ref: https://www.reddit.com/r/SteamDeck/comments/11rvj0f/is_there_a_way_to_persistently_rename_a_specific/ https://unix.stackexchange.com/questions/60605/how-to-know-recently-updated-files

Note: profile ID is based on connection order, not bluetooth MAC, so we mostly can only use general names like XInput #0

Encrypt folders

Using cryfs, since we don't need to pre-locate encrypted volumes

sudo pacman -s cryfs

use Plasma Vault GUI

On windows, install cryfs, SinKali (GUI for mounting), and Dokany 1.x https://github.com/dokan-dev/dokany/releases/tag/v1.5.1.1000

2.x currently doesn't work cryfs/cryfs#440

To decrypt in game mode, add a script create a script and add it as a game

 #!/bin/bash
set -uexo pipefail

xterm -e "cryfs /run/media/mmcblk0p1/others_sd /run/media/mmcblk0p1/others_sd_m"

Ref https://github.com/hirak99/steam_deck_encryption

Sync saves between devices

Use syncthing for games not supporting Steam cloud https://www.reddit.com/r/SteamDeck/comments/10pdz5m/nonsteam_cloud_saves_between_steam_deck_and/

However, used Decky plugin Syncthing instead of adding systemctl service manually. Manually added services will be wiped out after SteamOS update

Mouse speed in desktop mode

The default mouse speed is too fast in my opinion

Controller settings => Desktop Layout => Edit

  1. Right Trackpad sensitivity: 50%
  2. Right joystick sensitivity: 100%
  3. Left stick: Pg up, Pg down, Home, end

Decky recorder

process the video so it can be uploaded to Twitter

Ref: https://github.com/safijari/decky-recorder-fork/pull/19/files

This works but causes audio desync / distorted

ffmpeg -i input.mp4 -c:v copy -c:a aac -af aresample=async=1000 converted.mp4

This works better

ffmpeg -i input.mp4 -c:v copy -c:a aac -b:a 128k converted.mp4

If you are unable to enter desktop mode after installing this plugin, disable Replay mode before entering. SDH-Stewardship/decky-recorder-fork#39

Steam input and flatpak apps

Seems not working well ValveSoftware/steam-for-linux#10551

Reshade

https://github.com/kevinlekiller/reshade-steam-proton

Use reshade-linux.sh

UI too small

Supposlly you can adjust UI font size by ctrl+mouse wheel, if not working, edit Reshade.ini and make sure NoFontScaling is 0

NoFontScaling=0

https://reshade.me/forum/general-discussion/5915-cant-use-ctrl-wheel-to-adjust-ui-size-in-reshade4

Waydroid

For Android games, but it won't survive OS update https://github.com/ryanrudolfoba/SteamOS-Waydroid-Installer?tab=readme-ov-file

Protontricks

Install the flatpak version

Bash alias

Per README: https://github.com/Matoking/protontricks#flatpak-recommended

Access SD card

flatpak override --user --filesystem=/run/media/mmcblk0p1 com.github.Matoking.protontricks

Videos with wmv and audios with wma

launch option

GST_PLUGIN_FEATURE_RANK=protonaudioconverterbin:NONE %command%

will fix it. See https://www.protondb.com/app/743890#T2SaMm0YK-

should work with all GE 7.x and 8.x versions (at least works for 7-55 and 8-8)

This stops working since GE-Proton 9-3, based on diff, the protonaudioconverterbin now becomes a GST element instead of plugin, so the env var won't work anymore.

Ref: GE-Proton diff check the diff of submodule wine

Lock fps

using the built in fps locker seems to have input latency issu, lock from launch options instead

https://old.reddit.com/r/SteamDeck/comments/vwckdi/input_latency_on_the_steam_deck_what_its_like_now/ MANGOHUD_CONFIG=fps_limit=40,no_display mangohud %command%

Monster Hunter Rise mods

https://www.reddit.com/r/SteamDeck/comments/v9p0qq/nexus_mods_not_working_on_steam_deck_monster/ Game folder: /home/deck/.local/share/Steam/Steam/steamapps/common/MonsterHunterRise Proton folder? /home/deck/.steam/steam/steamapps/compatdata/1446780/pfx/drive_c not useful for now

Copy reframework, dinput8.dll, natives to Steamdeck's game folder

Reframework: need to delete reframework-d2d Master toggle key changed when I copied modes, not sure why, can re-configure on game load

Add steam game launch options: WINEDLLOVERRIDES="dinput8.dll=n,b" %command%

Problem: can't type CHT in game with reframework

Change launch option to LANG=zh_TW.UTF-8 %command% in order to type CHT and JP in game GE-Proton-8-4: Use HOST_LC_ALL instead (See https://gist.github.com/cfillion/4394c3b8cd051fb45721187053e92296)

Instal additional langs is required

Monster Hunter World

After Ovt.2023 update, need to delete old Stracker's loader if using

loader.dll
hid.dll
dtdata.dll

Download the new one https://www.nexusmods.com/monsterhunterworld/mods/1982?tab=files

Also need to update CRCByPass (and maybe more) https://www.nexusmods.com/monsterhunterworld/mods/3473

New launch options

WINEDLLOVERRIDES="dinput8=n,b" %command%

Retrodeck

Installation completed.

Please put your roms in: /run/media/mmcblk0p1/retrodeck/roms

and your bioses in

/run/media/mmcblk0p1/retrodeck/bios

Then start the program again.

If you wish to change the roms location, you may use the tool located the tools section of RetroDECK.

IMPORTANT NOTES:

  • RetroDECK must be manually added and launched from your Steam Library in order to work correctly.

  • It's recommended to use the 'RetroDECK Offical Controller Config' from Steam (under community layouts).

  • It's suggested to use BoilR to automatically add the SteamGridDB images to Steam (this will be automated soon).

https://github.com/PhilipK/BoilR

Start+Select: End game L3+R3: Retroarch menu

RetroDECK/RetroDECK#63 ~/retrodeck/bios/ when using standalone pcsx2

Rockman X4 Boost (Bizhawk)

Proton 7.05 https://tasvideos.org/Forum/Topics/23843 Config -> Display: Scaling Filter: none, Final filter: \Blinear, Maiintain aspect ratio, Use 1:1 pixel size Config -> Display -> Window Enable Windows Fullscreen Hacks Config -> Speed/skip -> Skip (0) Never

  • launch option
--fullscreen  --lua="../x4boost-20160814-bizhawk.lua" ../ROCKMAN_X4.ccd

Power options decky plugin -> change to 4 cores, otherwise game lags from time to time

Config > Customize... > Advanced > AutoSaveRAM set to 60s Otherwise memory card won't be saved

Lutris

Use ProtonUp-Qt to add new wine versions

Read SD card

flatpak override --user --filesystem=/run/media/mmcblk0p1 net.lutris.Lutris

Can read but cannot write? Better to configure prefix in ssd then move to sd card

It's better to use Lutris for non-steam game https://www.reddit.com/r/linux_gaming/comments/uzrz2k/a_thread_about_using_protonge_and_winege_builds/

Run game once to create wine prefixes

Sonic P06

Lutris -> lutris-Proton-GE-8.12 Open bash terminal -> winetricks corefonts

Mod manager:

Lutris: Add Key: version, value: n,b to Runner options -> DLL overrides

Settings for better performance

image image

Can hit 60fps in 720p for most of the times. If using external monitor, change scaling method to 'linear', using FSR will cause performance hit.

Based on https://www.youtube.com/watch?v=WiMPvC4SK58

Little Fighter 2

Lutris: lutris-Proton-GE-6.16 prefix: x86. winetricks vcrun2005

Problem: only supports keyboard and DInput (2 controllers max)

Need XInput -> Keyboard binding

Note: For below solutions, numpad keys assignments don't work, need to change default key bindings in game in game control setting menu, "OK" is only shown when mouse hovers on it, it's at the bottom right of the config table

Solution1: AntiMicroX (Xinput->Keyboard): AntiMicroX can be installed via discovery

Issue 1: Steam games can only read virtual controllers passed from Steam

  • Solution: Also launch AntiMicroX from steam Issue 2: Need to launch AntiMicroX separately in game mode Issue 3: cmd implementation is buggy and missing ways to assign different mapping (profile ) to different controller AntiMicroX/antimicrox#774
  • Workaround:
    1. assign profiles manually on GUI first
    2. backup the config file ~/.var/app/io.github.antimicrox.antimicrox/config/antimicrox/antimicrox_settings.ini
    3. write a script to overwrite config before starting
      #!bin/sh
      cp /run/media/mmcblk0p1/standalone/LittleFighter2/_antimicrox/antimicrox_settings.ini ~/.var/app/io.github.antimicrox.antimicrox/config/antimicrox/
      flatpak run io.github.antimicrox.antimicrox
      
      
    4. add this script as Steam game to launch AntiMicroX

Solution2: Steam input

This is probably a better solution

Controller config files location

~/.local/share/Steam/steamapps/common/Steam Controller Configs/{userid}/config/little fighter 2/

Secret code and Function keys

  • use Home+X Keyboard for secret codes
  • for Fn keys, use redial menu in Steam input

Note: Type Click on redial menu might be bugged https://www.reddit.com/r/SteamDeck/comments/y9waw1/question_regarding_steam_input_radial_menus_on_a/

Change to Touch menu, or using Release type instead.

Run mod managers

Take monster hunter world as example https://www.nexusmods.com/monsterhunterworld/mods/372

protontricks-launch --appid 582010 '/home/deck/.local/share/Steam/steamapps/common/Monster Hunter World/MHW_ModManager.exe'

or

flatpak run com.github.Matoking.protontricks 582010 shell
cd "/home/deck/.local/share/Steam/steamapps/common/Monster Hunter World/"
wine MHW_ModManager.exe 

(Run reset after entering the shell to get input text back)

However it doesn't work properly, can't interact with UI to do anything. Probably try Nexus mod manager in the newer games.

Shin Ryu Mod Manager

https://github.com/SRMM-Studio/ShinRyuModManager

However the installation guide is still on old repo https://github.com/SutandoTsukai181/RyuModManager/wiki/Installing-Mods

protontricks-launch would launch the RyuModManagerGUI with game root folder, not exe folder (/media for Yakuza 0, for example), hence would result in RyuModManagerGUI failed to be loaded.

Need to use protontricks [appid] shell then wine (path/to/GUI.exe)

Prevent Steam game from updated

In case the latest update break Steam deck, like MHRise https://steamcommunity.com/app/1446780/discussions/0/4140564315472641154/

If you have not started downloading the update yet -- it is queued in the dl list or you wisely set the game to only update on launch before today -- you can do this.

Close Steam first.

In a text editor, open the file appmanifest_1446780.acf located in the Steam\steamapps\ folder (or SteamLibrary\steamapps\ folder) of the drive Rise is installed on. Under "AppState" in this file, change the number besides "StateFlags" to 4. Edit "buildid" number to 13235540. Then below this there is "1446781" under "InstalledDepots". Change "manifest" there to 8060856335387709364. Save and start Steam. This will work for now, until another update changes these IDs. So I suggest if you haven't to set the game update properties to "Only update this game when I launch it".

Build ID and manifest ID can be found in SteamDB https://steamdb.info/app/1446780/depots/ Might be difficult to do on the deck because Steam is automatically started, maybe need to cut down internet before booting up

MMX4 KB

https://ts02014553.itch.io/megaman-x4-kb

MMX4-K.B_DEMO_0.5.45.zip

Use Lutris + WineGE 8.26 with default options, works fine out of box.

To see Tranditional Chinese subtitle, need to fix font file name with bash

cd  path/to/MMX4-K.B/Resources/fonts/
mv ''$'\267''L'$'\263''n'$'\245\277\266\302\305\351''.ttf' 微軟正黑體.ttf

Cannot rename from Dolphin, it failed to decode the filename properly and would say file not found when trying to rename.

Sonic 3 A.I.R.

Need to select Rom for the first run if you install the game in SD card or other location.

PC Music mod:

https://gamebanana.com/sounds/45938

This one works out of the box The only issue with this one is that there's a typo in audio_replacement.json

"2A": { "File": "extralife_s&k.ogg.", "Type": "Jingle" },

Remove the extra suffix '.' in file name

https://gamebanana.com/sounds/45049

Have issue with case-sensitive naming on linux v.s. insensitive on windows.

https://gamebanana.com/sounds/50157

Music is slowed down

https://gamebanana.com/sounds/48949

No fast version, also it seems the general midi and fs version are reversed

Rockman X4 PC

(Quick note after successful attmpt on my Deck, not a detailed guide for now)

Prerequisite:

  • Flatpak: Lutris, Proton-qt
  • locale-gen JP and ZH-TW Already covered in latest SteamOS

Goal:

  1. mount ISO and run installer in order to install the codec for video
  2. auto mount ISO when running the game to bypass CD check
  3. XInput support, so it's easier to customize Steam Input

Steps:

  1. Grab ISO https://archive.org/details/rockmanx4-win9x-jp
  2. Unzip the ISO to a folder in disk
  3. Proton-qt: install Proton GE 8.26
  4. Launch Lutris:
    1. Create new game
    2. Runtime: Wine, runner: wine-ge-8-26-x86_64
    3. Prefix: x64, Windows 10
    4. Lutris -> Wine configuration -> Drive: Add D:, choose the path to folder with extracted ISO files, Advanced, type: CD-ROM
    5. winetricks cjkfonts
    6. Add env variable: LC_ALL=ja_JP.UTF-8 (For reading text in setup.exe)
    7. Run EXE in prefix: choose iso/setup.exe
    8. In installer, choose minimum install (1MB), and choose to insall video codec
    9. Game shoud run after instaler, you can skip movids with Spacebar and exit full screen by pressing F4 (After entering title creen?)
    10. Close game for now, we can remove LC_ALL env var after installation
  5. Xinput support:
    1. Download Xidi
    2. Extract dinput.dll, put in to game location (/path/to/prefix/drive_c/Program Files (x86)/CAPCOM/ROCKMANX4/)
    3. In game folder create Xidi.ini: a.
      [Mapper]
      Type = DigitalGamepad
      
      b. Lutris -> Wine configuration -> Library -> Add dinput.dll: native, built-in
  6. Lutris -> Executable: /path/to/prefix/drive_c/Program Files (x86)/CAPCOM/ROCKMANX4/RMX4.exe
  7. Run the game again, joystick should work with Dpad, ABXY, LB,RB,LT,RT usable a. For start and select, we can use Steam Input to assign to F9 (back to title) and Enter (pause menu) after adding the game to steam
  8. You can use F7 to adjust screen size but only 480p, so use Steam deck side menu to fit the entire screen.

Note

  1. Reason of minimu installl: since we mount folder as CD, all contents will be read from CD, no need to copy file.
  2. Be aware that game saves are in the prefix.

X4Boost

https://github.com/Appendko/RockmanX4Boost

CheatEngine works as long as it runs in the same wine prefix.

  1. Download boost CE executable and copy to ``/path/to/prefix/drive_c/Program Files (x86)/CAPCOM/ROCKMANX4/`
  2. Lutris:
    1. Set ``LC_ALL=zh_TW.UTF-8`
    2. Wine configuration -> 桌面整合 -> 訊息方塊文字 -> 字型, pick one for CHT i.e. Microsoft JhengHei
    3. This is to make help texts in CE executable readable
  3. Create RMX4.bat:
    C:
    cd C:\Program Files (x86)\CAPCOM\ROCKMANX4
    start RMX4BOOST_JP_Ver_20160814.EXE
    start RMX4.EXE
    
  4. Change Lutris game setting -> Game executable to /path/to/RMX4.bat
  5. Hit Ctrl+A in game to toggle boost mode. Can map this to L3 or R3 in Steam input

Reference

Mega Man X (Dos)

https://archive.org/details/megamanx1995capcomdos

Only need the VirtualCD/Mega_Man_X.iso

This game has an anti-piracy measure: must run install from CD so the game is installed at C:\MMX and C:\CPXPC001.HPF is created. This file will be checked by game (try move or modify content, then the game will quit after first stage).

Use Dosbox-X flatpak:

  1. Mount C as HDD: folder to install the game
  2. Mount D as CD: VirtualCD/MEGA_MAN_X.ISO
  3. run D:\install to install the game
  4. The game should now be available at C:\MMX\MMX.bat

Seems Dosbox-X doesn't read controller analog stick well (keeps moving up). Recommend unplug controller first, change in game option to No joystick, and use Steam input to map keyboard to controller instead.

The game can only read 4 buttons at max from controller anyway so not worth the hassle trying to set it up in my opinion.

Bash command to run the game directly

flatpak run com.dosbox_x.DOSBox-X -c 'MOUNT C /path/to/root/folder/' -c 'C:' -c 'cd MMX' -c 'MMX'  -fullscreen -noconsole -exit

I suppose we can create a sh file and add this to Steam. If the script is in sd card, need to set target /usr/bin/bash, arguments: "path/to/script.sh"

(Not required, but note for future games: to mount CD: MOUNT D /path/to/iso -t cdrom), refer to https://askubuntu.com/a/305447

Better music mod

https://community.pcgamingwiki.com/files/file/2194-mega-man-x-better-music-mod/

run sound.bat and change midi to Creative Labs Sound Blaster or 100% compatible (General MIDI results no music with or without mod)

Better midi sound font

https://www.doomworld.com/forum/topic/129928-new-sc55-soundfont-266mb-all-new-441k-samples/

Dosbox-X Main Menu -> Configuration Tool -> Midi

  1. midi device: fluidsynth
  2. fluid.soundfont: /path/to/sf2

Close window, then click "Save..." to save the config, then restart DosBox-X to take effect.

Need to change to General Midi in sound.exe

Note: run DosBox-X with debug output in console flatpak run com.dosbox_x.DOSBox-X -debug, useful to check if sound font is loaded successfully.

Reference:

SA Mod manager

https://sadxmodinstaller.unreliable.network/

Tested with Proton 9.3 & Flatpak Lutris

  1. Run the game once to create wine prefix
  2. Use Lutris to create a local installed game for launching mod manager
    1. exec: skip for now
    2. Wine version: Proton 9.0
    3. Prefix location: /path/to/steamapps/compacdata/71250/pfx
  3. Run exe within wine prefix -> path/to/sadx_setup.exe
  4. Problem: cannot see pictures in installer
    1. Read description instead
    2. With GE-Proton7-55 upside-down images can be rendered, so it can be used for initial installtion, will need to switch back to Proton 9.0 for mod manager and the game, as this version doesn't work with them.
  5. Open Bash terminal -> winetricks dotnetdesktop8 to install dotnet desktop env 8.x (dependency for mod manager)
  6. Update Lutris game config for game's executable: /path/to/steamapps/common/Sonic Adventure DX/SAModManager.exe
  7. Run mod manager by playing the lutris game
    1. Mod manager should run now
  8. (2025/03: no longer required in the latest mod manager) Update steam launch option with WINEDLLOVERRIDES="d3d8.dll=n,b" %command%
  9. Run the game

Problem: Dropdown list and tooltip is black. Solution: This is caused by DXVK. Add PROTON_USE_WINED3D11=1 to Lutris game configuration (System options -> Game execution -> env variable)

Ref: https://github.com/ValveSoftware/Proton/blob/proton_3.7/README.md#runtime-config-options X-Hax/SA-Mod-Manager#216

Sonic Adventure 2

Need to install mods one by one, first download the manager https://gamebanana.com/tools/download/15436

Put in /path/to/common/Sonic Adventure 2/. Create another Lutris game with similar settings to SA1, also need to run winetricks dotnetdesktop8 Necessary files will be installed on first run.

For SA2 there is no dll loader, but we need to avoid executing the old Launcher on steam by either run mod manager (and click "Save&Play") or run the game directly in launch options:

# run game directly
cmd=(%command%); cmd[-1]=$PWD/sonic2app.exe; "${cmd[@]}"
# Run mod manager
cmd=(%command%); cmd[-1]=$PWD/SAModManager.exe; "${cmd[@]}"

Ref: https://www.reddit.com/r/linux_gaming/comments/yyv9ul/update_on_steam_launch_parameters_can_use_bash/

Save files

These 2 games have no Steam cloud support so we need to backup the game by ourselves SA1: After converting to the old PC version, the saves will be in common/Sonic Adventure DX/SAVEDATA/ SA2: common/Sonic Adventure 2/resource/gd_PC/SAVEDATA/

Copying mod installation to different machines

For SA1, it's better to delete existing "common/Sonic Adventure DX" on target machine and copy the entire folder from source machine, since the mod installer converts the game into older PC version for mod support.

For SA2 I also copied & replace everything over (make sure to backup saves first)

Afterwards, edit ./SAManager/Manager.json to update the game path, where Z:\ is the root directory on host system.

For example,

"Directory": "Z:\\run\\media\\deck\\sdgames\\steamapps\\common\\Sonic Adventure DX\\",

For the game installing on an SD card (labeled sdgames) on the Steam Deck.

Note: Was assuming copying these would work, but didn't. Not sure how does SAModManager do code injection.

mods/
mods/.modloader
SAManager/
d3d9.dll
dxvk.conf
SAModManager.exe

Fluffy Mod Manager

Can run the exe with Lutris wine-GE-8-26 without installing any dependencies.

Need to manually point to game installation folder (Z: maps to system root folder).

In case you need to manually edit game paths, it's in /path_to_exe/Data/config.cfg

Emu without Emudeck

Trying making my own setup.

Goals:

  1. Only standalone emulators
  2. no retroarch
  3. Use Stem rom manager to add games
  4. Games all saved on SD card

Steam Rom Manager

  1. Settings (This is referenced as "Global Settings" in parser settings
    1. Steam: /home/deck/.local/share/Steam
    2. Account: select yours

Need to shutdown steam before syncing games to steam library veracrypt/VeraCrypt#839

Override game title

If we need to overwrite the game title to different ones on SteamGridDb

  1. Click search icon on any art
  2. Search title
  3. Click the one for overwrite then click save and close

After that a new record should be added to Exceptions section, where you can further customize the display name on Steam or stemgrid title ID (New Search title)

Parser executables

Mednafen (Mednaffe):

  1. Executable: /usr/bin/flatpak
  2. Arguments: run --command=mednafen com.github.AmatCoder.mednaffe "${filePath}"

Mednafen

Use Mednaffe from Discover

  1. Global Settings -> Sound -> Device: sexyal-literal-default
  2. Video -> Enable fullscreen, default driver: opengl
  3. Miscellaneous: Automatically load/save state on game load/save
  4. Input -> uncheck "Update physical...." a. This prevents joystick input while window is not in focus
  5. Key assignments: ?
    1. Seems no "Pause Menu" feature to access all emu functionalities via controller, everything has to bound to a key on keyboard or gamepad
    2. Currently mapped to keyboard and use Steam virtual keyboard

System settings:

  1. Control: Launch Mednaffe with Steam so Gamepad device matches
  2. Graphics:
    1. System -> Correct the aspect ratio
    2. Windowed -> scale to x1 (easier to test in desktop mode)
    3. Fullscreen -> aspect
    4. Scale/Filter -> Interpolation 1, Special video scaler nny2x

All data are in ~/.mednafen

References: lutris/lutris#2183

Controller mapping

Sometimes it cannot detect virtual joysticks from Steam and instead detect native device ID.

In this case edit directly /home/deck/.mednafen/mednafen.cfg to replace joystick ID, for example:

;nes, Port 1, Gamepad: A
nes.input.port1.gamepad.a joystick 0x000328de11ff00010008000b00000000 button_0

Joystick IDs (Xinput player 1~4) (Not sure if this is global or local..)

0x000328de11ff00010008000b00000000
0x000328de11ff00010008000b00000001
0x000328de11ff00010008000b00000002
0x000328de11ff00010008000b00000003

Note: config is not synced with UI until you open a game

Saturn

  • Need bios (firmware folder)

  • If your files are mdf/mds, need to mount it and convert it to bin/cue with Alcohol 52%

    • This is especially important if it's a multi track CD
  • Always boot into bios

Make sure L and R are not pressed on boot, especially when mapping to LT and RT on XInput https://forum.fobby.net/index.php?t=msg&goto=4885&

2023 update: it's likely the disk I used was damanged, changed to a new disk and didn't have issue with ext4 in general.
====== Original note ======
Issue: on windows, observed external SSD has random 100% activity and 0 read/writes, I/O operation hangs, can lead to disconnect
Not sure which adjustment actually resolved issue:
1. Device Manager -> Disk -> properties -> policies -> Better performance (Enable write caching)
2. Device Manager -> (all usb controllers) -> properties -> power management -> uncheck "Allow the computer to turn off this device to save power"
3. Edit power plan -> Change advanced power settings -> USB settings -> USB selective suspend setting -> Disabled on all cases
4. https://www.reddit.com/r/techsupport/comments/6ciyje/disk_activity_on_ssd_spikes_to_100_and_freezes_at/
5. https://beebom.com/how-fix-100-disk-usage-windows-11/
1. Disable SysMain (Superfetch) Service
2. Disable Connected User Experiences and Telemetry
3. Disable Windows Search
Steam download causing the same issue:
1. https://www.reddit.com/r/buildapc/comments/kuhi8q/comment/jfrbcrs/?utm_source=reddit&utm_medium=web2x&context=3
Other observasions:
1. Seems disk are more likely to hit 100% usage when pluggin through dock or hub
2. If using dock or hub, plug the disk into the type-C display output port (use one that supports it).
## Disable auto mount
1. /etc/udev/rules.d/99-external-drive-mount.rules
2. Comment out script
3. sudo udevadm control --reload
## Linux, disk related
Copy data from one drive to another
https://unix.stackexchange.com/questions/450420/copying-files-from-one-disk-to-another-disk
Maybe resolve read-only on SD cards
https://www.reddit.com/r/SteamDeck/comments/v1l2am/question_steam_deck_sd_card_is_readonly_when_i/
Manual mount to resolve read-only
https://askubuntu.com/questions/333287/how-to-fix-external-hard-disk-read-only
Resolve read-only after unexpected disconnection
https://superuser.com/questions/1711832/linux-mounts-ext4-external-drive-read-only

OLD NOTES, IGNORE THESE

Chord configuration

Currently being locked, any edit won't be saved https://www.reddit.com/r/SteamDeck/comments/x3ev0m/steam_button_chord_config/

There's a workaround for deck running windows https://www.reddit.com/r/WindowsOnDeck/comments/yidzhg/anyone_have_tips_on_getting_the_steam_guide/

but no script for linux yet

path is /home/deck/.steam/root/Steam/controller_base, chord_neptune.vdf and chord_neptune_external.vdf

Original idea is to add a key binding to bound F12 then running OBS to save replay buffer, skip this idea for now.

chord config Loacl config folder C:\Program Files (x86)\Steam\userdata\116648268\id\remote\controller_config\443510 Remote seems only a cache, in a folder of C:\Program Files (x86)\Steam\userdata\id\ugc\temp

add this under inputs

			"button_escape"
			{
				"activators"
				{
					"Full_Press"
					{
						"bindings"
						{
							"binding"		"key_press F12, , #232323 #E4E4E4"
						}
					}
				}
				"disabled_activators"
				{
				}
			}

Unfortunatelly steam client would rewrite the entire controller_base folder upon restart

Transfer files btw Windows and Steamdeck (not ideal)

Steamdeck: Desktop mode -> Discover -> Warpinator Windows: https://winpinator.swisz.cz/

Preference: set network group and manually choose the internet interface you are using (LAN or Wifi...etc) https://www.reddit.com/r/SteamDeck/comments/tnip39/unable_to_establish_lan_connection_between_steam/ Windows: Need to allow program in Windows Defender Firewall

WMV playback issues in games

Stable proton: can't play video, stock footage instead Proton GE 7.43: no audio

Steps: Install Protontricks from Discover add alias protontricks='flatpak run com.github.Matoking.protontricks' to ~/.bashrc Open Protontricks, find game ID (or protontricks -l) delete ~/.local/share/Steam/steamapps/compatdata/$GAME_ID folder In steam, choose compatibility for the game with desired proton ver (e.g. ProtonGE 7.43) Start the game, then close (this is to create wine prefix for the game)

In Konsole, protontricks $GAME_ID -q wmp11

Note: switching proton versions afterwards break video playback, need to redo the steps to recover (I can't recover by switching back proton ver).

Fixed MMX Collection 1+2 with ProtonGE 7.43, doesn't work with stable Proton 7, got permission denied with wmp11 script https://github.com/Matoking/protontricks https://gist.github.com/themaxhero/f2a4ddc9067659e77315d6206bf1ab3a

Some GE versions work with wmvs by default for certain games, e.g. Proton-6.16-GE-1 for MM collection 2, Proton-7.1-GE-2 for Sth06(non-steam)

MMZ: GE 7.43, video works but no audio, install wmp11 breaks the game (won't launch), install mf has no effect. Tried https://github.com/z0z0z/mf-install, no effect Tried https://gist.github.com/joshuakraemer/fb794625af08f076d0d283f5d6ba7562, (Note: Wine path is ~/.local/share/Steam/compatibilitytools.d/GE-Proton7-43/files/bin/wine /home/deck/.local/share/Steam/steamapps/common/Proton 5.13/dist/bin

Auto mount external disk

20230924: This will be built in from SteamOS3.5, uninstall scripts before update

https://github.com/scawp/Steam-Deck.Mount-External-Drive#uninstall

sudo rm /etc/udev/rules.d/99-external-drive-mount.rules

sudo rm /etc/systemd/system/[email protected]

sudo rm -r /home/deck/.local/share/scawp/SDMED

sudo udevadm control --reload

sudo systemctl daemon-reload
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment