Files
infix/dev/wifi/index.html
T

2866 lines
75 KiB
HTML

<!DOCTYPE html><html lang="en" class="no-js"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Infix Documentation">
<link rel="canonical" href="https://kernelkit.github.io/infix/dev/wifi/">
<link rel="prev" href="../vpn/">
<link rel="next" href="../discovery/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1">
<title>Wireless LAN (WiFi) - User's Guide</title>
<link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../extra.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<link href="../assets/stylesheets/glightbox.min.css" rel="stylesheet"><script src="../assets/javascripts/glightbox.min.js"></script><style id="glightbox-style">
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: black; }
.glightbox-clean .gslide-media { -webkit-box-shadow: none; box-shadow: none; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color); }
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color); }
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color); }
</style></head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="orange">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#wi-fi-wireless-lan" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="https://kernelkit.org/" title="User's Guide" class="md-header__button md-logo" aria-label="User's Guide" data-md-component="logo">
<img src="../logo-plain.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
User's Guide
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Wireless LAN (WiFi)
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="orange" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"></path></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="orange" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"></path></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/kernelkit/infix/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
</div>
<div class="md-source__repository">
kernelkit/infix
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="https://kernelkit.org/" title="User's Guide" class="md-nav__button md-logo" aria-label="User's Guide" data-md-component="logo">
<img src="../logo-plain.png" alt="logo">
</a>
User's Guide
</label>
<div class="md-nav__source">
<a href="https://github.com/kernelkit/infix/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
</div>
<div class="md-source__repository">
kernelkit/infix
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2">
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
CLI
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
CLI
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../cli/introduction/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/configure/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/keybindings/" class="md-nav__link">
<span class="md-ellipsis">
Keybindings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/netcalc/" class="md-nav__link">
<span class="md-ellipsis">
Network Calculator
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/tcpdump/" class="md-nav__link">
<span class="md-ellipsis">
Network Monitoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/quick/" class="md-nav__link">
<span class="md-ellipsis">
Quickstart Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/text-editor/" class="md-nav__link">
<span class="md-ellipsis">
Text Editor
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/upgrade/" class="md-nav__link">
<span class="md-ellipsis">
Upgrading
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../container/" class="md-nav__link">
<span class="md-ellipsis">
Docker Containers
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Networking
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Networking
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../networking/" class="md-nav__link">
<span class="md-ellipsis">
Network Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../firewall/" class="md-nav__link">
<span class="md-ellipsis">
Firewall Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../qos/" class="md-nav__link">
<span class="md-ellipsis">
Quality of Service
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../eth-counters/" class="md-nav__link">
<span class="md-ellipsis">
RMON Counters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../tunnels/" class="md-nav__link">
<span class="md-ellipsis">
Tunneling (L2/L3)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../vpn/" class="md-nav__link">
<span class="md-ellipsis">
VPN Tunnels
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Wireless LAN (WiFi)
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Wireless LAN (WiFi)
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#architecture-overview" class="md-nav__link">
<span class="md-ellipsis">
Architecture Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#current-limitations" class="md-nav__link">
<span class="md-ellipsis">
Current Limitations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#supported-wi-fi-adapters" class="md-nav__link">
<span class="md-ellipsis">
Supported Wi-Fi Adapters
</span>
</a>
<nav class="md-nav" aria-label="Supported Wi-Fi Adapters">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#known-working-chipsets" class="md-nav__link">
<span class="md-ellipsis">
Known Working Chipsets
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#radio-configuration" class="md-nav__link">
<span class="md-ellipsis">
Radio Configuration
</span>
</a>
<nav class="md-nav" aria-label="Radio Configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#country-code-and-regulatory-compliance" class="md-nav__link">
<span class="md-ellipsis">
Country Code and Regulatory Compliance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#basic-radio-setup" class="md-nav__link">
<span class="md-ellipsis">
Basic Radio Setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#wifi-6-80211ax-support" class="md-nav__link">
<span class="md-ellipsis">
WiFi 6 (802.11ax) Support
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#discovering-available-networks-scanning" class="md-nav__link">
<span class="md-ellipsis">
Discovering Available Networks (Scanning)
</span>
</a>
<nav class="md-nav" aria-label="Discovering Available Networks (Scanning)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#enable-background-scanning" class="md-nav__link">
<span class="md-ellipsis">
Enable Background Scanning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#view-available-networks" class="md-nav__link">
<span class="md-ellipsis">
View Available Networks
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#station-mode-client" class="md-nav__link">
<span class="md-ellipsis">
Station Mode (Client)
</span>
</a>
<nav class="md-nav" aria-label="Station Mode (Client)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#step-1-configure-wifi-password" class="md-nav__link">
<span class="md-ellipsis">
Step 1: Configure WiFi Password
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#step-2-connect-to-network" class="md-nav__link">
<span class="md-ellipsis">
Step 2: Connect to Network
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#access-point-mode" class="md-nav__link">
<span class="md-ellipsis">
Access Point Mode
</span>
</a>
<nav class="md-nav" aria-label="Access Point Mode">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#basic-ap-configuration" class="md-nav__link">
<span class="md-ellipsis">
Basic AP Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hidden-network-ssid-hiding" class="md-nav__link">
<span class="md-ellipsis">
Hidden Network (SSID Hiding)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#multi-ssid-configuration" class="md-nav__link">
<span class="md-ellipsis">
Multi-SSID Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ap-as-bridge-port" class="md-nav__link">
<span class="md-ellipsis">
AP as Bridge Port
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#troubleshooting-connection-issues" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting Connection Issues
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5">
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Services
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Services
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../discovery/" class="md-nav__link">
<span class="md-ellipsis">
Device Discovery
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dhcp/" class="md-nav__link">
<span class="md-ellipsis">
DHCP Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ntp/" class="md-nav__link">
<span class="md-ellipsis">
NTP Server
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6">
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
System
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
System
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../boot/" class="md-nav__link">
<span class="md-ellipsis">
Boot Procedure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../system/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
<span class="md-ellipsis">
Hardware Info &amp; Status
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../management/" class="md-nav__link">
<span class="md-ellipsis">
Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../syslog/" class="md-nav__link">
<span class="md-ellipsis">
Syslog Support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../support/" class="md-nav__link">
<span class="md-ellipsis">
Support Data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../upgrade/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7">
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Scripting
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Scripting
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../scripting/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-sysrepocfg/" class="md-nav__link">
<span class="md-ellipsis">
Legacy Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
<span class="md-ellipsis">
With NETCONF
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-restconf/" class="md-nav__link">
<span class="md-ellipsis">
With RESTCONF
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8">
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Developer's Corner
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Developer's Corner
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../branding/" class="md-nav__link">
<span class="md-ellipsis">
Branding &amp; Releases
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../developers-guide/" class="md-nav__link">
<span class="md-ellipsis">
Developer's Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../override-package/" class="md-nav__link">
<span class="md-ellipsis">
Developing with Buildroot
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../netboot/" class="md-nav__link">
<span class="md-ellipsis">
Netboot HowTo
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../testing/" class="md-nav__link">
<span class="md-ellipsis">
Regression Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../test-arch/" class="md-nav__link">
<span class="md-ellipsis">
Test System Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../virtual/" class="md-nav__link">
<span class="md-ellipsis">
Virtual Environments
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../vpd/" class="md-nav__link">
<span class="md-ellipsis">
Vital Product Data (VPD)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../license/" class="md-nav__link">
<span class="md-ellipsis">
Origin &amp; Licensing
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#architecture-overview" class="md-nav__link">
<span class="md-ellipsis">
Architecture Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#current-limitations" class="md-nav__link">
<span class="md-ellipsis">
Current Limitations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#supported-wi-fi-adapters" class="md-nav__link">
<span class="md-ellipsis">
Supported Wi-Fi Adapters
</span>
</a>
<nav class="md-nav" aria-label="Supported Wi-Fi Adapters">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#known-working-chipsets" class="md-nav__link">
<span class="md-ellipsis">
Known Working Chipsets
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#radio-configuration" class="md-nav__link">
<span class="md-ellipsis">
Radio Configuration
</span>
</a>
<nav class="md-nav" aria-label="Radio Configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#country-code-and-regulatory-compliance" class="md-nav__link">
<span class="md-ellipsis">
Country Code and Regulatory Compliance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#basic-radio-setup" class="md-nav__link">
<span class="md-ellipsis">
Basic Radio Setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#wifi-6-80211ax-support" class="md-nav__link">
<span class="md-ellipsis">
WiFi 6 (802.11ax) Support
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#discovering-available-networks-scanning" class="md-nav__link">
<span class="md-ellipsis">
Discovering Available Networks (Scanning)
</span>
</a>
<nav class="md-nav" aria-label="Discovering Available Networks (Scanning)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#enable-background-scanning" class="md-nav__link">
<span class="md-ellipsis">
Enable Background Scanning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#view-available-networks" class="md-nav__link">
<span class="md-ellipsis">
View Available Networks
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#station-mode-client" class="md-nav__link">
<span class="md-ellipsis">
Station Mode (Client)
</span>
</a>
<nav class="md-nav" aria-label="Station Mode (Client)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#step-1-configure-wifi-password" class="md-nav__link">
<span class="md-ellipsis">
Step 1: Configure WiFi Password
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#step-2-connect-to-network" class="md-nav__link">
<span class="md-ellipsis">
Step 2: Connect to Network
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#access-point-mode" class="md-nav__link">
<span class="md-ellipsis">
Access Point Mode
</span>
</a>
<nav class="md-nav" aria-label="Access Point Mode">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#basic-ap-configuration" class="md-nav__link">
<span class="md-ellipsis">
Basic AP Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hidden-network-ssid-hiding" class="md-nav__link">
<span class="md-ellipsis">
Hidden Network (SSID Hiding)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#multi-ssid-configuration" class="md-nav__link">
<span class="md-ellipsis">
Multi-SSID Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ap-as-bridge-port" class="md-nav__link">
<span class="md-ellipsis">
AP as Bridge Port
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#troubleshooting-connection-issues" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting Connection Issues
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<nav class="md-path" aria-label="Navigation">
<ol class="md-path__list">
<li class="md-path__item">
<a href=".." class="md-path__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-path__item">
<a href="../networking/" class="md-path__link">
<span class="md-ellipsis">
Networking
</span>
</a>
</li>
</ol>
</nav>
<article class="md-content__inner md-typeset">
<h1 id="wi-fi-wireless-lan">Wi-Fi (Wireless LAN)<a class="headerlink" href="#wi-fi-wireless-lan" title="Permanent link"></a></h1>
<p>Infix includes comprehensive Wi-Fi support for both client (Station) and
Access Point modes. When a compatible Wi-Fi adapter is detected, the system
automatically creates a WiFi radio (PHY) in factory-config, that can
host virtual interfaces.</p>
<h2 id="architecture-overview">Architecture Overview<a class="headerlink" href="#architecture-overview" title="Permanent link"></a></h2>
<p>Infix uses a two-layer WiFi architecture:</p>
<ol>
<li><strong>WiFi Radio (PHY layer)</strong>: Represents the physical wireless hardware</li>
<li>Configured via <code>ietf-hardware</code> module</li>
<li>Controls channel, transmit power, regulatory domain</li>
<li>
<p>One radio can host multiple virtual interfaces</p>
</li>
<li>
<p><strong>WiFi Interface (Network layer)</strong>: Virtual interface on a radio</p>
</li>
<li>Configured via <code>infix-interfaces</code> module</li>
<li>Can operate in Station (client) or Access Point mode</li>
<li>Each interface references a parent radio</li>
</ol>
<h2 id="current-limitations">Current Limitations<a class="headerlink" href="#current-limitations" title="Permanent link"></a></h2>
<ul>
<li>USB hotplug is not supported - adapters must be present at boot</li>
<li>Interface naming may be inconsistent with multiple USB Wi-Fi adapters</li>
<li>AP and Station modes cannot be mixed on the same radio</li>
</ul>
<h2 id="supported-wi-fi-adapters">Supported Wi-Fi Adapters<a class="headerlink" href="#supported-wi-fi-adapters" title="Permanent link"></a></h2>
<p>Wi-Fi support is primarily tested with Realtek chipset-based adapters.</p>
<h3 id="known-working-chipsets">Known Working Chipsets<a class="headerlink" href="#known-working-chipsets" title="Permanent link"></a></h3>
<ul>
<li>Built-in Wi-Fi on Banana Pi r3</li>
<li>Built-in Wi-Fi on Raspberry Pi 4/CM4</li>
<li>RTL8821CU</li>
<li>Other Realtek chipsets may work but are not guaranteed</li>
</ul>
<div class="admonition note">
<p class="admonition-title">Some Realtek chipsets require proprietary drivers not included in the standard kernel</p>
<div class="highlight"><pre><span></span><code> Firmware requirements vary by chipset
Check kernel logs if your adapter is not detected
</code></pre></div>
</div>
<h2 id="radio-configuration">Radio Configuration<a class="headerlink" href="#radio-configuration" title="Permanent link"></a></h2>
<p>Before configuring WiFi interfaces, you must first configure the WiFi radio.
Radios are automatically discovered and named <code>radio0</code>, <code>radio1</code>, etc.</p>
<h3 id="country-code-and-regulatory-compliance">Country Code and Regulatory Compliance<a class="headerlink" href="#country-code-and-regulatory-compliance" title="Permanent link"></a></h3>
<div class="admonition tip">
<p class="admonition-title">Important</p>
<p>The <code>country-code</code> setting is <strong>legally required</strong> and determines which WiFi channels and power levels are permitted in your location. Using an incorrect country code may violate local wireless regulations.</p>
</div>
<p><strong>Factory default</strong>: Systems may ship with a default country code (typically "DE" for Germany in European builds or "00" for World domain). <strong>You must configure the correct country code for your deployment location.</strong></p>
<p><strong>Common country codes</strong>:
- Europe: DE (Germany), SE (Sweden), GB (UK), FR (France), ES (Spain)
- Americas: US (United States), CA (Canada), BR (Brazil)
- Asia-Pacific: JP (Japan), AU (Australia), CN (China)</p>
<p>See <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-1 alpha-2</a> for the complete list.</p>
<h3 id="basic-radio-setup">Basic Radio Setup<a class="headerlink" href="#basic-radio-setup" title="Permanent link"></a></h3>
<p>Configure the radio with channel, power, and regulatory domain.</p>
<p><strong>For Station (client) mode:</strong>
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>admin@example:/&gt; configure
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>admin@example:/config/&gt; edit hardware component radio0 wifi-radio
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set country-code DE
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; leave
</code></pre></div><p></p>
<p><strong>For Access Point mode:</strong>
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>admin@example:/&gt; configure
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>admin@example:/config/&gt; edit hardware component radio0 wifi-radio
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set country-code DE
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set band 5GHz
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set channel 36
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; leave
</code></pre></div><p></p>
<p><strong>Key radio parameters:</strong>
- <code>country-code</code>: Two-letter ISO 3166-1 code - determines allowed channels and maximum power. Examples: US, DE, GB, SE, FR, JP. <strong>Must match your physical location for legal compliance.</strong>
- <code>band</code>: 2.4GHz, 5GHz, or 6GHz (required for AP mode). Band selection automatically enables appropriate WiFi standards (2.4GHz: 802.11n, 5GHz: 802.11n/ac, 6GHz: 802.11n/ac/ax)
- <code>channel</code>: Channel number (1-196) or "auto" (required for AP mode). When set to "auto", defaults to channel 6 for 2.4GHz, channel 36 for 5GHz, or channel 109 for 6GHz
- <code>enable-wifi6</code>: Boolean (default: false). Opt-in to enable WiFi 6 (802.11ax) on 2.4GHz and 5GHz bands. The 6GHz band always uses WiFi 6 regardless of this setting</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>TX power and channel width are automatically determined by the driver based on regulatory constraints, PHY mode, and hardware capabilities.</p>
</div>
<h3 id="wifi-6-80211ax-support">WiFi 6 (802.11ax) Support<a class="headerlink" href="#wifi-6-80211ax-support" title="Permanent link"></a></h3>
<p>WiFi 6 (802.11ax) provides improved performance in congested environments through
features like OFDMA, Target Wake Time, and BSS Coloring. By default, WiFi 6 is
only enabled on the 6GHz band (WiFi 6E requirement).</p>
<p>To enable WiFi 6 on 2.4GHz or 5GHz bands:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>admin@example:/&gt; configure
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>admin@example:/config/&gt; edit hardware component radio0 wifi-radio
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set country-code DE
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set band 5GHz
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set channel 36
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set enable-wifi6 true
<a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; leave
</code></pre></div>
<p><strong>WiFi 6 Benefits:</strong>
- <strong>OFDMA</strong>: Better multi-user efficiency in dense environments
- <strong>Target Wake Time</strong>: Improved battery life for client devices
- <strong>1024-QAM</strong>: Higher throughput with strong signal conditions
- <strong>BSS Coloring</strong>: Reduced interference from neighboring networks</p>
<p><strong>Requirements:</strong>
- Hardware must support 802.11ax
- Client devices must support WiFi 6 for full benefits
- Older WiFi 5/4 clients can still connect but won't use WiFi 6 features</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The 6GHz band always uses WiFi 6 (802.11ax) regardless of the <code>enable-wifi6</code>
setting, as WiFi 6E requires 802.11ax support.</p>
</div>
<h2 id="discovering-available-networks-scanning">Discovering Available Networks (Scanning)<a class="headerlink" href="#discovering-available-networks-scanning" title="Permanent link"></a></h2>
<p>Before connecting to a WiFi network, you need to discover which networks
are available. Infix automatically scans for networks when a WiFi interface
is created with a radio reference.</p>
<h3 id="enable-background-scanning">Enable Background Scanning<a class="headerlink" href="#enable-background-scanning" title="Permanent link"></a></h3>
<p>To enable scanning without connecting, configure the radio and create a WiFi
interface referencing it:</p>
<p><strong>Step 1: Configure the radio</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>admin@example:/&gt; configure
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>admin@example:/config/&gt; edit hardware component radio0 wifi-radio
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set country-code DE
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; leave
</code></pre></div>
<p><strong>Step 2: Create WiFi interface with radio reference only</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>admin@example:/&gt; configure
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>admin@example:/config/&gt; edit interface wifi0
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>admin@example:/config/interface/wifi0/&gt; set wifi radio radio0
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a>admin@example:/config/interface/wifi0/&gt; leave
</code></pre></div>
<p>The system will now start scanning in the background. The interface will
operate in scan-only mode until you configure a specific mode (station or
access-point).</p>
<h3 id="view-available-networks">View Available Networks<a class="headerlink" href="#view-available-networks" title="Permanent link"></a></h3>
<p>Use <code>show interface</code> to see discovered networks and their signal strength:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>admin@example:/&gt; show interface wifi0
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>name : wifi0
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>type : wifi
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a>index : 3
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a>mtu : 1500
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a>operational status : down
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a>physical address : f0:09:0d:36:5f:86
<a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a>ipv4 addresses :
<a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a>ipv6 addresses :
<a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a>SSID : ----
<a id="__codelineno-5-11" name="__codelineno-5-11" href="#__codelineno-5-11"></a>Signal : ----
<a id="__codelineno-5-12" name="__codelineno-5-12" href="#__codelineno-5-12"></a>
<a id="__codelineno-5-13" name="__codelineno-5-13" href="#__codelineno-5-13"></a>SSID SECURITY SIGNAL
<a id="__codelineno-5-14" name="__codelineno-5-14" href="#__codelineno-5-14"></a>MyNetwork WPA2-Personal excellent
<a id="__codelineno-5-15" name="__codelineno-5-15" href="#__codelineno-5-15"></a>GuestWiFi WPA2-WPA3-Personal good
<a id="__codelineno-5-16" name="__codelineno-5-16" href="#__codelineno-5-16"></a>CoffeeShop Open fair
<a id="__codelineno-5-17" name="__codelineno-5-17" href="#__codelineno-5-17"></a>IoT-Devices WPA2-Personal good
</code></pre></div>
<p>In the CLI, signal strength is reported as: excellent, good, fair or bad.
For precise RSSI values in dBm, use NETCONF or RESTCONF to access the
operational datastore directly.</p>
<h2 id="station-mode-client">Station Mode (Client)<a class="headerlink" href="#station-mode-client" title="Permanent link"></a></h2>
<p>Station mode connects to an existing Wi-Fi network. Before configuring station
mode, follow the "Discovering Available Networks (Scanning)" section above to
scan for available networks and identify the SSID you want to connect to.</p>
<h3 id="step-1-configure-wifi-password">Step 1: Configure WiFi Password<a class="headerlink" href="#step-1-configure-wifi-password" title="Permanent link"></a></h3>
<p>Create a keystore entry for your WiFi password (8-63 characters):</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>admin@example:/&gt; configure
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a>admin@example:/config/&gt; edit keystore symmetric-key my-wifi-key
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a>admin@example:/config/keystore/…/my-wifi-key/&gt; set key-format wifi-preshared-key-format
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a>admin@example:/config/keystore/…/my-wifi-key/&gt; set symmetric-key MyPassword123
<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a>admin@example:/config/keystore/…/my-wifi-key/&gt; leave
</code></pre></div>
<h3 id="step-2-connect-to-network">Step 2: Connect to Network<a class="headerlink" href="#step-2-connect-to-network" title="Permanent link"></a></h3>
<p>Configure station mode with the SSID and password to connect:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>admin@example:/&gt; configure
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>admin@example:/config/&gt; edit interface wifi0
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a>admin@example:/config/interface/wifi0/&gt; set wifi station ssid MyHomeNetwork
<a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a>admin@example:/config/interface/wifi0/&gt; set wifi station security secret my-wifi-key
<a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a>admin@example:/config/interface/wifi0/&gt; leave
</code></pre></div>
<p>The connection attempt will start immediately. You can verify the connection status:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>admin@example:/&gt; show interface wifi0
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>name : wifi0
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>type : wifi
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a>operational status : up
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a>physical address : f0:09:0d:36:5f:86
<a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a>SSID : MyHomeNetwork
<a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a>Signal : excellent
</code></pre></div>
<p><strong>Station configuration parameters:</strong>
- <code>radio</code>: Reference to the WiFi radio (mandatory) - already set during scanning
- <code>station ssid</code>: Network name to connect to (mandatory)
- <code>station security mode</code>: <code>auto</code> (default, WPA2/WPA3 auto-negotiation) or <code>disabled</code> (open network)
- <code>station security secret</code>: Reference to keystore entry (required unless mode is <code>disabled</code>)</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <code>auto</code> security mode automatically selects WPA3-SAE or WPA2-PSK based on
what the access point supports, prioritizing WPA3 for better security.
Certificate-based authentication (802.1X/EAP) is not yet supported.</p>
</div>
<h2 id="access-point-mode">Access Point Mode<a class="headerlink" href="#access-point-mode" title="Permanent link"></a></h2>
<p>Access Point (AP) mode allows your device to create a WiFi network that
other devices can connect to. APs are configured as virtual interfaces on
a WiFi radio.</p>
<h3 id="basic-ap-configuration">Basic AP Configuration<a class="headerlink" href="#basic-ap-configuration" title="Permanent link"></a></h3>
<p>First, ensure the radio is configured (see Radio Configuration above). Then
create an AP interface:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>admin@example:/&gt; configure
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>admin@example:/config/&gt; edit interface wifi0
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>admin@example:/config/interface/wifi0/&gt; set wifi radio radio0
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a>admin@example:/config/interface/wifi0/&gt; set wifi access-point ssid MyNetwork
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a>admin@example:/config/interface/wifi0/&gt; set wifi access-point security mode wpa2-personal
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a>admin@example:/config/interface/wifi0/&gt; set wifi access-point security secret example
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a>admin@example:/config/interface/wifi0/&gt; leave
</code></pre></div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Using <code>wifiN</code> as the interface name automatically sets the type to WiFi.
Alternatively, you can use any name and explicitly set <code>type wifi</code>.</p>
</div>
<p><strong>Access Point configuration parameters:</strong>
- <code>radio</code>: Reference to the WiFi radio (mandatory)
- <code>access-point ssid</code>: Network name (SSID) to broadcast
- <code>access-point hidden</code>: Set to <code>true</code> to hide SSID (optional, default: false)
- <code>access-point security mode</code>: Security mode (see below)
- <code>access-point security secret</code>: Reference to keystore entry (for secured networks)</p>
<p><strong>Security modes:</strong>
- <code>open</code>: No encryption (not recommended)
- <code>wpa2-personal</code>: WPA2-PSK (most compatible)
- <code>wpa3-personal</code>: WPA3-SAE (more secure, requires WPA3-capable clients)
- <code>wpa2-wpa3-personal</code>: Mixed mode (maximum compatibility)</p>
<h3 id="hidden-network-ssid-hiding">Hidden Network (SSID Hiding)<a class="headerlink" href="#hidden-network-ssid-hiding" title="Permanent link"></a></h3>
<p>To create a hidden network that doesn't broadcast its SSID:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>admin@example:/config/interface/wifi0/&gt; set wifi access-point hidden true
</code></pre></div>
<h3 id="multi-ssid-configuration">Multi-SSID Configuration<a class="headerlink" href="#multi-ssid-configuration" title="Permanent link"></a></h3>
<p>Multiple AP interfaces on the same radio allow broadcasting multiple SSIDs,
each with independent security settings. This is useful for guest networks,
IoT devices, or segregating traffic into different VLANs.</p>
<p><strong>Step 1: Configure the radio</strong> (shared by all APs)</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>admin@example:/&gt; configure
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a>admin@example:/config/&gt; edit hardware component radio0 wifi-radio
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set country-code DE
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set band 5GHz
<a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; set channel 36
<a id="__codelineno-11-6" name="__codelineno-11-6" href="#__codelineno-11-6"></a>admin@example:/config/hardware/component/radio0/wifi-radio/&gt; leave
</code></pre></div>
<p><strong>Step 2: Configure keystore secrets</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>admin@example:/&gt; configure
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>admin@example:/config/&gt; edit keystore symmetric-key main-secret
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>admin@example:/config/keystore/…/main-secret/&gt; set key-format wifi-preshared-key-format
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>admin@example:/config/keystore/…/main-secret/&gt; set symmetric-key MyMainPassword
<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a>admin@example:/config/&gt; edit keystore symmetric-key guest-secret
<a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a>admin@example:/config/keystore/…/guest-secret/&gt; set key-format wifi-preshared-key-format
<a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a>admin@example:/config/keystore/…/guest-secret/&gt; set symmetric-key GuestPassword123
<a id="__codelineno-12-8" name="__codelineno-12-8" href="#__codelineno-12-8"></a>admin@example:/config/&gt; edit keystore symmetric-key iot-secret
<a id="__codelineno-12-9" name="__codelineno-12-9" href="#__codelineno-12-9"></a>admin@example:/config/keystore/…/iot-secret/&gt; set key-format wifi-preshared-key-format
<a id="__codelineno-12-10" name="__codelineno-12-10" href="#__codelineno-12-10"></a>admin@example:/config/keystore/…/iot-secret/&gt; set symmetric-key IoTDevices2025
<a id="__codelineno-12-11" name="__codelineno-12-11" href="#__codelineno-12-11"></a>admin@example:/config/keystore/…/iot-secret/&gt; leave
</code></pre></div>
<p><strong>Step 3: Create multiple AP interfaces</strong> (all on radio0)</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>admin@example:/&gt; configure
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a># Primary AP - Main network (WPA3 for maximum security)
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>admin@example:/config/&gt; edit interface wifi0
<a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a>admin@example:/config/interface/wifi0/&gt; set wifi radio radio0
<a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a>admin@example:/config/interface/wifi0/&gt; set wifi access-point ssid MainNetwork
<a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a>admin@example:/config/interface/wifi0/&gt; set wifi access-point security mode wpa3-personal
<a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a>admin@example:/config/interface/wifi0/&gt; set wifi access-point security secret main-secret
<a id="__codelineno-13-8" name="__codelineno-13-8" href="#__codelineno-13-8"></a>
<a id="__codelineno-13-9" name="__codelineno-13-9" href="#__codelineno-13-9"></a># Guest AP - Guest network (WPA2/WPA3 mixed for compatibility)
<a id="__codelineno-13-10" name="__codelineno-13-10" href="#__codelineno-13-10"></a>admin@example:/config/&gt; edit interface wifi1
<a id="__codelineno-13-11" name="__codelineno-13-11" href="#__codelineno-13-11"></a>admin@example:/config/interface/wifi1/&gt; set wifi radio radio0
<a id="__codelineno-13-12" name="__codelineno-13-12" href="#__codelineno-13-12"></a>admin@example:/config/interface/wifi1/&gt; set wifi access-point ssid GuestNetwork
<a id="__codelineno-13-13" name="__codelineno-13-13" href="#__codelineno-13-13"></a>admin@example:/config/interface/wifi1/&gt; set wifi access-point security mode wpa2-wpa3-personal
<a id="__codelineno-13-14" name="__codelineno-13-14" href="#__codelineno-13-14"></a>admin@example:/config/interface/wifi1/&gt; set wifi access-point security secret guest-secret
<a id="__codelineno-13-15" name="__codelineno-13-15" href="#__codelineno-13-15"></a>admin@example:/config/interface/wifi1/&gt; set custom-phys-address static 00:0c:43:26:60:01
<a id="__codelineno-13-16" name="__codelineno-13-16" href="#__codelineno-13-16"></a>
<a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a># IoT AP - IoT devices (WPA2 for older device compatibility)
<a id="__codelineno-13-18" name="__codelineno-13-18" href="#__codelineno-13-18"></a>admin@example:/config/&gt; edit interface wifi2
<a id="__codelineno-13-19" name="__codelineno-13-19" href="#__codelineno-13-19"></a>admin@example:/config/interface/wifi2/&gt; set wifi radio radio0
<a id="__codelineno-13-20" name="__codelineno-13-20" href="#__codelineno-13-20"></a>admin@example:/config/interface/wifi2/&gt; set wifi access-point ssid IoT-Devices
<a id="__codelineno-13-21" name="__codelineno-13-21" href="#__codelineno-13-21"></a>admin@example:/config/interface/wifi2/&gt; set wifi access-point security mode wpa2-personal
<a id="__codelineno-13-22" name="__codelineno-13-22" href="#__codelineno-13-22"></a>admin@example:/config/interface/wifi2/&gt; set wifi access-point security secret iot-secret
<a id="__codelineno-13-23" name="__codelineno-13-23" href="#__codelineno-13-23"></a>admin@example:/config/interface/wifi2/&gt; set custom-phys-address static 00:0c:43:26:60:02
<a id="__codelineno-13-24" name="__codelineno-13-24" href="#__codelineno-13-24"></a>admin@example:/config/interface/wifi2/&gt; leave
</code></pre></div>
<div class="admonition tip">
<p class="admonition-title">Important</p>
<p><strong>MAC Address Requirement for Multi-SSID:</strong>
When creating multiple AP interfaces on the same radio, you <strong>must</strong> configure
a unique MAC address for each secondary interface (wifi1, wifi2, etc.) using
<code>set custom-phys-address static &lt;MAC&gt;</code>. All interfaces on the same radio inherit
the radio's hardware MAC address by default, which causes network conflicts. Only
the primary interface (alphabetically first, e.g., wifi0) should use the default
hardware MAC address.</p>
<p>Choose MAC addresses from the same locally-administered range:</p>
<ul>
<li>Primary (wifi0): Uses hardware MAC (e.g., <code>00:0c:43:26:60:00</code>)</li>
<li>Secondary (wifi1): <code>00:0c:43:26:60:01</code> (increment last octet)</li>
<li>Tertiary (wifi2): <code>00:0c:43:26:60:02</code> (increment last octet)</li>
</ul>
</div>
<p><strong>Result:</strong> Three SSIDs broadcasting simultaneously on radio0:
- <code>MainNetwork</code> (WPA3, most secure)
- <code>GuestNetwork</code> (WPA2/WPA3 mixed mode)
- <code>IoT-Devices</code> (WPA2 for compatibility)</p>
<p>All APs on the same radio share the same channel and physical layer settings
(configured at the radio level). Each AP can have its own:
- SSID (network name)
- Security mode and passphrase
- Hidden/visible SSID setting
- Bridge membership</p>
<p>You can verify the configuration with <code>show hardware component radio0</code> to see
radio settings, and <code>show interface</code> to see all active AP interfaces.</p>
<div class="admonition tip">
<p class="admonition-title">Important</p>
<p>AP and Station modes cannot be mixed on the same radio. All virtual interfaces
on a radio must be the same mode (all APs or all Stations).</p>
</div>
<h3 id="ap-as-bridge-port">AP as Bridge Port<a class="headerlink" href="#ap-as-bridge-port" title="Permanent link"></a></h3>
<p>WiFi AP interfaces can be added to bridges to integrate wireless devices
into your LAN:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>admin@example:/&gt; configure
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>admin@example:/config/&gt; edit interface br0
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>admin@example:/config/interface/br0/&gt; set type bridge
<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a>
<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a>admin@example:/config/&gt; edit interface wifi0
<a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a>admin@example:/config/interface/wifi0/&gt; set bridge-port bridge br0
<a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a>admin@example:/config/interface/wifi0/&gt; leave
</code></pre></div>
<h2 id="troubleshooting-connection-issues">Troubleshooting Connection Issues<a class="headerlink" href="#troubleshooting-connection-issues" title="Permanent link"></a></h2>
<p>Use <code>show interface wifi0</code> to verify signal strength and connection status.
If issues arise, try the following troubleshooting steps:</p>
<ol>
<li><strong>Verify signal strength</strong>: Check that the target network shows "good" or "excellent" signal in scan results</li>
<li><strong>Check credentials</strong>: Verify the preshared key in the keystore matches the network password</li>
<li><strong>Review logs</strong>: Check system logs with <code>show log</code> for Wi-Fi related errors</li>
<li><strong>Regulatory compliance</strong>: Ensure the country-code on the radio matches your location</li>
<li><strong>Hardware detection</strong>: Confirm the WiFi radio appears in <code>show hardware</code></li>
</ol>
<p>If issues persist, check the system log for specific error messages that can help identify the root cause.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright © 2022-2025 The KernelKit Team
</div>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["toc.follow", "navigation.path", "navigation.instant", "navigation.instant.progress", "navigation.tracking", "navigation.indexes", "search.highlight", "search.share", "content.code.copy", "content.code.annotate", "content.footnote.tooltips"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
<script src="../assets/javascripts/bundle.79ae519e.min.js"></script>
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(()=>{ lightbox.reload(); });
</script></body></html>