November 10, 2026, 04:57:42 AM

Recent posts

#1
A64 / SPI Bus on UEXT connector on A...
Last post by winfried - Today at 12:30:43 AM
Want to drive the Olimex ADS1262 (ADC converter) on the UEXT connector,
on my A64-OLinuXino-2Ge8G-IND, running OLIMAGE with kernel 5.10.180-olimex:

running `olinuxino-overlay`and selecting "spi0-spidev.dtbo" and reboot did not bring up the "/dev/spidev0.0" .

With help of "GPT-6.1 Terra" I got a solution, I do not understand at all, so I ask here if this is a valid/good solution ?

Here the summary:
---

A64-OLinuXino: SPI overlay in uEnv.txt was added.

No /dev/spidev* device appeared, and both SPI controllers were still marked disabled in the running device tree.

What was wrong:

This image boots from a FIT image (/boot/kernel.itb). Although /boot/boot.cmd imports uEnv.txt, it does not apply the fdtoverlays list in the FIT boot path. The FIT configuration for my board included the I²C0 overlay, but not the SPI overlays.

Also, two SPI0 overlays are needed:

sun50i-a64-spi0.dtbo enables the SPI0 controller.
spi0-spidev.dtbo adds the userspace SPI device on chip select 0.
The spi0-spidev overlay alone does not enable its parent controller.

What worked:
I backed up /boot/kernel.itb and edited the FIT template at /usr/lib/olinuxino/kernel.its:

Added an image entry for spi0-spidev.dtbo.
Added both the existing SPI0 controller overlay and the new spidev overlay to the config-8861 FDT list, keeping the existing I²C0 overlay.
Rebuilt /boot/kernel.itb and rebooted.
After reboot, /dev/spidev0.0 appeared.

The practical lesson for this image is that adding overlays to uEnv.txt was not sufficient: they had to be included in the FIT configuration actually used to boot the board. The same issue may affect other overlays listed only in uEnv.txt, such as a DS3231 RTC overlay.
---

I remember years ago, it was working with the "olinuxino-overlay", so I am not sure this is the right fix.

mfg winfried

Appendix patch:
--- /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
PS.: Will report when I also add the I2C DS3231 RTC2 Module to the same UEXT
#2
A64 / Re: Realtime scheduling for au...
Last post by winfried - Today at 12:11:12 AM
Intermediate result: Until now, I installed jackd and puredata as service: it runs for 2 Weeks and is stable , everything seems fine.
 :)
#3
ESP32 / Re: ESP32-P4 micropython port
Last post by puhuri - November 07, 2026, 01:33:58 PM
I was testing ESP-P4-DevKit (rev D1) ethernet on micropython. Seems that I cannot find the right set of parameters to initialize connection.

With vanilla Micropython ESP32_P4 v1.29 (PRE_V3 variant:(sysname='esp32', nodename='esp32', release='1.29.0', version='v1.29.0 on 2026-08-24', machine='Generic ESP32P4 with pre revision 3 chip with ESP32-P4')) the error message is OSError: esp_eth_driver_install failed with invalid argument for all the cases.

With kerekesg firmware (sysname='esp32', nodename='esp32', release='1.27.0-preview', version='v1.27.0-preview.339.gbe4892097e.dirty on 2025-10-23', machine='Olimex ESP32-P4-DevKit with ESP32-P4') the error is a bit more useful:

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)
but that fails with above error. With kerekesg firmware there seems to be an issue with GPIO configuration as Pin(52) results "ValueError: invalid pin" (Pin(32) works fine, for example).

The ref_clock_mode is a bit guess, 0 is input AFAIK but tried also 1.

Would just want to use wired network connection for a location as the wifi connection there is a bit spotty.

Have not yet tried to compile own firmware (with updated micropython), just trying to first check that it is not something trivial I'm missing here.

#4
New Products release / Ethernet for PICO and PICO2
Last post by olimex - November 04, 2026, 03:40:38 PM
New OSHW board adds 100MB Ethernet for RP2040, RP2350 and ESP32-S3/C3/C5/C6. ESPHome example auto-discovery in Home Assistant, OTA over Ethernet and a ready-to-flash UF2, with no Wi-Fi needed. #HomeAssistant #ESPHome #RP2040 #OSHW
 https://www.olimex.com/Products/Modules/Ethernet/UEXT-CH390/open-source-hardware
#5
A20 / Re: Wich board to correctly mo...
Last post by oly - November 04, 2026, 01:37:56 PM
Any clue about origin of this ?
#6
A20 / Re: Wich board to correctly mo...
Last post by oly - October 31, 2026, 02:23:32 PM
Hi,

I burnt the base img on SD then boot from it with no HDD connected => OK, boot from SD OS
I burnt the base img on SD then boot from it with HDD connected => OK, boot from SD OS

Then I burnt the minimal img on the SD and boot from it with no HDD connected => The system boot many times then I got prompt from SD.
I try 'findmnt -no SOURCE / reports /dev/mmcblk0p1' => nothing visible
lsblk shows only mmcblk0p1

I boot from this SD with HDD connected => OS is loaded from HDD.
The boot screen shows this :
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



With
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


EDIT 20261101:
I re  rownload 20-OLinuXino-bookworm-minimal-20260323-113959.img
Re verify md5sum
Reburn it on the same SD
Try to boot with no HDD => OK
Try to boot with HDD connected => KO, boot from HDD

All these inspire me perplexity
#7
ESP32 / Re: Ethernet link not connecti...
Last post by Edac145 - October 31, 2026, 08:31:41 AM
Hi,

I tested the code you provided, but the behavior is the same as before. The Ethernet interface does not come up, and there is still **no link up**.

I have attached the build/runtime logs, along with my board and test setup information below.

RUN TIME LOG
---------------------------------------------------------------------------
entry 0x40080644
--- 0x40080644: call_start_cpu0 at E:/Program_Files/EspTools/Espressif/frameworks/.espressif/v6.0.2/esp-idf/components/bootloader/subproject/main/bootloader_start.c:27
I (27) boot: ESP-IDF v6.0.2 2nd stage bootloader
I (27) boot: compile time Oct 31 2026 10:05:11
I (28) boot: Multicore bootloader
I (29) boot: chip revision: v3.0
I (32) boot.esp32: SPI Speed      : 40MHz
I (35) boot.esp32: SPI Mode      : DIO
I (39) boot.esp32: SPI Flash Size : 4MB
I (42) boot: Enabling RNG early entropy source...
I (47) boot: Partition Table:
I (49) boot: ## Label            Usage          Type ST Offset  Length
I (56) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (62) boot:  1 phy_init        RF data          01 01 0000f000 00001000
I (69) boot:  2 factory          factory app      00 00 00010000 00100000
I (75) boot: End of partition table
I (79) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=14084h ( 82052) map
I (115) esp_image: segment 1: paddr=000240ac vaddr=3ffb0000 size=02c7ch ( 11388) load
I (120) esp_image: segment 2: paddr=00026d30 vaddr=40080000 size=092e8h ( 37608) load
I (136) esp_image: segment 3: paddr=00030020 vaddr=400d0020 size=36d60h (224608) map
I (216) esp_image: segment 4: paddr=00066d88 vaddr=400892e8 size=03028h ( 12328) load
I (221) esp_image: segment 5: paddr=00069db8 vaddr=50000000 size=00028h (    40) load
I (228) boot: Loaded app from partition at offset 0x10000
I (228) boot: Disabling RNG early entropy source...
I (242) cpu_start: Multicore app
I (250) cpu_start: GPIO 3 and 1 are used as console UART I/O pins
I (250) cpu_start: Pro cpu start user code
I (250) cpu_start: cpu freq: 160000000 Hz
I (252) app_init: Application information:
I (256) app_init: Project name:    esp32_poe_iso_wrover_diagnostic
I (262) app_init: App version:      uart-v0.1.0-dirty
I (267) app_init: Compile time:    Oct 31 2026 10:04:45
I (272) app_init: ELF file SHA256:  d5f3d297e...
I (276) app_init: ESP-IDF:          v6.0.2
I (280) efuse_init: Min chip rev:    v0.0
I (284) efuse_init: Max chip rev:    v3.99
I (288) efuse_init: Chip rev:        v3.0
I (292) heap_init: Initializing. RAM available for dynamic allocation:
I (298) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (303) heap_init: At 3FFB4140 len 0002BEC0 (175 KiB): DRAM
I (308) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (314) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (319) heap_init: At 4008C310 len 00013CF0 (79 KiB): IRAM
I (326) spi_flash: detected chip: generic
I (328) spi_flash: flash io: dio
I (333) main_task: Started on CPU0
I (335) main_task: Calling app_main()
I (359) poe_diag: ESP-IDF: v6.0.2
I (360) poe_diag: Board: ESP32-POE-ISO-WROVER, PHY LAN8710A
I (360) poe_diag: Mode: forum-code reproduction
I (364) poe_diag: RMII clock: output on GPIO0
I (400) esp_eth.netif.netif_glue: 7c:9e:bd:dc:5f:f3
I (400) esp_eth.netif.netif_glue: ethernet attached to netif
I (4502) poe_diag: Ethernet started
I (4503) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (4504) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (4507) poe_diag: Web server started on port 80
I (4514) main_task: Returned from app_main()
I (7511) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (7511) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (10516) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (10516) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (13521) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (13521) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (16526) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (16526) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (19531) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (19531) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (22536) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (22536) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (25541) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (25541) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (28546) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (28546) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (31551) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (31551) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (34556) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (34556) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (37561) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (37561) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (40566) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (40566) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (43571) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (43571) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (46576) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (46576) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
I (49581) poe_diag: PHY ID=0007:c0f1 BMSR(first/second)=7809/7809 link=0 autoneg_done=0
I (49581) poe_diag: PHY BMCR=3000 ANAR=01e1 ANLPAR=0001 R17=0002 energy=1 R18=60e0 R31=0040
---------------------------------------------------------------------------------------


Board Information
- Board Model: ESP32-POE-ISO-WROVER-EA
- Hardware Revision: N1
- Olimex Part Number: 0000112904
- Manufacturing Date: YYWW 2630

Software
- ESP-IDF Version: v5.5.6 (output using the idf.py --version)

Power Source
- Powered via USB (not PoE)

Network Setup
- Connected directly to my laptop (no router or switch in between)
- IEEE 802.3: Not enabled
- Speed & Duplex: Auto Negotiation enabled

Ethernet Cable
- Type: Cat6
- Length: Approximately 1 meter

Please let me know if there are any additional settings or hardware checks I should perform for the ESP32-POE-ISO-WROVER-EA Rev. N1.

#8
ESP32 / Re: Ethernet link not connecti...
Last post by LubOlimex - October 30, 2026, 02:18:05 PM
Are you 100% sure you have ESP32-POE-ISO-Wrover-EA? Can you see what is written on the module itself? It should be "ESP32-WROVER-EA".

I reproduced your initialization approach on an ESP32-POE-ISO-WROVER using ESP-IDF 5.5.5. It links immediately and remains stable, so the code and newer ESP-IDF do not appear to be the general cause.

Please test with my code: https://ftp.olimex.com/TEMP/wrover-esp-idf/ (there is README.md inside the archive with more details). If the problem remains try a short known-good LAN cable, another switch port, and preferably another network and computer, then compare the PHY registers and 50 MHz RMII clock. Let me know how it goes.
#9
ESP32 / Re: Ethernet link not connecti...
Last post by Edac145 - October 30, 2026, 11:53:21 AM
Quote from: LubOlimex on October 30, 2026, 11:40:33 AMDid you check the user's manual?

Which pin do you use for the Ethernet clock? Is it GPIO0?

MDC – 23
MDIO – 18
PHY reset – 12
PHY RMII clock – 0 (0 is for boards with WROVER module)



yes i am using pin 0 for clock
#define ETH_PHY_ADDR        0
#define ETH_MDC_GPIO        23
#define ETH_MDIO_GPIO       18
#define ETH_PHY_PWR_GPIO    12
#define ETH_RMII_CLK_GPIO   0     /* WROVER: 0, WROOM: 17 */                                     

i am pasting my ethernet init code below,
* ---------------- Ethernet init ---------------- */
static void ethernet_init(void)
{
    /* TCP/IP stack + default event loop */
    ESP_ERROR_CHECK(esp_netif_init());
    ESP_ERROR_CHECK(esp_event_loop_create_default());

    esp_netif_config_t netif_cfg = ESP_NETIF_DEFAULT_ETH();
    s_eth_netif = esp_netif_new(&netif_cfg);

    const esp_timer_create_args_t timer_args = {
        .callback = fallback_timer_cb,
        .name = "dhcp_fallback",
    };
    ESP_ERROR_CHECK(esp_timer_create(&timer_args, &s_fallback_timer));

    /* MAC (internal EMAC, RMII) */
    eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG();
    eth_esp32_emac_config_t emac_config = ETH_ESP32_EMAC_DEFAULT_CONFIG();
    emac_config.interface = EMAC_DATA_INTERFACE_RMII;
    emac_config.smi_gpio.mdc_num  = ETH_MDC_GPIO;
    emac_config.smi_gpio.mdio_num = ETH_MDIO_GPIO;
    /* ESP32 generates the 50 MHz RMII reference clock for the LAN8720A */
    emac_config.clock_config.rmii.clock_mode = EMAC_CLK_OUT;
    emac_config.clock_config.rmii.clock_gpio = ETH_RMII_CLK_GPIO;
    esp_eth_mac_t *mac = esp_eth_mac_new_esp32(&emac_config, &mac_config);

    /* PHY (LAN8720A). GPIO12 powers/resets the PHY: it stays low (PHY off) until the
     * MAC has started the RMII clock, as required by the LAN8720A. */
    eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG();
    phy_config.phy_addr       = ETH_PHY_ADDR;
    phy_config.reset_gpio_num = ETH_PHY_PWR_GPIO;
    esp_eth_phy_t *phy = esp_eth_phy_new_lan87xx(&phy_config);

    /* Driver install + attach to TCP/IP */
    esp_eth_config_t eth_config = ETH_DEFAULT_CONFIG(mac, phy);
    esp_eth_handle_t eth_handle = NULL;
    ESP_ERROR_CHECK(esp_eth_driver_install(&eth_config, &eth_handle));
    s_eth_handle = eth_handle;
    ESP_ERROR_CHECK(esp_netif_attach(s_eth_netif, esp_eth_new_netif_glue(eth_handle)));

    ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ESP_EVENT_ANY_ID, &eth_event_handler, NULL));
    ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &got_ip_event_handler, NULL));

    vTaskDelay(pdMS_TO_TICKS(100));

    printf("Clock GPIO=%d\n", emac_config.clock_config.rmii.clock_gpio);
    printf("Clock mode=%d\n", emac_config.clock_config.rmii.clock_mode);
    printf("Interface=%d\n", emac_config.interface);

    ESP_ERROR_CHECK(esp_eth_start(eth_handle));
    xTaskCreate(phy_diag_task, "phy_diag", 3072, NULL, 3, NULL);
}

void app_main(void)
{
    esp_err_t ret = nvs_flash_init();
    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
        ESP_ERROR_CHECK(nvs_flash_erase());
        ret = nvs_flash_init();
    }
    ESP_ERROR_CHECK(ret);

    ethernet_init();
    start_webserver();   /* lwIP accepts connections as soon as the interface has an IP */
}
#10
ESP32 / Re: Ethernet link not connecti...
Last post by LubOlimex - October 30, 2026, 11:40:33 AM
Did you check the user's manual?

Which pin do you use for the Ethernet clock? Is it GPIO0?

MDC – 23
MDIO – 18
PHY reset – 12
PHY RMII clock – 0 (0 is for boards with WROVER module)