Nome utente:  
Password:  
Iscriviti 
Oggi è ven 4 dic 2020, 19:44

Tutti gli orari sono UTC + 1 ora [ ora legale ]



Apri un nuovo argomento Rispondi all’argomento  [ 6 messaggi ] 
  Stampa pagina Precedente | Successivo 
Autore Messaggio
 Oggetto del messaggio: Gain Calculator. uno script per calcolare il gain
MessaggioInviato: gio 28 mag 2015, 0:34 
Non connesso
Moderatore
Avatar utente

Iscritto il: mar 22 apr 2008, 19:00
Messaggi: 1475
Oggi in un'oretta nella quale avrei potuto anche decidere di guardare il soffitto o girarmi i pollici ho deciso di fare un piccolo script che può aiutare a calcolare il gain di un'antenna.

lo script è scritto in bash... quindi dovrete usare linux per farlo girare.
tutto quello che dovete fare è copiarlo in un foglio di testo vuoto, dare i permessi di esecuzione e lanciarlo tramite riga di comando.
prima di lanciarlo è bene che leggiate giusto un paio di premesse per comprendere come ho deciso di realizzare questo programma e magari adattarlo meglio alle vostre esigenze.

per eseguire i test è NECESSARIO essere collegati ad una rete. i dati espressi saranno in funzione alla potenza del segnale ricevuti dalla rete a cui siete connessi.

il segnale wifi come noi tutti sappiamo è spesso incostante ed ha diverse fluttuazzioni. tali fluttuazioni possono rendere difficile il calcolo del guadagno in quanto non si sa mai quale valore prendere come riferimento.
Per mitigare questo problema ho pensato di creare un programma che potesse raccogliere un numero N di letture, mediarle ed esprimere questa media in maniera costante.

per calcolare il guadagno di un'antenna abbiamo bisogno però di un'antenna di riferimento a guadagno noto. per fare ciò potete usare un'antenna classica da router che ha come guadagno 2 dbi.

la prima cosa che dovete fare prima di avviare il programma è vedere qual'è il nome dell'interfaccia che usate e cambiare wlan0 in quello che utilizzate voi. per conoscere quale interfaccia userete fare semplicemente
Codice:
iwconfig


il programma una volta lanciato chiederà di collegare l'antenna di riferimento e successivamente di inserirne il guadagno che teoricamente dovremmo conoscere.
il programma comincierà ad acquisire dati (la quantità è variabile semplicemente impostando la variabile nello script) ed alla fine mostrerà il segnale medio in dB. durante questa fase evitate di muovere l'antenna o di interporre oggetti nel suo campo visivo.

fatto ciò disinserite l'antenna e collegate l'antenna della quale volete conoscere il gain.
a questo punto il programma comincierà una lettura in continuo senza fermarsi mai mediando sempre i dati in continuo ed esprimendo tale media.
maggior numero di campioni mediati vuol dire maggiore stabilità nel segnale ma anche maggior ritardo nell'espressione del risultato. se ad esempio volete effettuare un puntamente cercate di effettuare piccoli movimenti ed aspettate che il segnale si stabilizzi.
potete infine regolare il tempo che deve trascorrere tra un campionamento ed il successivo a vostro piacimento.
io lo setterò a 0.1 secondi perchè reputo che sia un buon compromesso. cmq potete fare voi le vostre prove e scegliere quello che più vi soddisfa.
quando avete finito premete "ctrl + c" per uscire dal programma

se avrò tempo, ho intenzione di scriverne uno anche per window solo che devo trovare un po di tempo libero in quanto devo programmare in c e utilizzare le API di windows il che richiede un impegno maggiore.

CONSIGLIO:
per rendere il segnale ancora più costante vi consiglio di aprire un'altra shell e lanciare un ping con un intervallo molto basso come per esempio:
Codice:
ping 192.168.1.1 -s 10000 -i 0.03

ovviamente sostituite a 192.168.1.1 un indirizzo che possa rispondere al ping. nella maggior parte dei casi 192.168.1.1 va bene.

ma adesso basta chiacchere ed ecco il programma:

Codice:
#!/bin/sh
clear
#========== VARIABLES ==========
wlan="wlan0"     # wireless interface (MAKE SURE BEFORE LAUNCHING THE SCRIPT THAT THE DEVICE EXISTS!!!)
TimeGap=0.1     # time gap between samples (the shorter is the gap the more resources will be needed)
N=40             # number of samples of unknown antenna
NStd=60         # number of samples for reference antenna
#================================

#=== DO NOT EDIT THE FOLLOWING TWO PARAMETERS ===
n=$[ $N + 1 ]
nstd=$[ $NStd + 1 ]
#================================================

echo "========================="
echo " interface = $wlan"
echo " Delay = $TimeGap"
echo " N samples = $n"
echo " Reference samples= $NStd"
echo "========================="
echo
echo " [+] Connect a reference antenna... press any button when done"
read return

read -p " [+] Insert the reference antenna's gain (dBi) : " StdGain
while true;do
   if [[ $StdGain =~ ^-?[0-9]+$ ]]; then
      break
   else
      echo " [!] Please insert an integer number..."
      sleep 1
      clear
      read -p " [+] Insert the reference antenna's gain (dBi): " StdGain
   fi
done

echo
echo " <==== COLLECTING DATA ... PLEASE WAIT ... ====>"

for i in $(seq 0 1 $NStd); do
   LIST+=("$(iwconfig $wlan | grep Quality | cut -d '=' -f 3 | cut -d ' ' -f 1)")
   sleep $TimeGap
   echo -en "       N= $i in $nstd  (strength = ${LIST[i]} dB)       "\\r
done

tot=$(awk 'BEGIN {t=0; for (i in ARGV) t+=ARGV[i]; print t}' "${LIST[@]}")
MediaStd=$(bc <<< "scale=1; $tot/$nstd")

echo
echo
echo  " [i] The average reference signal is $MediaStd dB"
sleep 1
echo
echo " [+] Connect the antenna you want to calculate the gain..."
echo "     ... the measurement will began in a few seconds ..."
sleep 2
unset LIST


for i in $(seq 0 1 $N); do
   LIST+=("$(iwconfig $wlan | grep Quality | cut -d '=' -f 3 | cut -d ' ' -f 1)")
   sleep $TimeGap
done

clear

while true; do
   for i in $(seq 0 1 $N); do
      LIST[$i]="$(iwconfig $wlan | grep Quality | cut -d '=' -f 3 | cut -d ' ' -f 1)"
      tot=$(awk 'BEGIN {t=0; for (i in ARGV) t+=ARGV[i]; print t}' "${LIST[@]}")
      media=$(bc -l <<< "scale=1;  - $MediaStd + $tot/$n + $StdGain")
      echo -en "  Gain = $media dBi   "\\r
      sleep $TimeGap
   done
done


Top
 Profilo  
 
 Oggetto del messaggio: Re: Gain Calculator. uno script per calcolare il gain
MessaggioInviato: gio 28 mag 2015, 7:23 
Non connesso
Membro onorario
Avatar utente

Iscritto il: sab 28 mar 2009, 12:20
Messaggi: 1963
alla faccia del programmino, complimenti! : Thumbup :

_________________
ciao
beva


Top
 Profilo  
 
 Oggetto del messaggio: Re: Gain Calculator. uno script per calcolare il gain
MessaggioInviato: gio 28 mag 2015, 8:07 
Non connesso
Membro onorario

Iscritto il: mer 19 set 2012, 14:11
Messaggi: 3407
: Thumbup : : Thumbup : : Thumbup :


Top
 Profilo  
 
 Oggetto del messaggio: Re: Gain Calculator. uno script per calcolare il gain
MessaggioInviato: gio 28 mag 2015, 9:06 
Non connesso
Moderatore
Avatar utente

Iscritto il: mar 22 apr 2008, 19:00
Messaggi: 1475
considerata che questa è una versione molto grezza senza quasi nessun controllo di errori. Era giusto per vedere se vi poteva interessare. In tal caso sorò lieto di apportare migliorie e quindi upgrade dello script.

Fatemi sapere cosa ne pensate e se avete idee. Ciao

Ovviamente provatelo e vedete come vi gira


Top
 Profilo  
 
 Oggetto del messaggio: Re: Gain Calculator. uno script per calcolare il gain
MessaggioInviato: mar 2 giu 2015, 3:30 
Non connesso
Membro assiduo
Avatar utente

Iscritto il: dom 22 mag 2011, 20:23
Messaggi: 836
Provato molto velocemente con tre antenne diverse una panel, la mia vecchia airgrid e una biquad (una delle poche che in autocostruzione mi vengono bene).
Lo script funziona sia in live che con la distro che ho attualmente installata (Voyager) e non posso fare altro che i complimenti a Fabio per l'ottimo lavoro svolto.
Tra l'altro mi sembra uno script che con l'aggiunta di qualche altra variabile più "fighetta" possa trasformarsi in qualcosa di interessante anche a livello software.... non sarebbe male....
Intanto, grazie.... poi ti si fa sapere sull'uso continuativo.... : Chessygrin :

_________________
Wireless: Airlive X usb - Alfa awus036h - Skycity sy 8518
Antennas: Airgrid M2 ubiquiti 20 dBi - Panel 16 dBi
Modem Router Extender: Airlive N-Power - Alfa R 36


Top
 Profilo  
 
 Oggetto del messaggio: Re: Gain Calculator. uno script per calcolare il gain
MessaggioInviato: mar 2 giu 2015, 9:02 
Non connesso
Moderatore
Avatar utente

Iscritto il: mar 22 apr 2008, 19:00
Messaggi: 1475
mi fa piacere che t piaccia... ho apportato qualche miglioria nella selezione delle interfacce ... appena posso la uppo!
se cmq avete idee sugerite che se riesco le implemento!


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 6 messaggi ] 

Tutti gli orari sono UTC + 1 ora [ ora legale ]


Chi c’è in linea

Visitano il forum: Bing [Bot] e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi

Cerca per:
Vai a:  
cron




Copyright © 2007 by saverioweb feat. BigDaD.