CLI alternative to PSA (Peugeot / Citroën / DS / Opel) infotainment system update (NAC / RCC firmware and navigation maps), hopefully more robust.
psa-update offers mostly the same features as the official firmware/map update application proposed by the car vendor, except that it does not format the USB device that has to be used to upload the firmware/map update to the car. Updates are exclusively downloaded from the official PSA site.
Features:
- Download of RCC / NAC firmware updates, and GPS navigation map updates (NAC only)
- Resume of download in case of failure
- Preparation of USB storage device for car system update
- Lightweight self-contained executable that can run on multiple platforms: Windows, Linux, MacOS
The command line executable can be invoked in a terminal using vehicle VIN as a parameter:
$ psa-update <VIN>
This will check for available RCC or NAC updates, and interactively ask for download and extraction of the firmware update to a USB device.
To check for updates of both firmware and GPS navigation map (NAC only):
$ psa-update <VIN> --map eur
The list of available maps identifiers can be obtained using the help:
$ psa-update --help
The update and license files must be copied to an empty FAT32 USB drive, eiter using the tool or manually.
Once copied to the USB drive, the update can be applied on the infotainment system following PSA instructions. For example for Peugeot:
On Linux, OpenSSL is required. On Windows and MacOS, nothing is required, the operating system TLS framework is used.
Binaries are available for Windows (x86-64), Linux (x86-64) and MacOS (x86-64) in the releases section.
To install, simply download and extract the psa-update
executable.
For other platforms the project can be built from source code (see below).
To build and run from source code using stable rust compiler toolchain (version 1.54+):
$ git clone https://github.com/zeld/psa-update.git
$ cargo run
Download is possible behind a proxy provided the http_proxy
and https_proxy
environment variables are correctly set.
In a Linux or MacOS shell:
export http_proxy=<host>:<port>
export https_proxy=<host>:<port>
In a Windows CMD prompt:
SET http_proxy=<host>:<port>
SET https_proxy=<host>:<port>
Logging can be enabled using the RUST_LOG
variable. For example to enable debug
log level:
RUST_LOG="debug" ./psa-update
- Inspired from the Linux script in this french forum post
- For the list of navigation maps, and associated content, this french forum post
- List of firmware and map updates on this site