Skip to content

micronet daemon + Ethernet EEE/TSO tweaks for Pi 5 hub - #3

Merged
keskad merged 6 commits into
mainfrom
feat/micronet-daemon
Aug 22, 2026
Merged

micronet daemon + Ethernet EEE/TSO tweaks for Pi 5 hub#3
keskad merged 6 commits into
mainfrom
feat/micronet-daemon

Conversation

@keskad

@keskad keskad commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Ships the micronet network daemon (gateway / static / client) with unified bring-up, DHCP probe hardening, and dnsmasq integration.
  • After ip link set up, best-effort ethtool disables EEE and TSO/GSO on the wired interface — a belt-and-suspenders complement to dtparam=eee=off on the hub image.

Why (symptoms)

On the BigFred hub (Raspberry Pi 5), Ethernet was dropping periodically — the link went down and came back, sometimes several times per hour. This looked like a network or DHCP problem but was not:

  • Static addressing and our own dnsmasq were fine at the IP layer.
  • The PHY on Pi 5 (BCM54213PE behind the RP1 macb driver) is known to flap when AutogrEEEn / IEEE 802.3az LPI (“energy-efficient Ethernet sleep”) negotiates with many switches.
  • CPU governor was already performance; isolcpus is unrelated.

micronet brings the interface up on boot; turning EEE off in software right after link-up avoids relying only on device-tree timing if the PHY re-negotiates after a flap.

Test plan

  • make fmt test clippy in micronet
  • On Pi 5 hub after OS flash: ethtool --show-eee eth0 → EEE disabled/inactive after micronet apply
  • micronet status stable gateway on empty LAN; no repeated Link Down/Up in dmesg

Made with Cursor

keskad and others added 6 commits August 21, 2026 18:20
Replace configure-ethernet and configure-dhcp with one JSON-configured
daemon that probes foreign DHCP, pings gateway.ip, and applies client,
gateway, or static .252 modes with dnsmasq only when needed.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Drop port=0 from dnsmasq.conf so the DNS listener stays on; we hand out
  option:dns-server = gateway.ip and ARCHITECTURE describes DHCP+DNS.
- Poll the interface every ~3s in client mode and update the status
  snapshot when dhclient finally acquires a lease, so micronet check
  liveness sees a non-empty cidr instead of looping restarts.

Co-authored-by: Cursor <cursoragent@cursor.com>
Fail closed on probe errors and validate DHCPOFFER xid/chaddr/opcode.
Own dnsmasq and dhclient via pidfiles, start dhclient -nw, and periodically
re-probe in gateway mode so a later foreign DHCP server makes us yield.
Live liveness, real CIDR, teardown CLI, and legacy configure-* check fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
BigFred OS now seeds micronet.json with 192.168.0.1/24 instead of 10.0.10.0/24.

Co-authored-by: Cursor <cursoragent@cursor.com>
Best-effort ethtool after ip link set up complements dtparam=eee=off on Pi 5
hubs where the BCM54213PE PHY flaps under AutogrEEEn / IEEE 802.3az LPI.
Failures (missing ethtool, ENOTSUP) are logged and do not fail apply.

Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve conflicts with merged micronet daemon on main: retain 192.168.0.0/24
seed addresses and post-bring-up ethtool EEE/TSO/GSO off for Pi 5 PHY stability.

Co-authored-by: Cursor <cursoragent@cursor.com>
@keskad
keskad merged commit 93f1530 into main Aug 22, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant