Due to the widespread usage of RFID technology, we decided to buy a Proxmark3 with all the extension (except for the case of course, who needs that anyway). After going through the bureucracy of the customs office, I could finally start working on the technology issues of the gadget.
First of all, the FPGA and the MCU in the unit comes preprogrammed, and a ZIP file is available from the official website with a Linux client. The first problem was the client, which was provided in a binary form, and required old versions of several libraries. After creating a few symlinks, it ran, but crashed during antenna tuning with a SIGFPE (I didn't even know such signal existed till now).
Next step was to download and compile the latest code from the Google Code project site following the Compiling page on their wiki. The instructions are clear and mostly correct, the first problem comes with the dependencies that the tools/install-gnuarm4.sh script is trying to find on wrong URLs, and since the script doesn't check the return values of the wget calls, 404s cause weird errors as the script keeps running even if download fails.
As of 27 August 2011, the following URLs needed to be changed:
- MPFR 2.4.2 is no longer current, and the project has its own domain name, thus it's available at http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.gz
- The GDB version used by the script (6.8) was deleted from sourceware, one of the servers I found it on was http://ftp.gnu.org/gnu/gdb/gdb-6.8.tar.bz2
The last obstacle was a problem (apparently) specific to the Hungarian locale
(hu_HU.UTF8) used by me, as reported by the Arch Linux guys (and as far as my
Google searches found, noone else). Because of this, sed
crashed during cross
build environment buildup, and for now, the only fix is setting the LANG
environment variable to something else (like "C").
This way, the ARM crossbuild environment can be built and make
can be started.
In order to build the firmware, the common/Makefile.common file also needs
to be changed according to the following diff. With this last change done, I
managed to build the firmware and the client successfully.
--- common/Makefile.common (revision 486)
+++ common/Makefile.common (working copy)
@@ -20,7 +20,7 @@
all:
-CROSS ?= arm-eabi-
+CROSS ?= arm-elf-
CC = $(CROSS)gcc
AS = $(CROSS)as
LD = $(CROSS)ld