I’m cross-compiling .py files to .mpy for an EC200U-based board and hitting ValueError: incompatible .mpy file on import, even after matching the MicroPython version reported by the device.
The newer mpy-cross that ships by default (MicroPython v1.30.0-preview..., emitting mpy v6.3) — incompatible, as expected given the version gap.
Compiling with Quectel’s bundled Unisoc_Fotatools\mpy-cross.exe, which reports MicroPython v1.13 on 2020-10-03; mpy-cross emitting mpy v5 — still rejected on-device as incompatible.
Building mainline MicroPython from the v1.13 tag on GitHub myself, confirmed mpy-cross --version → MicroPython v1.13 on <date>; mpy-cross emitting mpy v5 — same result, still incompatible.
Both give the same reported mpy version (5) as the device’s base version, but the device’s sys.implementation.mpy is 10245, which (per MicroPython’s mp_raw_code layout) appears to encode more than just the base mpy version — likely a sub-version and/or native-arch feature flags specific to how QuecPython’s fork was built.
My questions:
What exact MicroPython source revision (commit hash or internal tag) does the EC200U_A firmware’s .mpy loader actually expect — is it stock v1.13, or a patched fork?
Does Quectel provide a public mpy-cross build matched to this firmware revision, beyond the one bundled in Unisoc_Fotatools? If so, where can we get the correct one?
Is there a documented way to decode sys.implementation.mpy (10245) back into the exact sub-version/flags needed, so we can build a matching mpy-cross ourselves?
Any pointers to the right internal MicroPython commit, build flags, or official tool would be hugely appreciated.