Usteer not kicking between bands

I'm running OpenWrt SNAPSHOT builds on a Belkin RT3200. I've tried using DAWN with some success to optimise client connectivity to best signal, but it's quite heavy weight it feels. I'm looking for a lighter option, and it seems usteer is going to be an official feature.

my usteer config looks like this

config usteer
	# The network interface for inter-AP communication
	option 'network' 'lan'

	# Log messages to syslog (0/1)
	option 'syslog' '1'

	# Use IPv6 for remote exchange
	option 'ipv6' '0'

	# Minimum level of logged messages
	# 0 = fatal
	# 1 = info
	# 2 = verbose
	# 3 = some debug messages
	# 4 = network packet information
	# 5 = all debug messages
	option 'debug_level' '2'

	# Maximum number of neighbor reports set for a node
	#option max_neighbor_reports 8

	# Maximum amount of time (ms) a station may be blocked due to policy decisions
	#option sta_block_timeout 30000

	# Maximum amount of time (ms) a local unconnected station is tracked
	#option local_sta_timeout 120000

	# Maximum amount of time (ms) a measurement report is stored
	#option measurement_report_timeout 120000

	# Local station information update interval (ms)
	#option local_sta_update 1000

	# Maximum number of consecutive times a station may be blocked by policy
	#option max_retry_band 5

	# Maximum idle time of a station entry (ms) to be considered for policy decisions
	#option seen_policy_timeout 30000

	# Minimum number of stations delta between APs before load balancing policy is active
	#option load_balancing_threshold 5

	# Minimum number of stations delta between bands before band steering policy is active
	#option band_steering_threshold 5

	# Interval (ms) between sending state updates to other APs
	#option remote_update_interval 1000

	# Number of remote update intervals after which a remote-node is deleted
	#option remote_node_timeout 10

	# Allow rejecting assoc requests for steering purposes (0/1)
	option assoc_steering 1

	# Minimum signal-to-noise ratio or signal level (dBm) to allow connections
	#option min_connect_snr 0

	# Minimum signal-to-noise ratio or signal level (dBm) to remain connected
	#option min_snr 0

	# Timeout after which a station with snr < min_snr will be kicked
	#option min_snr_kick_delay 5000

	# Timeout (in ms) after which a association following a disassociation is not seen
	# as a roam
	#option roam_process_timeout 5000

	# Minimum signal-to-noise ratio or signal level (dBm) before attempting to trigger
	# client scans for roaming
	#option roam_scan_snr 0

	# Maximum number of client roaming scan trigger attempts
	#option roam_scan_tries 3

	# Retry scanning when roam_scan_tries is exceeded after this timeout (in ms)
	# In case this option is set to 0, the client is kicked instead
	#option roam_scan_timeout 0

	# Minimum time (ms) between client roaming scan trigger attempts
	#option roam_scan_interval 10000

	# Minimum signal-to-noise ratio or signal level (dBm) before attempting to trigger
	# forced client roaming
	#option roam_trigger_snr 0

	# Minimum time (ms) between client roaming trigger attempts
	#option roam_trigger_interval 60000

	# Timeout (in 100ms beacon intervals) for client roam requests
	#option roam_kick_delay 100

	# Minimum signal strength difference until AP steering policy is active
	#option signal_diff_threshold 0

	# Initial delay (ms) before responding to probe requests (to allow other APs to see packets as well)
	#option initial_connect_delay 0

	# Enable kicking client on excessive channel load (0/1)
	#option load_kick_enabled 0

	# Minimum channel load (%) before kicking clients
	#option load_kick_threshold 75

	# Minimum amount of time (ms) that channel load is above threshold before starting to kick clients
	#option load_kick_delay 10000

	# Minimum number of connected clients before kicking based on channel load
	#option load_kick_min_clients 10

	# Reason code on client kick based on channel load (default: WLAN_REASON_DISASSOC_AP_BUSY)
	#option load_kick_reason_code 5

	# Script to run after bringing up a node
	#option node_up_script ''

	# Message types to include in log
	# Available types:
	# - probe_req_accept
	# - probe_req_deny
	# - auth_req_accept
	# - auth_req_deny
	# - assoc_req_accept
	# - assoc_req_deny
	# - load_kick_trigger
	# - load_kick_reset
	# - load_kick_min_clients
	# - load_kick_no_client
	# - load_kick_client
	# - signal_kick
	#list event_log_types ''

	# List of SSIDs to enable steering on
	list ssid_list 'mesh'

but clients are not being kicked either to new AP's, or between 2.4 and 5g radio.

Any guidance to fixing this would be very welcome.

1 Like

I am curious about this as well...

Did you ever figure out an working usteer config for this? I have a Linksys E8450 and I want to do the exact same thing. Steer clients to 5GHz when possible as preferred but no amount of tweaking of my usteer config seems to help.

config usteer
	# The network interface for inter-AP communication
	option 'network' 'lan'

	# Log messages to syslog (0/1)
	option 'syslog' '1'

	# Disable network communication (0/1)
	#option local_mode '0'
	option local_mode '1'

	# Use IPv6 for remote exchange
	option 'ipv6' '0'

	# Minimum level of logged messages
	# 0 = fatal
	# 1 = info
	# 2 = verbose
	# 3 = some debug messages
	# 4 = network packet information
	# 5 = all debug messages
	option 'debug_level' '2'

	# Maximum number of neighbor reports set for a node
	#option max_neighbor_reports 8

	# Maximum amount of time (ms) a station may be blocked due to policy decisions
	#option sta_block_timeout 30000

	# Maximum amount of time (ms) a local unconnected station is tracked
	#option local_sta_timeout 120000

	# Maximum amount of time (ms) a measurement report is stored
	#option measurement_report_timeout 120000

	# Local station information update interval (ms)
	#option local_sta_update 1000

	# Maximum number of consecutive times a station may be blocked by policy
	#option max_retry_band 5
	option max_retry_band 3

	# Maximum idle time of a station entry (ms) to be considered for policy decisions
	#option seen_policy_timeout 30000

	# Minimum number of stations delta between APs before load balancing policy is active
	#option load_balancing_threshold 0

	# Minimum number of stations delta between bands before band steering policy is active
	#option band_steering_threshold 5
	option band_steering_threshold 0

	# Interval (ms) between sending state updates to other APs
	#option remote_update_interval 1000

	# Number of remote update intervals after which a remote-node is deleted
	#option remote_node_timeout 10

	# Allow rejecting assoc requests for steering purposes (0/1)
	#option assoc_steering 0
	option assoc_steering 1

	# Allow ignoring probe requests for steering purposes (0/1)
	#option probe_steering 0

	# Minimum signal-to-noise ratio or signal level (dBm) to allow connections
	#option min_connect_snr 0
	option min_connect_snr -100

	# Minimum signal-to-noise ratio or signal level (dBm) to remain connected
	#option min_snr 0
	option min_snr -100

	# Timeout after which a station with snr < min_snr will be kicked
	#option min_snr_kick_delay 5000

	# Timeout (ms) for which a client will not be steered after rejecting a BSS-transition-request
	#option steer_reject_timeout 60000

	# Timeout (in ms) after which a association following a disassociation is not seen
	# as a roam
	#option roam_process_timeout 5000

	# Minimum signal-to-noise ratio or signal level (dBm) before attempting to trigger
	# client scans for roaming
	#option roam_scan_snr 0

	# Maximum number of client roaming scan trigger attempts
	#option roam_scan_tries 3

	# Retry scanning when roam_scan_tries is exceeded after this timeout (in ms)
	# In case this option is set to 0, the client is kicked instead
	#option roam_scan_timeout 0

	# Minimum time (ms) between client roaming scan trigger attempts
	#option roam_scan_interval 10000

	# Minimum signal-to-noise ratio or signal level (dBm) before attempting to trigger
	# forced client roaming
	#option roam_trigger_snr 0

	# Minimum time (ms) between client roaming trigger attempts
	#option roam_trigger_interval 60000

	# Timeout (ms) for client roam requests. usteer will kick the client after this times out.
	#option roam_kick_delay 10000

	# Minimum signal strength difference until AP steering policy is active
	#option signal_diff_threshold 0

	# Initial delay (ms) before responding to probe requests (to allow other APs to see packets as well)
	#option initial_connect_delay 0

	# Enable kicking client on excessive channel load (0/1)
	#option load_kick_enabled 0

	# Minimum channel load (%) before kicking clients
	#option load_kick_threshold 75

	# Minimum amount of time (ms) that channel load is above threshold before starting to kick clients
	#option load_kick_delay 10000

	# Minimum number of connected clients before kicking based on channel load
	#option load_kick_min_clients 10

	# Reason code on client kick based on channel load (default: WLAN_REASON_DISASSOC_AP_BUSY)
	#option load_kick_reason_code 5

	# Attempting to steer clients to a higher frequency-band every n ms.
	# A value of 0 disabled band-steering.
	#option band_steering_interval 120000
	option band_steering_interval 6000

	# Minimal SNR or absolute signal a device has to maintain over band_steering_interval to be
	# steered to a higher frequency band
	#option band_steering_min_snr -60
	option band_steering_min_snr -100

	# Interval (ms) the device is sent a link-measurement request to help assess
	# the bi-directional link quality. Setting the interval to 0 disables link-measurements.
	#option link_measurement_interval 30000
	option link_measurement_interval 3000

	# Script to run after bringing up a node
	#option node_up_script ''

	# Message types to include in log
	# Available types:
	# - probe_req_accept
	# - probe_req_deny
	# - auth_req_accept
	# - auth_req_deny
	# - assoc_req_accept
	# - assoc_req_deny
	# - load_kick_trigger
	# - load_kick_reset
	# - load_kick_min_clients
	# - load_kick_no_client
	# - load_kick_client
	# - signal_kick
	#list event_log_types ''

	# List of SSIDs to enable steering on
	#list ssid_list ''

wireless config as follows

config wifi-iface 'wifinet2'
	option device 'radio0'
	option mode 'ap'
	option ssid 'REDACTED'
	option encryption 'psk2'
	option key 'REDACTED'
	option network 'lan'
	option ieee80211r '1'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211v '1'
	option ieee80211k '1'
	option bss_transition '1'
	option wnm_sleep_mode '1'
	option time_advertisement '2'
	option time_zone 'GMT0'
	option rrm_neighbor_report '1'
	option rrm_beacon_report '1'

config wifi-iface 'wifinet3'
	option device 'radio1'
	option mode 'ap'
	option ssid 'REDACTED'
	option encryption 'psk2'
	option key 'REDACTED'
	option network 'lan'
	option ieee80211r '1'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211v '1'
	option ieee80211k '1'
	option bss_transition '1'
	option wnm_sleep_mode '1'
	option time_advertisement '2'
	option time_zone 'GMT0'
	option rrm_neighbor_report '1'
	option rrm_beacon_report '1'
1 Like

No, I didn't manage to fix band steering but ap roaming is working on 802.11r

On the end I put in separate ssid band splitting. All my iot devices on 2.4g and all other 5g capable devices on 5g

Works well at the cost ofultiple ssids

1 Like