Skip to content
Iceman edited this page Jan 22, 2019 · 9 revisions

Table of Contents

GUI Requirements

In order to get the data plotting GUI working, you will need an X server installed on Mac OS. Download and install XQuartz from here: https://www.xquartz.org/, which should work out of the box after logging out & back in to your account.

Installing from HomeBrew tap

The easiest way to build Proxmark3 project on macOS is to use official homebrew tap.

This method is recommended and tested on macOS Sierra 10.12.3

1. Install homebrew if you haven't yet already done so: http://brew.sh/

2. Tap proxmark repo:

 brew tap proxmark/proxmark3 

3. Install Proxmark3:

for stable release

brew install proxmark3

for latest non-stable from GitHub (use this if previous command fails)

brew install --HEAD proxmark3

For more information go to https://github.com/Proxmark/homebrew-proxmark3

Compiling from source manually (Legacy)

Preparing Environment With MacPorts or HomeBrew

Preparing Proxmark3 Software

1. Open a terminal: (Command-SPACE Terminal)

2. Download and install components essential to build the Proxmark from 
source:

  • Option 1) Using MacPorts
  sudo port install p7zip readline libusb libusb-compat perl5 wget qt5 arm-none-eabi-gcc pkgconfig
  • Option 2) Using HomeBrew
  brew tap nitsky/stm32
  brew install readline libusb p7zip libusb-compat wget qt5 pkgconfig arm-none-eabi-gcc

If you choose to use HomeBrew, you need add QT to PKG_CONFIG_PATH so that pkg-config can find QT5.

  export PKG_CONFIG_PATH=/usr/local/Cellar/qt5/<< INSTALLED VERSION >>/lib/pkgconfig/

And you need add moc_location in Qt5Core.pc file.

  export QT_PKG_CONFIG_QT5CORE=$(find /usr -name Qt5Core.pc 2>/dev/null)
  chmod 666 $QT_PKG_CONFIG_QT5CORE
  echo "moc_location=\${prefix}/bin/moc" >> $QT_PKG_CONFIG_QT5CORE
  chmod 444 $QT_PKG_CONFIG_QT5CORE

In order to avoid any compilation error related to readline you must force link creation:

  brew link --force readline

3. Install Xcode from the AppStore, this will install the compiler and toolchain ; gcc, make, etc.

4. Check out the latest revision of the Proxmark project:

 git clone https://github.com/Proxmark/proxmark3.git

5. You have just downloaded the github master directory to your Mac Home Directory. Enter the Proxmark3 Directory.

 cd proxmark3

Detect installed bootrom in the Proxmark3

6. Insert the Proxmark and run

 system_profiler SPUSBDataType

7. in the output, you will find Proxmark3's Vendor ID and Product ID

CDC Proxmark3 (pre-2017-04-24):

 Product ID: 0x504d
 Vendor ID: 0x2d2d

HID Proxmark3, or CDC Proxmark3 (since USB descriptor fix on 2017-04-24):

 Product ID: 0x4b8f
 Vendor ID: 0x9ac4

If your Proxmark3 is a HID device, you will need to upgrade it to CDC bootrom by continuing to Upgrading Proxmark3 from HID to CDC. If your Proxmark is a CDC device you can to jump to Compiling.

Example of a full USB device from system_profiler output (Proxmark3 with CDC bootrom):

        Communication Device:

          Product ID: 0x4b8f
          Vendor ID: 0x9ac4
          Version:  0.01
          Speed: Up to 12 Mb/sec
          Manufacturer: proxmark.org
          Location ID: 0x14200000 / 21
          Current Available (mA): 500
          Current Required (mA): 500
          Extra Operating Current (mA): 0

Upgrading Proxmark3 from HID to CDC

8. Disconnect the Proxmark3 from USB.

9. Compile the bootrom, OS and software

 make clean; make

10. Compile HID compatible flasher program, in order to flash the newer bootloader image.

 cd client/hid-flasher;make

("ld: warning: directory not found for option '-L/usr/local/lib'" is benign and can be ignored)

11. Install the dummy kernel driver to disconnect Apple's HID drivers from the Proxmark3 (requires super-user permissions):

 sudo make install_kext
 sudo kextcache -system-caches

(reboot may be required if step 13 fails)

12. Press the button on Proxmark3 and KEEP IT PRESSED while you reconnect the Proxmark3 to USB. The Proxmark3 LED's RED & YELLOW lights up.[sidenote:] After five seconds you can release the button.

13. Use the HID flasher to upgrade the bootrom:

 ./flasher -b ../../bootrom/obj/bootrom.elf

14. Return to the root of the source code:

 cd ../..

15. Disconnect the Proxmark3 from USB. Press the button on Proxmark3 and KEEP IT PRESSED while you reconnect the Proxmark3 to USB. KEEP THE BUTTON PRESSED! The Proxmark3 LED's RED & YELLOW lights up [sidenote:]

16. While keeping the button pressed, figure out the device name of the Proxmark3:

 ls /dev/cu*

You should see a device named "/dev/cu.usbmodem####" where the #### is a number. If there are more than one usbmodem, you can disconnect the Proxmark3 and see which one disappears.

17. While still keeping the button pressed, use the CDC flasher to update the FPGA and OS:

 ./client/flasher /dev/cu.usbmodem#### armsrc/obj/fullimage.elf


18. Disconnect the Proxmark3 from the USB and release the button.

Skip to Testing, as your software is compiled and up to date.

Compiling

19. Compile the bootrom, OS and software

 make clean; make

20. Disconnect the Proxmark3 from USB. Press the button on Proxmark3 and KEEP IT PRESSED while you reconnect the Proxmark3 to USB. You can release the button when you see orange and red LED lit side by side. [sidenote:]

  • For Elechouse v2 Proxmark3 or Elechouse v3 Proxmark3 Easy you do not need to press button
21. Figure out the device name of the Proxmark3:
 ls /dev/cu*

You should see a device named "/dev/cu.usbmodem####" where the #### is a number. If there are more than one usbmodem, you can disconnect the Proxmark3 and see which one disappears.

Flashing Proxmark with NEW CDC Flasher

If you already have the new CDC Bootrom, but want to update it to the current Version:

Enter your Proxmark3 directory.

22. Update the bootrom, FPGA and OS:

 ./client/flasher /dev/cu.usbmodem#### -b bootrom/obj/bootrom.elf armsrc/obj/fullimage.elf


23. Disconnect the Proxmark3 from the USB

Testing

24. Connect the Proxmark3 to the USB. Wait a few Seconds for it to initialize.

25. Figure out the device name of the Proxmark3:

 ls /dev/cu*

You should see a device named "/dev/cu.usbmodem####" where the #### is a number. If there are more than one usbmodem, you can disconnect the Proxmark3 and see which one disappears.

If this is no device, try reseting the kernal extensions by:

 sudo rm -rf /System/Library/Extensions/Proxmark3.kext
 sudo make install_kext
 sudo kextcache -system-caches

26. Run the proxmark client and output the versions:

  cd proxmark3/client
 ./proxmark3 /dev/cu.usbmodem####
 hw version

Example output For Proxmark3 v2:

proxmark3> hw version
Prox/RFID mark3 RFID instrument          
bootrom: master/v2.2.0-142-g7ede3c7-dirty-suspect 2016-02-03 06:16:11
os: master/v2.2.0-142-g7ede3c7-dirty-suspect 2016-02-03 06:16:12
LF FPGA image built for 2s30vq100 on 2015/03/06 at 07:38:04
HF FPGA image built for 2s30vq100 on 2015/11/ 2 at  9: 8: 8
          
uC: AT91SAM7S512 Rev B          
Embedded Processor: ARM7TDMI          
Nonvolatile Program Memory Size: 512K bytes. Used: 167362 bytes (32). Free: 356926 bytes (68).          
Second Nonvolatile Program Memory Size: None          
Internal SRAM Size: 64K bytes          
Architecture Identifier: AT91SAM7Sxx Series          
Nonvolatile Program Memory Type: Embedded Flash Memory          

27. Test your Antennas.

 Proxmark3> hw tune

Example Output:

  Measuring antenna characteristics, please wait...#db# DownloadFPGA(len: 42096)                 
  .....#db# DownloadFPGA(len: 42096)                       
 # LF antenna: 35.61 V @   125.00 kHz          
 # LF antenna: 26.81 V @   134.00 kHz          
 # LF optimal: 39.05 V @   127.66 kHz          
 # HF antenna: 25.10 V @    13.56 MHz          
 Displaying LF tuning graph. Divisor 89 is 134khz, 95 is 125khz.
                    
 No GUI in this build!
 

28. Quit Proxmark Program:

 Quit