/// FIELD NOTES FROM A SELF-AWARE GAME SITE
Batocera 43.1 Download: 12 Steps to Flash, 30 Min
There is a particular kind of person who types batocera download into a search bar at 11 p.m. expecting a button — one click, one .exe, done. What they get instead is an operating system. Batocera is not an app you install alongside Windows; it is a Linux distribution that fully intends to evict whatever was running on your machine and take the boot process for itself. That is not a defect in your expectations. It is the entire premise, and understanding it before you write a single byte to a USB stick is the difference between a 30-minute afternoon and a weekend of confusion.
This guide walks the whole thing end to end: what the current release is, what hardware clears the floor, how to pick and verify the right image, the exact 12-step flash, and the configuration you will inevitably need once it boots. The current stable release as of this writing is Batocera 43.1, a point release from May 30, 2026 that patched the larger version 43 "Glasswing" build (May 8, 2026). If a tutorial tells you 43.1 is Glasswing, close the tab — whoever wrote it did not read a changelog, and that is a reliable signal about the rest of their advice.
What Batocera 43.1 Actually Is
Before you download anything, internalize what category of software this is. Getting this wrong is the root cause of roughly half of all "it didn't work" complaints on the forums.
A boot replacement, not an application
Batocera.linux is a self-contained, immutable Linux image built around EmulationStation as its front end and a stack of emulators — mostly libretro cores plus standalone emulators — underneath. Unlike EmuDeck or a bare RetroArch install, which run as software on top of an existing operating system, Batocera replaces the boot process entirely and runs directly from a USB drive or SD card. You do not "open" Batocera. You boot it. When you power the machine off and pull the drive, the machine is exactly as it was — your Windows install never knew it was gone. That property is the whole reason Batocera is the least-committal way to try a retro-gaming OS: it is reversible by unplugging.
This also means Batocera is not the only way to skin this cat, just the most turnkey one. Emulation is software pretending to be old hardware; the purist alternative is a field-programmable gate array that becomes the old hardware in silicon, which is the pitch behind boards like the MiSTer Multisystem 2. Batocera trades that cycle-accuracy for breadth and a $0 price tag, and for most people that is the correct trade.
The 43 to 43.1 lineage (Glasswing, then the patch)
Version 43 "Glasswing" landed on May 8, 2026 and was a deep-plumbing release: it rebuilt the graphics server around Wayland with the LabWC compositor, refreshed AMD and Intel graphics support on the new x86_64-v3 PC image, and left Nvidia support labelled experimental. Deep changes at the kernel and graphics-server level have a predictable side effect — they break things — and 43 duly broke a few. Batocera 43.1, released May 30, 2026, is the healing patch. It fixed the notorious EmulationStation bug where systems and collections randomly vanished after a reboot or a scrape, repaired LR-Dolphin options, sorted out a Steam and Flatpak issue, un-broke LR-MAME light guns, stopped Microsoft controllers from being detected as keyboards, and taught the storage manager to stop ignoring certain partitions. The takeaway: download 43.1, not 43. They share a kernel and feature set; 43.1 just does not eat your library.
Free means free — and what that excludes
Batocera is distributed as 100% free and open-source software with no dollar cost, licensed CC-BY-NC-SA, copyright © 2016–2026, and hosted on GitHub as batocera-linux/batocera.linux. It is maintained by the Batocera team — volunteers, not Sony, not Microsoft, not a company with a quarterly earnings call. As of February 8, 2026, DistroWatch catalogued it as a minimal distribution dedicated specifically to retro-gaming software, which is an accurate and unglamorous description. What "free" pointedly does not include: games. Batocera ships with zero ROMs and zero BIOS files. Those are copyrighted, the project cannot legally distribute them, and you are expected to supply them from media you own. The download is the machine; you bring the cartridges.
Prerequisites: Hardware & Software
Every failed Batocera install I have ever diagnosed traces back to skipping this section. Read it. The hardware floor and the one CPU caveat below will save you a black-screen support thread.
The hardware floor
Batocera is famously light, but "light" is not "nonexistent." The practical minimums:
- RAM: 1 GB minimum, 2 GB recommended. EmulationStation itself is frugal; the emulators are what get hungry, and a Dreamcast or PS2 core will notice if you starved it.
- Storage: 16 GB minimum, 32 GB or larger strongly recommended. This is not arbitrary — Batocera disables its own auto-update mechanism on drives smaller than 16 GB, because it cannot guarantee room to stage a new image. Undersize the card and you have quietly opted out of updates.
- CPU (the trap): the version 43 PC image targets the x86_64-v3 microarchitecture baseline, which requires AVX2 — roughly Intel Haswell (2013) or AMD Excavator and newer. A genuinely ancient netbook will download the image, flash it, and then greet you with a black screen forever. If your target machine predates 2013, you need an older Batocera release, not this one.
The image will run happily on a Raspberry Pi 4 or 5, an Odroid, a range of handhelds, or — the sweet spot for most desktop setups — any cheap x86 mini PC. The oft-cited Beelink-class boxes are popular precisely because they clear every floor above with room to spare and cost less than a AAA collector's edition.
What you will download
The PC (x86_64) image is distributed as a gzip-compressed disk image. Expect a compressed .img.gz download of roughly 3 GB, decompressing to about 8 GB once written to the drive. The filename follows a consistent pattern: batocera-x86_64-<version>-<date>.img.gz, e.g. batocera-x86_64-43-20260530.img.gz. That single image contains support for over 200 retro gaming systems, from the Atari 2600 through to modern handheld targets — you are not downloading per-console packs, it is all in the one file.
The software you need on your PC
Exactly one tool is mandatory: an image writer. The Batocera project recommends Balena Etcher, a free cross-platform flasher available from etcher.balena.io. Etcher's two virtues matter here: it reads .img.gz directly (no manual decompression) and it validates the write afterward, catching a bad card before it wastes your time. Command-line purists can use dd on Linux/macOS instead, and I will show both. You will also want a USB 3.0 flash drive or a decent SD card of at least 16 GB — and a mediocre card is the single most common cause of a flash that "finishes" but never boots.
Picking the Right Image
The download page is a menu, not a single link, and choosing the wrong item is a silent failure — the flash succeeds, the boot does not. Slow down here for ten seconds.
PC / x86_64 (and the microarchitecture caveat)
Head to the primary download URL, batocera.org/download, which lists images for handhelds, Raspberry Pi, Odroid, and PC in one place. For any standard desktop, laptop, or mini PC — Intel or AMD — you want the x86_64 image. This is the one built on the x86_64-v3 baseline described above. There is no separate "Intel" and "AMD" download; one image covers both. If you are installing to a Raspberry Pi 5, a Pi 4, or an Odroid, pick that board's specific image instead — an ARM board cannot boot an x86 image, and vice versa. This is the number-one selection mistake.
Raspberry Pi, Odroid, and handhelds
Batocera and Recalbox both ship official, current Raspberry Pi 5 images — a point worth noting if you are cross-shopping distributions, because the other big name in the space made a different call. RetroPie, as I covered in the piece on RetroPie's stalled PC image as the Pi hits £30.50, has not shipped an official Pi 5 image and has no x86 installer at all. If your target is a Pi 5 or a supported handheld, Batocera's download page has a ready image; you do not need a build farm. Each hardware target on the page is a distinct file — read the label, match it to the silicon in your hand.
Verifying the download
A corrupted download is indistinguishable from a good one until it fails to boot, at which point you will blame the flash, the card, and the BIOS in that order — never the 3 GB file that arrived with a flipped bit. Do not skip verification. The download page publishes checksums; hash your file and compare before you flash.
# Linux / macOS — hash the compressed image and compare to the site
sha256sum batocera-x86_64-43-20260530.img.gz
# Expected: one long hex string that must match the checksum on batocera.org
a3f5c1...9e2c batocera-x86_64-43-20260530.img.gzOn Windows, certutil -hashfile batocera-x86_64-43-20260530.img.gz SHA256 does the same job. If the string does not match the site, delete the file and download again — ideally from one of the regional mirrors linked on the download page, which are also your fastest option if the main server is crawling.
The 12-Step Flash (~30 Min)
This is the core of the job. Twelve steps, roughly thirty minutes wall-clock, most of which is the machine writing and validating while you drink something. Each step has a reason attached, because "just do it" tutorials are how people brick SD cards. If you want the same sequence framed as a standalone quick-reference, we keep one at Batocera 43.1: 12 steps to flash in 30 minutes; the version below adds the rationale.
Download and decompress
- Confirm your hardware clears the floor. Check RAM (≥1 GB), storage (≥16 GB, or you forfeit auto-updates), and — critically — that the CPU supports x86_64-v3/AVX2. Rationale: every prerequisite failure manifests later as a vague symptom; catching it now is free, catching it after a black screen is an afternoon.
- Select the correct image on batocera.org/download. x86_64 for PCs; the board-specific image for a Pi, Odroid, or handheld. Rationale: the wrong architecture flashes cleanly and never boots — the most demoralizing kind of failure because nothing errors.
- Download the
.img.gz. Roughly 3 GB. If the main server is slow, use a regional mirror from the same page. Rationale: mirrors exist specifically to spare you a stalled 3 GB transfer. - Verify the checksum. Hash the file (see the previous section) and compare to the published value. Rationale: a corrupt image is the invisible cause behind a large share of "won't boot" reports.
Etcher can flash the compressed .img.gz as-is. Only decompress manually if you intend to use dd:
# Etcher reads .img.gz directly. Only unzip if you plan to use dd:
gunzip -k batocera-x86_64-43-20260530.img.gz
# -k keeps the original .gz. Result: a ~8 GB batocera-x86_64-43-20260530.imgWrite with Balena Etcher
- Install and launch Balena Etcher from etcher.balena.io. Rationale: it is cross-platform, reads
.gznatively, and — the part that matters — validates the write. - Select the image, then select the target drive. Etcher greys out your system disks by default. Rationale: that safeguard is the only thing standing between a careless click and a wiped Windows install. Respect it; do not override it unless you are certain.
- Flash, and let it run. Writing ~8 GB to a USB 3.0 stick takes a few minutes. Rationale: pulling the drive early leaves a half-written image that looks complete and boots to garbage.
- Let Etcher validate the write. Do not skip the verification pass. Rationale: this is where a failing SD card outs itself — better now than after you have copied 40 GB of ROMs onto it.
Command-line devotees can substitute dd. Identify the target device first — get this wrong and you overwrite the wrong disk, and dd does not ask twice:
# 1) Find the USB device — NOT your system disk
lsblk -dpno NAME,SIZE,MODEL
# Expected output (example):
/dev/sda 931G Samsung SSD 970 EVO <- your system disk: DO NOT TOUCH
/dev/sdb 29G SanDisk Ultra USB <- the target
# 2) Write the raw image. This ERASES /dev/sdb entirely.
sudo dd if=batocera-x86_64-43-20260530.img of=/dev/sdb bs=4M status=progress conv=fsyncBoot and let userdata expand
- Move the drive to the target machine and set the boot order. Enter firmware (usually
F2,F12,Del, orEscat power-on), put USB/removable first, and disable Secure Boot. Rationale: Secure Boot rejects Batocera's unsigned kernel; leave it on and the machine will simply boot back into its old OS, looking like the flash failed. - Boot Batocera and let userdata auto-expand. On first boot it grows its data partition to fill the drive. Give it a minute; do not power-cycle it mid-expansion. Rationale: interrupt this and you get the classic "my 256 GB card only shows 8 GB free" complaint.
- Complete first boot: language, controller, and network. EmulationStation walks you through controller mapping; set language and Wi-Fi from the main menu. Rationale: a mapped controller and a network connection are the baseline for everything that follows, including updates and scraping.
- Add ROMs and BIOS, then update the gamelists. Copy your files over the network share or via the F1 file manager (next section), then refresh gamelists so EmulationStation sees them. Rationale: Batocera ships empty; until you feed it, the carousel is a list of systems with nothing inside.
When step 10 goes right, the first boot ends on the EmulationStation system carousel — a horizontal row of console logos. If you see that, the operating-system half of the job is done; everything from here is content and configuration. For the deeper mechanics of installation across hardware, the canonical reference is the project's own install_batocera wiki page.
First Boot: Language, Wi-Fi, SSH
You are booted into EmulationStation with a mapped controller. Now make the machine usable on your network and reachable from your desk. Everything here is doable from the on-screen menu, but the moment you want to move real volumes of files you will want SSH.
Controller, display, and refresh rate
The first-run wizard handles controller mapping; if you skipped it, START → CONTROLLER SETTINGS re-runs it. For the display, SYSTEM SETTINGS exposes resolution and — on capable hardware — variable refresh. If your panel and GPU support it, enabling VRR smooths the tearing that plagues emulators running at native console refresh rates. That whole subject used to carry a $300 hardware tax that, as I documented in the piece on G-Sync versus FreeSync in 2026, is now effectively dead — which means enabling adaptive sync on a Batocera box costs you nothing but a menu toggle.
Wi-Fi and the encrypted key
Ethernet is plug-and-play. For Wi-Fi, NETWORK SETTINGS → ENABLE WIFI, pick your SSID, and enter the passphrase. One detail that alarms people who later peek at the config file: your Wi-Fi key is stored in plaintext until the first reboot, after which Batocera re-encrypts it in place to an enc:xxxx string. That is expected behavior, not a leak. If your passphrase contains spaces or shell-special characters and you are editing the file by hand, each such character must be backslash-escaped — a detail I will return to in the configuration section.
Enabling and — please — securing SSH
SSH is the fastest way to inspect and configure a running Batocera box. It is enabled by default; the credentials are user root, password linux. Yes, that is a well-known default, which is exactly why you should change it if this machine lives on a network with anyone you would not hand a controller to.
# Default credentials: user root, password linux (CHANGE THIS)
ssh root@BATOCERA.local
# Once in, the entire writable world lives under /userdata:
ls /userdata
# bios cheats decorations music roms saves screenshots system themesThat /userdata tree is the whole game: roms/ for content, bios/ for firmware, saves/ for save states and memory cards, and system/ for configuration — including the batocera.conf file we will build later. The rest of the image is read-only and gets replaced wholesale on update, which is why every persistent thing you care about is deliberately corralled under this one directory.
Adding ROMs & BIOS Files
Batocera is now a beautiful, empty jukebox. This section fills it. Three methods, one legal reminder, and the single most common reason a game refuses to launch.
The network share method (easiest)
Batocera exposes its /userdata tree as a network share named share, enabled by default. From another computer on the same network, connect to it and drag files straight in — no cables, no re-flashing.
# Windows / macOS (Explorer / Finder -> Connect to Server):
\\BATOCERA\share
smb://BATOCERA.local/share
# Linux:
smb://BATOCERA.local/share
# If name resolution fails, use the IP shown in NETWORK SETTINGS:
\\192.168.1.50\share
# Drop files into:
share/roms/<system-shortname>/ e.g. share/roms/snes/, share/roms/psx/
share/bios/ e.g. share/bios/scph5501.binThe system shortname is the part people fumble. SNES ROMs go in roms/snes/, PlayStation in roms/psx/, Genesis in roms/megadrive/ — not whatever name you would guess. Every system folder contains a _info.txt file that lists exactly which ROM formats that emulator accepts. Read it before you copy 500 files into the wrong place. The authoritative, per-system reference is the add_games_bios wiki page.
The F1 file manager and USB method
No second computer handy? Batocera has a built-in file manager. On the system list (not inside a game), press F1 on a connected keyboard to open it — confirmed working on PC, Raspberry Pi 4, and several handheld platforms. Plug in a USB drive full of ROMs and you can copy them across to /userdata/roms/<system>/ directly on the device, no network required. This is the approach for a headless mini PC sitting under a TV with no other machine in reach. After copying by any method, update the library: START → GAME SETTINGS → UPDATE GAMELISTS, or restart EmulationStation. Skip this and freshly copied games simply will not appear — the front end caches its lists and will not notice new files on its own.
Where BIOS files go — and why they are missing
Some systems — PlayStation, Sega CD, Neo Geo, and others — refuse to run without their original BIOS, and Batocera ships with none of them, because distributing copyrighted firmware is not something a volunteer project is going to do on your behalf. You supply your own, from hardware you own, and they live in /userdata/bios/ with specific filenames and, often, specific checksums. The definitive cross-emulator list of what goes where, with expected hashes, is the libretro project's BIOS reference in the libretro docs. Batocera also has a built-in checker: MAIN MENU → GAME SETTINGS → MISSING BIOS CHECK tells you precisely which files a given system still needs and whether the ones you provided have the right hash.
A word on sourcing the ROMs themselves, since it is the question everyone dances around: you are legally on the hook for owning the media. Curated, legally-grey "complete sets" are a category unto themselves — the sort of aggregated list I picked apart in the write-up on the Miyoo Mini Plus and its 6,041-game list — and Batocera takes no position beyond shipping empty. What it hands you is the player; the cartridges are between you and your conscience.
The batocera.conf File
Ninety percent of Batocera is configurable from the on-screen menus, and for most people that is enough. The other ten percent — and every automation, backup, or reproducible setup — lives in a single text file. Learn its shape and you never have to click through the same menus twice.
Anatomy of batocera.conf
The master configuration file is /userdata/system/batocera.conf. It is a flat list of key=value lines with # for comments. Global settings, network credentials, audio, controller behavior, and per-system emulator choices all live here. Because it sits under /userdata, it survives updates — the read-only OS around it gets replaced, your config does not. Back this one file up and you have backed up your entire configuration.
Global versus per-system keys
Keys come in two flavors. Global keys prefixed with global. apply everywhere — global.smooth, global.rewind, global.bezel, global.retroachievements. Per-system keys are prefixed with the system shortname and override the global for that console alone — snes.core, psx.emulator, and so on. The resolution order runs from most specific to least: a per-game override beats a per-system setting, which beats the global. This is how you run most systems on the default core but pin one stubborn console to a specific emulator. Those cores are, under the hood, the same libretro cores you would install into a standalone RetroArch — the ~200-option catalogue I walked through in the RetroArch cores guide — so if you know which core you prefer for a system there, the same name works here.
Applying changes without a reboot
You do not have to reboot to apply config changes, and you do not have to hand-edit the file at all if you would rather not. Batocera ships a command-line tool for exactly this:
# Read a single key
batocera-settings-get audio.volume
# 90
# Set a key without hand-editing the file
batocera-settings-set wifi.enabled 1
# Or edit directly, then reload settings from the menu (no reboot):
nano /userdata/system/batocera.confThe full, authoritative syntax — quoting rules, the backslash-escaping for special characters, the encrypted-key behavior — is documented on the batocera.conf syntax wiki page. When in doubt, that page is the source of truth; content farms routinely get the escaping rules wrong.
Common Pitfalls & Fixes
These are the failures I see over and over. None of them are exotic. All of them look, in the moment, like Batocera is broken, and none of them are.
Flashing and boot failures
Pitfall 1 — "It flashed fine but boots to Windows." Nine times out of ten this is Secure Boot still enabled, or the firmware still booting the internal disk first. Enter firmware setup, disable Secure Boot, move USB/removable to the top of the boot order. On some machines you must also toggle between UEFI and Legacy/CSM boot modes to find the one Batocera likes.
Pitfall 2 — "Batocera splash appears, then black screen forever." On PC hardware, suspect the x86_64-v3 requirement: a pre-2013 CPU without AVX2 will load far enough to show a splash and then die when the graphics stack initializes. There is no fix on that silicon short of using an older Batocera release. Newer hardware with this symptom usually wants a different GPU driver option from the boot menu.
Storage and update traps
Pitfall 3 — "My 256 GB card only shows a few GB." The userdata partition did not expand on first boot — you likely interrupted it. Reflash and let the first boot finish untouched, or expand the partition manually from the storage menu. Pitfall 4 — "The update option is greyed out." Your drive is under 16 GB, and Batocera disables auto-update below that threshold by design. The fix is a bigger card, not a setting. Pitfall 5 — "My systems and collections vanished after a reboot." That is the signature bug of version 43, and it is precisely what 43.1 fixed. If you flashed 43, update to 43.1 and it stops. If you somehow still have it on 43.1, refresh gamelists.
ROM, BIOS, and controller mistakes
Pitfall 6 — "The game shows as a folder, or won't launch." Either the ROM is in the wrong system folder, or its format is not in that system's _info.txt, or you never updated the gamelists. Check all three in that order. Pitfall 7 — "Emulator says missing BIOS." Wrong filename, wrong location, or wrong checksum — run the built-in Missing BIOS Check and cross-reference the libretro BIOS docs. Pitfall 8 — "My controller acts like a keyboard." That was a real version 43 bug where Microsoft controllers were misdetected; 43.1 fixes it. Update, then re-pair.
Troubleshooting Table
The quick-reference version. Symptom on the left, the actual cause in the middle — because the obvious cause is usually wrong — and the fix on the right.
Boot, display, and storage
| Symptom | Likely cause | Fix |
|---|---|---|
| Etcher: "Something went wrong" / validation failed | Failing SD card, bad reader, or flaky cable | Try a different card and reader; never skip Etcher's validation pass |
| Splash appears, then permanent black screen (PC) | CPU lacks x86_64-v3 / AVX2 (pre-2013) | Use an older Batocera release, or newer hardware |
| Machine boots its old OS, ignores the drive | Secure Boot on, or wrong boot order/mode | Disable Secure Boot; set USB first; try UEFI vs Legacy |
| Large card shows only a few GB free | Userdata did not auto-expand on first boot | Reflash and let first boot finish; or expand via storage menu |
| Update option greyed out | Drive smaller than 16 GB | Move to a 32 GB+ card; auto-update needs the headroom |
Content, controllers, and network
| Symptom | Likely cause | Fix |
|---|---|---|
| Systems/collections vanish after reboot or scrape | Version 43 EmulationStation database bug | Update to 43.1 (fixed there); refresh gamelists |
| Controller behaves like a keyboard | Version 43 Microsoft-controller misdetection | Update to 43.1; re-pair the controller |
| Copied ROMs don't appear | Gamelists not refreshed / wrong system folder | START -> GAME SETTINGS -> UPDATE GAMELISTS; verify shortname |
| Emulator reports missing BIOS | Wrong filename, location, or checksum | Run Missing BIOS Check; cross-check libretro BIOS docs |
| Wi-Fi won't connect after editing the config | Unescaped special character in wifi.key | Re-enter via menu; backslash-escape spaces and symbols |
| DS games gone after upgrading from v42 | DraStic removed; DS now runs on melonDS | Re-add via melonDS; note that DraStic saves do not transfer |
Advanced Tips
Once the basics work, these are the moves that separate a functional Batocera box from a well-run one. None are required; all are quietly useful.
Faster downloads and offline upgrades
If the main batocera.org server is slow — it happens on release day — grab the image from a regional mirror linked on the download page; the community mirror at mirrors.o2switch.fr/batocera is a reliable one. For upgrades on a machine that cannot reach the internet, Batocera supports a manual offline upgrade: drop the appropriate boot.tar.xz into the boot partition and let the system apply it on next start. The exact procedure, including which file to grab for your build, is on the upgrade_manually wiki page. This is also the safest way to move between major versions when you would rather stage the file yourself than trust an over-the-air update on a flaky connection.
Beta channels and version pinning
The updates.type key toggles your update channel between stable and beta. On stable you get 43.1 and its successors when they are blessed. On beta you get nightly-ish builds — genuinely useful if you are chasing a fix for hardware that just shipped, genuinely risky if this is the box the family uses on movie night. Set it deliberately. If you want to verify exactly what changed between builds before you jump, the project publishes a running changelog, and the raw commit-level record lives in the GitHub repository's changelog file.
Migrating from v42 and the breaking changes
If you are upgrading from the version 42 cycle rather than installing fresh, budget time for a handful of deliberate breaks in version 43. Nintendo DS emulation dropped DraStic in favor of melonDS, and DraStic saves do not transfer — plan to re-verify your DS saves. Nintendo 3DS ROMs must now be decrypted (encrypted .3ds dumps are supported again, but hardware shaders default to off), and Azahar Plus was folded back into plain Azahar. TheXTech requires updated 1.3.7-or-later assets. Earlier in the 42 line, vkQuake replaced the old Quake engine, TR1X took over Tomb Raider from OpenLara, Visual Pinball replaced Future Pinball, and ScummVM unified its save handling. None of these are catastrophic; all of them will confuse you at 1 a.m. if you did not know they were coming.
A Complete batocera.conf
To close, here is a full, working /userdata/system/batocera.conf using only keys verified against the official wiki. Treat it as a starting skeleton: change the SSID, the timezone, the RetroAchievements name, and the per-system cores to taste, then drop it in and reload from the menu.
The full file
## /userdata/system/batocera.conf — global + per-system overrides
## Syntax reference: https://wiki.batocera.org/batocera_conf_syntax
## --- System ---
system.hostname=BATOCERA
system.language=en_US
system.timezone=America/New_York
## --- Updates (stable | beta) ---
updates.type=stable
## --- Wi-Fi (key is re-encrypted to enc:xxxx on first reboot) ---
## Spaces and special characters in the key must be backslash-escaped.
wifi.enabled=1
wifi.ssid=YourNetworkSSID
wifi.key=YourWifiPassphrase
## --- Audio ---
audio.volume=90
## --- Global emulator behaviour ---
global.smooth=1
global.rewind=0
global.integerscale=0
global.shaderset=none
global.bezel=thebezelproject
global.retroachievements=1
global.retroachievements.username=YourRAName
## --- Controllers ---
controllers.bluetooth.enabled=1
## --- Per-system overrides ([system].core / [system].emulator) ---
snes.core=snes9x
snes.emulator=libretro
nes.core=fceumm
nes.emulator=libretro
psx.core=swanstation
psx.emulator=libretroLine-by-line rationale
The system.* block sets identity and locale — system.hostname is what your machine answers to on the network (BATOCERA.local), so change it if you run more than one. updates.type=stable keeps you on blessed releases like 43.1. The wifi.* block connects you headlessly; remember the plaintext key becomes enc:xxxx after the first reboot, which is normal. The global.* keys set defaults for every system at once: smooth for bilinear filtering, rewind off (it costs performance), integerscale off, no global shader, the Bezel Project overlays on, and RetroAchievements enabled with your username. The per-system block at the bottom demonstrates overriding the default core for three consoles — SNES on snes9x, NES on fceumm, PlayStation on SwanStation — each of which beats the global default for that system alone.
Verifying it applied
After dropping the file in, confirm it took without a reboot: batocera-settings-get audio.volume should echo 90, and batocera-settings-get updates.type should echo stable. If a value does not read back, you have a syntax error — almost always an unescaped special character or a stray space around the =. Fix it, reload settings from the menu, and re-check. That is the whole system: one image, one data directory, one config file. Download 43.1, verify it, flash it, feed it your own cartridges — and the machine under your TV becomes 200 machines, none of which phone home to a corporation for permission to turn on.
Questions the search bar asks me
- Is Batocera really free, and does it come with games?
- Yes on the first count, no on the second. Batocera 43.1 is 100% free and open-source (CC-BY-NC-SA, © 2016–2026) with $0 cost at batocera.org/download. It ships with zero ROMs and zero BIOS files — those are copyrighted, so you supply them yourself from media you own.
- What is the difference between Batocera 43 and 43.1?
- Version 43 "Glasswing" (May 8, 2026) was a deep rebuild of the graphics stack (Wayland/LabWC) and moved PCs to the x86_64-v3 baseline. Version 43.1 (May 30, 2026) is a stability patch that fixed vanishing systems/collections, LR-Dolphin options, light-gun support, and controllers being misdetected as keyboards. Download 43.1.
- How big is the download and what size card do I need?
- The PC image is a ~3 GB compressed .img.gz that decompresses to about 8 GB when written. You need at least a 16 GB card — Batocera disables auto-updates below that — and 32 GB or larger is recommended once you add ROMs, BIOS files, and saves.
- Will installing Batocera erase my Windows or Linux drive?
- No, as long as you flash it to a USB stick or SD card and boot from that. Batocera replaces the boot process but runs entirely from the removable drive; your internal disk is untouched. Pull the drive and the machine boots its original OS as if nothing happened.
- Can an old PC run Batocera 43.1?
- Only if the CPU supports the x86_64-v3 microarchitecture, which requires AVX2 — roughly Intel Haswell (2013) or AMD Excavator and newer. Older machines will flash the image but hang on a black screen after the splash. For pre-2013 hardware, use an earlier Batocera release instead.