634 lines
17 KiB
Markdown
634 lines
17 KiB
Markdown
[deprecated] general info:
|
||
install blender after freecad, because at first install, blender was first installed and when installing freecad, there was a conflict between hdf5 and hdf5-openmpi. (this is probably not mandatory anymore).
|
||
|
||
|
||
AppImage/Manual:
|
||
process: copy program files, then icons and .desktop files for manually installed apps. copy appimages to /opt/softwarename
|
||
> These files usually reside in /usr/share/applications/ or /usr/local/share/applications/ for applications installed system-wide, or ~/.local/share/applications/ for user-specific applications. User entries take precedence over system entries.
|
||
|
||
Bespoke
|
||
Meshlab
|
||
Agisoft Metashape + Crack (runs like portable app, put whole folder in /opt)
|
||
gnome astra monitor shell extension
|
||
- https://www.debugpoint.com/manual-installation-gnome-extension/
|
||
- then, run `glib-compile-schemas ./schemas` inside the extension dir
|
||
gnome own smarthome plugin
|
||
- copy `smarthomebar@tobiashuttinger.de` to `/home/tobias/.local/share/gnome-shell/extensions/r`
|
||
openframeworks
|
||
- `tar -xf of_v0.12.0_linux64gcc6_release.tar.gz`
|
||
- sudo run both scripts from unpacked archive: scripts/linux/archlinux/
|
||
- ensure that all pacman packages installed there are avail. offline
|
||
- install custom glfw-git from AUR, change in PKGBUILD:
|
||
- line 44, set `DGLFW_BUILD_WAYLAND=OFF`, otherwise of doesnt show window
|
||
- `mkdir ~/ofx && cp -r of_v0.12.0_linux64gcc6_release ~/ofx/`
|
||
- cd into the new dir under ~/ofx/, run
|
||
- `scripts/linux/compileOF.sh -j8`
|
||
- `scripts/linux/compilePG.sh -j8`
|
||
- say yes to install the projectGenerator, then add `export PG_OF_PATH=/home/tobias/ofx/of_v0.12.0_linux64gcc6_release` to ~/.profile manually
|
||
- optional: `scripts/linux/buildAllExamples.sh -j8`
|
||
- rm example debug files `find ./examples -wholename "*bin/*_debug" -type f -print0 | xargs -0 /bin/rm -f`
|
||
- the of dir must reside in the user folder because of permissions in /opt. copying to opt would work, but every time a new addon gets used by a project (the standard ones in /addons) new obj files are created in the ofx folder, which fails because users shall not have write perms in opt, so every make would have to be run as root at least once.. not a good solution.
|
||
|
||
create webapps with webapp-manager manually
|
||
install firefox extensions manually
|
||
|
||
|
||
|
||
|
||
AUR:
|
||
gnome-shell-extension-blur-my-shell
|
||
gnome-shell-extension-tilingshell
|
||
gnome-shell-extension-dash-to-dock
|
||
gnome-shell-extension-appindicator
|
||
whitesur-icon-theme
|
||
inter-font
|
||
apple-fonts
|
||
ttf-ms-win11-auto
|
||
davfs2
|
||
roomeqwizard
|
||
davinci-resolve-studio
|
||
bitwig-studio
|
||
spotify
|
||
cura-bin
|
||
processing-bin
|
||
lunacy-bin
|
||
joplin-desktop (3.0.14)
|
||
fontbase
|
||
obs-studio-liberty (includes browser)
|
||
ndi-sdk ffmpeg7.1 distroav
|
||
localsend-bin
|
||
webapp-manager
|
||
vcvrack
|
||
open-stage-control python-rtmidi (pacman)
|
||
freeshow-bin
|
||
python310
|
||
sdrangel-bin
|
||
rtl_433
|
||
scope-tui
|
||
uxplay
|
||
fswebcam
|
||
arduino-ide-bin (package from extra hangs)
|
||
ferdium
|
||
binaryninja-free
|
||
feishin-bin
|
||
puddletag
|
||
onlyoffice-bin
|
||
posting
|
||
rapidraw
|
||
logiops (for logitech mice)
|
||
opensoundmeter-jack
|
||
openmeters
|
||
|
||
|
||
Repos:
|
||
|
||
zsh zsh-syntax-highlighting zsh-autosuggestions
|
||
vim
|
||
neovim
|
||
firefox
|
||
vlc vlc-plugins-all
|
||
sonic-visualiser
|
||
gimp
|
||
inkscape python-tinycss2 (curr. needed for eps import)
|
||
krita
|
||
mixxx
|
||
freecad
|
||
blender
|
||
element-desktop
|
||
code
|
||
libreoffice-fresh
|
||
tenacity
|
||
thunderbird
|
||
remmina libvncserver freerdp
|
||
reaper
|
||
keepassxc
|
||
kicad
|
||
prusa-slicer
|
||
dconf-editor
|
||
kismet
|
||
darktable
|
||
gnome-calendar gnome-contacts evolution evolution-ews
|
||
gnome-maps
|
||
qemu-full qemu-img libvirt virt-install virt-manager virt-viewer edk2-ovmf swtpm guestfs-tools libosinfo
|
||
wine-staging wine-mono wine-gecko
|
||
supercollider
|
||
puredata
|
||
musescore
|
||
pipewire-zeroconf (autodiscover airplay targets)
|
||
pipewire-roc
|
||
qpwgraph
|
||
sqlitebrowser
|
||
netcat (choose openbsd version for v6 support)
|
||
linssid
|
||
yabridge
|
||
arduino-cli
|
||
ghidra
|
||
rpi-imager
|
||
foliate
|
||
cups
|
||
kid3-common
|
||
kdenlive
|
||
godot
|
||
socat
|
||
cdrkit
|
||
solaar (logitech mice)
|
||
v4l2loopback-dkms (video loopback needed for obs virt webcam)
|
||
nvtop
|
||
|
||
```
|
||
sudo pacman -Sy tmux inetutils moreutils findutils wget curl httpie htop iotop sysstat iftop nethogs bmon nmap wireshark-cli wireshark-qt iperf rclone rsync p7zip hexedit go rust nodejs ffmpeg libusb mediainfo cmake perl-image-exiftool ninja yt-dlp ncdu mpv openssl libimobiledevice mitmproxy monolith chromium shairport-sync docker docker-compose docker-buildx wireguard-tools gnutls
|
||
|
||
```
|
||
|
||
Hardware-dependant graphics libs:
|
||
AMD:
|
||
mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon
|
||
(libva-mesa-driver (for video enc/dec accel)) -> not needed anymore, was merged with main mesa package
|
||
libva-utils (check if vaapi is enabled on system)
|
||
gst-plugin-va (gstreamer vaapi libs)
|
||
rocm-hip-runtime (amds rocm hip libraries)
|
||
rocm-opencl-runtime (opencl support)
|
||
|
||
|
||
|
||
If using hyprland as main desktop:
|
||
disable gnome display manager
|
||
```
|
||
systemctl set-default multi-user.target
|
||
```
|
||
Then, add to ~/.zprofile:
|
||
```
|
||
if [[ -z $WAYLAND_DISPLAY && $XDG_VTNR == 1 && $(tty) == /dev/tty1 ]]; then
|
||
exec ~/scripts/start_hyprland.sh
|
||
fi
|
||
```
|
||
and copy the scripts start_hyprland.sh, display_sleep.sh and set_gamma folder to ~/scripts/
|
||
|
||
|
||
|
||
To enable autologin:
|
||
```
|
||
sudo mkdir -p /etc/systemd/system/getty@tty1.service.d
|
||
```
|
||
Create `/etc/systemd/system/getty@tty1.service.d/autologin.conf` with:
|
||
```
|
||
[Service]
|
||
ExecStart=
|
||
ExecStart=-/usr/bin/agetty --autologin tobias --noclear %I $TERM
|
||
```
|
||
Then:
|
||
```
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl restart getty@tty1
|
||
```
|
||
|
||
|
||
Settings:
|
||
|
||
If system is a desktop:
|
||
add dir/file:
|
||
```
|
||
/etc/systemd/sleep.conf.d/disable-sleep.conf
|
||
```
|
||
With content:
|
||
```
|
||
[Sleep]
|
||
AllowSuspend=no
|
||
AllowHibernation=no
|
||
AllowHybridSleep=no
|
||
AllowSuspendThenHibernate=no
|
||
```
|
||
|
||
|
||
|
||
activate iommu in kernel:
|
||
append to `/etc/kernel/cmdline`:
|
||
```
|
||
intel_iommu=on iommu=pt
|
||
```
|
||
then regenerate boot entries and initrds: `sudo reinstall-kernels`
|
||
|
||
|
||
import gnome settings
|
||
|
||
experimental features in gnome 47 (also included in dconf settings, just for completeness):
|
||
```
|
||
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
|
||
gsettings set org.gnome.mutter experimental-features '["scale-monitor-framebuffer", "xwayland-native-scaling"]'
|
||
```
|
||
|
||
copy nautilus bookmarks bar file: `~/.config/gtk-3.0/bookmarks`
|
||
|
||
copy xdg mime associations file: `~/.config/mimeapps.list`
|
||
|
||
install monitor color profiles
|
||
|
||
install blender addons
|
||
|
||
Enable services: bluetooth service
|
||
|
||
Copy ~/.profile
|
||
(for env vars that are not shell related)
|
||
|
||
Copy ~/.zshrc and make zsh the default shell with
|
||
`chsh -s /usr/bin/zsh`
|
||
|
||
Configure shairport-sync
|
||
- copy shairport config file `/etc/shairport-sync.conf`
|
||
- copy systemd user service file: `/home/tobias/.config/systemd/user/shairport-sync.service`
|
||
- enable service `systemctl --user enable shairport-sync.service`
|
||
|
||
Configure joplin
|
||
- copy joplin.desktop from /usr/share/applications to ~/.local/share/applications
|
||
- change Exec line in joplin.desktop:
|
||
`Exec=env XDG_CURRENT_DESKTOP=GNOME /usr/bin/joplin-desktop --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime`
|
||
- The env XDG... is needed for non-gnome envs like hyprland because when set to sth else, joplin takes more startup time when probing what portal is used...
|
||
- Add line: `StartupWMClass=@joplin/app-desktop`
|
||
- copy settings json and userchrome.css
|
||
- then, copy joplin start helper script joplin.sh to ~/scripts/
|
||
|
||
Configure vscode
|
||
- install extensions
|
||
- copy settings file
|
||
- copy keybindings file
|
||
- copy .desktop file from `/usr/share/applications/code.desktop` to `~/.local/share/applications`
|
||
- replace the line `StartupWMClass=Code` with `StartupWMClass=code-url-handler`
|
||
|
||
|
||
Create ./config/electron-flags.conf and ./config/code-flags.conf with contents:
|
||
```
|
||
--enable-features=UseOzonePlatform
|
||
--ozone-platform=wayland
|
||
--enable-wayland-ime
|
||
```
|
||
|
||
configure obs-ndi:
|
||
ndi-sdk from AUR installs v6 into /usr/lib. obs-ndi however expects v5. solution: symlink it:
|
||
`sudo ln -s /usr/lib/libndi.so.6 /usr/local/lib/libndi.so.5`
|
||
Because a ndi sdk version requires specific versions of ffmpeg (v6.1.1 >= ffmpeg 7, but NOT 8, that doesnt work), pin the ffmpeg package in pacman to stay at the current version and only update ffmpeg if its safe that ndi sdk works with it.
|
||
`strings /usr/lib/libndi.so.5.6.1 | grep 'libav'`. The version numbers of libavcodec and libavutil are important; those are provided by ffmpeg.
|
||
|
||
|
||
configure v4l2loopback kernel module
|
||
/etc/modprobe.d/v4l2loopback.conf:
|
||
```
|
||
options v4l2loopback devices=1 video_nr=10 card_label="Virtual Cam" exclusive_caps=1
|
||
```
|
||
then:
|
||
```
|
||
echo v4l2loopback | sudo tee /etc/modules-load.d/v4l2loopback.conf
|
||
```
|
||
|
||
|
||
|
||
configure fontbase:
|
||
apply fontbase crack
|
||
create symlink to fonts folder - change source path accordingly:
|
||
`ln -s /mnt/nase.meow/Data/Gfxres/fonts ~/FontBase/fonts`
|
||
|
||
|
||
|
||
- apply bitwig crack
|
||
- for all bitwig versions before 5.3.9, theres a bug in bitwig with newer vulkan libs that prevent bitwig from starting. to fix:
|
||
copy `/opt/vulkan-icd-loader-1.4.309.0`
|
||
copy `~/.local/share/applications/com.bitwig.BitwigStudio.desktop`
|
||
(`env LD_LIBRARY_PATH=/opt/vulkan-icd-loader-1.4.309.0` was prepended to the Eexc command there)
|
||
|
||
|
||
apply resolve crack
|
||
|
||
create webapps manually for now with webapp-manager
|
||
|
||
|
||
|
||
|
||
Set default file browser to nautilus:
|
||
```
|
||
xdg-mime default org.gnome.Nautilus.desktop inode/directory
|
||
```
|
||
Otherwise any app that has the mimetype inode/directory specified in its .desktop file will probably become default (easytag in this case)
|
||
|
||
|
||
|
||
- mount net shares and ramdisk on boot/login
|
||
- mkdir /mnt/nase.meow
|
||
- mkdir /mnt/files.70b1.de
|
||
- mkdir /mnt/ramdisk
|
||
- put credentials file /etc/nase.meow.credentials and /etc/davfs2/secrets
|
||
```
|
||
chmod 600 /etc/davfs2/secrets
|
||
chown root:root /etc/davfs2/secrets
|
||
chmod 600 /etc/nase.meow.credentials
|
||
chown root:root /etc/nase.meow.credentials
|
||
```
|
||
- create systemd services that wait until shares are reachable
|
||
- /etc/systemd/system/files.70b1.de-ready.service
|
||
- /etc/systemd/system/nase.meow-ready.service
|
||
- enable those services with systemctl enable
|
||
- make entries in fstab
|
||
|
||
|
||
copy /etc/gdm/custom.conf for autologin settings, disable autologin because otherweise gnome keyring asks for password twice
|
||
|
||
|
||
copy gnome online accounts config to `~/.config/goa-1.0/accounts.conf`. might not work because other things are stored elsewhere...
|
||
|
||
configure firefox
|
||
- sane user.prefs, also change
|
||
apz.gtk.pangesture.page_delta_mode_multiplier to 0.2
|
||
apz.gtk.pangesture.pixel_delta_mode_multiplier to 10
|
||
for slow trackpad scrolling
|
||
- to enable ffmpeg vaapi video decode hw accel, set:
|
||
media.ffmpeg.vaapi.enabled to true
|
||
|
||
|
||
|
||
- configure kvm
|
||
enable libvirt daemons
|
||
```
|
||
for drv in qemu interface network nodedev nwfilter secret storage; do
|
||
sudo systemctl enable virt${drv}d.service;
|
||
sudo systemctl enable virt${drv}d{,-ro,-admin}.socket;
|
||
done
|
||
```
|
||
- configure kvm networking
|
||
[qemu bridge networking](:/25eb0085f9f04d1cbf343502255c432b)
|
||
|
||
|
||
Configure wine
|
||
- run `winecfg`
|
||
- installed samba package for ntlm_auth binary
|
||
- installed
|
||
```
|
||
winetricks d3dx9
|
||
winetricks d3dx11_43
|
||
winetricks vcrun2022
|
||
winetricks corefonts
|
||
```
|
||
- installed dxvk-bin from AUR (directx 9/10/11 vulkan layers)
|
||
- activated for current wine env with `setup_dxvk install`
|
||
- installed vkd3d-proton-bin from AUR (directx 12 vulkan layer)
|
||
- activated for current wine env with `setup_vkd3d_proton install`
|
||
- necessary for some VST setups:
|
||
`winetricks vcrun6sp6 `
|
||
|
||
|
||
|
||
configure localsend
|
||
- localsend stores its generated priv/pub ssl keys in the config file, in the json key `flutter.ls_security_context`. strip this key completely when archiving the file for setup. they get generated if this key is missing.
|
||
location: `.local/share/org.localsend.localsend_app/shared_preferences.json`
|
||
|
||
autostarting gui apps is best done via gnome autostart functionality, because systemd user units dont wait until display is ready
|
||
- remove anything thats already in `~/.config/autostart/`
|
||
- copy localsend.desktop
|
||
|
||
|
||
vcvrack:
|
||
- untar and copy rack appdata folder to ./local/share
|
||
|
||
|
||
arduino config and libraries:
|
||
- extract arduino15.tar.gz and copy to ~/.arduino15
|
||
- extract arduino.tar.gz and copy to ~/Arduino
|
||
|
||
processing config and libraries:
|
||
- copy ~/.config/processing/preferences.txt
|
||
- extract libraries.tar.gz and copy to ~/sketchbook/libraries
|
||
|
||
|
||
open stage control:
|
||
- its installed in /opt/open-stage-control but no desktop file or symlink is created
|
||
- create symlink:
|
||
```
|
||
sudo ln -s /opt/open-stage-control/open-stage-control /usr/local/bin
|
||
```
|
||
- create desktop file with icon
|
||
|
||
|
||
|
||
Configure VLC
|
||
- copy `~/.config/vlc/vlcrc`
|
||
|
||
Configure mpv:
|
||
- copy `~/.config/mpv/mpv.conf`
|
||
|
||
|
||
|
||
Pipewire Roc sinks:
|
||
1. Install pipewire roc module
|
||
```
|
||
pacman -S pipewire-roc
|
||
```
|
||
2. Ensure that you have pipewire configuration directory:
|
||
```
|
||
mkdir -p ~/.config/pipewire/pipewire.conf.d
|
||
```
|
||
3. Create `~/.config/pipewire/pipewire.conf.d/roc-sink.conf` and add the following:
|
||
```
|
||
context.modules = [
|
||
{ name = libpipewire-module-roc-sink
|
||
args = {
|
||
fec.code = rs8m
|
||
remote.ip = <IP>
|
||
remote.source.port = 10001
|
||
remote.repair.port = 10002
|
||
sink.name = "Studio Raspi"
|
||
sink.props = {
|
||
node.name = "studio-raspi-roc-sink"
|
||
node.description = "Studio Raspi"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
```
|
||
Here, `<IP>` is the IP address of the Roc receiver.
|
||
After that, the sink should be available.
|
||
https://docs.pipewire.org/page_module_roc_source.html
|
||
|
||
|
||
Pipewire airplay zeroconf:
|
||
Create file `~/.config/pipewire/pipewire.conf.d/raop-discover.conf` with content:
|
||
```
|
||
context.modules = [
|
||
{
|
||
name = libpipewire-module-raop-discover
|
||
args = { }
|
||
}
|
||
]
|
||
```
|
||
|
||
|
||
Pipewire RME Fireface conf with virtual sink: Follow this [Pipewire Wireplumber Config for Pro Audio](:/a3c201df819d4fb4a99a5e6cb00bd89d)
|
||
|
||
|
||
|
||
|
||
configure ferdium
|
||
remove from gnome (xdg) autostart
|
||
```
|
||
rm ~/.config/autostart/ferdium.desktop
|
||
```
|
||
|
||
|
||
|
||
configure cups
|
||
```
|
||
sudo systemctl enable cups.socket
|
||
sudo systemctl start cups.socket
|
||
```
|
||
Only cups.socket is enabled and started, this way, cups only runs when an application wants to use it.
|
||
|
||
|
||
|
||
|
||
Logitech mice: configure logiops
|
||
Create a udev rule with a file under: `/etc/udev/rules.d/90-logid-start-restart.rules`:
|
||
```
|
||
# Logitech via USB receiver
|
||
ACTION=="add|change", SUBSYSTEM=="hidraw", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", \
|
||
RUN+="/usr/bin/systemctl restart --no-block logid.service"
|
||
|
||
# Logitech via Bluetooth (BlueZ UHID path 0005:046D:...)
|
||
ACTION=="add|change", SUBSYSTEM=="hidraw", KERNELS=="0005:046D:*", \
|
||
RUN+="/usr/bin/systemctl restart --no-block logid.service"
|
||
```
|
||
See this issue why: https://github.com/PixlOne/logiops/issues/279#issuecomment-1192737809
|
||
|
||
then, create config file: /etc/logid.cfg
|
||
Hint: When connected through Bolt receiver, MX Anywhere 3S shows up as "MX Anywhere 3"
|
||
```
|
||
devices: (
|
||
{
|
||
name: "MX Anywhere 3";
|
||
smartshift:
|
||
{
|
||
on: false;
|
||
threshold: 15;
|
||
torque: 50;
|
||
};
|
||
hiresscroll:
|
||
{
|
||
hires: false;
|
||
invert: false;
|
||
target: false;
|
||
};
|
||
dpi: 1000;
|
||
|
||
}
|
||
);
|
||
```
|
||
enable system service
|
||
```
|
||
sudo systemctl enable logiops
|
||
sudo systemctl start logiops
|
||
```
|
||
currently under gnome wayland, smooth scrolling doesnt work (wheel speed way too high, cant be adjusted via libinput)
|
||
|
||
|
||
|
||
|
||
|
||
configure keepassxc
|
||
copy ~/.config/keepassxc/keepassxc.ini
|
||
|
||
|
||
|
||
|
||
For amggpu performance control, create the file `/usr/local/bin/gpuprofile.sh`:
|
||
```
|
||
#!/bin/zsh
|
||
echo "high" | tee /sys/class/drm/card1/device/power_dpm_force_performance_level
|
||
```
|
||
Setting perf level to high fixes memclock to 100% which increases idle power draw to around 20W, but fixes stuttering.
|
||
Then, add a systemd service `/etc/systemd/system/gpuprofile.service`:
|
||
```
|
||
[Unit]
|
||
Description=Increase GPU core and memory clocks
|
||
After=multi-user.target
|
||
|
||
[Service]
|
||
Type=oneshot
|
||
ExecStart=/usr/local/bin/gpuprofile.sh
|
||
RemainAfterExit=yes
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
|
||
|
||
|
||
For amdgpu rx 6600 fan control, create the file `/usr/local/bin/amdgpu-fancontrol.sh`:
|
||
```
|
||
#!/bin/sh
|
||
# ---------------- CONFIG ----------------
|
||
# Temperature threshold in millidegrees Celsius
|
||
# 55000 = 55°C
|
||
TEMP_THRESHOLD=55000
|
||
|
||
# PWM values (0–255)
|
||
PWM_IDLE=25 # fan speed below threshold
|
||
PWM_HOT=90 # fan speed above threshold
|
||
|
||
# Path root
|
||
HWMON_ROOT="/sys/class/drm/card1/device/hwmon"
|
||
# ---------------------------------------
|
||
|
||
# Find hwmon
|
||
HWMON="$(ls -d $HWMON_ROOT/hwmon* 2>/dev/null | head -n1)"
|
||
[ -z "$HWMON" ] && exit 0
|
||
|
||
TEMP_FILE="$HWMON/temp1_input"
|
||
PWM_ENABLE="$HWMON/pwm1_enable"
|
||
PWM_FILE="$HWMON/pwm1"
|
||
|
||
# Enable manual fan control (always)
|
||
echo 1 > "$PWM_ENABLE"
|
||
|
||
# Read temperature
|
||
TEMP="$(cat "$TEMP_FILE")"
|
||
|
||
# Decide PWM
|
||
if [ "$TEMP" -ge "$TEMP_THRESHOLD" ]; then
|
||
PWM="$PWM_HOT"
|
||
else
|
||
PWM="$PWM_IDLE"
|
||
fi
|
||
|
||
# Always write PWM
|
||
echo "$PWM" > "$PWM_FILE"
|
||
|
||
exit 0
|
||
```
|
||
Change the path root (card1) according to where the gpu is registered on the system.
|
||
Then, make it executable: `sudo chmod +x /usr/local/bin/amdgpu-fancontrol.sh`
|
||
|
||
Then, create a systemd service under `/etc/systemd/system/amdgpu-fancontrol.service`:
|
||
```
|
||
[Unit]
|
||
Description=AMDGPU fan control
|
||
After=multi-user.target
|
||
|
||
[Service]
|
||
Type=oneshot
|
||
ExecStart=/usr/local/bin/amdgpu-fancontrol.sh
|
||
```
|
||
|
||
Then, create a systemd timer under `/etc/systemd/system/amdgpu-fancontrol.timer`:
|
||
```
|
||
[Unit]
|
||
Description=Run AMDGPU fan control periodically
|
||
|
||
[Timer]
|
||
OnBootSec=20s
|
||
OnUnitActiveSec=20s
|
||
|
||
[Install]
|
||
WantedBy=timers.target
|
||
```
|
||
|
||
Then, activate timer:
|
||
```
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable --now amdgpu-fancontrol.timer
|
||
``` |