WendyOS Docs
AdvancedWendyos

WendyOS Networking Overview

WendyOS provides a self-contained networking stack designed for USB-tethered connectivity between a device (Raspberry Pi, Jetson, or other supported hardware) and a host computer.

WendyOS Networking Overview

WendyOS provides a self-contained networking stack designed for USB-tethered connectivity between a device (Raspberry Pi, Jetson, or other supported hardware) and a host computer. When you plug a WendyOS device into a host via USB-C, the device presents a composite USB gadget that includes both a network interface and a serial console. No drivers, no pairing, no manual configuration — the device advertises itself over mDNS and the wendy-agent can discover and connect to it immediately.

Architecture

WendyOS device                          Host computer
───────────────────────────────         ───────────────────────────────
  usb0 (NCM gadget interface)  ←USB→    enxXXXXXXXXXXXX (CDC NCM)
  IPv4: DHCP client (or shared)         IPv4: 10.42.0.1/24 (NM shared)
  IPv6: link-local (auto)               IPv6: link-local (auto)
  mDNS: _wendyos._udp (Avahi)           mDNS discovery (avahi-browse/dns-sd)
  /dev/ttyGS0 (ACM serial)     ←USB→    /dev/ttyACM0 (serial console)

Components

ComponentRoleSource
gadget-setup.shConfigures the USB gadget in configfs at bootrecipes-core/gadget-setup/
systemd-networkdManages usb0 IP configurationrecipes-core/systemd/
dnsmasqOptional on-device DHCP server for usb0recipes-support/gadget-network-config/
radvdIPv6 Router Advertisement daemon on usb0recipes-connectivity/radvd/
AvahimDNS service broadcasting (_wendyos._udp)recipes-connectivity/avahi/
generate-hostname.shSets a stable device hostname before Avahi startsrecipes-connectivity/avahi/
update-mdns-uuid.shInjects device UUID and name into the Avahi service filerecipes-core/wendyos-identity/

Topics

Key Addresses

WhatValue
Device usb0 IPv4 (DHCP client mode)Assigned by host (typically 10.42.0.210.42.0.5)
Host IPv4 when using NetworkManager shared10.42.0.1/24
dnsmasq pool (on-device DHCP server mode)10.42.0.210.42.0.5
IPv6Link-local only (fe80::/64, derived from MAC via EUI-64)
mDNS service_wendyos._udp, port 50051 pre-provisioning / 50052 post-provisioning
mDNS hostnamewendyos-<device-name>.local or wendyos-<short-uuid>.local

Platform Notes

WendyOS runs on multiple hardware platforms. Networking behaviour is identical across them, but the underlying USB controller differs:

PlatformUSB ControllerUSB Version
Raspberry Pi 5dwc2USB 2.0
Jetson AGX Orin / Orin Nanotegra-xudcUSB 3.2
Other Linux (generic)Detected at runtimeUSB 2.0 fallback

The QEMU virtual machine (qemuarm64-wendyos) does not use USB NCM gadget networking. It emulates a standard virtio network device instead.

Planned changes (not yet shipped)

The items below describe behaviour that is not implemented today. Current builds still rely exclusively on NetworkManager via its nmcli CLI for WiFi configuration, and have no built-in mTLS termination on the device side.

  • Network Manager and IWD coexistence via auto-detect (WDY-1236) — planned, not yet implemented. Today the agent talks to NetworkManager (nmcli) only. The planned change adds IWD (Internet Wireless Daemon) as an alternative. The agent will detect which CLI is present on the running OS and select the matching backend, so devices on older OS builds that ship NetworkManager keep working unchanged. The OS-side change to ship iwd lands first; the agent-side switchover is gated on the OS PR.
  • Unified TCP-based socket protocol for CLI and cloud (WDY-1246) — planned, not yet implemented. The same low-level TCP socket protocol — messages standardised by size, type, and payload — will back both cloud-to-device and CLI-to-device sessions, with the wendy CLI behaving as a local cloud instance. The existing flow (CLI emits a UDP broadcast, the device opens an HTTP connection back) becomes one of the supported transports under that unified surface.
  • Mutual TLS for device communication (WDY-1245 covers the Wendy Light provisioning slice) — planned, not yet implemented. Sample mTLS socket plumbing exists in a development branch and will be merged once the unified protocol above is in place. The accompanying provisioning improvements (generating private keys and CSRs directly on-device, mDNS-based discovery) follow.

On this page