NOTE:
# = Root Terminal (you had to type sudo su
, or just su
to get here)
$ = User Terminal (requires sudo for root permissions)
When given the instructions to use the vim
command you could substitute that with the nano
command. nano
can be simpler to use when editing files and commands to save and escape are simpler with ^X
meaning Ctrl+X
Download latest holoISO, put on ventoy flash drive
Boot up to live linux system and use SteamOS installer.
Once installed, don't reboot, open a terminal (Konsole) and become sudo su
to become root user.
$ sudo su
# arch-chroot /mnt
# vim /usr/bin/gamescope-session
Type /AOKZOE
to find the right line
Move the cursor to the correct location and press X
to delete upsidedown
Then Press i
to insert , and type left
in its place
Press escape key
and type :wq
and press enter key
to Write and Quit.
# vim /etc/default/grub
You can do 1 of 2 things.
1. Comment out extra lines (place # at beginning of unused lines) that are unnecessary so you can preserve original options and change the TIMEOUT
to 2
, then add acpi_osi="Windows 2015"
.
2. OR delete unnecessary lines (vim can delete entire lines by going to the line and press “d” twice) and add acpi_osi="Windows 2015"
end up with only this:
GRUB_TIMEOUT=2
GRUB_CMDLINE_LINUX_DEFAULT="video=efifb fbcon=rotate:3 acpi_osi="Windows 2015" quiet splash loglevel=3 rd.udev.log_priority=3 vt.global_cursor_default=0"
GRUB_DEFAULT="Advanced options for SteamOS>SteamOS, with Linux linux-holoiso"
GRUB_SAVEDEFAULT="false"
# Define "breeze" Steam Deck GRUB Theme here
GRUB_THEME="/usr/share/grub/themes/breeze/theme.txt"
Then hit escape key and type :wq
to write and quit. Yes the colon is required for VIM commands.
This sets the default boot settings, but you still need to apply them. You can do this 2 ways:
# holoiso-grub-update
OR
# grub-mkconfig -o /boot/grub/grub.cfg
Now you should be booting into the 5.18 holoISO kernel by default. This should get you better stability etc compared to 5.13.
The sound card is known to have issues with the system automatically choosing the wrong audio format and rate. It works for a little while until you get a white noise static sound upon failure. We want “S16LE” format and “192khz” rate.
Arch and HoloISO can be a bit confusion because you're not configuring ALSA (Advanced Linux Sound Architecture), or PulseAudio (Audio Server and manager), or Pipewire (PulseAudio compatible replacement), but you're configuring WirePlumber that automatically configures Pipewire/PulsAudio and ALSA.
First we need to copy the Global Default files to our home config directory. This will allow our changes to survive upgrades and reinstalls, as well as protect us if we mess up. Then we can edit the copy that is in a higher priority location.
$ sudo su
# cp -a /usr/share/wireplumber /etc/
# vim /etc/wireplumber/main.lua.d/50-alsa-config.lua
From here you'll scroll down to Line 109
and start making edits. You'll want to remove the double hyphen which is “commenting out” the line and edit them to look like this:
--["audio.channels"] = 2,
["audio.format"] = “S16LE”,
["audio.rate"] = 192000,
--["audio.allowed-rates"] = “32000,96000”,
The Controller doesn't fully function out of the box. For example, the bottom left button isn't mapped to the “home” button on an xbox controller. Also the Gyro isn't loaded as part of the gamepad. Open another terminal window or tab and fix that:
$ sudo pacman -S base-devel git
$ git clone https://github.com/ShadowBlip/HandyGCCS.git
$ cd HandyGCCS
$ sudo make install
AOKZOE and OneXPlayer are both owned by One-Netbook. These devices all use the same oxp-platform sensors. Lets install those drivers.
$ git clone https://gitlab.com/Samsagax/oxp-platform-dkms.git
$ cd oxp-platform-dkms
$ make
$ sudo make dkms
WARNING!! This tool is known to cause instability, lockups, hangs, long shutdowns and long boots! It is not recommended unless you're a DEV or Contributor!
$ curl -L https://github.com/SteamDeckHomebrew/decky-loader/raw/main/dist/install_release.sh | sh
This will enable the use of the Fantastic
plugin in conjunction with the oxp-platform driver to create your own fan curves.
You could also add the ProtonDB Badges
plugin for better compatibility data of games.
WARNING!! This tool is known to cause instability due to not being updated to work with the latest version of Steam! It is not recommended unless you're a DEV or Contributor!
$ flatpak install --user space.crankshaft.Crankshaft
This will enable you to add plugins such as HandyPT
to control TDP, SMT, and more.
You could also add the ProtonDB Indicator
plugin for better compatibility data of games.
Download the modified EDID binary for the screen and open a terminal.
We need to move the binary to the edid firmware folder.
$ sudo mkdir /lib/firmware/edid
$ sudo mv ~/Downloads/aokzoea1ar07_edid.bin /lib/firmware/edid/
Now that we have the modified EDID in the firmware folder we need to inject it into the initramfs so it can be read upon boot.
$ sudo vim /etc/mkinitcpio.conf
You'll need to edit the FILES line to include the EDID binary. It should look like this:
FILES=(/lib/firmware/edid/aokzoea1ar07_edid.bin)
Now we have to update the initramfs to include the binary file.
# mkinitcpio -P
Now lets edit the grub default to include the EDID information.
# vim /etc/default/grub
Now add the drm.edid_firmware=eDP-1:edid/aokzoea1ar07_edid.bin
so that it looks like this:
GRUB_TIMEOUT=2
GRUB_CMDLINE_LINUX_DEFAULT="drm.edid_firmware=eDP-1:edid/aokzoea1ar07_edid.bin video=efifb fbcon=rotate:3 acpi_osi="Windows 2015" quiet splash loglevel=3 rd.udev.log_priority=3 vt.global_cursor_default=0"
GRUB_DEFAULT="Advanced options for SteamOS>SteamOS, with Linux linux-holoiso"
GRUB_SAVEDEFAULT="false"
# Define "breeze" Steam Deck GRUB Theme here
GRUB_THEME="/usr/share/grub/themes/breeze/theme.txt"
Then hit escape key and type :wq
to write and quit. Yes the colon is required for VIM commands.
This sets the default boot settings, but you still need to apply them. You can do this 2 ways:
# holoiso-grub-update
OR
# grub-mkconfig -o /boot/grub/grub.cfg
And reboot! Your A1 screen should now work properly at 60hz, 50hz, 48hz, and 40hz. Other refresh rates will likely have issues.
open a web browser (on the device in desktopmode), and go to https://kernel.org/ .
From here click "tarball" on the kernel you're wanting (most likely 6.1+).
Once finished open a terminal and install compilers and tools then navigate to the downloads folder via
$ sudo pacman -S base-devel cpio perl xmlto python-sphinx python-sphinx_rtd_theme texlive-latexextra git
$ cd ~/Downloads
Now you'll decompress the downloaded file like
$ gunzip linux-6.1.tar.gz
That will leave you with the tape archive (a.k.a. tar file) which we can extract from using
$ tar -xvf linux-6.1.tar
Now you'll have a folder called linux-6.1 which contains the kernel source code. You can either build your own kernel config:
$ cd linux-6.1
$ zcat /proc/config.gz > .config
$ make nconfig
OR you can download my config and use that.
$ mv ~/Downloads/6.1-rc6-config linux-6.1/.config
$ cd linux-6.1
$ make olddefconfig
Now lets start building the kernel. make by default will only be single threaded. the 6800u is 8cores 16threads. Thus we want 16 jobs to speed up this process. We can enforce this by using the -j16
flag.
$ make -j16
$ make -j16 modules
$ sudo make modules_install
Now we need the compressed kernel image (bzImage/vmlinuz) and then the base modules for boot in the initial ramdisk (initramfs). Arch has presets that makes initial ramdisks, we'll just copy and tweak the one from holoiso.
$ make bzImage
$ sudo cp -v arch/x86/boot/bzImage /boot/vmlinuz-linux-6.1
$ sudo su
# cat /etc/mkinitcpio.d/linux-holoiso.preset | sed 's/holoiso/6.1/g' > /etc/mkinitcpio.d/linux-6.1.preset
# mkinitcpio -p linux-6.1
OK, now you must let the GRUB bootloader know how and where to boot the new kernel.
# holoiso-grub-update
OR
# grub-mkconfig -o /boot/grub/grub.cfg
Reboot, during the GRUB screen you'll have 2 seconds to press an arrow key on the keyboard and stop the timer. Open the Advanced Options, and choose to boot with the 6.1 kernel.
If this boots up all the way and works correctly, enter Desktop mode and the terminal again. We need to change the current /boot/grub/grub.cfg to use 6.1 by default.
We won't edit the "/etc/default/grub" files because 6.1 isn't a generic enough name to survive kernel updates and reboots like "linux-holoiso" with no revision numbers. You could name the kernel like this, but until its a solid LTS you don't plan on updating manually again, I wouldn't do that. This way, worse case scenario is you're dropped back into the 5.18 kernel.
$ sudo vim /boot/grub/grub.cfg
Look for this (Line 18):
set default="Advanced options for SteamOS>SteamOS, with Linux linux-holoiso"
and change to this:
set default="Advanced options for SteamOS>SteamOS, with Linux linux-6.1"
There are a couple issues that cause this.
1. It seems some QT updates can cause breakage https://bugs.archlinux.org/task/75851. Simple fix is to just reinstall packages that are broken:
$ sudo pacman -S qt5-base qt5-xcb-private-headers qt5-wayland xdg-desktop-portal xdg-desktop-portal-kde sddm-wayland
2. You cannot even access TTY2
via CTRL+ALT+F2
. The reason for this is a deprecated udev service is still used in HoloISO/SteamOS for some reason.
This udev service forces your machine to wait 2-3 minutes to make sure all hardware is fully loaded up which isn't necessary. Lets just remove this old service.
$ sudo rm -rf /use/lib/systemd/system/systemd-udev-settle.service
There is a reason for this. Some games are designed with 30fps or 60fps in mind and vsync. In some platformers, programmers have to know how fast character acceleration should occur when jumping, falling, etc. Otherwise you'll get moon-style hang times etc. So the game locks itself to 30fps or 60fps which is bad when the screen uses 40hz and a 40fps limiter. While you don't get screen tearing you instead get frame stuttering and jitter from dropping a fraction of your rendered frames. You may be able to take better advantage of this by disabling fps limiters and vsync within the game and allowing gamescope (steam gamepadUI) to handle the vsync and fps limitations. You may also just want to disable the fps limiter all together and see if that helps. Not all games will offer settings to accommodate these changes either.
This is currently being looked into for handyGCCS. The current temporary fix it to put the device back to sleep and wake it back up and it begins working again.
This is due to the rz608-fixes-git package installed. Its only intended for the original 5.13 kernel, but evidently causes some grief for the 6.1 kernel. the fix is to manually delete the files for this package. Since the package is set as a core dependency, it cannot be “safely removed” and attempts will be blocked. Be warned, doing this will break wifi for the old 5.13 kernel, but if you're using the holoiso 5.18 or newer, you'll have no issues.
$ sudo su
# rm /usr/lib/systemd/system-shutdown/mt7921e.shutdown
# rm /etc/systemd-suspend-mods.conf
# rm /usr/lib/systemd/system-sleep/systemd-suspend-mods.sh
# rm /etc/modprobe.d/rz608.conf
# rm /etc/udev/rules.d/99-rz608.rules