firmware/src/packages/fff/fff-wireless/files/etc/uci-defaults/24a-fff-wireless
Fabian Bläse 99bce95f80 fff-wireless: Use previous HT/VHT mode instead of detecting capabilities
Previously the HT/VHT mode was detected using the output of iw phy. This
command erroneously used the $radio variable, which doesn't contain the
phy name. Therefore it doesn't work like it is supposed to.

As we don't completely configure the wifi-device sections, but only adjust
some of OpenWRTs default values, the HT/VHT detection can easily be done by
just checking if the previous mode did contain "VHT".

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <fff@chrisi01.de>
2019-12-24 12:52:05 +01:00

85 lines
2.5 KiB
Bash

#!/bin/sh
# Copyright 2016 Tim Niemeyer
# Copyright 2019 Adrian Schmutzler
# License GPLv3
. /lib/functions.sh
. /lib/functions/fff/wireless
removeWifiIface() {
local name="$1"
uci del "wireless.$name"
}
configWifiDevice() {
local radio="$1"
local freq="$(wifiGetFreq $radio)"
[ "$freq" = "2" ] && uci set "wireless.${radio}.legacy_rates=0"
# detect 802.11ac capable radio and set htmode appropriately
local htmode="HT20"
uci -q get wireless.${radio}.htmode | grep VHT && htmode="VHT20"
# Comments
# wXmesh: use 802.11s mesh as "default"
uci batch <<-__EOF__
set wireless.${radio}.htmode='${htmode}'
set wireless.${radio}.country='DE'
set wireless.${radio}.disabled='0'
set wireless.w${freq}ap='wifi-iface'
set wireless.w${freq}ap.device='${radio}'
set wireless.w${freq}ap.network='mesh'
set wireless.w${freq}ap.ifname='w${freq}ap'
set wireless.w${freq}ap.mode='ap'
set wireless.w${freq}ap.ssid='noservice.freifunk'
set wireless.w${freq}ap.encryption='none'
set wireless.w${freq}ap.hidden='0'
set wireless.w${freq}ap.disabled='0'
set network.w${freq}mesh='interface'
set network.w${freq}mesh.mtu='1560'
set network.w${freq}mesh.proto='batadv'
set network.w${freq}mesh.mesh='bat0'
set wireless.w${freq}mesh='wifi-iface'
set wireless.w${freq}mesh.device='${radio}'
set wireless.w${freq}mesh.network='w${freq}mesh'
set wireless.w${freq}mesh.ifname='w${freq}mesh'
set wireless.w${freq}mesh.mode='mesh'
set wireless.w${freq}mesh.mesh_id='nomesh.freifunk'
set wireless.w${freq}mesh.encryption='none'
set wireless.w${freq}mesh.mesh_fwding=0
set wireless.w${freq}mesh.disabled='0'
set network.configap${freq}=interface
set network.configap${freq}.proto='static'
set network.configap${freq}.ip6addr='fe80::1/64'
set wireless.w${freq}configap='wifi-iface'
set wireless.w${freq}configap.device='${radio}'
set wireless.w${freq}configap.network='configap${freq}'
set wireless.w${freq}configap.ifname='w${freq}configap'
set wireless.w${freq}configap.mode='ap'
set wireless.w${freq}configap.ssid='config.franken.freifunk.net'
set wireless.w${freq}configap.encryption='none'
set wireless.w${freq}configap.hidden='1'
set wireless.w${freq}configap.disabled='1'
__EOF__
}
# Remove WiFi config
config_load wireless
config_foreach removeWifiIface wifi-iface
# Set up WiFi devices and interfaces, but leave the latter disabled
config_load wireless
config_foreach configWifiDevice wifi-device
uci commit network
uci commit wireless
# vim: set noexpandtab:tabstop=4