[Risolto] wpa_supplicant a singhiozzo...

Problemi e discussioni inerenti al networking, ai server, backup dati e alla sicurezza in generale
Rispondi
Avatar utente
vda
Arciere Provetto
Messaggi: 589
Iscritto il: 13 febbraio 2011, 10:53
Architettura: x86_64 (64bit)

[Risolto] wpa_supplicant a singhiozzo...

Messaggio da vda » 9 maggio 2019, 7:57

Buongiorno,

sto tentanto di automatixzzare tramite wpa_supplicant la connessione alla mia rete wirelewss domestica. Questa la sitruazione:

Codice: Seleziona tutto


#!/bin/bash

[ $USER != "root" ] && { echo "You must be root to run this script."; exit 1; }
[ $# -ne 3 ] && { echo "Usage: $0 SSID password wireless_interface_id "; exit 1; }
ip link | grep $3 || { echo "$3 is not a valid network interface"; exit 1; }

SSID=$1
Pwd=$2
if=$3

ip link show up | grep $if  || ip link set $if up &> /dev/null

wpa_passphrase $SSID $Pwd | tee /etc/wpa_supplicant/wpa_supplicant.conf &> /dev/null

ps -e | grep "wpa_supplicant" && killall wpa_supplicant
wpa_supplicant -B -i $if -c /etc/wpa_supplicant/wpa_supplicant.conf

exit 0

Immancabilmente ottengo:

Codice: Seleziona tutto

Successfully initialized wpa_supplicant
Ma, quando vado a verificare lo stato della connessione

Codice: Seleziona tutto

iw dev <wireless_network-interface> link 
spesso - ma non sempre... - risulta

Codice: Seleziona tutto

Not connected
Any idea? Grazie,

8)
Ultima modifica di vda il 1 giugno 2019, 23:00, modificato 2 volte in totale.
Soltanto quando siamo in grado di dare possediamo veramente.
Tutto ciò che non siamo in grado di dare ci possiede. [André Gide]

Avatar utente
Dusty
Little John
Messaggi: 791
Iscritto il: 12 agosto 2011, 13:15
Località: Firenze

Re: wpa_supplicant a singhiozzo...

Messaggio da Dusty » 9 maggio 2019, 11:19

vda ha scritto:
9 maggio 2019, 7:57
spesso - ma non sempre... - risulta
Any idea? Grazie,
Ma ... per curiosità, perchè non usi uno dei tanti network manager a disposizione?
La filosofia KISS portata all'estremo?
Approvo!!! :-)
"Spesso ma non sempre", significa che a volte funziona e a volte no?
C'è nulla nel journal?

Avatar utente
TheSaint
Robin Hood
Messaggi: 7748
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: wpa_supplicant a singhiozzo...

Messaggio da TheSaint » 10 maggio 2019, 1:47

Ma se esegui il comando direttamente, funziona?
Tieni conto che il programma rimane in background se non fallisce, ma senza dhcp client non hai nessuna connessione. Salvo che stai usando un IP statico.
F the saint
12 anni da questo forum ;)

Avatar utente
vda
Arciere Provetto
Messaggi: 589
Iscritto il: 13 febbraio 2011, 10:53
Architettura: x86_64 (64bit)

Re: wpa_supplicant a singhiozzo...

Messaggio da vda » 10 maggio 2019, 7:13

Grazie ad entrambi delle sollecite risposte. Dunque:
Dusty ha scritto: "Spesso ma non sempre", significa che a volte funziona e a volte no?
Esattamente: lo script alle volte funziona, alle volte no. Alle volte, poi, sembrerebbe connettersi, ma di lì a pochi secondi si disconnette.


Dusty ha scritto: C'è nulla nel journal?
Qualcosa del tipo (wlp3s0 è l'id dell'interfaccia di rete)

Codice: Seleziona tutto

nl80211: Could not set interface 'p2p-dev-wlp3s0' UP
Ma è un errore presente anche quando la connessione riesce e sembra più legato al wifi-direct che in questo caso non rileva


TheSaint ha scritto: Ma se esegui il comando direttamente, funziona?
Se eseguo il comando manualmente stessa identica situazione.


TheSaint ha scritto: Tieni conto che il programma rimane in background se non fallisce, ma senza dhcp client non hai nessuna connessione. Salvo che stai usando un IP statico.
lo scrip prosegue con l'assegnazione di IP, default gateway e dns specifici

8)
Soltanto quando siamo in grado di dare possediamo veramente.
Tutto ciò che non siamo in grado di dare ci possiede. [André Gide]

Avatar utente
vda
Arciere Provetto
Messaggi: 589
Iscritto il: 13 febbraio 2011, 10:53
Architettura: x86_64 (64bit)

Re: wpa_supplicant a singhiozzo...

Messaggio da vda » 10 maggio 2019, 11:36

In https://bbs.archlinux.org/viewtopic.php ... 3#p1624793 si offre una soluzione ancora inesplorata:

Codice: Seleziona tutto

sudo rmmod iwlmvm iwlwifi && sudo modprobe iwlmvm iwlwifi
Dopo provo e riferisco

8)
Soltanto quando siamo in grado di dare possediamo veramente.
Tutto ciò che non siamo in grado di dare ci possiede. [André Gide]

Avatar utente
vda
Arciere Provetto
Messaggi: 589
Iscritto il: 13 febbraio 2011, 10:53
Architettura: x86_64 (64bit)

Re: wpa_supplicant a singhiozzo...

Messaggio da vda » 10 maggio 2019, 15:06

No, direi che non funziona neanche l'idea di ricaricare i moduli kernel iwlmvm e iwlwifi

8)
Ultima modifica di vda il 10 maggio 2019, 16:50, modificato 1 volta in totale.
Soltanto quando siamo in grado di dare possediamo veramente.
Tutto ciò che non siamo in grado di dare ci possiede. [André Gide]

Avatar utente
vda
Arciere Provetto
Messaggi: 589
Iscritto il: 13 febbraio 2011, 10:53
Architettura: x86_64 (64bit)

Re: wpa_supplicant a singhiozzo...

Messaggio da vda » 10 maggio 2019, 16:18

Al momento l'unica configurazione che dà prova di essere un po' più affidabile è

Codice: Seleziona tutto

$ su
# ip link set wlp2s0 up && sleep 3 && killall wpa_supplicant && sleep 3 && wpa_supplicant -B -i <my_wireless_interface> -c <(wpa_passphrase <my_SSID> <my_password> && sleep 3 && iw dev <my_wireless_interface> link
In altri termini:

1. eseguire i comandi esattamente come root (non attraverso sudo)
2. lasciare passare qualche secondo fra un comando ed il successivo (sleep) per consentire all'hardware di sistema di assestarsi nel nuovo stato.

Mi piacerebbe comunque una soluzione più strutturale e definitiva...

8)
Soltanto quando siamo in grado di dare possediamo veramente.
Tutto ciò che non siamo in grado di dare ci possiede. [André Gide]

Avatar utente
vda
Arciere Provetto
Messaggi: 589
Iscritto il: 13 febbraio 2011, 10:53
Architettura: x86_64 (64bit)

Re: wpa_supplicant a singhiozzo...

Messaggio da vda » 15 maggio 2019, 20:11

Posto qui un'ultima configurazione che sembrerebbe funzionare più di frequente di altre

Codice: Seleziona tutto


#!/bin/bash

[ $EUID -ne 0 ] && { echo "You must be root to run this script"; exit 1; }

[ $# -ne 3 ] && { echo "Usage: $0 wireless_interface_id SSID password"; exit 1; }

iw dev | grep "Interface $1" || { echo "$1 does not seem to be a wireless network interface"; exit 1; }

ip link show up | grep "$1" || ip link set $1 up
 
ps -e | grep "wpa_supplicant" && killall wpa_supplicant 

wpa_passphrase "$2" "$3" > /etc/wpa_supplicant/wpa_supplicant.conf 

wpa_supplicant -B -i $1 -c /etc/wpa_supplicant/wpa_supplicant.conf

rm /etc/wpa_supplicant/wpa_supplicant.conf

exit 0

Rimane comunque oscuro il perchè, a parità di condizioni

- interfaccia inizialmente accesa o spenta
- interfaccia pre o post configurata con indirizzo e default gateway, configurata via dhcp, o non configurata per nulla
- pc fisicamente vicino o distante dall'access point
- connessione a differenti reti wireless
- unico utente connesso o con utenti già connessi alla stessa rete

il comportamento non sia univoco.

8)
Soltanto quando siamo in grado di dare possediamo veramente.
Tutto ciò che non siamo in grado di dare ci possiede. [André Gide]

Avatar utente
vda
Arciere Provetto
Messaggi: 589
Iscritto il: 13 febbraio 2011, 10:53
Architettura: x86_64 (64bit)

Re: wpa_supplicant a singhiozzo...

Messaggio da vda » 1 giugno 2019, 22:52

Ci tenevo a mettere un punto alla questione e, sebbene a distanza di un po' di tempo, credo di aver infine trovato una soluzione stabile.

Dopo vari tentativi, sono infatti arrivato alla conclusione che la connessione ha ottime probabilità di successo quando esista - preventivamente - un file di configurazione: tipicamente etc/wpa_supplicant/wpa_supplicant.conf.

Riporto di seguito la configurazione del mio wpa_supplicant.conf dove, per completezza, ho previsto, nell'ordine:

- una rete WPA2/PSK (TP-LINK_E4FA54)
- una rete aperta (Nokia 5.1)
- eventuali reti free (alle quali connettersi solo in ultima istanza)

Codice: Seleziona tutto

$ cat /etc/wpa_supplicant/wpa_supplicant.conf 

network={
	ssid="TP-LINK_E4FA54"
	psk=c2737b66f093011f5d7d00a56dfd46141b22ca6cce1d6c1c00f0031f7c6661fb
}

network={
        ssid="Nokia 5.1"
	key_mgmt=NONE
}

network={
        key_mgmt=NONE
        priority=-999
}

Segue, allora, lo script che opera la connessione (wlp2s0 è l'interfaccia di rete wireless e si suppone che sia abilitato il servizio dhcpcd). Notare anche come lo script tenti di instaurare la connessione fino ad un massimo 10 volte e come ad ogni cambio di stato lato hw segua una pausa di 3 secondi.

Codice: Seleziona tutto

$ cat wireless_connect 

#!/bin/bash

[ $EUID -ne 0 ] && { echo "You must be root to run this script."; exit 1; }

wif="wlp2s0"

k=0
while [ $(iw dev wlp2s0 link | grep "Not connected" > /dev/null; echo $?) -eq 0 ]
do
	ip link show up | grep "$wif" > /dev/null || { ip link set $wif up && sleep 3; }
	ps -e | grep wpa_supplicant > /dev/null && { killall wpa_supplicant && sleep 3; }
	wpa_supplicant -B -i $wif -c /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null && sleep 3
	[ $k -lt 9 ] && ((k=$k+1)) || { echo "Not possible to connect"; exit 1; }
done

dhcpcd $wif

iw dev wlp2s0 link

exit 0
That's all

8)
Soltanto quando siamo in grado di dare possediamo veramente.
Tutto ciò che non siamo in grado di dare ci possiede. [André Gide]

Rispondi