batocera-maintenance

Solid

Use when keeping a Batocera cabinet healthy over time: running scripts or scheduled jobs at boot and on an interval without cron, the custom_service boot-service pattern (which replaced custom.sh in v43), backing up /userdata to another machine over SSH, and upgrading between major Batocera versions (v42 to v43 and similar) including the ROM-directory renames and post-upgrade checklist. Covers why there is no crond, the backup-before-upgrade doctrine, and catch-up scheduling. Not for performance tuning (batocera-tuning).

AI & Automation 4 stars 0 forks Updated yesterday MIT

Install

View on GitHub

Quality Score: 80/100

Stars 20%
23
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# Batocera Maintenance Keeping the cabinet healthy: running things at boot and on a schedule, backing up what matters, and surviving version upgrades. Assumes the connection pattern and filesystem model from `batocera-ops`. ## There is no crond — use a boot service Batocera does **not** run a general-purpose `crond`. Don't write a crontab and assume it fires; it won't. The mechanism for "run this at boot / on a schedule" is a **boot service**. Since v43, the entry point is `/userdata/system/services/custom_service` (it replaced `/userdata/system/custom.sh`; the upgrade auto-converts an existing `custom.sh`). A service is a script Batocera runs at boot with a `start` argument. Enable/inspect services: ```bash SSHB "batocera-services list" SSHB "cat /userdata/system/services/custom_service" ``` ### Scheduling without cron: the boot-loop pattern To run something periodically, the service launches a background loop that sleeps and re-checks. This is how the cabinet does hourly/daily/monthly work with no cron: ```bash # inside custom_service, on the 'start' case: ( while true; do # hourly re-assert (e.g. CPU governor; see batocera-tuning) /etc/init.d/S18governor start 2>/dev/null # once-a-day / once-a-month gating: compare a stamp file to `date` stamp=/userdata/system/.last-monthly-backup if [ "$(cat "$stamp" 2>/dev/null)" != "$(date +%Y-%m)" ]; then /userdata/system/tools/backup-to-remote.sh && date +%Y-%m > "$stamp" fi sleep 3600 d...

Details

Author
t3chnaztea
Repository
t3chnaztea/batocera-skills
Created
3 weeks ago
Last Updated
yesterday
Language
Python
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category

AI & Automation Solid

batocera-ops

Use when connecting to or operating a Batocera arcade/retro-gaming cabinet over SSH: establishing the connection, understanding its read-only rootfs and /userdata layout, finding config/log/ROM paths, applying changes safely, verifying a display/config change end-to-end without a controller, or diagnosing why a setting reverts to its default on every launch (configgen). Foundation for the other batocera-* skills (roms, display, tuning, maintenance). Covers sshpass, batocera.conf, EmulationStation, the ES HTTP API, and batocera-screenshot. Not for game recommendations.

4 Updated yesterday
t3chnaztea
AI & Automation Solid

batocera-tuning

Use when a Batocera cabinet feels slow, laggy, or stuttery, or when tuning performance: EmulationStation menu/carousel lag, a slow-since-boot frontend, CPU governor stuck in powersave, overclock or CPU-speed core options that seem to do nothing, run-ahead / input latency, framerate that drops the longer the machine runs, or a 3D-heavy game (PSX/PS2/Dreamcast/N64 class) that crashes or stutters — Vulkan errors in emulator logs, picking a rendering resolution or graphics backend the hardware can afford. Covers the diagnostic order (check the throttle first), the v43 governor-at-boot failure, the emulator-name vs rom-dir-name overclock scoping trap, ES event-hook frame cost, and hardware-tier detection (batocera-info / batocera-vulkan). Not for shader visual quality (batocera-display).

4 Updated yesterday
t3chnaztea
Data & Documents Solid

batocera-roms

Use when working with ROMs and gamelists on a Batocera cabinet: figuring out which directory a system's ROMs go in, why a game does not appear in the menu, which file formats and extensions a system accepts, curating a large library by hiding rather than deleting, editing gamelist.xml safely, cleaning up multi-disc games, or verifying dumps against No-Intro/Redump DATs. Covers extensionless-ROM-in-zip failures, the 3DO/Opera no-m3u trap, cave3rd, and the es_systems_custom.cfg landmine. Not for shaders/bezels (batocera-display), or ROM directories renamed by a Batocera version upgrade (batocera-maintenance).

4 Updated yesterday
t3chnaztea