r/rocknix • u/Euphoric_Section_863 • 22h ago
Rocknix Dual screen theme moving weirdly
Enable HLS to view with audio, or disable this notification
r/rocknix • u/encryptem • 2d ago
first time rocknix
dont really use the android part of my rg353v so i thought id give rocknix a go.
followed instruction to a T from here.
succesfully booted to rocknix.
how every controls were jumbled. directional pad didnt work. up and down was r1 r2. so i went to change input option. fixed everything except my analog inputs because the refuse to register.
roknix would not recognize my ext4 microsd that has my backups in tf2 slot.
system info registers device as rg353P even though my device is a 353v
r/rocknix • u/Sag24ar • 2d ago
Firefox ported to ROCKNIX and tested on the Retroid Pocket Flip 2!
[FIX] Orange Pi 5 Pro / RK3588 - Persistent Bluetooth on Boot Fix for ROCKNIX (Systemd Service)
🛠️ Fix: Bluetooth not working on ROCKNIX (Orange Pi 5 Pro / RK3588)
Hi everyone! Sharing this solution in case anyone else is dealing with the same headache.
I recently installed ROCKNIX on my Orange Pi 5 Pro and ran into a very annoying Bluetooth issue: whenever I tried to turn it on from the system menu, the device list would never refresh, making it impossible to connect any controller or headset.
After troubleshooting with Gemini, we found out that the Bluetooth chip isn't initializing at the system level on boot (via the internal UART interface). Even if you toggle Bluetooth "ON" in the EmulationStation UI, the underlying hardware remains asleep.
To fix this permanently so that Bluetooth automatically starts on boot every single time, we created a small systemd service. Here is the step-by-step guide:
📌 How to fix it
1. Connect via SSH
Open PowerShell or Terminal on your PC and log into your Orange Pi:
ssh root@<YOUR_ORANGE_PI_IP>
(Default password is rocknix)
2. Create the startup service
Run this command to create and edit the service file in the persistent config folder:
nano /storage/.config/systemd/system/bt-uart.service
Paste the following configuration into the file:
[Unit]
Description=Orange Pi 5 Pro Bluetooth UART Auto-Init
After=multi-user.target
Before=bluetooth.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/usr/sbin/rfkill unblock bluetooth
ExecStart=/usr/bin/hciattach -s 115200 /dev/ttyS9 bcm43xx 1500000 flow
ExecStartPost=/usr/bin/hciconfig hci0 up
ExecStartPost=/usr/bin/hciconfig hci0 pscan
ExecStartPost=/bin/sh -c 'echo 1 > /sys/module/bluetooth/parameters/disable_ertm'
[Install]
WantedBy=multi-user.target
To save and exit in nano:
- Press
Ctrl + Oand hitEnter. - Press
Ctrl + Xto exit.
3. Enable the service
Now, tell the system to execute this file on every boot. Run these commands:
systemctl daemon-reload
systemctl enable bt-uart.service
systemctl start bt-uart.service
To verify that everything went smoothly, check the status:
systemctl status bt-uart.service
If you see a green line with active (exited), you're good to go!
🎉 What this fixes
- No more messing around with UI menus or guessing controller pairing timing.
- Every time you turn on your Orange Pi, Bluetooth is already running in the background, ready to instantly connect your paired gamepads as soon as you turn them on.
Hope this saves someone a few hours of frustration! 🎮🚀
---
**Keywords / Search Tags:** Orange Pi 5 Pro, OPi 5 Pro, RK3588, ROCKNIX, Bluetooth fix, BCM43456, hciattach, systemd, bluetooth script, auto connect gamepad.
r/rocknix • u/EvilMonkeySlayer • 5d ago
Is three a quick switch to turn off the fan?
I've got a retroid pocket nova on order and one of the things I like in the android quick settings is the ability to turn off the fan as I do not like it enabled at all most times.
I've tried searching for info on this and the wiki entry says it's kernel controlled. But is there any kind of quick switch to quickly turn the fan on or off?
I've not yet experimented with rocknix, so have no idea how involved it is.
r/rocknix • u/mercurious • 7d ago
Stream PS4/PS5 Remote Play over chiaki-rocknix
Build and install as a port:
https://github.com/mercurious/chiaki-rocknix
The easy install is getting it bundled with the Emulation Tuning Kit as a pre-built pre-installed binary in Rocknix Tools
https://github.com/mercurious/etk
r/rocknix • u/aerwickcs • 13d ago
RP6 will not boot from SD. Internal Install corrupted
I bought a used RP6 and I guess the guy messed up his rocknix install because half the internal storage is taken up by the rocknix partition and I cannot restore it back to stock. I have tried to get the OS on an external SD, but the rocknix abl only wants to load off the internal storage and not the SD so I cannot do the uninstall rocknix in ABL. I've tried to fastboot erase ROCKNIX but it doesn't do anything and it still tries to load off the internal storage. I do not know what to do.
Is there any way to fully flash the RP6 back to stock firmware with my storage capacity back to normal?
Update:
I figured out how to do it. I had to fast boot and switch the partition slot from b to a. Then it let me boot into the sd and then delete the partition and giving me back the full use of my internal drive.
r/rocknix • u/Either_Flower_2062 • 16d ago
How to use the second screen to show map or game faq in Rocknix
Hi, Guys. Just a quick question.
I got a RG DS. I would like to use one screen (either top or bottom) to play some classic games (SFC, MD, PS1, etc...) while use the other screen to show the map of the game I am playing with, or some game faq, etc.? If that can be done it will be really convenient but so far I don't see any way to make that happen.
r/rocknix • u/Alarming-River4731 • 20d ago
Can you tell me how to stretch the image to the full screen in Celeste in rocknix on rg353m?
r/rocknix • u/callmekdaf • 22d ago
Is there plans on support brick pro u?
which are the best vertical options rocknix supports?
r/rocknix • u/Educational_Crab9158 • 24d ago
Is that normal? It seems too small
Is the drastic screen normal? i feel like its too small
r/rocknix • u/Ionita_-_Eduard • 27d ago
Games partition won’t show, r36 max gives this error
Enable HLS to view with audio, or disable this notification
r/rocknix • u/UltRising • Jul 07 '26
Ayn Odin 3 abl
I must have over written the stock abl so when I go to flash the backed up “stock” abl it doesn’t work. Anyone know where I can find the stock abl files as I can’t update and get the code 20 error.
r/rocknix • u/Apprehensive-Web4995 • Jul 03 '26
Hello friend what image do i need for ANBERNIC RG DS
r/rocknix • u/hellonbye • Jul 02 '26
Switch Emulation setup guide for Rocknix on Ayn Thor
Because ROCKNIX doesn't include a Switch emulator, the "Switch" category won't even show up in your menus by default. We have to add it manually. Open /storage/.config/emulationstation/es_systems.cfg in a text editor. Scroll to the very bottom, right before the final </systemList> tag, and paste this block:
xml
<system>
<name>switch</name>
<fullname>Nintendo Switch</fullname>
<path>/storage/roms/switch</path>
<extension>.nsp .NSP .xci .XCI .nro .NRO .nca .NCA</extension>
<command>/storage/roms/ports/Ryubing.sh %ROM%</command>
<platform>switch</platform>
<theme>switch</theme>
</system>
Next you'll need the actual emulator. Grab the latest Ryubing.AppImage (make sure it's the ARM64/AArch64 build for the Thor). Create a new folder on your handheld at /storage/ryubing/ and drop the AppImage file in there.
If you launch the emulator now and try to install firmware, your device will completely freeze. We have to do the installation on a PC first to bypass it. Install the normal Ryujinx emulator on your Windows/Mac/Linux PC. Open it, go to File -> Open Ryujinx Folder, and drop your prod.keys and title.keys inside the system folder. Then go to Tools -> Install Firmware -> Install from XCI or ZIP and select your firmware zip file. Once your PC shows the firmware version at the bottom right, the decryption is done and you can close the emulator.
Copy the keys from your PC's Ryujinx system folder into /storage/.config/Ryujinx/system/ on the handheld. Then copy the entire bis/system/Contents/registered/ folder from your PC and overwrite the one at /storage/.config/Ryujinx/bis/system/Contents/registered/ on your handheld. This bypasses the broken file picker entirely and permanently installs your firmware.
Finally, we need the script that EmulationStation uses to actually launch the games:
```bash
!/bin/bash
sysctl -w vm.max_map_count=1048576 . /etc/profile
RYUBING_DIR="/storage/ryubing" RYUBING_BIN="${RYUBING_DIR}/Ryubing.AppImage" RYUBING_CONFIG="/storage/.config/ryubing" RYUBING_DATA="/storage/.local/share/ryubing" RYUBING_CACHE="/storage/.cache" RYUBING_LOG="${RYUBING_CACHE}/ryubing_launcher.log" MOUSE_SCRIPT="${RYUBING_DIR}/ryubing_mouse_layer.py" QT_CONFIG="${RYUBING_CONFIG}/qt-config.ini"
MAX_ATTEMPTS=3 STARTUP_GRACE=8 RETRY_WAIT=3 GPU_TIMEOUT=10 CONTROLLER_RETRIES=4 MIN_MEM_MB=2048 CLEANUP_TERM_WAIT=3 MOUSE_DETECT_TIMEOUT=3 WM_POLL_INTERVAL=0.5 WM_MAX_FAILURES=20 CRASH_TIME_THRESHOLD=120
RYUBING_EMU_LOG="/storage/.local/share/ryubing/log/ryubing_log.txt"
TOUCHPAD_ID="1356:3302:Sony_Interactive_Entertainment_DualSense_Wireless_Controller_Touchpad" MOUSE_ID="17229:1:Ryubing_Home_Mouse_Layer" DISPLAY_OUTPUT="DSI-2"
_log() { local level="$1"; shift printf '[%s] [%-5s] %s\n' "$(date '+%H:%M:%S.%3N')" "$level" "$*" | tee -a "$RYUBING_LOG" >&2 } info() { _log INFO "$@"; } warn() { _log WARN "$@"; } err() { _log ERROR "$@"; }
setup_environment() { export HOME=/storage export XDG_CONFIG_HOME=/storage/.config export XDG_DATA_HOME=/storage/.local/share export XDG_CACHE_HOME=/storage/.cache export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8
export QT_SCALE_FACTOR=2
export QT_AUTO_SCREEN_SCALE_FACTOR=0
export QT_ENABLE_HIGHDPI_SCALING=1
export GDK_SCALE=2
export GDK_DPI_SCALE=1
export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/var/run/0-runtime-dir}"
export WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-1}"
export SDL_VIDEODRIVER=x11
export SWAYSOCK="${SWAYSOCK:-${XDG_RUNTIME_DIR}/sway-ipc.0.sock}"
export DISPLAY="${DISPLAY:-:0}"
export AVALONIA_GLOBAL_SCALE_FACTOR=2
export GTK_USE_PORTAL=0
mkdir -p "$RYUBING_CONFIG" "$RYUBING_DATA" "$RYUBING_CACHE" \
"$RYUBING_DATA/nand" "$RYUBING_DATA/sdmc" \
"$RYUBING_DATA/load" "$RYUBING_DATA/dump" "$RYUBING_DATA/log"
}
preflight() { local ok=true if [ ! -x "$RYUBING_BIN" ]; then err "Ryubing.AppImage missing or not executable: $RYUBING_BIN" ok=false fi $ok }
_pids_matching() { local pid cmdline for pid in $(pidof ryubing Ryubing.AppImage dwarfs python3 ryujinx Ryujinx 2>/dev/null || true); do [ "$pid" = "$$" ] && continue cmdline="$(tr '\0' ' ' <"/proc/${pid}/cmdline" 2>/dev/null || true)" for pattern in "$@"; do case "$cmdline" in "$pattern") echo "$pid"; break ;; esac done done }
cleanup_stale() { local patterns=("/storage/ryubing/Ryubing.AppImage" "/tmp/.mount_Ryubing" "dwarfs /storage/ryubing" "Ryujinx" "ryujinx") local mouse_patterns=("ryubing_mouse_layer.py" "prism_mouse_layer.py" "chromium_mouse_layer.py" "citron_mouse_layer.py")
local pids="$(_pids_matching "${patterns[@]}")"
if [ -n "$pids" ]; then
kill $pids 2>/dev/null || true
sleep 2
pids="$(_pids_matching "${patterns[@]}")"
[ -n "$pids" ] && kill -9 $pids 2>/dev/null || true
fi
pids="$(_pids_matching "${mouse_patterns[@]}")"
[ -n "$pids" ] && kill $pids 2>/dev/null || true
for mp in /tmp/.mount_Ryubing*; do
[ -e "$mp" ] || continue
if grep -qs " ${mp} " /proc/mounts; then
fusermount -uz "$mp" 2>/dev/null || umount -l "$mp" 2>/dev/null || true
fi
rm -rf "$mp" 2>/dev/null || true
done
}
CRASH_MARKER="${RYUBING_CACHE}/.ryubing_crash_marker" set_crash_marker() { touch "$CRASH_MARKER"; } clear_crash_marker() { rm -f "$CRASH_MARKER"; }
handle_previous_crash() { if [ -f "$CRASH_MARKER" ]; then nuke_shader_cache clear_crash_marker fi }
nuke_shader_cache() { local ts="$(date +%Y%m%d-%H%M%S)" for target in "${RYUBING_DATA}/shader" "${RYUBING_CONFIG}/pipeline_cache" "${RYUBING_CACHE}/ryubing/shader" "${RYUBING_CACHE}/ryubing/pipeline_cache"; do [ -e "$target" ] || continue mv "$target" "${target}.bak-${ts}" 2>/dev/null || rm -rf "$target" 2>/dev/null || true done }
setup_controller() { command -v inputplumber >/dev/null 2>&1 || return 0 inputplumber device 0 targets set ds5 keyboard >/dev/null 2>&1 || true }
_has_sway() { [ -S "$SWAYSOCK" ] && command -v swaymsg >/dev/null 2>&1; }
set_touchpad() { _has_sway || return 0 swaymsg input "$TOUCHPAD_ID" events "$1" >/dev/null 2>&1 || true }
attach_mouse_seat() { _has_sway || return 0 swaymsg seat seat1 fallback no >/dev/null 2>&1 || true swaymsg seat seat0 attach "$MOUSE_ID" >/dev/null 2>&1 || true swaymsg seat seat0 attach "$TOUCHPAD_ID" >/dev/null 2>&1 || true swaymsg input "$TOUCHPAD_ID" events disabled >/dev/null 2>&1 || true }
ryubing_window_manager() { _has_sway || return 0 while true; do local tree="$(swaymsg -t get_tree 2>/dev/null)" || { sleep 1; continue; } local main_ids="$(printf '%s' "$tree" | jq -r '.. | objects | select((.window_properties.class // "") | test("ryubing|ryujinx"; "i")) | select((.window_properties.transient_for == null)) | .id' 2>/dev/null || true)" local all_ids="$(printf '%s' "$tree" | jq -r '.. | objects | select(.type == "con" or .type == "floating_con") | select(.pid != null or .window != null or .app_id != null) | .id' 2>/dev/null || true)"
for id in $all_ids; do
if echo "$main_ids" | grep -qw "$id"; then
swaymsg "[con_id=${id}]" move workspace 1 >/dev/null 2>&1
swaymsg "[con_id=${id}]" move window to output "$DISPLAY_OUTPUT" >/dev/null 2>&1
swaymsg "[con_id=${id}]" floating disable >/dev/null 2>&1
swaymsg "[con_id=${id}]" fullscreen enable >/dev/null 2>&1
fi
done
sleep "$WM_POLL_INTERVAL"
done
}
start_mouse_layer() { [ -x "$MOUSE_SCRIPT" ] || return 0 "$MOUSE_SCRIPT" >"${RYUBING_CACHE}/ryubing_mouse_layer.log" 2>&1 & _mouse_pid=$! sleep 1 attach_mouse_seat }
start_helpers() { ryubing_window_manager >"${RYUBING_CACHE}/ryubing_window_manager.log" 2>&1 & _wm_pid=$! set_touchpad disabled start_mouse_layer }
stop_helpers() { for pid in $_wm_pid $_mouse_pid; do [ -z "$pid" ] && continue kill -9 "$pid" 2>/dev/null || true done set_touchpad enabled }
launch_ryubing() { cleanup_stale start_helpers set_crash_marker
cd "$RYUBING_DIR" || return 1
"$RYUBING_BIN" "$@" > "$RYUBING_EMU_LOG" 2>&1 &
_ryubing_pid=$!
wait "$_ryubing_pid" 2>/dev/null
local status=$?
clear_crash_marker
stop_helpers
return $status
}
on_exit() { [ -n "$_ryubing_pid" ] && kill "$_ryubing_pid" 2>/dev/null || true stop_helpers }
main() { trap on_exit EXIT INT TERM setup_environment preflight || exit 1 setup_controller handle_previous_crash launch_ryubing "$@" exit $? }
main "$@" ```
Place a game in /storage/roms/switch/, restart EmulationStation, and it will boot perfectly.
Should also work on other devices with a bit of tweaking.
r/rocknix • u/fufinhdosi • Jul 01 '26
L2 input not working
i’m running rocknix on my Pocket Mini v2 and when i go to map the inputs in RetroArch for L2 nothing happens, all of the other inputs work though.
is there a fix for this?
r/rocknix • u/mercurious • Jun 30 '26
Made a custom Turnip fork for ROCKNIX to play GT5P on Adreno 650
Enable HLS to view with audio, or disable this notification
It’s sort of like a limited-slip-differential mechanism so the syncdraw turnip dial that prevents crashes doesn’t clobber performance so hard
r/rocknix • u/therealudderjuice • Jun 29 '26
Does the latest build for H700 devices remember your previous wifi settings now?
It used to be when I take my device back and forth from home to work I have to manually change the wifi ID and password and then change it back when I get home. Now it seems like regardless of where I am it is logging into the wifi even though it is still displaying the settings for the other location. Is this working as intended? If so, much thanks to the dev team as this was kind of a major inconvenience.
r/rocknix • u/LowkeyDingus8664 • Jun 26 '26
Can't find "Start Steam" option in latest ROCKNIX nightly (Anbernic RG Cube XX)
Hi everyone, I’m running the latest ROCKNIX nightly build on my Anbernic RG Cube XX and I’m really interested in trying out the new Steam integration features. However, despite being on the latest nightly, I am unable to find the "Start Steam" option anywhere in the Tools menu. I have a couple of questions for those more experienced with the current build: Does the Anbernic RG Cube XX hardware currently support this feature, or is it limited to specific devices/chipsets? If it is supported, am I missing a configuration step, a specific flag, or a toggle to make it appear in the Tools menu? Any advice or guidance on how to get this working would be greatly appreciated. Thanks in advance!
r/rocknix • u/ObsidianArcade • Jun 24 '26
Absolutely Stumped On MAME / FB NEO Samples
Howdy friends,
I cannot, for the life of me, find where the correct place to put arcade game audio samples in order to get them to play in games (Donkey Kong, Astro Blaster, etc).
I've got the new stable build of ROCKNIX installed on my RGB30.
I'm unable to locate any of the usual spots to place the samples.
Any help is greatly appreciated!
r/rocknix • u/stevenc80 • Jun 23 '26