Files
OpenUniFi/README.md
T
Koda e4ffbbd5f9 added dynamic radio assignment (#9)
fixed band steering

Reviewed-on: #9
2026-07-12 13:40:07 +01:00

90 lines
2.6 KiB
Markdown

# openUF
Daemon that makes an OpenWrt router appear as a UniFi AP to UniFi Network controllers.
## Implemented Features
| Feature | Description | Implementation |
| --- | --- | --- |
| **L2 Discovery** | UDP broadcast + multicast every 10s | `announce.c` → port 10001 |
| **Adoption** | AES-128-CBC handshake with the controller | `inform.c``handle_response()` |
| **WiFi Config** | Creates WiFi networks from the controller via UCI | `wlan.c``wlan_apply_config()` |
| **Band Steering** | 802.11k/v Neighbor Reports + BSS Transition | `wlan.c``apply_vap()` |
| **Fast Roaming** | 802.11r FT with mobility_domain derived from MAC | `wlan.c``apply_vap()` |
| **WPA3 / PMF** | SAE, SAE-mixed, 802.11w 0/1/2 | `wlan.c``sec_to_uci()` |
| **WiFi Clients** | MAC, signal, bitrate, bytes per VAP | `clients.c``iw station dump` |
| **Wired Clients** | MACs from bridge FDB | `clients.c``bridge fdb` |
| **CPU / RAM** | Real-time usage | `sysinfo.c``/proc/stat` + `/proc/meminfo` |
| **Interfaces** | Speed, duplex, rx/tx counters | `sysinfo.c``/proc/net/dev` |
| **Channel / RF** | Channel utilization, noise, tx_power | `sysinfo.c``iw survey dump` |
| **LLDP Send** | Custom frames via AF_PACKET raw socket | `lldp.c``lldp_send_frame()` |
| **LLDP Read** | Neighbors for UniFi topology | `lldp.c``lldpctl -f json` |
## Using the dev container
```shell
# OpenWRT build directory
cd /home/openwrt/openwrt
# clean Previous builds
make clean
# Compile
make
```
## Changing Compiler Settings
```shell
# OpenWRT build directory
cd /home/openwrt/openwrt
# Change settings
make menuconfig
# export settings
./scripts/diffconfig.sh
# Paste settings into .devcontainer/openwrt.config file in the code
# Then rebuild the dev container by pressing F1 in VScode
# and typing rebuild and selecting rebuild dev container
```
## Configuration
On The Accesspoint Run this to install the package:
```shell
# Remove old installation
apk -r del openuf
# Install new version
apk add openuf-0.4.0-r1.apk --allow-untrusted
# Configure
vi /etc/openuf/openuf.conf
```
Example Configuration
```ini
controller_ip = 192.168.1.1 # UniFi controller IP
lan_if = br-lan # Default Lan interface Name
ufmodel = u6-inwall # emulated model
inform_interval = 10 # inform interval
enable_announce = 1
enable_inform = 1 # Enable logging to /var/log/openuf.log if set to 1
```
---
## Glossary
### TNBU
TNBU is the magic string/identifier at the start of the binary packet format used in this custom Inform protocol implementation.
### CCQ
Client Connection Quality