Table of Contents
Raspberry Pi Car Device
Dongle USB Edimax in Mode Master (Access Point)
Normalmente l'interfaccia WiFi lavora in modalità managed, cioè come cliente di un Access Point. Si vuole invece configurare il Raspberry come Access Point, cioè far lavorare l'interfaccia WiFi in Master Mode. Non tutte le combinazioni di hardware + modulo kernel + software hostapd supportano tale modalità.
Ci vuole una versione custom di hostapd, forse occorre anche un modulo kernel custom, a seconda del chip WiFi. Vedere le seguenti pagine:
Pare che ci siano risultati diversi a seconda del chip (RTL8188CUS, RTL8188EUS, ecc.):
Altri riferimenti web:
wpa_supplicant
/etc/network/interfaces
:
allow-hotplug wlan0 # WiFi in Client (Managed) mode iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf # If network stanza has not "id_str", wpa_supplicant will use "default". iface default inet dhcp
C'è un problema: l'opzione wpa-roam
deve essere associata ad una interfaccia fisica (es. iface wlan0 …
) e di tipo manual
, non viene accettata su un'istanza di interfaccia logica (es. iface master …
) oppure di tipo dhcp
. L'istanza di wpa_supplicant
lanciata in questo modo cerca quindi un'eventuale istanza di interfaccia logica col nome specificato dalla stringa id_str
wpa_supplicant.conf
, altrimenti utilizza la stringa default
(esempio sopra, che causa la configurazione via DHCP).
Una conseguenza di tutto questo è che non si riesce a lanciare wpa_supplicant
in modalità roaming utilizzando un nome logico, ad esempio ifup wlan0=managed
, in quanto il cliente DHCP non viene eseguito.
hostap
Al bootstrap il Raspberry funziona per default in modo managed (station) in roaming (vedi paragrafo precedente), si vuole un sistema semplice per passare al modo master (access point).
La modalità master si ottiene con il software hostapd, i file di configurazione sono:
/etc/hostapd/hostapd.conf
/etc/default/hostapd
Le funzioni di Access Point si configurano in /etc/hostapd/hostapd.conf
, le impostazioni diverse dal default sono: ()
driver=rtl871xdrv ssid=PiCar country_code=IT channel=7 auth_algs=1 wmm_enabled=0 wpa=1 # TODO: usare un file di password? wpa_passphrase=MySecret wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
Volendo avviare hostapd al bootstrap basterebbe togliere il commento in /etc/default/hostapd
:
#DAEMON_CONF="/etc/hostapd/hostapd.conf"
tuttavia noi si vuole avviare l'interfaccia manualmente, quindi si imposta in /etc/network/interfaces
:
allow-hotplug wlan0 # WiFi in Access Point (Master) mode. # Activate with: ifdown wlan0; ifup wlan0=master iface master inet static address 192.168.5.1 netmask 255.255.255.0 up start-stop-daemon --start --oknodo --quiet --exec /usr/sbin/hostapd --pidfile /var/run/hostapd.pid -- -B -P /var/run/hostapd.pid /etc/hostapd/hostapd.conf >/dev/null || true down start-stop-daemon --stop --oknodo --quiet --exec /usr/sbin/hostapd --pidfile /var/run/hostapd.pid || true
in questo modo è possibile usare i comandi per fermare o avviare l'interfaccia nella modalità Master:
ifdown wlan0 ifup wlan0=master
wpa_supplicant o hostap, mapping automatico
Si vuole un sistema automatico per decidere se attivare l'interfaccia WiFi in modo managed oppure master, in teoria il mapping fornito da /etc/network/interfaces
di Debian dovrebbe essere lo strumento adeguato.
dnsmasq
Alimentazione a batteria
Si è provato ad alimentare il Raspberry con un 2200mAh Li-Ion Rechargeable Power Bank (RS Article: 7757504) (data sheet), caricato a sua volta tramite adattatore accendisigari-USB da 2A. Una situazione del tutto simile a quella descritta in questo articolo: Testing RS 5200 mAh USB lithium battery pack as a UPS. Sembra che in queste condizioni la batteria è sempre sotto carica, cioè una condizione non ottimale per la sua durata.
Nelle nostre condizioni il Raspberry è rimasto in funzione per oltre 24 ore, ma alla fine si è spento, si suppone per scaricamento della batteria e quindi per alimentazione insufficiente.
Una soluzione migliore potrebbe essere quella di utilizzare un circuito specifico per la ricarica/alimentazione, tipo questo: SeeedStudio USB Charger. È specifico per batteria LiPo (litio-polimeri), mentre il power bank di cui sopra è litio-ioni, farà differenza?
Attenzione alle batterie litio-polimeri! Hanno una resistenza interna molto bassa e quindi sono a rischio di carica/scarica violentissma, queste potrebbero essere le conseguenze: Just a caution to all of you who play with Lipo's.