Question about PM3 MAX hardware platform (PM3GENERIC vs PM3ULTIMATE)

Hello Amal,

First of all, thank you for the excellent Proxmark3 guide. It helped me understand how the bootloader, firmware and client work together.

I have a Chinese Proxmark3 MAX clone and I am trying to compile the RRG/Iceman firmware from source.

While reading your guide, I noticed the different hardware platforms such as PM3GENERIC, PM3RDV4, PM3ULTIMATE and PM3ICOPYX.

My question is:

Which hardware platform does the Chinese PM3 MAX actually use?

Should it be compiled as PM3GENERIC, or is it actually PM3ULTIMATE?

I have successfully built firmware for PM3GENERIC, but I would like to understand the hardware differences before flashing anything else.

Also, what happens if the wrong platform (for example PM3ULTIMATE instead of PM3GENERIC) is selected during compilation? Could this affect USB communication, FPGA loading, memory layout, or other hardware functions?

I would really appreciate your advice, since there is a lot of conflicting information about PM3 MAX devices on the Internet.

Thank you very much for your time.

Best regards,

Hüseyin KILINÇ

TĂĽrkiye

Neither buddy, you want
ICOPY-X and PM3 Max

Screenshot:

Git link:

3 Likes

Thank you very much for your reply.

Just to confirm:

Should I compile the latest Iceman firmware with:

PLATFORM=PM3ICOPYX
PLATFORM_EXTRAS=FLASH

and flash it directly to the Chinese PM3 MAX?

Or should I use the proxmark3-max repository instead of the latest Iceman repository?

Thank you very much for your help.

Hüseyin KILINÇ

For Iceman branch this is correct for the MAX

1 Like

Hello Amal,
Thank you very much for your previous reply.
Before I flash my PM3 MAX, I would like to make sure I use the correct firmware.
Could you please tell me which firmware/repository you recommend for my PM3 MAX?
If possible, could you provide the official GitHub repository or a direct download link?
I want to avoid flashing incompatible firmware.
Thank you very much for your help.
Best regards, Hüseyin KILINÇ

There is only one…

3 Likes
2 Likes

Hi Amal,
I successfully compiled the latest Iceman source from GitHub.
However, the build summary reports:
Platform name: Proxmark3 RDV4
PLATFORM: PM3RDV4
My hardware is a PM3 MAX (iCopy-X hardware).
After flashing, the Proxmark3 client cannot communicate with the device and reports a communication error.
Is this expected, or am I building for the wrong platform?
Should I instead compile using:
PLATFORM=PM3ICOPYX
PLATFORM_EXTRAS=FLASH
If possible, could you also point me to the correct firmware or branch for the PM3 MAX hardware?
Thank you very much!

when you set this in Makefile.platform you must also “comment out” or remove entirely the other PLATFORM and PLATFORM_EXTRAS lines in the file. If you do not, then the first lines encountered by the compiler will be what is compiled. Make these changes and recompile.

Thank you!
In my source tree there is no Makefile.platform, only Makefile.platform.sample.
Should I copy Makefile.platform.sample to Makefile.platform and edit that file, or should I modify another file instead?

2 Likes

yes that is a problem.

yes this is the exact instruction in the documentation. copy the file, then edit it to comment out the PLATFORM and PLATFORM_EXTRAS lines you do not want and uncomment the PLATFORM and PLATFORM_EXTRAS lines you do want. after your edits, the only working PLATFORM related lines should be;

PLATFORM=PM3ICOPYX
PLATFORM_EXTRAS=FLASH

Thank you for your help.
I understand that I should create Makefile.platform from Makefile.platform.sample and set:
PLATFORM=PM3ICOPYX
PLATFORM_EXTRAS=FLASH
My remaining question is:
Which source tree/repository should I use for this build?
Should I build from the official RRG/Iceman Proxmark3 repository, or from the iCopy-X open-source repository?
If neither is correct, could you please point me to the correct repository or branch for building the firmware for my PM3 MAX?
I want to make sure I am using the correct source before compiling and flashing the firmware.

I don’t know. If it were me I would use the Iceman fork.

3 Likes

All of your suggestions have been correct so far, thank you!
I successfully built the firmware using:
PLATFORM=PM3ICOPYX
PLATFORM_EXTRAS=FLASH
The build completed successfully, and I now have:
bootrom.elf
fullimage.elf
Before flashing my PM3 MAX, I’d like to make sure I use the correct procedure.
Should I simply run pm3-flash-all, or is there a different flashing method you recommend for PM3 MAX?
I’d rather confirm first than risk flashing the wrong image.

Thanks again!

Hi Amal,
I went ahead and flashed the firmware we built.
The flashing process completed successfully using pm3-flash-all, and the device boots normally.
However, I noticed two unexpected things:
hw version reports:
Firmware… PM3 GENERIC
instead of something identifying the PM3 MAX / iCopy-X build.
It also reports:
FPGA firmware… chip mismatch
Even though I built the firmware with:
PLATFORM=PM3ICOPYX
PLATFORM_EXTRAS=FLASH
The device is still functional:
Bootrom and OS were flashed successfully.
HF and LF tuning both work.
hw tune completes successfully.
The client connects normally.
Is this expected for PM3 MAX hardware, or does it indicate that I built or flashed the wrong FPGA image?
Thank you again for your help.

I can also provide screenshots of the hw version output and the hw tune results if that would help.

Post your makefile

Hi Amal,
I rebuilt the firmware from the latest Iceman/RRG master branch.
Build configuration:
PLATFORM=PM3ICOPYX
PLATFORM_EXTRAS=FLASH
The firmware compiles successfully without any errors.
After flashing, hw version reports:
Firmware: PM3 GENERIC
Current FPGA image: fpga_icopyx_hf.ncd
FPGA firmware: chip mismatch
hw status also shows that the current FPGA image is:
fpga_icopyx_hf.ncd
The hardware appears to work correctly. I can successfully detect and read both HF and LF RFID cards without any problems, so the device is functional.
However, it always reports PM3 GENERIC instead of PM3 ICOPYX, and FPGA firmware: chip mismatch is always displayed.
Is this expected behavior with the current master branch, or does it indicate that something is missing or incorrect during the build or flashing process?
Could the “chip mismatch” message explain why the firmware identifies itself as PM3 GENERIC instead of PM3 ICOPYX?
If you need any additional logs, command outputs, or test results, I’ll be happy to provide them.
Thank you very much for your help.

Post your makefile

Dear Amal, thank you very much for your kind answers to my questions and your advice, but I’m giving up on this Proxmark business; I’ve thrown the device in the bin…

1 Like

Probably for the best

1 Like