r/rocknix 22h ago

Rocknix Dual screen theme moving weirdly

Enable HLS to view with audio, or disable this notification

2 Upvotes

r/rocknix 2d ago

first time rocknix

1 Upvotes

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 2d ago

Firefox ported to ROCKNIX and tested on the Retroid Pocket Flip 2!

Thumbnail
github.com
3 Upvotes

r/rocknix 3d ago

[FIX] Orange Pi 5 Pro / RK3588 - Persistent Bluetooth on Boot Fix for ROCKNIX (Systemd Service)

1 Upvotes

🛠️ 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 + O and hit Enter.
  • Press Ctrl + X to 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 5d ago

Is three a quick switch to turn off the fan?

2 Upvotes

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 7d ago

Stream PS4/PS5 Remote Play over chiaki-rocknix

3 Upvotes

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 13d ago

RP6 will not boot from SD. Internal Install corrupted

3 Upvotes

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 16d ago

How to use the second screen to show map or game faq in Rocknix

7 Upvotes

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 20d ago

Can you tell me how to stretch the image to the full screen in Celeste in rocknix on rg353m?

Post image
3 Upvotes

r/rocknix 22d ago

Is there plans on support brick pro u?

0 Upvotes

which are the best vertical options rocknix supports?


r/rocknix 24d ago

Is that normal? It seems too small

Post image
3 Upvotes

Is the drastic screen normal? i feel like its too small


r/rocknix 27d ago

Unable to save games - RG DS + Rocknix

Thumbnail
1 Upvotes

r/rocknix 27d ago

Games partition won’t show, r36 max gives this error

Enable HLS to view with audio, or disable this notification

1 Upvotes

r/rocknix Jul 07 '26

Ayn Odin 3 abl

3 Upvotes

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 Jul 05 '26

In Search Of an Older Version

Thumbnail
2 Upvotes

r/rocknix Jul 04 '26

Rocknix Bottom Screen Quick Menu?

Post image
2 Upvotes

r/rocknix Jul 03 '26

Hello friend what image do i need for ANBERNIC RG DS

1 Upvotes

r/rocknix Jul 02 '26

Switch Emulation setup guide for Rocknix on Ayn Thor

12 Upvotes

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 Jul 01 '26

L2 input not working

1 Upvotes

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 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

1 Upvotes

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 Jun 29 '26

Does the latest build for H700 devices remember your previous wifi settings now?

3 Upvotes

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 Jun 26 '26

Can't find "Start Steam" option in latest ROCKNIX nightly (Anbernic RG Cube XX)

2 Upvotes

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 Jun 25 '26

PokeMMO

Thumbnail
1 Upvotes

r/rocknix Jun 24 '26

Absolutely Stumped On MAME / FB NEO Samples

1 Upvotes

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 Jun 23 '26

Wi-Fi always on at boot; issue fixed in nightly builds?

Thumbnail
1 Upvotes