Windows 11 usage

This page collects the PowerShell and Command Prompt commands needed to inspect, reset, and troubleshoot the tether link on a Windows 11 host.

Find the tether adapter and gateway address

Use the following command to list network adapters and identify the tether NIC’s name and interface index. Run in elevated PowerShell. Replace "Ethernet" with the alias from Get-NetAdapter if your tether NIC has another name.

Get-NetAdapter | Format-Table Name, ifIndex, Status, LinkSpeed, InterfaceDescription

The tether gateway’s link-local address (fe80::...) is in the device log or net iface on the nRF, or from a Wireshark RA Source on Ethernet. In the example, fe80::f4ce:36ff:fe04:73b1 is used.

Reset the Ethernet interface

Run after reflashing the tether gateway, changing its Ethernet MAC, or whenever the tether link looks stale. Elevated PowerShell or Command Prompt is required.

ipconfig /release6
ipconfig /renew6
Restart-NetAdapter -Name "Ethernet" -Confirm:$false

See the status

Get-NetRoute -InterfaceAlias "Ethernet" -AddressFamily IPv6 -DestinationPrefix "::/0" |
  Format-Table ifIndex, NextHop, RouteMetric, ValidLifetime
Get-NetNeighbor -InterfaceAlias "Ethernet" -AddressFamily IPv6 |
  Format-Table IPAddress, LinkLayerAddress, State
Get-NetIPAddress -InterfaceAlias "Ethernet" -AddressFamily IPv6 |
  Format-Table IPAddress, PrefixOrigin, SuffixOrigin

A working tether shows a ::/0 route with the tether gateway’s fe80:: address as NextHop, that same address Reachable or Permanent as a neighbor, and an address with PrefixOrigin: Dhcp.

You can also use plain ipconfig /all (Command Prompt) and look at the tether adapter’s block. Working tether – Default Gateway is filled in with the tether gateway’s link-local address:

Ethernet adapter Ethernet:

   IPv6 Address. . . . . . . . . . . : 2001:db8:1:1::100(Preferred)
   Link-local IPv6 Address . . . . . : fe80::1234:5678:9abc:def0%17(Preferred)
   Default Gateway . . . . . . . . . : fe80::f4ce:36ff:fe04:73b1%17
   DHCPv6 IAID . . . . . . . . . . . : 123456789
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-11-22-33-44-aa-bb-cc-dd-ee-ff
   DNS Servers . . . . . . . . . . . : 2001:4860:4860::8888

GW GONE looks the same except Default Gateway is empty (addresses can still be present from a still-valid DHCPv6 lease):

Default Gateway . . . . . . . . . :

Live GW valid/GONE monitor

Paste into elevated PowerShell to watch the ::/0 route on the tether continuously instead of re-running the status check by hand. Stop with Ctrl+C.

  • GW valid - Route present, with its remaining lifetime and metric.

  • GW GONE - No ::/0 on that interface. Expected on baseline firmware once Neighbor Unreachability Detection expires the router between Router Advertisements. See Set a default route for a workaround that does not require changing firmware.

while ($true) {
    $r = Get-NetRoute -InterfaceAlias "Ethernet" -DestinationPrefix "::/0" -ErrorAction SilentlyContinue
    if ($r) {
        $rl = $r.ValidLifetime
        if ($rl.TotalDays -gt 3650) { $rlStr = "static" } else { $rlStr = $rl.ToString() }
        Write-Host "$(Get-Date -Format HH:mm:ss)  GW valid  RL=$rlStr  NextHop=$($r.NextHop)  Metric=$($r.RouteMetric)" -ForegroundColor Green
    } else {
        Write-Host "$(Get-Date -Format HH:mm:ss)  GW GONE" -ForegroundColor Red
    }
    Start-Sleep 1
}

Set a default route

Set a default route when the monitor above shows GW GONE (for example, while testing baseline firmware, where the route can expire between Router Advertisements). Replace the example address with your tether gateway’s link-local address.

netsh interface ipv6 add route ::/0 "Ethernet" fe80::f4ce:36ff:fe04:73b1 store=persistent

Delete it

To delete the route, use the following commands.

netsh interface ipv6 delete route ::/0 "Ethernet" fe80::f4ce:36ff:fe04:73b1 store=persistent
netsh interface ipv6 delete route ::/0 "Ethernet" fe80::f4ce:36ff:fe04:73b1 store=active

Extra: add a static neighbor entry

If ping to the tether gateway fails with General failure or the neighbor stays Stale in the status check, add a static (non-expiring) neighbor cache entry mapping the tether gateway’s IPv6 address directly to its MAC address, bypassing normal Neighbor Discovery for it (replace both addresses with your tether gateway’s link-local address and Ethernet MAC):

netsh interface ipv6 add neighbors "Ethernet" fe80::f4ce:36ff:fe04:73b1 f6-ce-36-04-73-b1 store=persistent

Remove it the same way, with delete neighbors in place of add neighbors.