mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-27 11:13:02 +02:00
We use the infinitive, or basic form, in configure context, as do most other network vendors, so let's do the same in admin exec context. Also, drop the 'name' qualifier, it is not needed in configure context so we shouldn't have to use it in admin exec either. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
153 lines
5.6 KiB
Markdown
153 lines
5.6 KiB
Markdown
# Wi-Fi (Wireless LAN)
|
|
|
|
Infix includes built-in Wi-Fi client support for connecting to
|
|
wireless networks. When a compatible Wi-Fi adapter is detected, the
|
|
system automatically begins scanning for available networks.
|
|
|
|
## Current Limitations
|
|
|
|
- Only client mode is supported (no access point functionality)
|
|
- USB hotplug is not supported - adapters must be present at boot
|
|
- Interface naming may be inconsistent with multiple USB Wi-Fi adapters
|
|
|
|
## Supported Wi-Fi Adapters
|
|
|
|
Wi-Fi support is primarily tested with Realtek chipset-based adapters.
|
|
|
|
### Known Working Chipsets
|
|
|
|
- RTL8821CU
|
|
- Other Realtek chipsets may work but are not guaranteed
|
|
|
|
|
|
> [!NOTE] Some Realtek chipsets require proprietary drivers not included in the standard kernel
|
|
> Firmware requirements vary by chipset
|
|
> Check kernel logs if your adapter is not detected
|
|
|
|
## Configuration
|
|
|
|
Add a supported Wi-Fi network device. To verify that it has been
|
|
detected, look for `wifi0` in `show interface`
|
|
|
|
```
|
|
admin@example:/> show interface
|
|
INTERFACE PROTOCOL STATE DATA
|
|
lo loopback UP
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
e1 ethernet UP 02:00:00:00:00:01
|
|
ipv6 fe80::ff:fe00:1/64 (link-layer)
|
|
ipv6 fec0::ff:fe00:1/64 (link-layer)
|
|
wifi0 ethernet DOWN f0:09:0d:36:5f:86
|
|
wifi ssid: ------, signal: ------
|
|
|
|
```
|
|
Add the new Wi-Fi interface to the configuration to start scanning.
|
|
```
|
|
admin@example:/config/> set interface wifi0
|
|
admin@example:/config/> leave
|
|
```
|
|
Now the system will now start scanning in the background. To
|
|
see the result read the operational datastore for interface `wifi0` or
|
|
use the CLI
|
|
|
|
```
|
|
admin@infix-00-00-00:/> show interface wifi0
|
|
name : wifi0
|
|
type : wifi
|
|
index : 3
|
|
mtu : 1500
|
|
operational status : down
|
|
physical address : f0:09:0d:36:5f:86
|
|
ipv4 addresses :
|
|
ipv6 addresses :
|
|
SSID : ----
|
|
Signal : ----
|
|
|
|
SSID ENCRYPTION SIGNAL
|
|
ssid1 WPA2-Personal excellent
|
|
ssid2 WPA2-Personal excellent
|
|
ssid3 WPA2-Personal excellent
|
|
ssid4 WPA2-Personal good
|
|
ssid5 WPA2-Personal good
|
|
ssid6 WPA2-Personal good
|
|
```
|
|
|
|
In the CLI, signal strength is reported as: excellent, good, poor or
|
|
bad. For precise values, use NETCONF or RESTCONF, where the RSSI (in
|
|
dBm) is available in the operational datastore.
|
|
|
|
Configure your Wi-Fi secret in the keystore, it should be between 8
|
|
and 63 characters
|
|
|
|
```
|
|
admin@example:/> configure
|
|
admin@example:/config/> edit keystore symmetric-key example
|
|
admin@example:/config/keystore/…/example/> set key-format wifi-preshared-key-format
|
|
admin@example:/config/keystore/…/example/> set cleartext-key mysecret
|
|
admin@example:/config/keystore/…/example/> leave
|
|
admin@example:/>
|
|
```
|
|
|
|
Configure the Wi-Fi settings, set secret to the name selected above
|
|
for the symmetric key, in this case `example`.
|
|
|
|
WPA2 or WPA3 encryption will be automatically selected based on what
|
|
the access point supports. No manual selection is required unless
|
|
connecting to an open network. No support for certificate based
|
|
authentication yet.
|
|
|
|
Unencrypted network is also supported, to connect to an unencrypted
|
|
network (generally not recommended):
|
|
```
|
|
admin@example:/config/interface/wifi0/> set wifi encryption disabled
|
|
```
|
|
|
|
A valid `country-code` is also required for regulatory compliance, the
|
|
valid codes are documented in the YANG model `infix-wifi-country-codes`
|
|
|
|
|
|
```
|
|
admin@example:/> configure
|
|
admin@example:/config/> edit interface wifi0
|
|
admin@example:/config/interface/wifi0/>
|
|
admin@example:/config/interface/wifi0/> set wifi ssid ssid1
|
|
admin@example:/config/interface/wifi0/> set wifi secret example
|
|
admin@example:/config/interface/wifi0/> set wifi country-code SE
|
|
admin@example:/config/interface/wifi0/> leave
|
|
```
|
|
|
|
The Wi-Fi negotiation should now start immediately, provided that the
|
|
SSID and pre-shared key are correct. You can verify the connection by
|
|
running `show interface` again.
|
|
|
|
|
|
```
|
|
admin@example:/> show interface
|
|
INTERFACE PROTOCOL STATE DATA
|
|
lo loopback UP
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
e1 ethernet UP 02:00:00:00:00:01
|
|
ipv6 fe80::ff:fe00:1/64 (link-layer)
|
|
ipv6 fec0::ff:fe00:1/64 (link-layer)
|
|
wifi0 ethernet UP f0:09:0d:36:5f:86
|
|
wifi ssid: ssid1, signal: excellent
|
|
|
|
admin@example:/>
|
|
```
|
|
|
|
## Troubleshooting Connection Issues
|
|
|
|
Use `show wifi scan wifi0` and `show interface` to verify signal strength
|
|
and connection status. If issues arise, try the following
|
|
troubleshooting steps:
|
|
|
|
1. **Verify signal strength**: Check that the target network shows "good" or "excellent" signal
|
|
2. **Check credentials**: Verify the preshared key in `ietf-keystore`
|
|
3. **Review logs**: Check system logs with `show log` for Wi-Fi related errors
|
|
4. **Regulatory compliance**: Ensure the country-code matches your location
|
|
5. **Hardware detection**: Confirm the adapter appears in `show interface`
|
|
|
|
If issues persist, check the system log for specific error messages that can help identify the root cause.
|