# Compilation instructions # Table of Contents - [Compilation instructions](#compilation-instructions) - [Table of Contents](#table-of-contents) - [Tuning compilation parameters](#tuning-compilation-parameters) - [Compile for Proxmark3 RDV4](#compile-for-proxmark3-rdv4) - [Compile for generic Proxmark3 platforms](#compile-for-generic-proxmark3-platforms) - [Get the latest commits](#get-the-latest-commits) - [Clean and compile everything](#clean-and-compile-everything) - [if you got an error](#if-you-got-an-error) - [Install](#install) - [Flash the BOOTROM & FULLIMAGE](#flash-the-bootrom--fullimage) - [Run the client](#run-the-client) - [Next steps](#next-steps) ## Tuning compilation parameters ^[Top](#top) The client and the Proxmark3 firmware should always be in sync. Nevertheless, the firmware can be tuned depending on the Proxmark3 platform and options. Indeed, the Iceman fork can be used on other Proxmark3 hardware platforms as well. Via some definitions, you can adjust the firmware for a given platform, but also to add features like the support of the Blue Shark add-on or to select which standalone mode to embed. To learn how to adjust the firmware, please read [Advanced compilation parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md). ### Compile for Proxmark3 RDV4 ^[Top](#top) The repo defaults for compiling a firmware and client suitable for Proxmark3 RDV4. ### Compile for generic Proxmark3 platforms ^[Top](#top) In order to build this repo for generic Proxmark3 platforms we urge you to read [Advanced compilation parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md) ## Get the latest commits ^[Top](#top) ```sh cd proxmark3 git pull ``` ## Clean and compile everything ^[Top](#top) ```sh make clean && make -j ``` ### if you got an error ^[Top](#top) Read the [troubleshooting guide](/doc/md/Installation_Instructions/Troubleshooting.md), For instance, on WSl-1 you usually get the `libQt5Core.so.5 not found` message [solution](/doc/md/Installation_Instructions/Troubleshooting.md#libQt5Coreso5-not-found) ## Install ^[Top](#top) This is an optional step. If you do ```sh sudo make install ``` Then the required files will be installed on your system, by default in `/usr/local/bin` and `/usr/local/share/proxmark3`. Maintainers can read [this doc](../Development/Maintainers.md) to learn how to modify installation paths via `DESTDIR` and `PREFIX` Makefile variables. The commands given in the documentation assume you did the installation step. If you didn't, you've to adjust the commands paths and files paths accordingly, e.g. calling `./pm3` or `client/proxmark3` instead of just `pm3` or `proxmark3`. ## Flash the BOOTROM & FULLIMAGE ^[Top](#top) In most cases, you can run the following script which try to auto-detect the port to use, on several OS: ```sh pm3-flash-all ``` For the other cases, specify the port by yourself. For example, for a Proxmark3 connected via USB under Linux (adjust the port for your OS): ```sh proxmark3 /dev/ttyACM0 --flash --unlock-bootloader --image bootrom.elf --image fullimage.elf ``` The firmware files will be searched in the expected locations (installed files, working repo files, user folder, etc.). You can also specify their location: ```sh pm3-flash -b /tmp/my-bootrom.elf /tmp/my-fullimage.elf ``` or ```sh proxmark3 /dev/ttyACM0 --flash --unlock-bootloader --image /tmp/my-bootrom.elf --image /tmp/my-fullimage.elf ``` ## Run the client ^[Top](#top) In most cases, you can run the script `pm3` which try to auto-detect the port to use, on several OS. ```sh ./pm3 ``` For the other cases, specify the port by yourself. For example, for a Proxmark3 connected via USB under Linux: Here, for example, for a Proxmark3 connected via USB under Linux (adjust the port for your OS): ```sh proxmark3 /dev/ttyACM0 ``` or from the local repo ```sh client/proxmark3 /dev/ttyACM0 ``` ## Next steps ^[Top](#top) For the next steps, please read the following pages: * [Validating proxmark client functionality](/doc/md/Use_of_Proxmark/1_Validation.md) * [First Use and Verification](/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md) * [Commands & Features](/doc/md/Use_of_Proxmark/3_Commands-and-Features.md)