cd micropython
cp -r ../micropython-olimex-esp32-p4/board-files/OLIMEX_ESP32_P4 ports/esp32/boards/
cp ../micropython-olimex-esp32-p4/board-files/sdkconfig.p4 ports/esp32/boards/
cp ../micropython-olimex-esp32-p4/board-files/sdkconfig.riscv ports/esp32/boards/
cp ../micropython-olimex-esp32-p4/board-files/dependencies.lock.esp32p4 ports/esp32/lockfiles/
cp ports/esp32/boards/ESP32_GENERIC_P4/mpconfigvariant_PRE_REV3.cmake ports/esp32/boards/OLIMEX_ESP32_P4/
).docker run --rm -v $PWD:/project -w /project -e HOME=/tmp -it espressif/idf:release-v5.5
cd ports/esp32 && make BOARD=OLIMEX_ESP32_P4 BOARD_VARIANT=PRE_REV3
PORT=/dev/serial/by-id/usb-Espressif*
esptool --port $PORT --chip esp32p4 -b 460800 --before default-reset --after hard-reset write-flash "@flash_args"
import mqtt_as_eth in python initialization. The normal mqtt_as does use WLAN-dependent code that won't work. Successfully connects to MQTT server and communicates messages
. Next up some soldering, but that is for later.--- /usr/lib/olinuxino/kernel.its.before-spi 2026-06-30 10:45:19.000000000 +0100
+++ /usr/lib/olinuxino/kernel.its 2026-11-09 21:53:39.849073203 +0000
@@ -153,6 +153,19 @@
algo = "sha1";
};
};
+overlay-4 {
+ data = /incbin/("/usr/lib/olinuxino-overlays/sun50i-a64/spi0-spidev.dtbo");
+ type = "flat_dt";
+ arch = "arm64";
+ compression = "none";
+ load = <0x4FA40000>;
+ hash-1 {
+ algo = "crc32";
+ };
+ hash-2 {
+ algo = "sha1";
+ };
+};
};
configurations {
@@ -178,7 +191,7 @@
description = "Boot Linux kernel ${VERSION} with A64-OLinuXino-2Ge8G-IND";
kernel = "kernel-1";
ramdisk = "ramdisk-1";
- fdt = "fdt-3", "overlay-1";
+ fdt = "fdt-3", "overlay-1", "overlay-2", "overlay-4";
compatible = "olimex,a64-olinuxino-2ge8g-ind";
};
cd /boot
sudo sh -c 'sed "s/\${VERSION}/$(uname -r)/g" \
/usr/lib/olinuxino/kernel.its > /boot/kernel-spi-test.its'
sudo mkimage -f /boot/kernel-spi-test.its /boot/kernel-spi-test.itb
E (30570) esp_eth: esp_eth_driver_install(209): can't set eth->mac or eth->phy to null
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
I've tried several intialization parameters but no luck (leaving some parameters out and trying out variations). The most correct I think is (based on schematic and micropython source):lan=network.LAN(0, mdc=Pin(31), mdio=Pin(52), phy_type=network.PHY_IP101, phy_addr=1, reset=Pin(51), ref_clk=Pin(50), ref_clk_mode=0)switch to partitions #0, OK
mmc0 is current device
scanning mmc 0:1 ...
Found U-Boot script /boot/boot.scr
2274 bytes read in 3mms (740.2 KiB/s)
## Executing script at 43100000
Bott script loaded from mmc
Checking for /uEnv.txt...
Checking for /boot/uEnv.txt
1156 bytes read in 2 mms
Boot script loaded from mmc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 111,8G 0 disk
└─sda1 8:1 0 111,8G 0 part /
mmcblk0 179:0 0 14,8G 0 disk
└─mmcblk0p1 179:1 0 14,8G 0 part