Install the core¶
Three steps: extract the zip, add two lines to MiSTer.ini, run one script. Do all three
and the core plays everything it can play — DVD images, physical discs, encrypted discs,
Video CDs — with 5.1 audio to a receiver over HDMI or optical.
Details for every step are further down.
1. Extract the zip¶
From the Releases page,
download MiSTer_DVD_v<version>.zip — the one zip, not the individual files listed
beside it.
Extract it to the root of your MiSTer SD card — /media/fat if you copy over the
network (SSH/SFTP) rather than pulling the card out.
2. Add two lines to MiSTer.ini¶
Add this to /media/fat/MiSTer.ini. Add the section, do not replace the file:
This is what enables physical discs, encrypted images, and bitstream audio over HDMI.
3. Run install_dvdcss¶
From the MiSTer Scripts menu, run install_dvdcss, once. It fetches libdvdcss, the library that decrypts CSS — which nearly every commercial DVD uses, and which is not shipped with this project.
Now launch DVD from the MiSTer menu and load a disc or an image. Images go in
/media/fat/games/DVD/ — the folder the file picker opens in. See
Loading a movie.
Steps 2 and 3 are one-time
To update later, just extract the new release zip. The MiSTer.ini section and
libdvdcss stay where they are — you never repeat them.
Everything below is detail — read it if something did not work, or if you want to know what each piece does.
What the zip puts where¶
/media/fat/
├── _Other/DVD_YYYYMMDD.rbf the core itself — move it elsewhere if you prefer
├── MiSTer_DVDcss optional custom Main (physical discs, encrypted ISOs)
├── Scripts/
│ ├── install_dvdcss.sh fetches libdvdcss
│ ├── set_dvd_region.sh reads/sets a USB drive's region
│ └── dvd_report.py builds a bug-report bundle
└── DVD_INSTALL.txt the same instructions, on the card
The core goes in _Other because a DVD player is not a console or computer category.
Nothing depends on that location — move the .rbf wherever you keep your cores.
MiSTer_DVDcss is the one file that must stay at the SD-card root.
Extracting the zip does not switch anything on. MiSTer_DVDcss sits inert until you
name it in MiSTer.ini, and the two scripts do nothing until you run them.
About step 2 — the MiSTer.ini section¶
If you skip step 2, the symptom is silence
Without those two lines the core behaves exactly as if MiSTer_DVDcss were not
installed. Decrypted images still play, so nothing looks broken — but physical discs
do nothing, encrypted images show CSS ENCRYPTED, and HDMI bitstream never engages.
There is no message pointing at the ini file, so this is worth double-checking if
something is not working.
main= is a stock MiSTer feature: whenever the DVD core is loaded, MiSTer runs
MiSTer_DVDcss instead of the stock Main. Every other core is unaffected. Delete the
section, or the binary, and the core reverts to image-only playback with nothing else
changed.
Reload the core after editing. The Main is chosen at core load, so an already-running core will not pick up the change.
Do not overwrite the stock /media/fat/MiSTer
MiSTer_DVDcss is an additional Main used only by this core. Both files live side
by side.
There is one optional key for the HDMI bitstream path, if your receiver misreports what it supports — see Bitstream passthrough.
About step 3 — libdvdcss¶
libdvdcss is not part of MiSTer and is not shipped here. It is loaded at runtime from a
copy you provide, and install_dvdcss fetches a prebuilt one to
/media/fat/dvdcss/libdvdcss.so.2. Override the source with DVDCSS_URL=..., or put a
glibc/armhf libdvdcss.so.2 there by hand.
If encrypted media is loaded without libdvdcss, the core shows CSS ENCRYPTED and mutes
rather than playing static — that is your cue to run the script. (Unencrypted discs and
already-decrypted images play without it, so nothing breaks if you have not got to this
step yet.)
Didn't use the zip? install_dvdcss.sh lives inside it, at Scripts/install_dvdcss.sh —
extract just that one file if you are placing things by hand.
Legal note
Cracking CSS may be regulated where you live; check the laws that apply to you. This project neither distributes libdvdcss nor contains any CSS circumvention code.
Optionally: set the drive region¶
Physical discs only. A drive with no region set makes every disc slow to start, because the CSS keys have to be cracked from the data instead of read from the drive. Run set_dvd_region from the Scripts menu to see the region and, if you want, set it.
Read its warnings first — a drive allows only about five region changes ever, and a region cannot be un-set. Full detail: Set the drive region.
The release assets¶
MiSTer_DVD_v<version>.zip is the one to download — it contains everything below, laid
out ready to extract. The individual files are attached as well, for placing things by hand
or grabbing a single piece:
| Asset | What it is |
|---|---|
MiSTer_DVD_v<version>.zip |
Everything below, laid out ready to extract to the SD root |
DVD_YYYYMMDD.rbf |
The core only — enough for decrypted ISOs, VCD/SVCD and video files |
dvd_report.py |
Repro-bundle collector (also inside the zip's Scripts/) |
MiSTer_DVDcss, install_dvdcss.sh and set_dvd_region.sh are inside the zip and are
not attached separately — they are only useful as part of an install.
Why dvd_report.py is also on its own
The on-player bundle chord (Audio + Subtitle, held) runs dvd_report.py rather
than reimplementing it, and looks for it at /media/fat/Scripts/dvd_report.py. If it
is missing the core says so on screen — "Support bundle needs dvd_report.py in
/media/fat/Scripts/" — so the file is attached separately for anyone following that
instruction, including people who installed through a third-party updater that only
takes the core and the Main.
Why the .rbf filename has a date and not a version
MiSTer's core browser and update scripts parse the YYYYMMDD out of the filename to
decide which build is newest, so the core file is always DVD_YYYYMMDD.rbf. The
version number lives in the release tag, the zip name, and the OSD — never in the
.rbf name. If you keep several builds on the card, MiSTer offers the newest by date.
Checking what you are running¶
The core's version is shown in the OSD as v0.3.0 260901 — the version followed by the
build date. Quote that line in any bug report; it is the only thing that identifies a
build unambiguously.
If you are running a test build — one handed out for feedback before a release — the
line names the feature instead of a version, like dev-seekrealign 260903. That is
correct, not a fault: a test build is not a release and deliberately cannot be mistaken
for one. Quote it the same way.
Updating¶
Extract the newer zip over the top. That is the whole update.
Steps 2 and 3 are one-time setup and never need repeating: your MiSTer.ini section stays
as you wrote it, and libdvdcss — along with any disc keys it has cached — is left alone.
The .rbf filenames differ by date, so old builds are not overwritten; delete them by hand
if you want them gone. MiSTer offers the newest by date either way.
Your settings may reset after an update
Saved settings live in /media/fat/config/DVD_v1.CFG, and the v1 is a layout
version. When a release changes the option layout incompatibly, that number is bumped
and your options fall back to their defaults rather than being misread. This is
deliberate — it replaces the older "please delete your config file" release note. Your
previous file is left on the card and simply ignored; it can be deleted.
Uninstalling¶
Delete DVD_*.rbf, MiSTer_DVDcss, the two scripts, and config/DVD_v1.CFG. If you added
a [DVD] section to MiSTer.ini, remove that too. Nothing else on the card is touched —
the core does not write outside its own config, except for the libdvdcss key cache at
/media/fat/dvdcss/ if you used encrypted media.