ISO Container Handling - krcenov/RNS510-Map-Viewer GitHub Wiki
ISO Container Handling
CD_8555.ISO is a UDF + ISO9660 "bridge" disc (2048-byte sectors,
standard for DVD data discs of this era).
The broken UDF layer
The UDF layer is broken in the original retail image — not something introduced by editing. The root directory's File Identifier Descriptors fail ECMA-167 validation, though the surrounding UDF structures (anchor volume descriptors, partition/logical volume descriptors, file set descriptor) all parse correctly. Real hardware and Windows Explorer both read this disc via its ISO9660 tree, not UDF — UDF is vestigial on this disc family.
Reading and writing
rns510_iso.py (project root):
open_tolerant(path)— opens the ISO withpycdlib, tolerating the broken UDF tree via a monkeypatch that treats the first unparsable File Identifier Descriptor as end-of-directory padding instead of raising.strip_udf(iso)— removes UDF state before writing, producing a clean, standard ISO9660-only image.
Round-trip verified byte-for-byte (SHA256 match) on the 590MB
eeu.rd file when unmodified. Full 6.48GB
open+write takes ~11 seconds.
No checksum, hash, or signing mechanism exists anywhere on the disc
— the official disc-mastering script (config/create_cd) is just
mkdir/cp commands. The only real risk from editing is internal
data-consistency (record counts, cross-reference indices), not any
copy-protection gate.
pycdlib gotcha
Use update_file_contents_fp(fp, length, iso_path=...) (pycdlib 1.20+)
to replace a file's content with a different size — no need for a
remove+re-add dance.
Deploying an edited ISO
The RNS510 doesn't read a map ISO directly from an SD card — a separate,
existing, already-verified community tool
(maps-tool 2.0.2, GPL/Apache-2.0 Java GUI, not written by this
project) handles that. First tested headlessly against CD_8555.ISO,
then fully decompiled (a real self-executing JAR — Python's own
zipfile opens the .exe directly; cfr + a winget-installed JDK
recover real Java source for all ~1,470 of its own classes):
Works unpatched, despite this disc (V17, 2019) being newer than
anything in the tool's own documentation (which only lists up to
V12/2014) — that's a stale help file, not an actual code restriction.
The only real validation gate is a region-code check, a real 4-value
enum (EU/EEU/AUNZ/NA), which this disc passes. It builds a
MAPS/MAPSDVD folder structure via a straight recursive byte-copy
from the ISO, with one real, narrow special case confirmed at the code
level: for exactly 2 old disc versions, CD_8048/CD_8049, it
rewrites a bundled CONFIG/CREATE_CD file before copying (a real
string-transform helper, not a "typo fix") — doesn't trigger on this
disc.
The sd_to_hdd_fw.iso bootstrap disc is GENERATED at build time,
not a static bundled file — and it silently includes the testmode/
speed-lockout unlock pattern documented on
SWL Disc: Boot Chain and Build System,
unconditionally, for every user, with no UI toggle anywhere in the
app. A bundled ZIP template resource is extracted and combined with
one region-matched VIM.WSH file, whose ENTIRE real content is the
already-known SetRegDataHex(0x21,...)/SetRegDataHex(0x0B3A,...)
pattern fused with the real SD-to-HDD copy shell procedure — the
built disc's own DLSCRIPT.TXT runs nothing else. Full writeup,
including the template's own real VERSION.TXT tying it directly to
an already-analyzed testmode build: the boot-chain page above.
The "compress" feature (strip resources to fit a single-layer DVD)
independently confirms, from this completely external tool, 2
filenames already known from disc analysis — POI.DB3 and
NA_SIRIUS.DB3 — as exactly what it deletes, plus 2 new ones:
POI.DB3N (a real string this tool checks for, never seen on any
disc examined here — plausibly a secondary POI variant) and a real
static SPEECHRES.XML resource the tool WRITES back after deleting
voice packs (not just a plain removal, as its own help.html implies).
Its "Maximum Compression" option, gated behind a real preference flag,
strips any file whose path contains the literal substring "TPD" —
plausibly the real tpd/ folder (the destination-search UI, see
config/create_cd and the Disc-Root Subsystems)
rather than eeu.tmc specifically, though not byte-verified against
an actual disc.
Real-world procedure (from the tool's own help.html): prepare an
8GB+ FAT32 SD card with MAPS/MAPSDVD/test.mp3, burn
sd_to_hdd_fw.iso to a blank DVD+R (slow speed, Track-at-Once), then
on the unit: insert the SD card (confirm test.mp3 plays), enter
Software Upgrade Mode (SETUP + EJECT + MIC/INFO buttons together),
insert the firmware DVD, confirm the prompt, wait ~30 min while it
copies SD → internal HDD.
This project's own tools stop at producing an edited ISO — run
maps-tool separately to prepare the actual SD card. See the
Road Editor Tool page for what's solid vs.
experimental about the edits themselves.