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!