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

FIXME 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:

Le funzioni di Access Point si configurano in /etc/hostapd/hostapd.conf, le impostazioni diverse dal default sono: (FIXME)

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.