Ethernet interface static IP address activation delay

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


Hello Vijay,

Thank you for your detailed description and analysis!

Let’s address your queries about Ethernet (eth0) response delay and ARP behavior on your Colibri iMX7S running TDX Wayland 7.3.0-devel with a static IP via ConnMan.


1. Reducing Ethernet eth0 Response Time

Observation:

  • Your board boots to login at ~33 seconds after power-on.
  • However, eth0 responds to a PING/ARP only after almost 70 seconds, indicating an additional ~35 second delay.

What’s happening:
When using ConnMan for static IP, the eth0 interface is not immediately available after boot—ConnMan takes additional time to bring up the interface and configure IPs, even for static settings. This is a known characteristic of ConnMan, especially on resource-constrained hardware.

What you can try:

  • Check AutoConnect and make the connection ‘Favorite’:
    Ensures that ConnMan brings up eth0 as soon as possible:

    connmanctl services
    connmanctl services ethernet_XXXXXXXXXXXX_cable
    

    Look for AutoConnect = True and Favorite = True. If not set, run:

    connmanctl connect ethernet_XXXXXXXXXXXX_cable
    connmanctl config ethernet_XXXXXXXXXXXX_cable --autoconnect yes
    
  • Switch to systemd-networkd (advanced, optional):
    Users requiring faster/static and consistent network bring-up sometimes replace ConnMan with systemd-networkd. To do this:

    1. Disable ConnMan (this disables all ConnMan-managed configurations):
      systemctl disable connman
      systemctl stop connman
      
    2. Enable systemd-networkd:
      systemctl enable systemd-networkd
      systemctl start systemd-networkd
      
    3. Configure eth0 static IP by creating /etc/systemd/network/20-wired.network:
      [Match]
      Name=eth0
      
      [Network]
      Address=192.168.1.100/24
      Gateway=192.168.1.1
      
      Adjust IP and gateway for your setup.

    More info:
    Ethernet on Linux

  • Manual configuration for debugging:
    Bring the interface up as soon as possible after login to see if the delay is only ConnMan-related (does not persist after reboot):

    ip link set eth0 up
    ip addr add 192.168.1.100/24 dev eth0
    ip route add default via 192.168.1.1
    

2. ARP Announcements / Gratuitous ARP

Default Behavior:

  • ConnMan does not proactively send ARP Announcements or Gratuitous ARP on static IP configuration. It will reply to incoming ARP requests only after the interface is fully configured and up.

If you want an ARP Announce/Gratuitous ARP:

  • Manual Trigger
    You can send a Gratuitous ARP yourself if needed for applications like network switches learning the IP quickly.

    • With the ip utility:
      ip neigh flush dev eth0
      arping -A -c 1 -I eth0 192.168.1.100
      
    • Or, simply re-assign the IP after boot to trigger OS-level announcement:
      ip addr add 192.168.1.100/24 dev eth0
      
  • Automate after network is up:
    Add a script in /etc/network/if-up.d/ (if using systemd-networkd or classic networking) or use a systemd service that is triggered by ‘network online’ (After=network-online.target), to send arping as shown above.


Summary

  • The extra eth0 ARP/PING delay is due to ConnMan needing more time to initialize—and is not a hardware limitation.
  • For faster static IP/ARP response, switching to systemd-networkd or manual configuration is recommended.
  • ConnMan does not send Gratuitous ARP by default; use arping if required.

References:

Let me know if you’d like step-by-step guidance on switching to systemd-networkd or automating ARP Announcements!

Best regards,
Toradex AI Assistant.