Skip to content

Instantly share code, notes, and snippets.

@shawngmc
Last active December 4, 2025 19:04
Show Gist options
  • Select an option

  • Save shawngmc/33f326be46a5183a929cffa9cc341fb0 to your computer and use it in GitHub Desktop.

Select an option

Save shawngmc/33f326be46a5183a929cffa9cc341fb0 to your computer and use it in GitHub Desktop.
DeckU Project

Setup on Cachy OS w/KDE

CachyOS

  • Auto-Login
    • During CachyOS Install
  • Sleep/Auto-Lock
    • KDE Settings
      • Screen Locking: Lock Screen Automatically -> Never, Apply
      • Power Management, Display and Brightness, Turn Off Screen -> Never, Apply
  • Install Sunshine
    • Install package pacman -S sunshine
    • Fix autostart with deckify: ```sudo sed -i 's/xdg-desktop-autostart.target/graphical-session.target/g /usr/lib/systemd/user/sunshine.service; systemctl --user enable sunshine.service --now
    • TODO: Automate password management?
  • Resolution Management/Dummy Monitor
    • KDE Settings
      • Display and Monitor: Resolution -> 1920 x 1080
    • Dummy Plug required if no monitor; using these, but I'd like smaller
  • Wifi AP
  • TODO: Wifi Cred Sharing
  • System Status / Remote Admin: sudo pacman -S cockpit --noconfirm
  • TODO: Performance Overlay
    • Ctrl-Alt-Shift-S Conn Stats are a start
    • ShiftR+F12 brings up MangoHut (after coonfig with Goverlay sudo pacmand -S goverlay --noconfirm)
  • TODO: Performance Optimizations
  • Steam - Use Cachy built-in
    • Disable HDR: Settings > Display > Advanced > Enable HDR (Otherwise very washed out!)
  • TODO: FPS Limiter?
  • SSH: sudo pacman -S openssh --noconfirm; sudo systemctl enable sshd --now
  • Umu Wine Prefix Manager: sudo pacman -S umu-launcher --noconfirm
  • Faugus-Launcher: paru faugus-launcher
  • TODO: Cockpit remote admin
  • Battle.net
    • Open Faugus Launcher
    • Click Add (+)
    • Top Dropdown -> Battle.net
    • Add Shortcuts for Desktop, App Menu and Steam
    • Follow instructions, including closing at first login
    • Then reopen and install games as desired
  • WoW Addons
    • Manual copy from backup script below
    • TODO: Add updating
  • Chrome (Slightly better browser open support): paru google-chrome

Hardware

Minisforum EM680

Packaging/Accessories

Software

OS

  • Currently running CachyOS for Maximum performance
  • Probably going to move to Bazzite

Setup on Fedora w/KDE

TODO

  • Auto-Login
    • During CachyOS Install
  • Sleep/Auto-Lock
    • KDE Settings
      • Screen Locking: Lock Screen Automatically -> Never, Apply
      • Power Management, Display and Brightness, Turn Off Screen -> Never, Apply
  • Install Sunshine
    • Install package pacman -S sunshine
    • Fix autostart with deckify: ```sudo sed -i 's/xdg-desktop-autostart.target/graphical-session.target/g /usr/lib/systemd/user/sunshine.service; systemctl --user enable sunshine.service --now
    • TODO: Automate password management?
  • Resolution Management/Dummy Monitor
    • KDE Settings
      • Display and Monitor: Resolution -> 1920 x 1080
    • Dummy Plug required if no monitor; using these, but I'd like smaller
  • Wifi AP
  • TODO: Wifi Cred Sharing
  • System Status / Remote Admin: sudo pacman -S cockpit --noconfirm
  • TODO: Performance Overlay
    • Ctrl-Alt-Shift-S Conn Stats are a start
    • ShiftR+F12 brings up MangoHut (after coonfig with Goverlay sudo pacmand -S goverlay --noconfirm)
  • TODO: Performance Optimizations
  • Steam - Use Cachy built-in
    • Disable HDR: Settings > Display > Advanced > Enable HDR (Otherwise very washed out!)
  • TODO: FPS Limiter?
  • SSH: sudo pacman -S openssh --noconfirm; sudo systemctl enable sshd --now
  • Umu Wine Prefix Manager: sudo pacman -S umu-launcher --noconfirm
  • Faugus-Launcher: paru faugus-launcher
  • TODO: Cockpit remote admin
  • Battle.net
    • Open Faugus Launcher
    • Click Add (+)
    • Top Dropdown -> Battle.net
    • Add Shortcuts for Desktop, App Menu and Steam
    • Follow instructions, including closing at first login
    • Then reopen and install games as desired
  • WoW Addons
    • Manual copy from backup script below
    • TODO: Add updating
  • Chrome (Slightly better browser open support)
    wget https://dl.google.com/linux/linux_signing_key.pub
    sudo rpm --import linux_signing_key.pub
    rm -rf linux_signing_key.pub
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
    sudo dnf install google-chrome-stable_current_x86_64.rpm
    rm -rf google-chrome-stable_current_x86_64.rpm
    

Usage

First Time Client Setup

  1. Connect to the WiFi AP exposed by the DeckU
  2. Connect to the Sunshine Web UI on https://192.168.12.1:47990/
  3. Open the DeckU in Moonlight, via IP if necessary
  4. On the WebUI, enter the PIN, give a name, then hit enter.
  5. Connect to DeckU Desktop Via Moonlight

On Pre-configured client

  1. Connect to the WiFi AP exposed by the DeckU
  2. Connect to DeckU Desktop Via Moonlight

Setup

Base

CachyOS

  • Auto-Login
    • During CachyOS Install
  • Sleep/Auto-Lock
    • KDE Settings
      • Screen Locking: Lock Screen Automatically -> Never, Apply
      • Power Management, Display and Brightness, Turn Off Screen -> Never, Apply
  • Install Sunshine
    • Install package pacman -S sunshine
    • Fix autostart with deckify: ```sudo sed -i 's/xdg-desktop-autostart.target/graphical-session.target/g /usr/lib/systemd/user/sunshine.service; systemctl --user enable sunshine.service --now
    • TODO: Automate password management?
  • Resolution Management/Dummy Monitor
    • KDE Settings
      • Display and Monitor: Resolution -> 1920 x 1080
    • Dummy Plug required if no monitor; using these, but I'd like smaller
  • Wifi AP
  • TODO: Wifi Cred Sharing
  • System Status / Remote Admin: sudo pacman -S cockpit --noconfirm
  • TODO: Performance Overlay
    • Ctrl-Alt-Shift-S Conn Stats are a start
    • ShiftR+F12 brings up MangoHut (after coonfig with Goverlay sudo pacmand -S goverlay --noconfirm)
  • TODO: Performance Optimizations
  • Steam - Use Cachy built-in
    • Disable HDR: Settings > Display > Advanced > Enable HDR (Otherwise very washed out!)
  • TODO: FPS Limiter?
  • SSH: sudo pacman -S openssh --noconfirm; sudo systemctl enable sshd --now
  • Umu Wine Prefix Manager: sudo pacman -S umu-launcher --noconfirm
  • Faugus-Launcher: paru faugus-launcher
  • TODO: Cockpit remote admin
  • Battle.net
    • Open Faugus Launcher
    • Click Add (+)
    • Top Dropdown -> Battle.net
    • Add Shortcuts for Desktop, App Menu and Steam
    • Follow instructions, including closing at first login
    • Then reopen and install games as desired
  • WoW Addons
    • Manual copy from backup script below
    • TODO: Add updating
  • Chrome (Slightly better browser open support): paru google-chrome

OS Differences

Factor Windows CachyOS
Performance Moderate High
Apollo Yes Yes
Virutal Desktop Yes No

Current Limitations

  • Some Wifi NICs are 2.4Ghz Hotspot only, but 5Ghz would provide much more bandwidth
  • PIN must be entered in WebUI, either via WiFi, an existing Moonlight connection, or Desktop Mode with a monitor/keyboard/mouse
  • Most systems will require an HDMI dummy plug
  • Direct Ethernet connection not yet implemented
  • DeckU WiFi client can only be configured via monitor/keyboard/mouse or an alternative internet connection

Troubleshooting

  • Washed out Steam Big Picture? Disable HDR
  • Stuck at Downloading Contents 0%? Stop, go to Settings > Properties > Compatibility and change the Proton version
#!/bin/bash
set -x
set -v
INSTALL_BASE="/home/shawn/Faugus/battlenet/drive_c/Program Files (x86)/World of Warcraft/_retail_"
ADDON_NAME=$1
cd latest_backup
find . -iname ${ADDON_NAME}* -type f -exec cp --parents {} "${INSTALL_BASE}" \;
cp -R "./Interface/AddOns/${ADDON_NAME}" "${INSTALL_BASE}/Interface/AddOns/"

Currently using Fedora 42 with the custom ROG/CachyOS Kernel (which gives some v4 performance!)

Issues

  • Fails to wake from sleep
  • Copy/Paste in Chrome is very inconsistent

TODO

  • Finish Sunshine setup
  • Figure out remote wake
  • Add hotspot
  • Check current max power usage (eg, in game)
  • Look into using TLP
  • Check current max power usage (eg, in game)
    • Overall?
      • powerstat
    • Battery
      • Usage (microwatts): cat /sys/class/power_supply/BAT0/power_now
      • Total capacity (microwatts): cat /sys/class/power_supply/BAT0/energy_full
      • Current capacity (microwatts): cat /sys/class/power_supply/BAT0/energy_now
      • Current capacity (percent): cat /sys/class/power_supply/BAT0/capacity
      • Current capacity (short name): cat /sys/class/power_supply/BAT0/capacity_level
    • USB-C PD
      • Current pull (microwatts): cat /sys/class/power_supply/ucsi-source-psy-USBC000:001/current_now
      • Max pull (microwatts): cat /sys/class/power_supply/ucsi-source-psy-USBC000:001/current_max
    • Barrel
      • Does not appear to have the desired stats
    • CPU (From Baeldung)
      time=1
      declare T0=($(sudo cat /sys/class/powercap/*/energy_uj)); sleep $time; declare T1=($(sudo cat /sys/class/powercap/*/energy_uj))
      for i in "${!T0[@]}"; do echo - | awk "{printf \"%.1f W\n\", $((${T1[i]}-${T0[i]})) / $time / 1e6 }" ; done
      
    • NVidia GPU (via nvidia-smi)
      • nvidia-smi --query-gpu=power.draw --format=csv,noheader
      • Can loop every 10 ms with nvidia-smi --query-gpu=power.draw --format=csv,noheader --loop-ms=10
  • Figure out how to control power limits

Per-device fixes

ASUS Linux Tooling / newer Kernel from CachyOS

See ASUS Linux, specifically the Fedora guide, for more info.

Installing tooling

sudo dnf copr enable lukenukem/asus-linux
sudo dnf update
sudo dnf install asusctl supergfxctl
sudo dnf update --refresh
sudo systemctl enable supergfxd.service
sudo dnf install asusctl-rog-gui
sudo reboot now

Custom kernel notes:

  • Secure boot MUST be disabled
  • To install the kernel
    sudo dnf config-manager setopt fedora.excludepkgs=kernel,kernel-core,kernel-modules,kernel-uki-virt,kernel-devel,kernel-modules-extra,kernel-modules-core,kernel-devel-matched
    sudo dnf config-manager setopt updates.excludepkgs=kernel,kernel-core,kernel-modules,kernel-uki-virt,kernel-devel,kernel-modules-extra,kernel-modules-core,kernel-devel-matched
    sudo dnf config-manager setopt updates-testing.excludepkgs=kernel,kernel-core,kernel-modules,kernel-uki-virt,kernel-devel,kernel-modules-extra,kernel-modules-core,kernel-devel-matched
    sudo dnf copr enable bieszczaders/kernel-cachyos
    sudo dnf install kernel-cachyos kernel-cachyos-devel-matched
    sudo dnf update
    sudo reboot now
    
  • uksmd is depreacated, and the new default package includes ksmd; to enable it
    sudo dnf install tuned
    sudo mkdir -pv /etc/tuned/profiles/ksmd/
    cat << 'EOF' | sudo tee /etc/tuned/profiles/ksmd/tuned.conf
    [main]
    summary=Enable ksm daemon for page merging
    
    [sysfs]
    kernel.mm.ksm.run=1
    EOF
    
    sudo tuned-adm profile ksmd
    sudo tuned-adm verify
    cat /sys/kernel/mm/ksmd/run
    sudo reboot now
    

Enable hibernate/disable sleep (which is broken)

Sleep hangs on recovery:

Hibernate is off by default in Fedora:

To enable Hibernate and remove auto-sleep:

# Create swap volume
sudo btrfs subvolume create /var/swap
sudo semanage fcontext -a -t var_t /var/swap
sudo restorecon /var/swap
# Create swapfile
SWAPSIZE=$(free | awk '/Mem/ {x=$2/1024/1024; printf "%.0fG", (x<2 ? 2*x : x<8 ? 1.5*x : x) }')
sudo btrfs filesystem mkswapfile --size $SWAPSIZE /var/swap/swapfile
sudo semanage fcontext -a -t swapfile_t /var/swap/swapfile
sudo restorecon /var/swap/swapfile
sudo swapon /var/swap/swapfile
# Add to fstab
sudo cp /etc/fstab /etc/fstab.bak
echo "/var/swap/swapfile none swap defaults,nofail 0 0" >> /etc/fstab
# Disable ZRAM
echo "" | sudo tee /etc/systemd/zram-generator.conf

# Test Hibernate
sudo systemctl hibernate

# Update polkit
sudo tee -a /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla << 'EOF'
[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes
EOF

# Reboot
sudo reboot now

# Via system settings > power, change everything to Hibernate on all 3 power modes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment