fixed fast roaming issue (#6)

added Handoff Suggestion & Band Steering
updated Firmware version
cleaned up README

Reviewed-on: #6
This commit was merged in pull request #6.
This commit is contained in:
2026-07-12 11:59:34 +01:00
parent 59274da4e5
commit 4ced23b93d
5 changed files with 307 additions and 89 deletions
+48 -52
View File
@@ -1,6 +1,6 @@
# openUF — C
Daemon that makes an OpenWrt router appear as a **UniFi U6 InWall** to the UniFi Network controller.
Daemon that makes an OpenWrt router appear as a UniFi AP to UniFi Network controllers.
## Implemented Features
@@ -20,75 +20,71 @@ Daemon that makes an OpenWrt router appear as a **UniFi U6 InWall** to the UniFi
| **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` |
## Quick Installation
## Using the dev container
```sh
# On the OpenWrt device:
opkg update
opkg install gcc make libmbedtls-dev libuci-dev libjson-c-dev
```shell
# OpenWRT build directory
cd /home/openwrt/openwrt
# Compile and install
make -f Makefile.standalone install
# clean Previous builds
make clean
# Configure
vi /etc/openuf/openuf.conf # adjust controller_ip and lan_if
# Compile
make
```
# Start
/etc/init.d/openuf start
/etc/init.d/openuf enable # start on boot
## 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 # LAN interface (for MAC and IP)
lan_if = br-lan # Default Lan interface Name
ufmodel = u6-inwall # emulated model
inform_interval = 10 # seconds between informs
inform_interval = 10 # inform interval
enable_announce = 1
enable_inform = 1
enable_inform = 1 # Enable logging to /var/log/openuf.log if set to 1
```
## U6 InWall Model
---
A **U6 IW** is emulated because it has 5 GbE ports, which covers most OpenWrt routers. The model reports:
## Glassary
* 5 ethernet ports (eth0-eth4)
* 2.4 GHz WiFi 6 Radio (HE/802.11ax)
* 5 GHz WiFi 6 Radio (HE/802.11ax)
### TNBU
## LLDP
TNBU is the magic string/identifier at the start of the binary packet format used in this custom Inform protocol implementation.
For visual topology in UniFi:
### CCQ
```sh
opkg install lldpd
/etc/init.d/lldpd start
/etc/init.d/lldpd enable
```
openuf sends its own LLDP frames even without lldpd (raw socket).
With lldpd installed, it also reports upstream neighbors (switches).
## Adoption
The process is automatic:
1. The AP appears as "Pending" in UniFi.
2. Click on "Adopt" → the controller sends a new key.
3. The AP applies the key and becomes "Connected".
4. The controller pushes the WiFi configuration (SSIDs, channels, etc.).
5. Make sure your WiFi Name doesn't have characters like " - " cause of bad JSON! Grrr
To reset: `rm /etc/openuf/state.json && reboot`
## Dependencies
```sh
opkg install libmbedtls libuci libjson-c
opkg install lldpd # optional, for topology
```
Client Connection Quality