Hi everyone,
I’m Danilo, and I’ve been working on adding official board support for the Pycom LoPy and LoPy4 to the upstream MicroPython project (v1.27.0+, ESP-IDF v5.4/v5.5.1).
As many of you know, Pycom’s MicroPython fork was archived in September 2024 (last commit February 2022), leaving LoPy/LoPy4 owners stuck on an ancient codebase based on MicroPython ~v1.20. I wanted to change that.
What’s been done so far:
Board definitions for both PYCOM_LOPY (ESP32 + SX1272) and PYCOM_LOPY4 (ESP32 + 8MB flash + 4MB PSRAM + SX1276)
A unified SX1272/SX1276 LoRa driver in Python (the only one in the MicroPython ecosystem that supports both chips)
LoRaWAN 1.0.x MAC layer with OTAA and ABP activation (Class A)
OTA firmware update support (dual app partitions)
Named pin mapping (P0-P23 + LORA_* pins) matching Pycom documentation
Hardware validation test scripts
All four build configurations compile successfully (LoPy, LoPy4, LoPy OTA, LoPy4 OTA)
A MicroPython contributor (robert-hh) has already done a trial build and confirmed WiFi works on actual LoPy4 hardware!
Pull Requests currently open:
Main PR (board definitions + driver + LoRaWAN + OTA + tests): https://github.com/micropython/micropython/pull/19026
Board images: https://github.com/micropython/micropython-media/pull/116
SX127x driver + LoRaWAN packages for micropython-lib: https://github.com/micropython/micropython-lib/pull/1102
Why this matters:
With this port, LoPy/LoPy4 owners get access to 7 years of MicroPython improvements: f-strings, async/await, proper asyncio, TLS 1.3, BLE 5.0, WPA3, and thousands of bug fixes. All while keeping LoRa functionality.
Collaboration welcome!
Since SG Wireless now maintains the Pycom legacy, I’d love to collaborate. If anyone from the SG Wireless team or the community would like to help with testing, reviewing, or extending this work (e.g., adding support for FiPy, GPy, or other Pycom boards), please feel free to jump in! The PRs are open and ready for review.
If you have a LoPy or LoPy4 board gathering dust, now’s a great time to dust it off!
Cheers,
Danilo