You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(mdns): advertise _jetkvm._tcp via Bonjour/DNS-SD
JetKVM devices now advertise themselves as the DNS-SD service type
`_jetkvm._tcp` on the local network, so macOS/iOS clients can discover
every device on the LAN via
NWBrowser(for: .bonjour(type: "_jetkvm._tcp", domain: nil)), and
`dns-sd -B _jetkvm._tcp` / `avahi-browse -r _jetkvm._tcp` work too.
The advertised record carries:
- instance: the device hostname (e.g. jetkvm-abc123)
- host: <hostname>.local (existing A/AAAA resolution preserved)
- port: 80, or 443 when TLS is enabled
- TXT: version=<fw>, id=<deviceId>, setup=<true|false>
Implementation uses pion/mdns/v2 (already in the tree transitively via
pion/webrtc). pion takes the IPv4 and IPv6 multicast packet conns
separately, so the existing MDNSMode=ipv4_only / ipv6_only config is
honored by simply not binding the disabled family — no custom
responder, no second mDNS library. We switch from the legacy Server()
(A/AAAA only) to NewServer() so PTR/SRV/TXT are answered too.
Lifecycle:
- starts on the first networkStateChanged once the network is up
- refreshes after device setup completes so the `setup` TXT flips
- refreshes after a TLS mode change so the advertised port follows
- Stop() closes the sockets on shutdown
NOTE: DNS-SD TXT publication needs an exported TXTEntry API that is not
yet in a tagged pion/mdns release; go.mod pins pion/mdns/v2 to a fork
branch via `replace` until pion/mdns#277 merges and ships. This PR
stays in draft until then.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,6 +18,7 @@ JetKVM is a high-performance, open-source KVM over IP (Keyboard, Video, Mouse) s
18
18
-**Ultra-low Latency** - 1080p@60FPS video with 30-60ms latency using H.264 encoding. Smooth mouse and keyboard interaction for responsive remote control.
19
19
-**Free & Optional Remote Access** - Remote management via JetKVM Cloud using WebRTC.
20
20
-**Optional Tailscale Networking** - Built-in Tailscale status and control-server configuration, including custom [Headscale](https://headscale.net/)-compatible endpoints.
21
+
-**Bonjour / DNS-SD Discovery** - JetKVM devices advertise themselves as `_jetkvm._tcp` on the local network, with TXT records exposing the firmware version, device ID, and setup state.
21
22
-**Open-source software** - Written in Golang on Linux. Easily customizable through SSH access to the JetKVM device.
0 commit comments