KNULLI Missing BIOS Warning? Put BIOS Files in the Correct Folder

Short Answer

For RetroArch cores on KNULLI, the logical BIOS directory is:

/userdata/bios

Copy your own legally obtained firmware dump to the exact relative path required by the core you are actually using. Match the filename, uppercase and lowercase letters, extension, subfolder or archive format, and documented MD5 exactly.

On a single-card setup, /userdata points to SD1’s SHARE partition. If KNULLI is configured to use SD2, /userdata points to the secondary card instead. Only one card is active as /userdata at a time, so copying a BIOS to the inactive card will not make it visible at /userdata/bios.

Then check the result in two places:

  1. KNULLI: Start → Game settings → Missing BIOS check
  2. RetroArch with the intended core loaded: Main Menu → Information → Core Information → Firmware

These checks are not equivalent. KNULLI can compare an expected MD5 when its metadata provides one. RetroArch Core Information checks whether the firmware path declared by the installed core metadata exists; Present is not a checksum result and does not prove that the core loaded the firmware successfully.

KNULLI does not include copyrighted BIOS files. This guide covers placement and validation of firmware you are legally entitled to use. It provides no downloads or acquisition instructions.

Version scope

  • Devices: RG CubeXX and other supported H700-series KNULLI devices
  • KNULLI: Firefly 20241204; Scarab 20260511 and current documentation retrieved 2026-10-06
  • RetroArch references: 1.19.1 and 1.22.2; installed core and core-info data can vary
  • Evidence: Official documentation and version-tagged or pinned source; no owner device result is claimed

Symptom: What the Missing BIOS Warning Means

KNULLI’s warning means its checker did not find a listed file at the expected path. It does not prove that every game is blocked from launching.

If the game is missing from the list rather than failing to launch, fix a game that is missing from the KNULLI list.

Some firmware is required. Some is optional. Some cores can fall back to high-level emulation, or HLE, with reduced compatibility. Other firmware is required only for a particular system, subsystem, or region.

The Scarab launch dialog warns that a game may not work correctly and still allows the launch to continue. KNULLI’s checker data also does not carry a required-versus-optional flag. An absent optional file can therefore appear in the checker without being a universal launch requirement.

Treat the warning as a diagnostic starting point:

  • identify the active storage;
  • identify the selected core;
  • read that core’s firmware requirements;
  • place and validate one correct file;
  • verify the result in both KNULLI and RetroArch;
  • relaunch the content.

Version Scope: Firefly, Scarab, RetroArch, and Core Data

Firefly 20241204 added RG CubeXX support. Scarab 20260511 supports revised H700 RG XX devices and explicitly updated RetroArch to 1.22.2.

The important BIOS path did not change between these releases. Their tagged KNULLI configuration generators both set RetroArch’s system_directory to /userdata/bios/.

The checker backend name did change:

  • Firefly uses batocera-systems.
  • Scarab uses knulli-systems.

Their tagged exact-path and MD5 checking logic is materially the same. Both use MISSING for an absent expected path and UNTESTED when a configured MD5 does not match.

Exact English menu labels are strongest for Scarab/current because Scarab pins the relevant EmulationStation source. Firefly release-era source is consistent with the same workflow, but its package followed a branch rather than an immutable EmulationStation commit. Language, theme, and version can also change visible wording.

RetroArch Core Information behavior is supported by both 1.19.1 and 1.22.2 source. The installed core’s .info metadata can be updated separately, so always read the details shown for the core currently loaded on the device.

Likely Causes

FACT: The file is not on the active /userdata storage

In a single-card setup, SD1’s SHARE partition is mounted as /userdata. In a dual-card setup configured to use SD2, the secondary card becomes /userdata. KNULLI mounts only one of them at that path at a time.

A file can therefore appear to be in a bios folder on a computer but still be invisible to KNULLI if it was copied to the inactive card.

FACT: The filename or case does not match

KNULLI is Linux-based and case-sensitive. Match the complete documented name character-for-character, including:

  • uppercase and lowercase letters;
  • spaces and underscores;
  • punctuation;
  • extension;
  • required subfolder.

For example, scph5501.bin and SCPH5501.BIN are different names on KNULLI.

FACT: A hidden or duplicate extension changed the real name

KNULLI documentation specifically warns about names such as:

  • name.bin.bin
  • name.bin.zip

This often happens when a desktop file manager hides known extensions. Make extensions visible on the computer used for the copy, then inspect the complete filename.

Do not assume that adding .zip makes a BIOS valid. KNULLI inspects a ZIP member only when its checker metadata explicitly defines one, and core documentation decides whether a particular archive form is supported.

FACT: The dump or revision does not match the documented MD5

A correct-looking filename does not validate the data inside the file. Compare the MD5 against the official page for the selected core when that page publishes one.

Renaming a different or corrupt dump does not turn it into the required revision. KNULLI reports a configured hash mismatch as UNTESTED; RetroArch can still show Present because its firmware display does not calculate hashes.

FACT: The wrong core’s BIOS instructions were followed

Firmware requirements belong to a particular core. A PlayStation BIOS name documented for PCSX ReARMed is not automatically valid for another PlayStation core or a standalone emulator.

Load the game, open Core Information, and note Core Name before following a firmware list.

FACT: A required subfolder or archive rule was ignored

Some cores require firmware in a subfolder. Some specific firmware is distributed to the core as an archive. Others require a raw file directly in the system directory.

Follow the selected core’s official relative path and archive form exactly. Do not flatten every subfolder, extract every archive, or zip raw BIOS files for convenience.

LIKELY CAUSE: RetroArch has been redirected beside the game

RetroArch can use the loaded content directory for system files when System Files are in Content Directory is enabled. Core Information displays a note and its Looking in path when this redirection is active.

Only investigate this branch if Core Information shows that it is looking beside the content instead of in /userdata/bios. Normal Firefly and Scarab KNULLI generation sets the System/BIOS directory to /userdata/bios/.

LIKELY CAUSE: KNULLI and installed core metadata differ

KNULLI’s checker and RetroArch Core Information use separate metadata systems. KNULLI checks its packaged list, while RetroArch reads firmware paths and required/optional flags from the installed core .info data.

Package or core-info updates can therefore produce different-looking lists. Report each result accurately instead of treating one as proof that the other is wrong.

UNCONFIRMED UNTIL CHECKED: The core sees the file but does not use it

RetroArch Present proves only that the declared path exists. It does not prove a matching hash, a supported revision, an enabled core option, or successful runtime loading.

Check the official core page, MD5, region, relevant core option, and a fresh content launch before drawing a conclusion.

Step-by-Step Fix

This procedure copies one known file. It does not move, delete, reformat, reflash, or replace a BIOS collection in bulk.

1. Identify the active storage

Confirm which card KNULLI currently uses as /userdata.

  • On a single-card setup, use the bios folder on SD1’s SHARE partition.
  • When dual-card storage is configured for SD2, use the bios folder on that active secondary card.

The physical card changes, but the logical KNULLI path remains /userdata/bios. If needed, verify KNULLI’s selected second-SD storage first.

2. Identify the actual RetroArch core

Launch a legally owned game that needs the firmware.

With that core loaded, open:

Main Menu → Information → Core Information

Record the Core Name. In the Firmware section, also record:

  • the displayed filename or relative path;
  • Required or Optional;
  • the Looking in directory.

Menu placement can differ with language, menu driver, theme, or KNULLI customization.

3. Read the official page for that exact core

Check its documented:

  • case-sensitive filename;
  • relative subfolder, if any;
  • raw-file or archive requirement;
  • region or revision;
  • MD5, when published;
  • required, optional, or fallback behavior;
  • core option needed to enable the firmware, if documented.

Do not use a universal BIOS pack or a list written for another core.

4. Copy one legally obtained dump

Copy—not move—the firmware from your own safe source or backup into:

/userdata/bios/[documented relative path]

Keep the original copy untouched until verification is complete. Do not delete existing files or replace the entire folder.

5. Check the complete filename

Make file extensions visible on the computer used for the copy. Confirm that the file does not end in an accidental duplicate extension such as .bin.bin or .bin.zip.

Match the documented uppercase/lowercase form exactly. Renaming is appropriate only when the underlying dump is already the documented revision; a new name cannot correct the wrong data.

6. Validate the documented MD5

When the selected core’s official page publishes an MD5, compare it with the copied file.

  • A match supports that the file is the documented dump.
  • A mismatch means the file is not the documented hash, even if its filename looks correct.

Do not bypass or dismiss a mismatch by renaming the file.

7. Run KNULLI’s checker

On Scarab/current KNULLI, open:

Start → Game settings → Missing BIOS check

Interpret the result carefully:

  • MISSING: the checker did not find the exact expected path.
  • UNTESTED: the file exists, but its MD5 does not match the configured expected hash.

KNULLI’s checksum test is strict, and its documentation notes that some mismatching files may still work. That does not validate a mismatch or make it the officially documented dump.

The checker does not separately test file size, and its list does not identify required versus optional firmware.

8. Cross-check in RetroArch Core Information

With the intended core loaded, return to:

Main Menu → Information → Core Information → Firmware

Read both the status and Looking in path.

  • Present, Required or Present, Optional: the declared path exists.
  • Missing, Required or Missing, Optional: the declared path does not exist.

RetroArch derives required/optional status from the installed core .info metadata. It does not calculate the BIOS MD5 here.

Back out and reopen Core Information to refresh this presence display. The tagged RetroArch code reruns the path check when building the screen; a full KNULLI reboot is not the first required step.

9. Relaunch the content

Close and relaunch the legally owned game so the core gets a fresh opportunity to load the firmware.

Then assess runtime behavior. A file can be present yet still be the wrong revision, wrong region, disabled by a core option, or unsuitable for the loaded content.

Representative Core Examples

These examples show why one universal BIOS list is unsafe. They apply only to the named cores and current official documentation retrieved 2026-10-06.

PCSX ReARMed: PlayStation BIOS with HLE fallback

PCSX ReARMed looks for documented BIOS files directly under /userdata/bios/. Its current priority list is:

  • PSXONPSP660.bin — MD5 c53ca5908936d412331790f4426c6c33
  • scph101.bin — MD5 6e3735ff4c7dc899ee98981385f6f3d0
  • scph7001.bin — MD5 1e68c231d0896b7eadcad1d7d8e76129
  • scph5501.bin — MD5 490f666e1afb15b7362b406ed1cea246
  • scph1001.bin — MD5 924e392ed05558ffdb115408c263dccf

Use one documented dump with its exact name, case, and matching hash. These are direct files in the KNULLI BIOS directory, not a general instruction to archive them.

If none is found, PCSX ReARMed searches additional retail scph* names and can fall back to HLE. The official documentation warns that HLE has lower compatibility, so the absence of a real BIOS is not the same as a guaranteed launch block.

mGBA: optional Game Boy Advance BIOS

For the mGBA core, the documented file is:

/userdata/bios/gba_bios.bin

MD5:

a860e8c0b6d573d191e4ec7db1b1e4f6

This BIOS is optional. mGBA uses it only when Use BIOS file if found is enabled. A Present result does not prove that this option is on.

The documented placement is a direct file in /userdata/bios, with no extra subfolder or ZIP form specified for this item.

Genesis Plus GX: region-specific Sega/Mega CD BIOS

Genesis Plus GX requires a region-matching BIOS for Sega/Mega CD content:

  • Europe: /userdata/bios/bios_CD_E.bin — MD5 e66fa1dc5820d254611fdcdba0662372
  • USA: /userdata/bios/bios_CD_U.bin — MD5 854b9150240a198070150e4566ae1290
  • Japan: /userdata/bios/bios_CD_J.bin — MD5 278a9397d192149e84e820ac621a8edd

These are direct files in /userdata/bios. Match the BIOS region to the Sega/Mega CD game.

The same core separately lists several Mega Drive, Master System, and Game Gear boot ROMs as optional. Do not mistake those optional cartridge-system files for the required regional Sega CD firmware.

Other cores can use different layouts. Official Libretro guidance notes that some require subfolders, and KNULLI only inspects ZIP members when checker metadata explicitly calls for that form. Always follow the selected core’s own documentation instead of applying these three layouts to every system.

Verification

Use this sequence after copying the firmware:

  1. Confirm the file is on the card currently mounted as /userdata.
  2. Confirm the full logical path starts with /userdata/bios and includes any required subfolder.
  3. Confirm the exact case-sensitive filename and visible extension.
  4. Confirm the MD5 when an official value is available.
  5. Run KNULLI’s Missing BIOS check and note MISSING, UNTESTED, or the absence of a warning.
  6. Launch a legally owned game with the intended RetroArch core.
  7. Open Core Information → Firmware and check Looking in, required/optional status, and Present/Missing.
  8. Back out and reopen Core Information if you need to refresh its display.
  9. Close and relaunch the content so the core can load the file again.
  10. Check behavior without assuming that either checker alone proves successful firmware use.

A strong result is consistent across all layers: correct active storage, documented path and MD5, an appropriate KNULLI checker result, RetroArch looking in the expected directory, and correct behavior after a fresh launch.

Firefly vs Scarab and Current KNULLI

What stayed the same

  • Firefly 20241204 and Scarab 20260511 both configure RetroArch’s System/BIOS directory as /userdata/bios/.
  • Changing active storage changes the card mounted at /userdata, not the logical BIOS path.
  • Both tagged checker implementations use exact paths and configured MD5 values.
  • Both distinguish an absent path from a configured hash mismatch.

No evidence in the tagged sources supports a claim that Scarab moved the BIOS directory.

What changed

  • Firefly’s checker command is named batocera-systems; Scarab’s is knulli-systems.
  • Scarab pins the EmulationStation source used to confirm the exact current English menu labels.
  • Scarab explicitly updates RetroArch to 1.22.2 and supports revised H700 RG XX hardware.

Scarab’s broader warning about changed files and paths under system does not establish a change to /userdata/bios. The tagged Scarab configuration still uses that same logical directory.

If It Still Fails

Follow the branch that matches the evidence you see.

KNULLI still says MISSING

  • Recheck the active SD card.
  • Compare the full relative path, case, punctuation, and extension character-for-character.
  • Look for .bin.bin or .bin.zip.
  • Confirm that a required subfolder was not flattened.
  • Confirm that an archive was not created or extracted contrary to the core’s documentation.

KNULLI says UNTESTED

  • Compare the MD5 with the official page for the selected core.
  • Confirm region and firmware revision.
  • Do not try to fix the mismatch by renaming the file.
  • Treat KNULLI’s note that some mismatches may work as a compatibility caveat, not proof of correctness.

RetroArch says Missing

  • Check Looking in.
  • Confirm the intended core is loaded.
  • If RetroArch is looking beside the game, inspect the content-directory system-files setting or relevant override.
  • Compare the displayed relative path with the installed core’s official requirements.
  • Back out and reopen Core Information to rerun its presence check.

RetroArch says Present, but the game still has a problem

  • Validate the MD5; Present is not a checksum test.
  • Check the exact core, region, and revision.
  • Check any documented core option that enables or selects the BIOS.
  • Close and relaunch the content.
  • Review core or frontend logs if available.

Do not delete the BIOS directory, replace files in bulk, format an SD card, or reflash KNULLI as a first response to one firmware warning.

The two checkers disagree

Record both results.

  • KNULLI reports against its packaged path/hash metadata.
  • RetroArch reports path existence and required/optional flags from the installed core .info metadata.

Confirm the core name and consult that exact core’s current official page. A disagreement can be a metadata/version difference rather than proof that either interface validated the other.

FAQ

Does every BIOS file go directly in /userdata/bios?

No. /userdata/bios is the system-directory root, but some cores require a specific subfolder or archive form. Follow the selected core’s official relative path.

Does every KNULLI Missing BIOS warning prevent a game from starting?

No. The warning is diagnostic. Firmware can be required, optional, region-specific, or replaceable by an HLE fallback, depending on the core and content.

Does RetroArch Present mean the BIOS is correct?

No. It means the firmware path declared by the installed core metadata exists. It does not verify an MD5 or successful runtime use.

Which checker validates the MD5?

KNULLI’s checker compares MD5 when its metadata supplies an expected hash. RetroArch Core Information performs a path-existence check instead.

Did Scarab change the BIOS folder used by Firefly?

No difference was found in the tagged configuration. Both releases map RetroArch’s System/BIOS directory to /userdata/bios/.

Should I reboot KNULLI after copying a BIOS?

Not as the first step. Reopen Core Information to refresh its presence check, then close and relaunch the content so the core can try to load the firmware again. A full reboot can remain a later diagnostic if a specific issue justifies it.

Can I rename any BIOS to the expected filename?

No. The filename and the file data are separate checks. Use the documented revision and verify its MD5 when one is published.

Sources

KNULLI path, storage, and BIOS guidance

KNULLI checker and menu implementation

RetroArch firmware display and presence checks

Core-specific requirements and legal verification

Release scope