- Select a Coalition/MUI XYZ ZIP already downloaded to this computer, then choose the mounted SD-card root.
- Turn the T-Deck off and remove its SD card before installation. Existing unrelated SD-card files are preserved.
-
+
+
+ Download a compatible MUI map ZIP from
+ Oxed's Map Tile Downloader.
+ Choose OSM Bright for current Pyxis compatibility.
+
+
Turn the T-Deck off, remove its microSD card, and insert the card into your computer.
+
Choose the downloaded ZIP below, enter a map name and pack ID, and wait for local validation.
+
Click Install and Enable, then choose the mounted SD-card root.
+
Safely eject the SD card, return it to the T-Deck, power it on, and open Maps.
+
+
Existing unrelated SD-card files are preserved. Map tiles are validated locally and are never uploaded.
diff --git a/docs/offline-map-packs.md b/docs/offline-map-packs.md
index 5e144d3d..faccfc29 100644
--- a/docs/offline-map-packs.md
+++ b/docs/offline-map-packs.md
@@ -6,7 +6,7 @@ Pyxis can read prebuilt raster map packs from an SD card. Importers accept only
Open the Pyxis web flasher in current Chrome or Edge and use **Install Offline Maps**:
-1. Download a Coalition/MUI XYZ ZIP separately.
+1. Download an OSM Bright MUI ZIP from [Oxed's Map Tile Downloader](https://download.tiles.coalition.space/).
2. Turn the T-Deck off, remove its SD card, and mount the card on the computer.
3. Choose the ZIP, enter a map name and pack ID, and wait for local validation.
4. Click **Install and Enable**, then choose the SD-card root.
diff --git a/tests/build_scripts/test_map_web_installer_contract.py b/tests/build_scripts/test_map_web_installer_contract.py
index adac9bb4..4f014ff5 100644
--- a/tests/build_scripts/test_map_web_installer_contract.py
+++ b/tests/build_scripts/test_map_web_installer_contract.py
@@ -27,6 +27,24 @@ def test_map_installer_ui_is_local_file_to_sd_and_offline_only() -> None:
assert "Map data (c) OpenStreetMap contributors" in source
+def test_map_installer_explains_the_complete_sd_card_workflow() -> None:
+ source = FLASHER.read_text(encoding="utf-8")
+ assert '' in source
+ assert (
+ 'href="https://download.tiles.coalition.space/" '
+ 'target="_blank" rel="noopener noreferrer"'
+ ) in source
+ expected_steps = (
+ "Download a compatible MUI map ZIP",
+ "Turn the T-Deck off",
+ "Choose the downloaded ZIP",
+ "Click Install and Enable",
+ "Safely eject the SD card",
+ )
+ positions = [source.index(step) for step in expected_steps]
+ assert positions == sorted(positions)
+
+
def test_map_installer_has_no_tile_network_fetch_path() -> None:
source = INSTALLER.read_text(encoding="utf-8").lower()
for forbidden in ("fetch(", "xmlhttprequest", "websocket", "http://", "https://"):