[PATCH] fff-hoods: manually create wifi station interface

mail at adrianschmutzler.de mail at adrianschmutzler.de
Do Jan 9 00:52:59 CET 2020


Hallo,

ich habe das gerade auf mehreren Geräten mit hostapd-mini getestet (mit meiner FW und dem Fix in configurehood).

Funktioniert einwandfrei (auch wenn man den Kanal ändert).

Wenn man noch TARGET_SQUASHFS_BLOCK_SIZE auf 1024 stellt und simple-tc abwählt, kann man die tiny-Devices mit 19.07 bauen (ohne die Karte zu entfernen).

Review und Tested-by schicke ich dann bei einer v2.

Vielen Dank.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Sonntag, 5. Januar 2020 22:43
> To: franken-dev at freifunk.net
> Subject: [PATCH] fff-hoods: manually create wifi station interface
> 
> 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 <fabian at blaese.de>
> ---
>  .../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() {
> --
> 2.24.1
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : openpgp-digital-signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 834 bytes
Beschreibung: nicht verfügbar
URL         : <https://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20200109/3b6b7152/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev