← Algengar spurningar

Algengar spurningar eru skrifaðar á ensku og hollensku; þær birtast á ensku.

Algengar spurningar

Network: Ethernet, Wi-Fi and mobile

FAQ › EUZOS Desktop › Network · Nederlands

What is it?

EUZOS has its own network stack (kernel/src/net): Ethernet, ARP, IPv4, ICMP, UDP and TCP, with DHCP, DNS and NTP on top, and its own TLS 1.3 for HTTPS. Every network adapter implements the same Nic trait, so DHCP, DNS, ping, HTTP and SSH work the same over a cable, Wi-Fi or a mobile modem. Several adapters can be active at once; each is an Iface with its own MAC, IP configuration and ARP table. IPv4 only: the stack does not know IPv6 yet.

Three kinds of adapters (Nic::kind):

  • Ethernet: Intel e1000/e1000e/I217/I218/I219, Realtek RTL8111/8168 (PCIe), Realtek RTL8152/RTL8153/RTL8156 (USB, 100 Mbit/1 Gbit/2.5 Gbit; also the Ethernet port of most USB-C docks), virtio-net (QEMU, cloud). Broadcom BCM5717–5720 only exists in EUZOS Server.
  • Wi-Fi: the built-in chip (Broadcom SDIO FullMAC, Intel 8000 family SoftMAC) and a USB Wi-Fi stick (Realtek RTL8188SU/RTL8191SU, RTL8712 family). 5 GHz is preferred; a watchdog reconnects by itself.
  • Mobile: MBIM modems with a SIM card (e.g. Sierra Wireless EM7305, Huawei Mobile Broadband Module).

The firewall and static IP addresses are EUZOS Server features; see Server network and firewall.

How do I…?

How do I see my IP address and whether the cable is connected?

Type ip. Per adapter it shows the name, MAC, IP/mask, gateway, DNS, frames received and sent (and, if the adapter counts them, how many really went on the wire), and link yes|no. The last line counts TCP connections and repeated/out-of-order/window-full segments. In the desktop: the network icon in the taskbar and Settings › Network.

How do I get a new address after plugging in a cable later?

dhcp asks again on adapter 0; dhcp <adapter> on another adapter. dhcp renew [adapter] only extends the lease. At boot, DHCP runs on the first adapter with a cable (or the first one if none has a cable).

How do I connect to Wi-Fi from the console?

wifi on                       find and start the built-in chip (SDIO via ACPI, otherwise PCIe)
wifi scan                     list networks (strongest first, at most 20; * = needs a password)
wifi connect <name> [password]
wifi                          status of all Wi-Fi adapters and the remembered network

The password is typed as a secret: it is masked on screen and removed from the log, [ssh] lines and the history (main.rs::redact). A successful wifi connect remembers the network on the stick (see below). In the desktop use the Wi-Fi panel of the taskbar or Wi-Fi settings….

How do I connect to a new Wi-Fi network on the desktop?

The Wi-Fi panel of the taskbar and Settings › Network show your connection and the remembered networks that were in range at the last search; opening them does not search, so the screen stays smooth. Other networks… in the panel (or Add network in Settings) opens a pop-in in the middle of the screen: that searches, lists the networks with their security (WPA2-Personal, Open network, Enterprise…) and asks for a password when one is needed. Search again looks once more; rows that stay keep their place. Arrow keys and Enter work, as do the wheel and a finger, and Esc closes it. It closes by itself once the connection works. On the login screen the list opens directly in this form, because without a network nobody can sign in.

How do I add a Bluetooth device?

Settings › Bluetooth shows your paired devices and does not search. Add device opens a pop-in that searches for 30 seconds (this PC is visible to others only during that time), with Search again afterwards. Pair next to a device shows the progress and the result in the same place; a question about a code appears on top of it. Put the device in pairing mode first.

How do I make the PC remember (or forget) a Wi-Fi network?

wifi connect remembers automatically after DHCP succeeded. wifi remember <name> [password] stores it explicitly; without a password while you are connected to that network, it stores the key of the current connection. wifi forget deletes the remembered network. Only the WPA2 key (PMK, 64 hex characters = PBKDF2(password, name)) is stored, never the password. In the Wi-Fi panel the option is Remember on this PC (applies to all users of this PC).

How do I use a USB Wi-Fi stick next to the built-in Wi-Fi?

Put the adapter first: wifi usb scan, wifi usb connect <name> [pw], wifi internal …. wifi choose usb|internal|auto sets where commands without an adapter name, the Wi-Fi panel and the installer go (auto: built-in, otherwise the stick). The stick switches on by itself when plugged in (wifi usb on only says so). In the network stack the adapters are called wifi and wifi-usb.

Why does EUZOS prefer 5 GHz?

The same network often transmits on 2.4 and 5 GHz, and 2.4 GHz almost always has the slightly stronger signal, but only three non-overlapping channels. After all Wi-Fi PCs dropped out at the same moment on a crowded 2.4 GHz channel, euzos_ip::band gives a 5 GHz BSS a 15 dB head start, as long as its signal is at least −75 dBm. wifi::connect makes at most three attempts: after a temporary rejection (802.11 status 1, 17, 30 or 37) the same access point once more after 2 s, otherwise (and after that) another access point of the network; BSSes with recent trouble (the data path hung, connecting failed) come last (euzos_ip::reconnect::choose). See NETWORK-THROUGHPUT.md, "Wi-Fi drops out now and then".

What happens when the Wi-Fi drops?

net::wifi::watchdog runs every second from the dhcp thread. It reconnects to the same network with the same key (kept in memory only) when the driver lost the connection, or when the connection is up but nothing has come in for a long time while we did send (event::needs_recovery: the data path hangs). The address stays until DHCP is done, so open TCP connections survive. After a failed attempt it waits 2 s, 5 s, 10 s, then every 30 s, and it never gives up by itself: only disconnecting or choosing another network stops it. Meanwhile the bar shows "<network> · reconnecting…" and never "connected" (euzos_ip::reconnect, make ip-test). When the data path hangs, the log says which part stopped (the driver's counters, a verdict such as "transmit queue stuck" or "data frames dropped").

How do I use the mobile network (SIM)?

The modem is driven by the thread mobile. By default it connects only when there is no Wi-Fi or Ethernet with link, address and gateway (after 5 s without another network; it disconnects after 15 s of working Wi-Fi/Ethernet). Console:

mobile                      modem, SIM/PIN state, radio, registration, signal, connection, IP, settings, usage
mobile connect | disconnect connect now | disconnect (the policy only reconnects after 'mobile connect' or a reboot)
mobile on | off             the radio switch
mobile when auto|never|always
mobile roaming on|off
mobile apn auto|<apn>
mobile priority ethernet,wifi,mobile
mobile usage [clear]

The PIN is only entered in Settings › Mobile network (never on the console); it goes to the modem in one message and never to the log or disk. In the desktop: the section Mobile network in the Wi-Fi panel, and Settings › Mobile network (PIN, PUK, APN, Roaming, when, Priority, Data usage). On the login screen the mobile card opens the Mobile network panel with a PIN field.

What does "metered" mean?

When outbound traffic goes over mobile (net::metered), EUZOS does not download release files (fetch, install), app packages (apps install, Chromium), and DriverEnricher waits for Wi-Fi or Ethernet.

How do I test the connection?

ping <address> [n] (ICMP echo, default 4, 1–100), dns <name> [server[:port]] (A record, with time), http <address/path> (fetches over EUZOS's own TCP; https:// uses its own TLS 1.3 and checks the certificate against \EOS\FW\ROOTS.PEM). http prints the status line, address, header count, body size, an FNV-1a check value, the TLS details and the first ten lines of the body.

How do I diagnose a network problem?

  • net log [n]: network events with time since boot and UTC (ARP, DHCP, Wi-Fi scans/deauth/beacon loss, repeated SYNs, silences);
  • net sec [n]: frames received/sent per second per adapter (last 180 s);
  • net arp: ARP table per adapter and what waits for ARP;
  • net stat [reset]: throughput and time per layer (NIC, TCP, SSH, SDIO);
  • net diag, e1000, rtl8168, bcm: registers and counters of the adapters (all, or only Intel / Realtek RTL8111/8168 / Broadcom).

How do I log in over SSH?

The SSH server (port 22) starts by itself once an adapter has an address, if \EOS\FW\AUTHKEYS.TXT exists and \EOS\FW\SSHD.TXT does not contain off (legacy uit). sshd/sshd start, sshd stop, sshd status control it on the console (not over SSH). Only ed25519 keys are accepted. See the console page for what can be run over SSH. In the desktop: SSH settings shows sessions, keys (kind, comment, fingerprint) and the host key fingerprint, and can turn the service on or off.

Details

Ethernet drivers

DriverModuleChipsNotes
Intel e1000 familynet::e10008254x (e1000), 82574/82583 (e1000e), I217/I218/I219 (PCH)32 receive and 32 send descriptors, 2 KiB buffers, polling
Realtek RTL8111/8168net::rtl8168, libs/rtl816810ec:8168, 10ec:8161, revisions 8168B to 8168H/EP/FPno PHY firmware patch; see RTL8168.md
Realtek RTL8152net::rtl8152, usb/mod.rsUSB 2.0, 10/100 Mbitthe USB layer sets up the bulk endpoints
Realtek RTL8153 / RTL8156net::rtl8152, usb/rtl815x.rs, libs/rtl81530bda:8153, 0bda:8156 and 25 OEM ids (Lenovo, Microsoft, Samsung, TP-Link, ...); 1 Gbit/s, RTL8156 2.5 Gbit/s on USB 3built from a clean-room spec (docs/drivers/specs/rtl8153-rtl8156.md); no patch firmware; hardware test pending
virtio-netnet::virtiovirtio 1.0 PCIQEMU and cloud servers
Broadcom BCM5717–5720net::bcm5720, libs/bcm14e4:1655/1656/1657/165f/1665EUZOS Server only; each PCI function is its own adapter

net::init probes every PCI device in the order virtio → e1000 → rtl8168 → (bcm5720), then the RTL8152 on USB, and adds all adapters it finds (not only the first).

Routing: outbound traffic goes via the adapter with the target in its subnet, otherwise via the highest-ranked adapter (priority ethernet > wifi > mobile by default) with link, address and gateway (net::Net::route). The DNS server comes from the chosen adapter. A TCP connection stays on the local address it started on. Packets to 127.0.0.0/8 or an own address go through a loopback queue (lo).

Wi-Fi drivers

AdapterModuleChipsFirmware on the stick
Built-in, SDIO FullMACnet::brcmfmacBroadcom BCM43241 (Sony VAIO Tap 11)43241B4.BIN + NVRAM 43241B4.TXT
Built-in, PCIe SoftMACnet::iwl (trans.rs, connect.rs, regs.rs), libs/iwlIntel Wireless 8260, 8265IWL8000C.UCD, IWL8265.UCD
Built-in, CNVi SoftMAC (gen2)net::iwl (gen2.rs), libs/iwl (gen2.rs)Intel Wi-Fi 6 AX201, Wireless-AC 9461/9462/9560 (Qu/QuZ)IWLQU*.UCD
Built-in, CNVi SoftMAC (gen3)net::iwl (gen2.rs, gen3 mode), libs/iwl (gen3.rs)Intel Wi-Fi 6E AX211 (8086:51F0, e.g. HP ProBook 450 G9): built, not yet tested on hardwareIWLSOGF.UCD + IWLSOGF.PNV
USB sticknet::rtl8712, usb/rtl8712.rs, libs/rtl8712Realtek RTL8188SU/RTL8191SU (e.g. 0bda:8171)RTL8712U.BIN (exception U-18)

net::wifi_pci::identify recognises more PCIe chips (Intel 7260/7265/3165/ 3168/9260/9000, AX200/AX201/AX210/AX211, BE200; Realtek RTL8821/8822/8852/ 8723/8812; MediaTek MT7921/7922; Qualcomm/Atheros; Broadcom PCIe) and names the firmware file it would need, but only the Intel 8000 family is booted; the others print "Under construction". FullMAC chips connect and do WPA2 in their own firmware; for SoftMAC chips EUZOS does 802.11 and WPA2 (4-way handshake, CCMP) itself. Security kinds shown by a scan: open, WEP, WPA, WPA2, WPA3.

Boot: the built-in Wi-Fi boots in its own thread wifi by default and connects to the remembered network; the boot screen shows "Wifi: loading firmware n%". \EOS\FW\WIFISTART.TXT changes that (see below).

Remembered network and security: a WIFI.TXT without a valid key is ignored unless it says the network is open, so a fake open access point with the same name does not win. In the log a network name appears only as a short hash (network #xxxxxx); wifi shows the real name.

Mobile (MBIM)

net::mbim talks MBIM 1.0 to the modem (OPEN, DEVICE_CAPS, SIM, PIN, radio, registration, signal, connect) over the USB control interface; the data side is NCM. The adapter mobiel gets address, gateway and DNS from the modem (IP_CONFIGURATION, not DHCP), adds and strips an Ethernet header, answers ARP itself and clamps the TCP MSS when the MTU is below 1500. The APN is set by hand or automatically: own table on MCC+MNC (libs/mbim/src/apn.rs), then an empty APN, then internet. Roaming is off by default. Usage is counted per month and in total and written to MOBILE.TXT every 10 minutes and on disconnect. See MOBILE.md.

Time (NTP)

net::ntp asks pool.ntp.org (SNTP, RFC 4330) once an adapter has an address, for checking certificates. Only a reply to our own request counts, and a time more than two days away from the RTC is not used. date ntp fetches it again (see Diagnostics).

SSH server

net::sshd (transport from libs/ssh): host key from HOSTKEY.TXT (a temporary key per boot if missing), allowed keys from AUTHKEYS.TXT (OpenSSH lines, ed25519 only). Limits: at most 3 clients, at most 2 per address, a logging-in session closes after 300 s without activity, output of one command at most 112 KiB. Every command still passes the console policy (environment::shell_allowed); otherwise "not available (build or policy)". On EUZOS Server, SSH is only allowed in a test build with the development setting, never on production (sshd::role_allows).

Reference

Console commands

CommandArgumentsWhat it does
ip–address, mask, gateway, DNS, counters and link per adapter; TCP statistics
dhcp[adapter]request an address again (default adapter 0)
dhcp renew[adapter]extend the lease; legacy alias vernieuw
ping<address> [n]ICMP echo, n = 1..100 (default 4), 1 s apart
dns<name> [server[:port]]look up an A record (default port 53)
http<address/path>fetch a page; https:// with own TLS 1.3 and certificate check
net diag–registers and counters of all adapters with diagnostics
net stat[reset]throughput and time per layer since the reset
net log[n]network events with time
net sec[n]frames per second per adapter
net arp–ARP table per adapter
net window[KiB]TCP receive window of new logged-in SSH sessions; legacy alias venster
net ack[N]TCP acknowledges after N full segments
e1000–diagnostics of the Intel adapters only
rtl8168–diagnostics of the Realtek RTL8111/8168 only
bcm–diagnostics of the Broadcom BCM5717–5720 only (server)
wifi[status]status of all Wi-Fi adapters, boot timings, remembered network
wifi on–switch on the built-in Wi-Fi (SDIO via ACPI, else PCIe); legacy alias aan
wifi scan–scan for networks
wifi connect<name> [password]connect, DHCP, and remember on success; legacy alias verbind
wifi disconnect–drop the connection; legacy alias verbreek
wifi remember<name> [password]store the network (key, not password) on the stick; legacy alias onthoud
wifi forget–delete the remembered network; legacy alias vergeet
wifi chooseusb|internal|autodefault adapter for Wi-Fi commands; stick = usb; legacy aliases kies, intern, ingebouwd
wifi <adapter> …adapter usb, stick, internal, builtin (legacy intern, ingebouwd)run the subcommand on that adapter
mobile–full modem state (legacy command name mobiel)
mobile usb–all USB configurations of the modem and the choice
mobile connect–connect now; legacy alias verbind
mobile disconnect–disconnect; legacy alias verbreek
mobile on / off–radio switch; legacy aliases aan / uit
mobile whenauto|never|alwayswhen to use mobile; legacy aliases wanneer, nooit, altijd
mobile roamingon|offdata abroad; legacy aan/uit
mobile apnauto|<apn>set or clear the APN
mobile priorityethernet,wifi,mobile (each once, best first)adapter priority; legacy alias voorrang
mobile usage[clear]data usage; clear sets it to 0; legacy aliases verbruik, wis
sshd[start|stop|status]SSH server on port 22 (not from SSH itself)

On EUZOS Server, wifi and mobile answer "not in EUZOS Server".

SSH-side commands (ssh <host> <command>)

CommandWhat it does
put <path>stdin becomes a file under EOS/ on the boot volume (not KX64.ELF itself; use commit)
apps receivereceive a signed app package on stdin into apps/ on partition 2 (legacy apps ontvang)
package receive <name>receive an app package (.PAK) on stdin (legacy pakket ontvang)
tryprepare the trial kernel and reboot after the reply
rebootreboot after the reply (legacy herstart)
log [n]the log (over SSH: everything by default)
exit, logoutend the interactive session
any other console commandrun with its output captured, subject to the console policy

Functions and modules

Function / moduleRole
crate::net::initprobe and add all wired adapters
crate::net::with, net::availableaccess the stack; whether any adapter is active
crate::net::Net::routechoose the outbound adapter
crate::net::meteredis outbound traffic going over mobile?
crate::net::dhcp::run_on, dhcp::renew, dhcp::maintain, dhcp::link_watcherDHCP client (RFC 2131)
crate::net::dns::resolve, dns::resolve_viaDNS client (RFC 1035)
crate::net::pingICMP echo
crate::net::http::getsingle-request HTTP/HTTPS client (profile server, DriverEnricher, http)
crate::net::webthe browser's HTTP/1.1 client with keep-alive, cookies, HSTS
crate::net::ntp::sync, ntp::querynetwork time
crate::net::event::show, event::show_sec, event::needs_recoverynet log, net sec, hang detection
crate::net::stat::show, stat::resetnet stat
crate::net::wifi::commandthe wifi command
crate::net::wifi::turn_on, wifi::watchdog, wifi::forget, wifi::peek, wifi::connected_toWi-Fi control for console, panel and Settings
crate::net::wifi::wifi_txt, wifi::current_wifi_txtbuild WIFI.TXT content (also for the installer)
crate::net::wifi::WifiDevice (trait)what each Wi-Fi chip driver provides: chip, state, scan, connect, disconnect, rssi, off_before_reboot
crate::net::wifi_pci::identifyidentify a PCIe Wi-Fi chip and its firmware file
euzos_ip::band::choose_band5 GHz preference
crate::net::mbim::command, mbim::settings, mbim::set_on, mbim::enter_pinmobile modem
euzos_mbim::policy (Settings, When, Priority, Kind)mobile policy and MOBILE.TXT format
crate::net::sshd::command, sshd::role_allowsSSH server
crate::sshd_settings::collect, set_enabled, disconnectdata for the SSH settings app
crate::network_services (main.rs)start NTP and sshd once the network is up
crate::redact (main.rs)remove Wi-Fi passwords and pairing keys from logged commands

Config files

All in \EOS\FW\ on the boot volume (stick or internal ESP).

FileKey / contentValuesMeaning
WIFI.TXTssid=network nameremembered network
pmk=64 hex charactersWPA2 key (PBKDF2 of password and name), never the password
beveiliging=openopenthe network is open (no key)
WIFISTART.TXTwords, # commentbackground (default) or wait/foreground; fast (default) or slow (legacy achtergrond, wacht, voorgrond, snel, traag)boot Wi-Fi in the background or let the boot wait; fast 4-bit SDIO bus or slow 1-bit download
MOBILE.TXT (legacy name MOBIEL.TXT still read)mobile= (legacy mobiel=)on|off (legacy aan|uit)radio switch
when= (legacy wanneer=)auto|never|always (legacy nooit, altijd)when to use mobile
roaming=on|off (legacy aan|uit)roaming
apn=auto or an APNAPN
priority= (legacy voorrang=)e.g. ethernet,wifi,mobilepriority
usage-month=, usage-in=, usage-out=, usage-total= (legacy verbruik-maand=, -in=, -uit=, -totaal=)month YYYYMM, bytesdata usage
AUTHKEYS.TXTOpenSSH linesssh-ed25519 AAAA… commentkeys allowed to log in over SSH
HOSTKEY.TXT64 hex characters–seed of the ed25519 host key (secret)
SSHD.TXTtextoff (legacy uit)do not start sshd automatically
ROOTS.PEMPEM certificates–trusted roots for HTTPS
EXTRA.PEMPEM certificates–extra roots for a test server; ignored in a production build
firmware43241B4.BIN, 43241B4.TXT, IWL8000C.UCD, IWL8265.UCD, …–Wi-Fi firmware (exception U-15 for Intel)

MOBILE.TXT never contains the PIN or PUK. NETWORK.TXT (static addresses) and FIREWALL.TXT belong to EUZOS Server.

Since 27-10-2026 EUZOS writes English config file names, keys, values and confirmation words (for example WIPE-…, environment= in PROFILE.TXT); the old Dutch names (marked legacy here) are still read and accepted (docs/ENGLISH.md).

Protocol messages and formats

ProtocolWhereNotes
DHCP (RFC 2131)net::dhcpthe old address stays during renewal until the ACK
DNS (RFC 1035)net::dnsA records only
SNTP (RFC 4330)net::ntpserver pool.ntp.org, UDP 123, random originate check
TLS 1.3 (RFC 8446)libs/tlsroots from ROOTS.PEM
SSHlibs/ssh, net::sshdport 22, ed25519
802.11 + WPA2-PSK (4-way, CCMP)net::iwl, libs/rtl8712SoftMAC chips; FullMAC does this in firmware
MBIM 1.0 + NCMnet::mbim, libs/mbimSEND_ENCAPSULATED_COMMAND / GET_ENCAPSULATED_RESPONSE; response fetched after 300 ms without notification

See also