A portable DHCP server for Windows 10/11, built for AV field technicians.
Plug your laptop into a DSP, camera, switcher, display or control processor, press Start, and see within seconds whether the device got an IP address. If it didn't, the app tells you why in plain English and what to try next. When you press Stop, your laptop's network settings go back exactly as they were.
Status: All three planned phases are done and passed their hardware tests in October 2026: the core DHCP loop, visibility (ping graphs, session log export, profiles) and finding devices (static IP finder, discovery, switch port). The only item not yet tried on real gear is PJLink discovery of projectors. See Roadmap.
Most AV kit ships set to DHCP, and on a bench or a fresh site there's usually nothing to hand out addresses. The usual fixes (a spare router, a command-line DHCP server, guessing static IPs) are slow and leave your laptop's adapter in a mess. ProDHCPServer does the whole job in one window: it sets your adapter up, serves addresses on that adapter only, shows you the device, and puts everything back afterwards.
Phase 1: core loop
- Pick your Ethernet adapter from a list showing link state, speed and current IP. The app remembers your last choice.
- Safe adapter changes. Your adapter's settings are backed up before anything changes and restored on Stop, on exit, at Windows shutdown, and after a crash (offered the next time you open the app).
- Eight-step status panel: adapter, cable/link, static IP, DHCP server, DHCP traffic, device leased an IP, device responding to ping, WebUI reachable. Each step is green, amber or red with a plain-English reason and a suggested next step.
- Won't fight a venue network. Before serving, it checks for another DHCP server on the cable and refuses to start if it finds one (with a deliberate override for networks you own).
- Device card with IP, MAC address, manufacturer (offline lookup, no internet needed), lease time and first-seen time.
- Open WebUI in one click, picking http or https from whichever port is open, plus quick port buttons and Copy IP.
- Several devices at once behind a small switch, each with its own lease.
- Spots a USB adapter that has stopped receiving. Some USB Ethernet adapters keep showing "connected" but quietly stop receiving after a few seconds, which looks exactly like a silent device. If nothing has come in for 20 seconds while the laptop keeps sending, the cable/link step says so and tells you to replug the adapter. Realtek RTL8152/8153 adapters on a driver older than 2019 (including Windows' own 2015 driver) are flagged as soon as you pick them, with where to get the newer driver.
- Wi-Fi and VPN overlap warnings, with a one-click option to turn Wi-Fi off until you press Stop.
- Dark and light themes, with large status text you can read from arm's length.
Phase 2: visibility
-
Live ping graph for every device. Each device with a lease is pinged once a second. The device list shows a small latency graph with the latest reply time, and the selected device shows the last two minutes with average, min, max and loss. Missed replies show as red marks. When a device stops answering, or starts again, the session log records it.
-
Session log you can filter and export. Filter by level (everything, warnings and problems, problems only), by area (adapter, server, DHCP, device) or by text such as an IP or MAC address. Export log… saves what's shown as a text file for a job report, or as CSV for Excel.
-
Profiles. Save the subnet, pool, lease time and DHCP options for each job or kind of gear, and pick one from the top bar before pressing Start. Options: gateway (3), DNS (6), domain name (15), NTP (42), vendor-specific (43, hex), TFTP/provisioning server (66), Cisco TFTP servers (150) and any other option as text, IP addresses or hex. Profiles can be duplicated, deleted, exported to a file and imported on another laptop.
-
Presets built from each manufacturer's own documentation, with links to the pages they come from:
- Default (192.168.100.x), for the gear that asks for DHCP out of the box: Q-SYS, Biamp, Shure, Sennheiser, Dante, Symetrix, Crestron, AMX, Kramer, Atlona and Extron NAV.
- 192.168.254.x for Extron switchers (192.168.254.254) and IPCP Pro (192.168.254.250).
- 192.168.0.x for Lightware, Christie GS, Sharp/NEC MultiSync M and Bose ESP/PowerMatch/CC-64.
- 192.168.1.x for the Kramer and Atlona fallback addresses, ClickShare direct connection and AMX NX static.
- Cisco IP phones (option 150), Poly phones (option 66), and a bench test with 2-minute leases.
Each preset's pool leaves the documented factory addresses free. Presets can't be changed: duplicate one to make your own.
Phase 3: finding devices
- Static IP finder. While the server runs, the Found on the network list shows every device heard on the cable that didn't take an address from the server, including ones with a static IP on another subnet. A device shows up as soon as it sends anything (a broadcast, an mDNS or UPnP announcement, a vendor beacon), and with Npcap installed, as soon as it powers up (its ARP check).
- Reach it. One click adds a temporary address on the device's subnet to your adapter, so you can open its WebUI without stopping the DHCP server. The address is removed on Stop, on exit and after a crash, like every other change. If Wi-Fi is on that subnet, the app offers to turn it off until Stop.
- Scan for static IPs. For quiet devices: ARPs every address on your subnet, the brand presets' factory subnets (192.168.254.x, 192.168.0.x, 192.168.1.x) and any subnet a device was seen on, using a temporary address on each that's removed straight after.
- Discovery protocols: mDNS/DNS-SD (including Sennheiser SSC and Dante Domain Manager), SSDP/UPnP (with the device's own name and model), PJLink (projectors and displays), Art-Net (lighting nodes), AES67 stream announcements (SAP), AMX Device Discovery beacons, AMX NetLinx, Q-SYS and Shure discovery. Every query is read-only. Sources are in docs/vendor-discovery.md. Crestron's own discovery is deliberately left out: Crestron documents that the same unauthenticated channel can change a device's settings, so the app never sends anything to it.
- Switch port. With Npcap installed, shows which managed switch and port you're plugged into, and its VLAN, from LLDP or CDP. Everything else works without Npcap.
Default profile: server IP 192.168.100.1/24, addresses 192.168.100.100 to 192.168.100.199, 60-minute leases. Make your own profile under Profiles (the gear button) to change any of these.
- Open the latest release and download the exe under Assets (for example
ProDHCPServer-v1.0.0-win-x64.exe). It's a single file: there's nothing to unzip or install, and no .NET runtime needed. - Double-click it. Windows asks for administrator rights, because changing adapter settings and serving DHCP require them.
- The exe isn't code-signed yet, so the first time Windows SmartScreen says "Windows protected your PC". Click More info, then Run anyway.
- Connect the device to your laptop's Ethernet port (directly or through a small switch) and power it on.
- Pick your Ethernet adapter at the top of the window.
- Press Start. Steps 1 to 4 go green within a few seconds.
- Power-cycle the device or replug its cable if it doesn't ask for an address straight away. Its IP, name and manufacturer appear on the right.
- Click Open WebUI to get to the device's web page.
- Press Stop when you're done. Your adapter goes back to how it was.
| What you see | What it usually means |
|---|---|
| Red banner: another DHCP server is on the link | You're plugged into a network that already hands out addresses (office, venue, home router). Unplug from it, or only use Serve anyway on a network you own. |
| Step 2 red, "No link" | No cable, a dead port, or the device is off. Steps 2 to 4 recover by themselves when the link comes up. |
| Step 5 amber, no DHCP requests after 30 seconds | The device probably has a static IP or DHCP turned off. Look under Found on the network, or press Scan for static IPs, then Reach it. |
| A device isn't found | Some devices stay silent until spoken to. Press Scan for static IPs. If it's on a subnet the scan doesn't cover, power-cycle it with Npcap installed: its ARP check at power-up shows its address. |
| The device gets an offer but never accepts it | Some embedded network stacks ignore their own broadcast flag. Tick Always broadcast replies in your profile and try again. |
| Step 1 amber, mentions Wi-Fi or VPN | Another adapter is on the same subnet. Use Turn it off until Stop, or use a profile with a different server IP. |
| Step 2 says the cable shows connected but nothing has been received | The USB network adapter has stopped receiving. Unplug it from the laptop and plug it back in. If step 1 mentions an old Realtek driver, install the newer one: Windows Settings > Windows Update > Advanced options > Optional updates > Driver updates, tick the Realtek one only. |
| Ping times jump around (hundreds of ms) with AV-over-IP gear on an unmanaged switch | Probably the network, not the device or the app. See Field notes. |
| The app was killed mid-session | Open it again and click Restore now on the banner. The backup lives in C:\ProgramData\ProDHCPServer\adapter-backup.json until it's restored. |
If something goes wrong, open an issue using the Problem on site form, and include the session log text if you have it.
Things learned on real hardware that are worth knowing on site.
- AV-over-IP multicast slows everything on an unmanaged switch. With an Extron NAV encoder (NAV E 101) and decoder on a small unmanaged switch, pings to both units averaged about 200 ms and jumped as high as 600 ms, with no lost packets. Windows' own
pingshowed the same, so it's the network, not the app or the device. The encoder's multicast video floods every port of an unmanaged switch. NAV, Dante video, SDVoE and other AV-over-IP gear needs a managed switch with IGMP snooping turned on (and an IGMP querier on the network), so multicast only goes to the ports that asked for it. Short of that, test the encoder on its own or keep the laptop off the video switch. - Realtek USB adapters on the old Windows driver stop receiving. Realtek RTL8153 USB Gigabit adapters on Microsoft's 2015 inbox driver went silent after a few seconds while the link light stayed on. Realtek's current driver (from Windows Update's optional driver updates) fixed it. The app now warns about this combination and spots the stall itself (see Troubleshooting).
- Managed work laptops may block the exe. IT-managed laptops with Microsoft Defender's attack surface reduction rules can block any new unsigned exe, so every new build is refused. Test on an unmanaged laptop, or ask IT to allow a fixed folder (for example
C:\Tools\ProDHCPServer\) rather than one file's hash, which changes with every build.
Each phase ends with a hardware test pass on real AV equipment before the next one starts.
- Phase 1: core loop (done, hardware-tested October 2026).
- Phase 2: visibility (done, hardware-tested October 2026). Continuous ping with a latency graph per device, a full session log you can filter and export (TXT/CSV), and saved profiles for subnet, pool, lease time and DHCP options (router, DNS, NTP, option 43/66/150 and custom options).
- Phase 3: discovery (done, hardware-tested October 2026; PJLink not yet tried on a real projector). Find devices that already have a static IP, reach their subnet in one click, and discover devices via mDNS, SSDP/UPnP, vendor protocols and LLDP/CDP.
| What | Where |
|---|---|
| Your settings (last adapter, profile in use, theme) | %LOCALAPPDATA%\ProDHCPServer\settings.json |
| Your profiles | %LOCALAPPDATA%\ProDHCPServer\profiles.json |
| Adapter backup (only while a session runs, or after a crash) | %ProgramData%\ProDHCPServer\adapter-backup.json |
While serving, the app also adds two Windows Firewall rules for this exe only: one so it can receive DHCP traffic (UDP 67 and 68), and one on wired adapters so it can hear devices announcing themselves (mDNS, UPnP, vendor discovery). Both are removed on Stop.
Built with C# on .NET 10 and WPF (Fluent theme), published as one self-contained single-file exe for win-x64.
Requirements: the .NET 10 SDK. The Core tests and a full build also run on Linux and macOS; running the app needs Windows.
dotnet build ProDHCPServer.sln
dotnet test tests/ProDHCPServer.Core.Tests
dotnet publish src/ProDHCPServer.App -c Release -r win-x64 -o publish
Layout
| Project | What's in it |
|---|---|
src/ProDHCPServer.Core |
Platform-independent logic: DHCP packet codec and server engine, adapter backup/restore lifecycle, status rules, manufacturer (OUI) lookup, discovery packet parsing and subnet planning. Fully unit-tested. |
src/ProDHCPServer.Windows |
Windows specifics: adapter reading and changes, the UDP 67 socket, ARP entries and scans, firewall rules, other-server probe, ping and port checks, discovery sockets, and the optional Npcap capture for LLDP/CDP. |
src/ProDHCPServer.App |
The WPF app: UI, elevation prompt, crash handling. |
tests/ |
Core unit tests (run anywhere) and Windows integration tests (run on the Windows CI runner and never change adapter settings). |
docs/ |
Hardware test checklists for each phase, the sources for the discovery protocols (vendor-discovery.md), and the screenshots used in this README (taken by the CI smoke test). |
tools/ |
CI smoke test (launches the app and takes screenshots) and the manufacturer list updater (python3 tools/update-oui.py). |
CI. Every push and pull request runs the Build and test workflow on Windows: build, Core and Windows tests, publish the exe, and a smoke test that screenshots the app in light and dark mode. The exe and screenshots are uploaded as run artifacts, so you can try a build from any branch before it's released.
Contributing. Work happens on branches with pull requests into main. See CLAUDE.md for the project rules (they apply to people too), and use the PR template's checklist. Formatting follows .editorconfig; check it with dotnet format whitespace ProDHCPServer.sln --verify-no-changes.
No licence has been chosen yet, so all rights are reserved by the author.

