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

Fabian Bläse fabian at blaese.de
Fr Jan 10 15:08:52 CET 2020


Hallo Adrian,

könnte man, ja. Ich würde hier aber eher vorschlagen, bei "dekonfiguration" einer Hood den Standard-AP wieder zurück auf do.not.use (bzw. das neuere äquivalent) zu setzen und diesen immer direkt nach dem Versuch ein Hoodfile zu laden wieder zu aktivieren.
Dann hat man zwar alle 5 Minuten mal ein paar Sekunden Verbindungsverlust, ist aber wohl immer noch besser als nichts.

Gruß
Fabian

On 10.01.20 14:49, Adrian Schmutzler wrote:
> Hallo nochmal,
> 
> wenn die Sache mal durch ist:
> 
> Ich gehe davon aus, dass man mit ähnlicher Syntax dann einen "Debug-AP" temporär aufmachen kann, so wie schon mal vor einiger Zeit diskutiert?
> Also sprich, dass man per WLAN auf die Geräte zugreifen kann, wenn kein Gateway verfügbar ist (zum Konfigurieren, Debuggen, etc.)
> 
> 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


Mehr Informationen über die Mailingliste franken-dev