diff --git a/emulator/NET-NOTES.md b/emulator/NET-NOTES.md index e74133e..11190e0 100644 --- a/emulator/NET-NOTES.md +++ b/emulator/NET-NOTES.md @@ -499,16 +499,41 @@ Live A/B runs with the wire watcher (net_loop.conf pod, three missions): is not starvation -- DWM background-window throttling suspected. Backlog. -## Modern console on the HOST — bridging plan (2026-07-09, in progress) +## Modern console on the HOST — WORKING (2026-07-09, verified TCP connect) -To let a Windows-host app (TeslaSuite .NET console) talk to the pod: -give the **Network Bridge adapter** a static host IP `200.0.0.1/24` -(no gateway; only 200.0.0.x routing changes). Host->pod already proven -(host-stack frames appear in pod-side pcap). Pod->host may need Npcap's -**SendToRx** per-adapter option (pcap-injected frames are normally not -indicated up to the host stack on the same adapter -- the classic -DOSBox-pcap guest<->host limitation); verify with a TCP connect to -200.0.0.113:1501 and add the option only if needed. Note: a host +Host (TeslaSuite .NET console) <-> pod on the same machine. Verified: +`Test-NetConnection 200.0.0.113 -Port 1501` connects with source +200.0.0.1. Recipe (both steps elevated): + +1. Host IP on the bridge (no gateway -- only 200.0.0.x routing changes): + `New-NetIPAddress -InterfaceAlias 'Network Bridge' -IPAddress + 200.0.0.1 -PrefixLength 24` +2. Npcap SendToRx so pod (pcap-injected) frames reach the host stack -- + without it the host's ARP gets no answer (neighbor stays Incomplete; + hairpin-tested: injected frames provably never reach the local + stack). The per-handle MODE_SENDTORX API needs Npcap >= 1.83 + user-mode DLLs (our wpcap.dll/Packet.dll predate it; npcap.sys is + 1.88 and has the registry side), so use the driver-level value: + ``` + Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\npcap\Parameters' ` + -Name SendToRxAdapters -Value '\Device\{5DB5521D-2D56-40E8-9E3D-3B36C9EE7C8F}' -Type String + Stop-Service npcap -Force; Start-Service npcap + ``` + Value = semicolon-separated `\Device\{bridge GUID}` entries (parser: + NPF_GetRegistryOption_AdapterName, npcap Packet.c); read ONCE at + driver start (hence the service bounce); relaunch the pod after (its + pcap handle dies with the driver). + +**THE TRADE: while SendToRxAdapters covers the bridge, ALL Npcap +injections on it are indicated as receives INSTEAD of transmits** -- +pod frames reach the host stack but no longer reach the TAP members, so +**the SheepShaver Mac console is DEAF while this is set** (and wire- +injection diagnostics can't reach the pod either; pod RX is unaffected). +Revert: `Remove-ItemProperty ... -Name SendToRxAdapters` + service +bounce + pod relaunch. PROPER BOTH-AT-ONCE FIX (future): upgrade Npcap +user-mode DLLs to >=1.83 and patch the fork's pcap backend to mirror +every send onto a second handle set to per-handle MODE_SENDTORX -- +frames then go out to the TAPs AND up to the host. Host connect/disconnect churns netnub (exit + ~60s relaunch) -- expected. ## Open questions / notes