A Rust-based GUI application for extracting SWFL/BTLD files using XML configuration and UCL decompression.
- Rust toolchain (install from https://rustup.rs/)
- Windows (for the provided UCL DLL)
-
Install Rust if you haven't already:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
Build the application:
cargo build --release
-
The executable will be created at
target/release/bmw_virtual_reader.exe
-
Create portable package:
powershell -ExecutionPolicy Bypass -File build.ps1
-
Run the application:
cargo run --release
-
Click "Browse" next to "PSDZ Data Folder" to select your psdzdata directory
-
Click "File Browser" to open the file selection window
-
In the file browser:
- Use the search filter to find specific files (case-insensitive, handles
-
and_
interchangeably) - Select BTLD files by clicking "Select BTLD"
- Select SWFL files by clicking "SWFL1" and/or "SWFL2"
- Use the search filter to find specific files (case-insensitive, handles
-
Choose your output file location
-
(Optional) Check "Use Desired Size" and set the desired output file size in MB - if the combined files are smaller than this size, zero data will be appended to reach the target size. Required for some ECUs (e.g. EDC17C50 needs 4MB).
-
Click "Create binary" to process the selected files
The application automatically scans and supports the following PSDZ directory structure:
psdzdata/
├── swe/
│ ├── btld/ # Bootloader files (*.bin)
│ └── swfl/ # Software files (*.bin)