<feed xmlns='http://www.w3.org/2005/Atom'>
<title>usteer, branch master</title>
<subtitle>OpenWrt AP service for client steering</subtitle>
<id>https://git.openwrt.org/project/usteer/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/project/usteer/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/'/>
<updated>2026-05-19T21:52:45Z</updated>
<entry>
<title>ubus: added reassoc_delay and reason code</title>
<updated>2026-05-19T21:52:45Z</updated>
<author>
<name>Nils Hendrik Rottgardt</name>
</author>
<published>2024-11-03T19:42:20Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=7532e1252fb937fe34b6da05e86fd34babd91ef5'/>
<id>urn:sha1:7532e1252fb937fe34b6da05e86fd34babd91ef5</id>
<content type='text'>
Multi Band Operations (MBO) provide stations with additional information
about roaming requests. Reassociation delay avoids ping-pong between APs.
By default a delay of 30s is requested from the station.
MBO code 5 defines signal quality as a reason for roaming. This could be
enhanced in the future by responding with other dynamically defined
reasons to improve further how transitions are handled by stations.

- ubus: add reason code to bss_transition request (actually static only)
- ubus: add reassociation delay to let the client know how long it should stay at the new AP
  dereived from station block timeout.
- main: add config option for reassociation delay with 30s as default

Signed-off-by: Nils Hendrik Rottgardt &lt;n.rottgardt@gmail.com&gt;
</content>
</entry>
<entry>
<title>policy: add dynamic signal threshold to band-steering</title>
<updated>2026-05-19T21:52:37Z</updated>
<author>
<name>Nils Hendrik Rottgardt</name>
</author>
<published>2024-11-10T22:47:33Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=7b1379a951be3a7b3f9b35099b20857038cb5b30'/>
<id>urn:sha1:7b1379a951be3a7b3f9b35099b20857038cb5b30</id>
<content type='text'>
Avoids ping-pong between bands by adding a dynamic signal threshold.
If 5Ghz band is below roaming threshold (e.g. -70) and 2,4Ghz over
band-steering threshold (e.g. -50) this adds a dynamic threshold
depends on the signal level when station has connected. It adapts to
worser signal slowly. This allows to reduce the check interval to
lower values like 30s as new standard.

- band_steering: added dynamic signal threshold
- main: added config option band_steering_signal threshold which specifies
  the difference until a signal is defined as "better" and band steering
  is triggered
- main: reduced interval to 30000ms to get in use of dynamic threshold
  more often. It is not neccessary to "wait" anymore to steer a station
  to a higher band.
- usteer: updated default in config

Signed-off-by: Nils Hendrik Rottgardt &lt;n.rottgardt@gmail.com&gt;
</content>
</entry>
<entry>
<title>ubus: DEAUTH reason more accurate</title>
<updated>2026-05-19T21:51:50Z</updated>
<author>
<name>Nils Hendrik Rottgardt</name>
</author>
<published>2024-11-03T11:37:07Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=094c46900afb30e37ff2a5e32942bfab142ab292'/>
<id>urn:sha1:094c46900afb30e37ff2a5e32942bfab142ab292</id>
<content type='text'>
Previous reason codes sent to stations were inaccurate.
Respond with correct DEAUTH reason codes in order to give
stations better control over their roaming decisions.

- policy: correct DEAUTH reason is send to the station
- ubus: add reason code to method usteer_ubus_kick_client
- usteer: clearly define reason codes as enums

Signed-off-by: Nils Hendrik Rottgardt &lt;n.rottgardt@gmail.com&gt;
</content>
</entry>
<entry>
<title>policy: optimized steering with different levels of aggressiveness</title>
<updated>2026-05-19T21:51:11Z</updated>
<author>
<name>Nils Hendrik Rottgardt</name>
</author>
<published>2024-10-20T11:28:35Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=49ba5f1869bb54755bc0f2b521ae17aaa8d03112'/>
<id>urn:sha1:49ba5f1869bb54755bc0f2b521ae17aaa8d03112</id>
<content type='text'>
Add some new options and also changed disassociation_timer/_imminent call
to have a better roaming experience. This is necessary for some Intel WiFi
cards ignoring actual transition request frames due
to expecting a combination of disassociation_timer and
disassociation_imminent = true.
According to posts on the OpenWrt forum this behavior isn't limited
to just Intel WiFi cards. Affected stations respond with
BSS-TM-RESP status=1 (error) and refuse to roam.

- Add new aggr. levels combined with station specific configuration
- Set disassociation imminent and timer as default option to have a
  better roaming by default
- Use abridged flag to put priority on neighbors provided
- Take care of correct disassociation_timer corresponding to kick_time
- Let Disassociation Timer run a countdown before dissassociating the station
  if roam_kick_delay is longer than validity_period like defined in IEEE.
  Fix validity_period to 100 beacon intervals.
- Add new logging messages (verbose and debug) to visualize the station behaviour

Signed-off-by: Nils Hendrik Rottgardt &lt;n.rottgardt@gmail.com&gt;
</content>
</entry>
<entry>
<title>local_node: handle NULL sta_addr by freeing query memory</title>
<updated>2026-05-19T21:49:03Z</updated>
<author>
<name>Neil Kettle</name>
</author>
<published>2026-03-31T09:36:27Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=0beb2c91dbd02b897217f6f565afefb9013e3373'/>
<id>urn:sha1:0beb2c91dbd02b897217f6f565afefb9013e3373</id>
<content type='text'>
Free the query memory if sta_addr is NULL before returning.

Signed-off-by: Neil Kettle &lt;neil@digit-labs.org&gt;
</content>
</entry>
<entry>
<title>policy: fix logic in load comparison for node selection</title>
<updated>2026-05-19T21:48:56Z</updated>
<author>
<name>Neil Kettle</name>
</author>
<published>2026-03-31T09:34:32Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=1a2f1716db2bd8d4e53850ce43db7cacdda64706'/>
<id>urn:sha1:1a2f1716db2bd8d4e53850ce43db7cacdda64706</id>
<content type='text'>
Fix tautological contradiction, 'A^!A'

Signed-off-by: Neil Kettle &lt;neil@digit-labs.org&gt;
</content>
</entry>
<entry>
<title>build: require CMake &gt;= 3.10 due to dropped legacy support</title>
<updated>2025-10-04T11:28:46Z</updated>
<author>
<name>Hauke Mehrtens</name>
</author>
<published>2025-10-04T11:28:46Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=1d6524c6e6b58853f053c7816249a8f68ad9b0e8'/>
<id>urn:sha1:1d6524c6e6b58853f053c7816249a8f68ad9b0e8</id>
<content type='text'>
CMake version 4.0 and later require minimum version of 3.5 or later.
Update to minimum version 3.10 which is the last not deprecated minimum
version.

CMake 3.10 was released in November 2017 and is included in Ubuntu 18.04.

Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</content>
</entry>
<entry>
<title>remote: close file on usteer_init_local_id fread fail</title>
<updated>2023-05-29T17:27:02Z</updated>
<author>
<name>Christian Marangi</name>
</author>
<published>2023-05-29T17:25:32Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=e218150979b40a1b3c59ad0aaa3bbb943814db1e'/>
<id>urn:sha1:e218150979b40a1b3c59ad0aaa3bbb943814db1e</id>
<content type='text'>
Fix Coverity Scan CID 1521041 reporting a not closed FILE on fread fail.
Correctly close the FILE on fread fail to fix this leak.

Signed-off-by: Christian Marangi &lt;ansuelsmth@gmail.com&gt;
</content>
</entry>
<entry>
<title>ubus: optimize connected_clients output format</title>
<updated>2022-08-18T13:32:31Z</updated>
<author>
<name>David Bauer</name>
</author>
<published>2022-08-17T22:28:49Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=7d2b17c91baf67419c0ce63dc6c65a7659ab6a5c'/>
<id>urn:sha1:7d2b17c91baf67419c0ce63dc6c65a7659ab6a5c</id>
<content type='text'>
 - Drop seen / last-connected as the list only contains currently
   connected clients
 - Convert past timestamps to relative age
 - Include current roam-sm state

Signed-off-by: David Bauer &lt;mail@david-bauer.net&gt;
</content>
</entry>
<entry>
<title>policy: don't alter stats when remaining idle</title>
<updated>2022-08-18T13:31:31Z</updated>
<author>
<name>David Bauer</name>
</author>
<published>2022-08-17T22:51:32Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/project/usteer/commit/?id=8b10a4b296e78158fadcebdaa5b30019eba5d8e1'/>
<id>urn:sha1:8b10a4b296e78158fadcebdaa5b30019eba5d8e1</id>
<content type='text'>
Don't alter roam-sm stats when remaining idle. Previously, a
roam-sm-event was registered when keeping the idle-state.

Signed-off-by: David Bauer &lt;mail@david-bauer.net&gt;
</content>
</entry>
</feed>
