Disconnecting the users with bad signal [2.9.X]

By admin

Diambil dari http://forum.mikrotik.com/viewtopic.php?f=9&t=20370


Small manual:
Install – click system->scripts, click “+”, enter in the name whatevery you want (like signallimiter), click ok, done!


Change 75 in “:local wifithreshold 75” to whatever number you want to be minimum signal allowed (75 is -75, change it to 80 or whatever you wish).
If you want just to test how system works, change :local aldisabled “no” to :local aldisabled “yes” and you will get disabled client deauth rule in access list.
You must have sheduler if you don’t want to manually run the rule. Just make new system->shedule rule and put the name of the script you already defined (signallimiter or whatver name you defined) and choose time. I defined to be every 5 minutes.


Notice that the system will behave like this:
If some client is having an bad signal he’s beign disconnected for 5 minutes. After 5 minutes he’s beign released from “block” for next 5 minutes. When next 5 minutes passed he’s checked again for signal.
*TODO* Gotta do some delay of few seconds after deleting the client from access list and checking them again so they won’t have 5 minutes of working before checked again.

I could also rewrite the script if someone needs it to work differently.

“Bare script”

:log info "Signal limiting...":local wifithreshold 75:local aldisabled "no":log info "Removing disabled clients"; :foreach i in=[/interface wireless access-list find comment="badsignal"] do={ /interface wireless access-list remove $i }

:local cntr 0

:foreach i in=[/interface wireless registration-table find] do = {

:local csig [/interface wireless registration-table get $i signal-strength]

:local cmac [/interface wireless registration-table get $i mac-address]

:local cint [/interface wireless registration-table get $i interface]

:local csigform [:pick $csig 1 3]

:if ($csigform>$wifithreshold) do={

/interface wireless access-list add mac-address=$cmac interface=$cint disabled=$aldisabled authentication="no" comment="badsignal"

:set cntr ($cntr+1)



No Comments