Raspberry Pi come Access Point

luca 12/11/2014 8

Sto lavorando ad un progetto basato su Raspberry Pi e controllato da un device esterno (portatile, smarphone…) e quindi ero alla ricerca del sistema più universale possibile per collegare Raspberry e device. Grazie ad un piccolo adattatore usb->wifi è possibile trasformare la Raspberry in un access point al quale, via wireless, il nostro device può collegarsi: in questo articolo vi spiegherò come fare.

rasp-w0

Modulo wifi

La Raspberry non ha una scheda di rete wifi, è quindi necessario acquistare un adattatore usb->wifi.

Ho scelto il modello Edimax EW-7811Un, di dimensioni contenute e molto economico (si trova ad esempio su Amazon a meno di 10 euro):

rasp-ap1

Grazie alle sue dimensioni contenute, l’adattatore sporge poco una volta inserito in una delle due porte USB della Raspberry:

rasp-ap2 rasp-ap3

Ho installato su Raspberry l’ultima versione della distribuzione Raspbian e l’adattatore viene riconosciuto automaticamente (come si vede lanciando il comando dmesg):

rasp-w1

Viene anche creata una nuova interfaccia di rete, chiamata wlan0:

rasp-w2

Configurazione rete

Il nuovo access point che configureremo pubblicherà una rete wifi con questi parametri:

  • SSID: Pi_AP
  • protezione: WPA2-PSK
  • password: PiPasswd
  • indrizzi IP: DHCP (range 192.168.10.11-20, mask 255.255.255.0)

Per prima cosa dobbiamo quindi assegnare un indirizzo IP statico (ho scelto 192.168.10.1) alla interfaccia wlan0, editando il file /etc/network/interfaces:

rasp-w3

Ricarichiamo la configurazione dell’interfaccia di rete con i seguenti comandi:

sudo ifdown wlan0
sudo ifup wlan0

DHCP e DNS

Ho deciso di utilizzare dnsmasq come demone per i servizi di DHCP e DNS.

Per prima cosa aggiorniamo la nostra distribuzione con:

sudo apt-get update
sudo apt-get upgrade

quindi installiamo dnsmasq con:

sudo apt-get install dnsmasq

Modifichiamo ora il file di configurazione /etc/dnsmasq.conf aggiungendo le seguenti righe di configurazione:

interface=wlan0
dhcp-range=192.168.10.11,192.168.10.20,,255.255.255.0,24h

La prima indica a dnsmasq di mettersi in ascolto solo sulla interfaccia wifi, mentre la seconda indica il range degli indirizzi IP da distribuire e il lease time (24h).

Riavviamo dnsmasq con:

sudo /etc/init.d/dnsmasq restart

Access Point

Per attivare le funzionalità di access point, dobbiamo installare hostapd:

sudo apt-get install hostapd

Creiamo quindi il file di configurazione (/etc/hostapd/hostapd.conf) e inseriamo:

interface=wlan0
driver=rtl871xdrv
ssid=Pi_AP
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=PiPasswd
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Modifichiamo il file /etc/default/hostapd indicando il nuovo file di configurazione creato:

rasp-w4

Purtroppo la versione ufficiale di hostapd non supporta l’adattatore wifi scelto. Per questo è necessario compilare la versione fornita da Realtek (produttore del chipset).

Scaricare dal sito ufficiale la versione Linux del driver (scorrere la pagina fino a trovare il chipset RTL8188CUS):

rasp-w7

Copiare il file scaricato in /tmp. Lanciare i seguenti comandi (eventualmente sostituire il nome del file con quello scaricato se diverso) per effettuare l’unzip dei pacchetti:

sudo unzip RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip
cd RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/
cd wpa_supplicant_hostapd/
sudo tar -xvf wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz
cd wpa_supplicant_hostapd-0.8_rtw_r7475.20130812
cd hostapd

Lanciare ora la compilazione con i seguenti comandi e attendere il completamento:

sudo make
sudo make install

rasp-w5

Infine copiare il nuovo binario sovrascrivendo quello esistente:

sudo mv hostapd /usr/sbin/hostapd
sudo chown root.root /usr/sbin/hostapd
sudo chmod 755 /usr/sbin/hostapd

Possiamo provare la configurazione lanciando in console il demone hostapd:

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

Se tutto funziona correttamente, la nuova rete wifi sarà visibile e sarà possibile collegarsi:

wifi-screen

rasp-w6
Infine possiamo configurare Raspbian in modo che esegua hostapd all’avvio del sistema:

sudo update-rc.d hostapd enable

8 Comments »

  1. VR Bitman 30/12/2014 at 17:11 - Reply

    Ciao Luca,

    interessante.. se posso chiederti, cosa farai di preciso con il Pi?

    • luca 08/01/2015 at 09:49 - Reply

      Ciao! Sto lavorando (quasi terminato) ad un display gestito da Raspberry e configurabile via wifi sfruttando appunto la modalità AP descritta in questo articolo…

  2. mcgyver83 07/07/2015 at 21:53 - Reply

    Ciao, ho un raspberry che ho configurato con hostapd, bridge tra lan e wifi usb RTL8188CUS.
    Sembra funzionare senza usare dnsmasq.

    Quello che mi succede però è che mi ritrovo con la rete wifi del router e quella del raspberry con ssid diversi.
    A volte il cellulare rimane connesso a quella del raspberry anche se il segnale è decisamente più basso rispetto a quello del router.
    Ho letto che dovrei metter lo stesso SSID e channel diverso alle due reti wifi per ottenere il passaggio del cellulare android da una all’altra senza nessun problema.

    Il fatto è che alla rete wifi del router ho impostato il mac address filter e la wifi è senza protezione mentre per il raspberry ho impostato la password nel file hostapd.

    Come posso fare?

  3. luca96 30/03/2016 at 16:22 - Reply

    ciao, volevo sapere se hai utilizzato anche il cavo ethernet per fare il tuo progetto. ti perchè io voglio fare un access point col rasp…solo che la gente mi dice che devo utilizzare due chiavette wifi, perchè ho un router portatile senza ethernet. mi dai dei consigli? grazie

    • luca 04/04/2016 at 07:54 - Reply

      Ciao Luca, spiegami meglio cosa vuoi ottenere… sicuramente puoi fare un access point con Raspberry utilizzando il wifi + la scheda ethernet ma se poi questo cavo ethernet non hai modo di collegarlo al tuo router ADSL che te ne fai?

  4. luca96 26/05/2016 at 14:40 - Reply

    ciao, volevo chiederti perchè il mio access point non funzia…
    praticamente io vedo l’ap col telefono però quando mi collego mi va in loop continuo e non accede. non capisco più niente aiutami per favore.

  5. beppe 03/04/2017 at 14:23 - Reply

    Ciao, volevo chiederti se e possibile in questo modo accedere al raspberry anche senza connessione internet……
    Cercherò di farmi capire meglio che posso.
    E possibile connettersi via wireless da cell. al raspberry per pilotare le GPIO senza router/internet. ad esempio allesterno?

    • luca 03/04/2017 at 15:05 - Reply

      ciao! certo, se lo configuri come access point ti puoi collegare alla rete wifi che lui pubblica e sfruttare tale collegamento per accedere al Raspberry.

Leave A Response »

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi