This is an old revision of the document!
If you want to enable/disable WiFi from the command line you can use the following system commands:
Toggle:
/sbin/radio toggle
Force radio off:
/sbin/radio off
Force radio on:
/sbin/radio on
Modern routers come with 2 or more chipsets WiFi interfaces. There is usually one 2.4GHz interface and one (or more) 5GHz inerfaces. In certain case you might want to enable/disable a specific chipset via the command line.
Once you've identified the name of the appropriate radio interface (via the Virtual Wireless page):
Do not blindly use this table. Your router's interface names might be different. For full chipset operation, refer to the “ethX” name reference of the interface. Once you have the correct name, you can check the status of your WiFi interface as follows:
For example, using “eth1” in my the above example:
Verify interface state
int=eth1
[ $(wl -i $int radio | grep -Eo [0-1]$) -eq 1 ] && echo “radio $int is off” || echo “radio $int is on”
Toggle interface state
int=eth1
[ $(wl -i $int radio | grep -Eo [0-1]$) -eq 1 ] && wl -i $int radio on || wl -i $int radio off
Force interface off
int=eth1
wl -i $int radio off
Force interface on
int=eth1
wl -i $int radio on
There might be cases where you don't want to affect the full radio chipset but rather restrict access to a specific SSID. This is achieved as follow:
- Identify the SSID virtual interface you want to affect. Remember virtual interfaces are always defined as [ main wireless interface name ] + [.] + [a number 0-3] so e.g. “wl0.1”. The full list of wireless interfaces available on your router and the all their sub-interfaces once again can be found under Virtual Wireless e.g.
Now let's assume you want to turn off wl1.3 which is associated to SSID “test”
Let's perform the following:
Toggle
int=wl1.3
[ $(wl -i $int radio | grep -Eo [0-1]$) -eq 1 ] && wl -i $int radio on || wl -i $int radio off
Force Off
int=wl1.3
wl -i $int radio off
Force On
int=wl1.3
wl -i $int radio on
Let's say, as it often happens), a specific SSID you have defined is operational on multiple interfaces/sub-interfaces, you can disable the SSID everywhere as follow:
Force Off
SSID=MYCOOLSSID
nvram show | grep ssid | grep $SSID | while read line; do wl -i $(echo $line | cut -d“=” -f1 | cut -d_ -f1 ) radio off; done
Force On
SSID=MYCOOLSSID
nvram show | grep ssid | grep $SSID | while read line; do wl -i $(echo $line | cut -d“=” -f1 | cut -d_ -f1 ) radio on; done