From patchwork Sun Jan 5 21:43:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: fff-hoods: manually create wifi station interface From: Fabian Blaese X-Patchwork-Id: 1255 Message-Id: <20200105214322.2559139-1-fabian@blaese.de> To: franken-dev@freifunk.net Date: Sun, 5 Jan 2020 22:43:22 +0100 The mac80211 interface script in OpenWrt depends on wpa_supplicant for the creation of station interfaces. While this is conveniant, it isn't strictly necessary for connecting to unencrypted networks. To be able to create station interfaces if wpa_supplicant is removed, the station interface for obtaining the initial configuration is now created using iw commands only. This makes it possible to replace wpad-mini with hostapd-mini, which does not include wpa_supplicant and therefore shrinks the uncompressed binary by around 200KiB. Signed-off-by: Fabian Bläse Acked-by: Christian Dresel Reviewed-by: Robert Langhammer --- .../files/etc/uci-defaults/24c-fff-wXsta | 27 ----------------- .../files/usr/lib/functions/fff/hoodfile | 30 +++++++++++-------- 2 files changed, 17 insertions(+), 40 deletions(-) delete mode 100644 src/packages/fff/fff-hoods/files/etc/uci-defaults/24c-fff-wXsta diff --git a/src/packages/fff/fff-hoods/files/etc/uci-defaults/24c-fff-wXsta b/src/packages/fff/fff-hoods/files/etc/uci-defaults/24c-fff-wXsta deleted file mode 100644 index e9867b9..0000000 --- a/src/packages/fff/fff-hoods/files/etc/uci-defaults/24c-fff-wXsta +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -. /lib/functions/fff/wireless - -# Set up wXsta -for radio in $(wifiListRadio); do - # wXsta: We can use $freq here, as the initial radios are not set up with auto - freq="$(wifiGetFreq $radio)" - - uci batch <<-__EOF__ - set network.configsta${freq}=interface - set network.configsta${freq}.proto='static' - - set wireless.w${freq}sta='wifi-iface' - set wireless.w${freq}sta.device='${radio}' - set wireless.w${freq}sta.network='configsta${freq}' - set wireless.w${freq}sta.ifname='w${freq}sta' - set wireless.w${freq}sta.mode='sta' - set wireless.w${freq}sta.ssid='config.franken.freifunk.net' - set wireless.w${freq}sta.disabled='1' - __EOF__ -done - -uci commit network -uci commit wireless - -# vim: set noexpandtab:tabstop=4 diff --git a/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile index b148eca..d9119ac 100644 --- a/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile +++ b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile @@ -15,29 +15,33 @@ getWirelessHoodfile() { # Set channel to auto, enable wXsta, disable other interfaces for radio in $(wifiListRadio); do - uci set "wireless.${radio}.channel=auto" - freq="$(wifiGetFreq $radio)" uci set wireless.w${freq}ap.disabled='1' uci set wireless.w${freq}mesh.disabled='1' uci set wireless.w${freq}configap.disabled='1' - uci set wireless.w${freq}sta.disabled='0' done uci commit wireless reload_config - wifi - # wait a moment to start the interface - sleep 10; + # wait for wireless interfaces to vanish + sleep 5; - if /bin/busybox wget -T15 -O "$file" "http://[fe80::1%w2sta]:2342/keyxchangev2data"; then - return 0 - elif /bin/busybox wget -T15 -O "$file" "http://[fe80::1%w5sta]:2342/keyxchangev2data"; then - return 0 - else - return 1 - fi + + for phy in $(ls /sys/class/ieee80211); do + iw phy $phy interface add configsta type managed + ip link set up configsta + iw dev configsta connect -w config.franken.freifunk.net 2>/dev/null + + if /bin/busybox wget -T15 -O "$file" "http://[fe80::1%configsta]:2342/keyxchangev2data"; then + iw dev configsta del + return 0 + fi + + iw dev configsta del + done + + return 1 } getEthernetHoodfile() {