Document compilation options

This commit is contained in:
Philippe Teuwen 2019-07-12 01:48:39 +02:00
parent e51b4f0fdd
commit cbfd195abf
3 changed files with 102 additions and 33 deletions

View file

@ -1,6 +1,7 @@
# Proxmark3 RDV4.0 Dedicated Github # Proxmark3 RDV4.0 Dedicated Github
This repo is based on iceman fork for Proxmark3. It is dedicated to bringing the most out of the new features for Proxmark3 RDV4.0 new hardware and design. This repo is based on iceman fork for Proxmark3. It is dedicated to bringing the most out of the new features for Proxmark3 RDV4.0 new hardware and design.
Note that it also supports other Proxmark3 platforms as well!
[![Build status](https://ci.appveyor.com/api/projects/status/ct5blik2wa96bv0x/branch/master?svg=true)](https://ci.appveyor.com/project/iceman1001/proxmark3-ji4wj/branch/master) [![Build status](https://ci.appveyor.com/api/projects/status/ct5blik2wa96bv0x/branch/master?svg=true)](https://ci.appveyor.com/project/iceman1001/proxmark3-ji4wj/branch/master)
[![Latest release](https://img.shields.io/github/release/RfidResearchGroup/proxmark3.svg)](https://github.com/RfidResearchGroup/proxmark3/releases/latest) [![Latest release](https://img.shields.io/github/release/RfidResearchGroup/proxmark3.svg)](https://github.com/RfidResearchGroup/proxmark3/releases/latest)
@ -15,7 +16,7 @@ This repo is based on iceman fork for Proxmark3. It is dedicated to bringing the
|[Development](#development) | [Important notes on ModemManager for Linux users](/doc/md/Installation_Instructions/ModemManager-Must-Be-Discarded.md) | [Validating proxmark client functionality](/doc/md/Use_of_Proxmark/1_Validation.md) | |[Development](#development) | [Important notes on ModemManager for Linux users](/doc/md/Installation_Instructions/ModemManager-Must-Be-Discarded.md) | [Validating proxmark client functionality](/doc/md/Use_of_Proxmark/1_Validation.md) |
|[Why didn't you base it on official PM3 Master?](#why-didnt-you-base-it-on-official-pm3-master)| [Homebrew (Mac OS X) & Upgrading HomeBrew Tap Formula](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md) | [First Use and Verification](/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md)| |[Why didn't you base it on official PM3 Master?](#why-didnt-you-base-it-on-official-pm3-master)| [Homebrew (Mac OS X) & Upgrading HomeBrew Tap Formula](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md) | [First Use and Verification](/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md)|
|[PM3 GUI](#pm3-gui)|[Setup and build for Windows](/doc/md/Installation_Instructions/Windows-Installation-Instructions.md)|[Commands & Features](/doc/md/Use_of_Proxmark/3_Commands-and-Features.md)| |[PM3 GUI](#pm3-gui)|[Setup and build for Windows](/doc/md/Installation_Instructions/Windows-Installation-Instructions.md)|[Commands & Features](/doc/md/Use_of_Proxmark/3_Commands-and-Features.md)|
|[Issues](#issues)|[Blue shark manual](/doc/bt_manual_v10.md) || |[Issues](#issues)|[Blue shark manual](/doc/bt_manual_v10.md) |[Advanced compilation parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md)|
|[Notes on UART](/doc/uart_notes.md)||| |[Notes on UART](/doc/uart_notes.md)|||
|[Notes on Frame format](/doc/new_frame_format.md)||| |[Notes on Frame format](/doc/new_frame_format.md)|||
|[Notes on Termux / Android](/doc/termux_notes.md)||| |[Notes on Termux / Android](/doc/termux_notes.md)|||

View file

@ -1,5 +1,16 @@
# Compilation instructions # Compilation instructions
## Tuning compilation parameters
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 RRG/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).
## Get the latest commits ## Get the latest commits
```sh ```sh
@ -15,48 +26,23 @@ make clean && make all
## Flash the BOOTROM & FULLIMAGE ## Flash the BOOTROM & FULLIMAGE
In most cases, you can run the script `flash-all.sh` which try to auto-detect the port to use, on several OS.
For the other cases, specify the port by yourself. For example, for a Proxmark3 connected via USB under Linux:
```sh ```sh
client/flasher /dev/ttyACM0 -b bootrom/obj/bootrom.elf armsrc/obj/fullimage.elf client/flasher /dev/ttyACM0 -b bootrom/obj/bootrom.elf armsrc/obj/fullimage.elf
``` ```
## Run the client ## Run the client
```sh In most cases, you can run the script `proxmark3.sh` which try to auto-detect the port to use, on several OS.
cd client
./proxmark3 /dev/ttyACM0
```
## Compiling for other boards For the other cases, specify the port by yourself. For example, for a Proxmark3 connected via USB under Linux:
Available boards Here, for example, for a Proxmark3 connected via USB under Linux:
| BOARD | PLATFORM |
|:---------------:|:---------------------------------------|
| `PM3RDV4` (def) | Proxmark3 rdv4 with AT91SAM7S512 |
| `PM3EVO` | Proxmark3 EVO with AT91SAM7S512 |
| `PM3EASY` | Proxmark3 rdv3 Easy with AT91SAM7S256 |
| `PM3RDV2` | Proxmark3 rdv2 with AT91SAM7S512 |
| `PM3OLD256` | Proxmark3 V1 with AT91SAM7S256 |
| `PM3OLD512` | Proxmark3 V1 with AT91SAM7S512 |
Create a file named `Makefile.platform` in the root directory of the repository:
```sh ```sh
# PLATFORM=${BOARD}
# Following example is to compile sources for Proxmark3 rdv3 Easy
PLATFORM=PM3EASY
```
From this point:
```sh
# Clean and compile
make clean && make all
# Flash the BOOTROM & FULLIMAGE
client/flasher /dev/ttyACM0 -b bootrom/obj/bootrom.elf armsrc/obj/fullimage.elf
# Run the client
cd client cd client
./proxmark3 /dev/ttyACM0 ./proxmark3 /dev/ttyACM0
``` ```

View file

@ -0,0 +1,82 @@
# Advanced compilation parameters
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 RRG/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.
## Client
The client doesn't depend on the capabilities of the Proxmark3 it's connected to.
So you can use the same client for different Proxmark3 platforms, given that everything is running the same version.
## Firmware
By default, the firmware is of course tuned for the Proxmark3 Rdv4.0 device, which has built-in support for 256kb onboard flash SPI memory, Sim module (smart card support), FPC connector.
These features make it very different from all other devices, there is non other like this one.
**Recommendation**: if you don't have a RDV4, we strongly recommend your device to have at least a 512kb arm chip, since this repo is on the very edge of 256kb limit.
A firmware built for the RDV4 can still run on the other platforms as it will auto-detect during boot that external SPI and Sim are not present, still it will boot faster if it's tuned to the platform.
If you need to tune things and save the configuration, create a file `Makefile.platform` in the root directory of the repository, see `Makefile.platform.sample`.
For an up-to-date exhaustive list of options, you can run `make PLATFORM=`.
## PLATFORM
Here are the supported values you can assign to `PLATFORM` in `Makefile.platform`:
| PLATFORM | DESCRIPTION |
|-----------------|----------------------------------------|
| PM3RDV4 (def) | Proxmark3 rdv4 with AT91SAM7S512 |
| PM3EVO | Proxmark3 EVO with AT91SAM7S512 |
| PM3EASY | Proxmark3 rdv3 Easy with AT91SAM7S256 |
| PM3RDV2 | Proxmark3 rdv2 with AT91SAM7S512 |
| PM3OLD256 | Proxmark3 V1 with AT91SAM7S256 |
| PM3OLD512 | Proxmark3 V1 with AT91SAM7S512 |
By default `PLATFORM=PM3RDV4`.
Known issues:
* 256kb Arm chip devices: The compiled firmware image from this repo may/will be too large for your device.
* PM3 Evo: it has a different led/button pin assignment. It tends to be messed up.
## PLATFORM_EXTRAS
Here are the supported values you can assign to `PLATFORM_EXTRAS` in `Makefile.platform`:
| PLATFORM_EXTRAS | DESCRIPTION |
|-----------------|----------------------------------------|
| BTADDON | Proxmark3 rdv4 BT add-on |
By default `PLATFORM_EXTRAS=`.
If you have installed a Blue Shark add-on on your RDV4, define `PLATFORM_EXTRAS=BTADDON` in your `Makefile.platform`.
## STANDALONE
The RRG/Iceman fork gives you to easily choose which standalone mode to embed in the firmware.
Here are the supported values you can assign to `STANDALONE` in `Makefile.platform`:
| STANDALONE | DESCRIPTION |
|-----------------|----------------------------------------|
| | No standalone mode
| LF_SAMYRUN (def)| HID26 read/clone/sim - Samy Kamkar
| LF_ICERUN | standalone mode skeleton - iceman
| LF_PROXBRUTE | HID ProxII bruteforce - Brad Antoniewicz
| LF_HIDBRUTE | HID corporate 1000 bruteforce - Federico dotta & Maurizio Agazzini
| HF_YOUNG | Mifare sniff/simulation - Craig Young
| HF_MATTYRUN | Mifare sniff/clone - Matías A. Ré Medina
| HF_COLIN | Mifare ultra fast sniff/sim/clone - Colin Brigato
| HF_BOG | 14a sniff with ULC/ULEV1/NTAG auth storing in flashmem - Bogito
By default `STANDALONE=LF_SAMYRUN`.
## Next step
See [Compilation instructions](/doc/md/Use_of_Proxmark/0_Compilation-Instructions.md)