mirror of https://github.com/aredn/aredn.git
Add a channel bandwidth selector to the setup screen.
Required for 900mhz devices to be supported due to band size. This can also be useful for allowing more devices to fit into the same amount of RF space as nodes may often not need full 20mhz wide channels. 2.4ghz while using standard BBHN SSID is restricted to 20mhz for compatibility. ref BBHN->ticket:50
This commit is contained in:
parent
1742f8111c
commit
711dbc17f2
|
@ -3,6 +3,7 @@ wifi_mode = ap
|
||||||
wifi_ssid = <NODE>
|
wifi_ssid = <NODE>
|
||||||
wifi_txpower = 19
|
wifi_txpower = 19
|
||||||
wifi_channel = 6
|
wifi_channel = 6
|
||||||
|
wifi_chanbw = 20
|
||||||
wifi_distance = 0
|
wifi_distance = 0
|
||||||
wifi_hidden = 0
|
wifi_hidden = 0
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ wifi_mode = ap
|
||||||
wifi_ssid = <NODE>
|
wifi_ssid = <NODE>
|
||||||
wifi_txpower = 19
|
wifi_txpower = 19
|
||||||
wifi_channel = 6
|
wifi_channel = 6
|
||||||
|
wifi_chanbw = 20
|
||||||
wifi_distance = 0
|
wifi_distance = 0
|
||||||
wifi_hidden = 0
|
wifi_hidden = 0
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ config wifi-device radio0
|
||||||
option type mac80211
|
option type mac80211
|
||||||
option phy phy0
|
option phy phy0
|
||||||
option channel <wifi_channel>
|
option channel <wifi_channel>
|
||||||
|
option chanbw <wifi_chanbw>
|
||||||
option distance <wifi_distance>
|
option distance <wifi_distance>
|
||||||
|
|
||||||
config wifi-iface
|
config wifi-iface
|
||||||
|
|
|
@ -5,6 +5,7 @@ wifi_ssid = BroadbandHamnet-v2
|
||||||
wifi_mode = adhoc
|
wifi_mode = adhoc
|
||||||
wifi_txpower = 19
|
wifi_txpower = 19
|
||||||
wifi_channel = 1
|
wifi_channel = 1
|
||||||
|
wifi_chanbw = 20
|
||||||
wifi_distance = 0
|
wifi_distance = 0
|
||||||
wifi_country = 00
|
wifi_country = 00
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ wifi_ssid = BroadbandHamnet-v2
|
||||||
wifi_mode = adhoc
|
wifi_mode = adhoc
|
||||||
wifi_txpower = 19
|
wifi_txpower = 19
|
||||||
wifi_channel = 1
|
wifi_channel = 1
|
||||||
|
wifi_chanbw = 20
|
||||||
wifi_distance = 0
|
wifi_distance = 0
|
||||||
wifi_country = 00
|
wifi_country = 00
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ config wifi-device radio0
|
||||||
option type mac80211
|
option type mac80211
|
||||||
option phy phy0
|
option phy phy0
|
||||||
option channel <wifi_channel>
|
option channel <wifi_channel>
|
||||||
|
option chanbw <wifi_chanbw>
|
||||||
option distance <wifi_distance>
|
option distance <wifi_distance>
|
||||||
option country <wifi_country>
|
option country <wifi_country>
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ wifi_mode = ap
|
||||||
wifi_ssid = <NODE>
|
wifi_ssid = <NODE>
|
||||||
wifi_txpower = 19
|
wifi_txpower = 19
|
||||||
wifi_channel = 6
|
wifi_channel = 6
|
||||||
|
wifi_chanbw = 20
|
||||||
wifi_distance = 0
|
wifi_distance = 0
|
||||||
wifi_hidden = 0
|
wifi_hidden = 0
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ wifi_mode = ap
|
||||||
wifi_ssid = <NODE>
|
wifi_ssid = <NODE>
|
||||||
wifi_txpower = 19
|
wifi_txpower = 19
|
||||||
wifi_channel = 6
|
wifi_channel = 6
|
||||||
|
wifi_chanbw = 20
|
||||||
wifi_distance = 0
|
wifi_distance = 0
|
||||||
wifi_hidden = 0
|
wifi_hidden = 0
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ config wifi-device radio0
|
||||||
option type mac80211
|
option type mac80211
|
||||||
option phy phy0
|
option phy phy0
|
||||||
option channel <wifi_channel>
|
option channel <wifi_channel>
|
||||||
|
option chanbw <wifi_chanbw>
|
||||||
option distance <wifi_distance>
|
option distance <wifi_distance>
|
||||||
|
|
||||||
config wifi-iface
|
config wifi-iface
|
||||||
|
|
|
@ -2,6 +2,7 @@ config wifi-device radio0
|
||||||
option type mac80211
|
option type mac80211
|
||||||
option phy phy0
|
option phy phy0
|
||||||
option channel <wifi_channel>
|
option channel <wifi_channel>
|
||||||
|
option chanbw <wifi_chanbw>
|
||||||
option disabled 1
|
option disabled 1
|
||||||
|
|
||||||
config wifi-iface
|
config wifi-iface
|
||||||
|
|
|
@ -139,6 +139,25 @@ sub rf_channels_list
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub is_wifi_chanbw_valid
|
||||||
|
{
|
||||||
|
my ($wifi_chanbw,$wifi_ssid) = @_;
|
||||||
|
my $boardinfo=hardware_info();
|
||||||
|
if ( ( exists($boardinfo->{'rfband'}) ) && ( $boardinfo->{'rfband'} == "2400" ) && ( $wifi_chanbw != 20 ) )
|
||||||
|
{
|
||||||
|
if ( (( length $wifi_ssid >= 33 ) || ( length $wifi_ssid == 0 )) || ( $wifi_ssid =~ /BroadBandHamnet-v.*/i ))
|
||||||
|
{
|
||||||
|
# 2.4ghz and default ssid not 20mhz wide -- Invalid chan_bw
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
# chan_bw valid
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Not 2.4ghz or device is unknown, trust the user submission.
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
#weird uhttpd/busybox error requires a 1 at the end of this file
|
#weird uhttpd/busybox error requires a 1 at the end of this file
|
||||||
1
|
1
|
||||||
|
|
||||||
|
|
|
@ -179,6 +179,12 @@ if($parms{button_save})
|
||||||
push (@errors, "invalid WiFi channel")
|
push (@errors, "invalid WiFi channel")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !is_wifi_chanbw_valid($wifi_chanbw,$wifi_ssid) )
|
||||||
|
{
|
||||||
|
push (@errors, "Invalid WiFi channel width");
|
||||||
|
$wifi_chanbw = 20;
|
||||||
|
}
|
||||||
|
|
||||||
push (@errors, "invalid WiFi distance") if $wifi_distance < 0 or $wifi_distance =~ /\D/;
|
push (@errors, "invalid WiFi distance") if $wifi_distance < 0 or $wifi_distance =~ /\D/;
|
||||||
|
|
||||||
$wifi_country_validated=0;
|
$wifi_country_validated=0;
|
||||||
|
@ -523,6 +529,15 @@ if($wifi_proto ne "disabled")
|
||||||
push @hidden, "<input type=hidden name=wifi_channel value='$wifi_channel'>";
|
push @hidden, "<input type=hidden name=wifi_channel value='$wifi_channel'>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
print "<tr><td>Channel Width</td>\n";
|
||||||
|
print "<td><select name=wifi_chanbw>\n";
|
||||||
|
selopt("20 MHz","20",$wifi_chanbw);
|
||||||
|
selopt("10 MHz","10",$wifi_chanbw);
|
||||||
|
selopt("5 MHz","5",$wifi_chanbw);
|
||||||
|
print "</select></td></tr>\n";
|
||||||
|
}
|
||||||
|
|
||||||
if ($config ne "mesh")
|
if ($config ne "mesh")
|
||||||
{
|
{
|
||||||
print "<tr><td>Country</td>\n";
|
print "<tr><td>Country</td>\n";
|
||||||
|
|
Loading…
Reference in New Issue