First of all, huge thanks to all who helped me get to the bottom of the memory bug...code seems rock solid now.
Here is another 'strangeness' .
The Pi Zero W is configured to present its usb interface as an ethernet device, in order that for initial configuration, it can be plugged into a host computer which will acquire an Ethernet connection and be issued by DHCP with an address that can directly communicate with the Pi Zeros web server by issuing a command in the host computers web browser to a fixed IP address. When this works, it works perfectly.
If the host computer (HP Elite Desk, Linux MINT 20) is rebooted WITH the Pi Zero connected, it works.
If the host computer is rebooted *without* the Pi Zero connected and the Pi Zero is subsequently connected, it works.
But if the Pi Zero is disconnected and then reconnected, it fails to pick up DHCP.
The network manager app tries indefinitely to get a connection, and fails.
If the computer is told to reboot with the Pi Zero connected, it hangs. If the computer is powered off and on, it works.
This is the syslog for a *successful* connection after reboot
Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5981] dhcp4 (usb0): option dhcp_lease_time => '43200' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5982] dhcp4 (usb0): option domain_name_servers => '172.16.21.32' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5982] dhcp4 (usb0): option expiry => '1694897859' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5983] dhcp4 (usb0): option host_name => 'juliet' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5983] dhcp4 (usb0): option ip_address => '172.16.21.3' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5983] dhcp4 (usb0): option next_server => '172.16.21.32' Sep 16 09:57:42 juliet avahi-daemon[735]: Joining mDNS multicast group on interface usb0.IPv4 with address 172.16.21.3. Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5983] dhcp4 (usb0): option requested_broadcast_address => '1' Sep 16 09:57:42 juliet avahi-daemon[735]: New relevant interface usb0.IPv4 for mDNS. Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5984] dhcp4 (usb0): option requested_domain_name => '1' Sep 16 09:57:42 juliet avahi-daemon[735]: Registering new address record for 172.16.21.3 on usb0.IPv4. Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5984] dhcp4 (usb0): option requested_domain_name_servers => '1' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5984] dhcp4 (usb0): option requested_domain_search => '1' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5985] dhcp4 (usb0): option requested_host_name => '1' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5985] dhcp4 (usb0): option requested_interface_mtu => '1' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5985] dhcp4 (usb0): option requested_ms_classless_static_routes => '1' Sep 16 09:57:42 juliet NetworkManager[739]: <info> [1694854662.5985] dhcp4 (usb0): option requested_nis_domain => '1'
But this is what happens when the device is unplugged and re plugged in..
Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.4136] manager: (usb0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/4) Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5013] device (usb0): interface index 4 renamed iface from 'usb0' to 'enxf62dad34f39e' Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5233] device (enxf62dad34f39e): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external') Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5242] device (enxf62dad34f39e): carrier: link connected Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5263] settings: (enxf62dad34f39e): created default wired connection 'Wired connection 2' Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5267] device (enxf62dad34f39e): state change: unavailable -> disconnected (reason 'none', sys-iface-state: 'managed') Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5316] policy: auto-activating connection 'Wired connection 2' (c8d6876c-99de-3b51-b55d-c6fe727632ed) Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5319] device (enxf62dad34f39e): Activation: starting connection 'Wired connection 2' (c8d6876c-99de-3b51-b55d-c6fe727632ed) Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5320] device (enxf62dad34f39e): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed') Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5324] device (enxf62dad34f39e): state change: prepare -> config (reason 'none', sys-iface-state: 'managed') Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5327] device (enxf62dad34f39e): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed') Sep 16 09:41:53 juliet NetworkManager[737]: <info> [1694853713.5329] dhcp4 (enxf62dad34f39e): activation: beginning transaction (timeout in
45 seconds) Sep 16 09:41:59 juliet NetworkManager[737]: <info> [1694853719.5490] device (enxf62dad34f39e): state change: ip-config -> unavailable (reason 'carrier-changed', sys-iface-state: 'managed ') Sep 16 09:41:59 juliet NetworkManager[737]: <info> [1694853719.5649] dhcp4 (enxf62dad34f39e): canceled DHCP transaction Sep 16 09:41:59 juliet NetworkManager[737]: <info> [1694853719.5650] dhcp4 (enxf62dad34f39e): state changed unknown -> done
Does anyone have a clue? I don't.