Who has tried it? What tips do you have to share with the community?
I've started a wiki page with all of the information i've gathered by playing with it so far, but i'm stabbing pretty blindly.
I haven't got band steering working properly yet, but sharing connected client information across the network is seamless and works with minimal effort.
Looking forward to the community contributing.
@tmomas I think i've created the page in the wrong space, i intended for it to be in the wiki. If it's in the wrong space can you please assist me in relocating it? Thank you
How well does it work? I remember seeing a post somewhere about the fact that it doesn't work at all, at least when it comes to the actual steering part.
Not yet, but i'm not sure i've got a good setup for it. I'm in a scenario where the overlap of my APs is too high in some places and not enough coverage in others. So i end up with devices that can't decide between two equally terrible options.
I think i need to play with tx powers, then try steering
Not to thread necromancy but I have 2 e8450's configured identically with "basically" default settings from 'first-boot' but on one AP only, my syslog gets spammed with:
usteer: Received packet from unconfigured interface 16
I'm comparing configuration differences (if any) but I don't see any differences. I'm just curious how to determine what interface 16 is. I'm guessing some ubus magic will help me but I'm stumped.
Try this cat /sys/class/net/*/ifindex
If you see a 16 in that list, then you'll need to dig through the actual interfaces in /sys/class/net to find 16.
Ah, this make complete sense and I forgot one aspect I had going on when the spamming was happening as a temporary situation.
I had it setup as a route/AP but it uses radio0 (aka interface 16 on this device) in STA mode to connect to the other AP for easy SSHing into it from the one with the error.
Tear down that connection, it goes away - I'll check the code/config file and see if there is an easy way to tell it to ignore that interface.
I'm trying to figure out how to do band steering on a single Linksys E8450 so that clients tend to prefer 5GHz where possible. I've bounced around a few forum threads on the subject but can't seem to get my usteer config quite right such that I can actually perceive it is working at all. Clients initially connected to 5GHz tend to switch to 2.4GHz when distance causes 5 to become weak, but then they never go back to 5 when they come back within close range.
Here is my current usteer config:
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 ''
I had not previously configured the ssid_list config item. I guess I assumed it would default to "all" or something since I never really saw anyone else point it out and it's not listed as a required item in the usteer wiki page. Is it required?
list ‘ssid_list’ ‘ssid 2.4ghz’
list ‘ssid_list’ ‘ssid 5ghz’
Insert your proper SSIDs
It’s not listed as required because it isn’t, but it is if you want to do steering.
The wiki could do with some more hints, examples and gotchas like this, but so far no one seems very keen to help, or not many people are trying usteer.