Multi-second connectivity dropouts on DHCP renewal

Not sure if this is a bug report or just recording an observed behavior for the community. As noted at the end, we have a work around, and understand that we are doing something weird.

This is with BlueOS 1.4.2 on a Pi5 in a BlueROV Heavy

For reasons, our ROV and piloting laptop are connected to a router. This router provides DHCP, and NAT to the internet. On the ROV network we are using the “standard” IP addresses (192.168.2.[12]) for the ROV and laptop, set as static leases in the DHCP server.

Relative to the standard static IP configuration, the only functional difference at present is that the ROV is provided with a gateway (192.168.2.254) providing internet connectivity even when submerged.

Wifi is generally not associated on the ROV.

During initial testing, the DHCP server was set to provide leases on a 5 minutes renewal period (too short!)

We observed intermittent dropouts from the ROV when in the water. Symptoms were stalling of the video feed and surprise disarms from the Heartbeat and/or Manual Control failsafe timers (3 seconds). We were unable to replicate the dropouts on deck.

These dropouts manifest in the ardupilot_manager logs as "Network unreachable` errors:

2026-01-28 15:41:46.223 | DEBUG    | mavlink_proxy.AbstractRouter:_log_stdout:144 - Router: 2026-01-28T15:41:46.212523Z ERROR tokio-runtime-worker ThreadId(06) src/lib/drivers/udp/mod.rs:62: Failed to send message: Os { code: 101, kind: NetworkUnreachable, message: "Network unreachable" } client=192.168.2.1:14550
2026-01-28 15:41:46.234 | DEBUG    | mavlink_proxy.AbstractRouter:_log_stdout:144 - Router: 2026-01-28T15:41:46.232643Z ERROR tokio-runtime-worker ThreadId(04) src/lib/drivers/udp/mod.rs:62: Failed to send message: Os { code: 101, kind: NetworkUnreachable, message: "Network unreachable" } client=192.168.2.1:6777
2026-01-28 15:41:46.244 | DEBUG    | mavlink_proxy.AbstractRouter:_log_stdout:144 - Router: 2026-01-28T15:41:46.232855Z ERROR tokio-runtime-worker ThreadId(05) src/lib/drivers/udp/mod.rs:62: Failed to send message: Os { code: 101, kind: NetworkUnreachable, message: "Network unreachable" } client=192.168.2.1:14550
...

Analyzing these messages showed dropouts occuring every 5 minutes (end-to-beginning), with a variable duration from 1-6 seconds:

which explains why the failsafe disarms seemed random.

This lead us, eventually, to look at the DHCP server. Through experimentation (looking at router logs, changing the lease time) we determined dropouts correspond with lease renewal, so there is something happening to the network configuration on the pi at lease renewal which disrupts mavlink and video streaming.

As noted above, it seems to only occur when the vehicle is submerged, so it ? may be connected to wifi. However, we do not have wifi associated, and do not have the smartap enabled. In testing, the problem recurred when the wifi was associated (on the surface) before diving, when the wifi was explicitly not associated, and when the wifi was soft-blocked with rfkill.

From a practical point of view, we increased lease time on the ROV to 8 hours, it’s IP address does not need to be dynamic at runtime. But it’s a weird problem.

Hi @amarburg -
I’d recommend turning off the WiFi hotspot in BlueOS. (under WiFi icon in upper right.)
I’d also link your devices with mac-address tied static IP addresses, rather than handing them a DHCP lease! Every Blue Robotics vehicle uses static IPs, so that’s our typical testing paradigm… and likely why we haven’t encountered this before!

Hi @tony-white

I’ll have to check. I believe the wifi hotspot was off the whole time. And I’m curious if the the soft rfkill turns it “even more off.” I believe Debian reconfigures /disables wpa_supplicant when you rfkill.

FWIW the IP addresses are statically to the MAC in the DHCP server, but the Pi is still making the DHCP request/renewal.

FWIW, this comes from this issue where we wanted to add a default route to the ROV.