====== 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à. * [[http://elinux.org/RPI-Wireless-Hotspot|RPI Wireless Hotspot]] * [[http://www.daveconroy.com/turn-your-raspberry-pi-into-a-wifi-hotspot-with-edimax-nano-usb-ew-7811un-rtl8188cus-chipset/|Raspberry-PI WiFi hotspot with Edimax]] Ci vuole una **versione custom di hostapd**, forse occorre anche un **modulo kernel custom**, a seconda del chip WiFi. Vedere le seguenti pagine: * https://github.com/jenssegers/RTL8188-hostapd * https://github.com/quickreflex/rtl8188eus * https://github.com/lwfinger/rtl8188eu Pare che ci siano risultati diversi a seconda del chip (RTL8188CUS, RTL8188EUS, ecc.): * **[[https://www.raspberrypi.org/forums/viewtopic.php?p=385731|Previously Unsupported Edimax WiFi Hotspot (working)]]** * **[[https://docs.google.com/document/d/16hJS7fnPyKUwbvR33_nMku_b6XcYaBJXVpeCIMoJzcQ/pub|Convert a Raspberry Pi B2 standalone Wifi-AP using REALTEK chipset (e.g. EDIMAX)]]** * **[[https://www.raspberrypi.org/forums/viewtopic.php?t=61816|RTL8188EUS cannot setup access point]]** Altri riferimenti web: * [[http://blog.sip2serve.com/post/48420162196/howto-setup-rtl8188cus-on-rpi-as-an-access-point|Howto setup rtl8188cus on rpi as an access point]] * [[http://dl.dropbox.com/u/1663660/hostapd/hostapd|hostapd custom]] * [[http://www.geeked.info/raspberry-pi-add-multiple-wifi-access-points/|WPA Managed in Roaming]] ===== 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: * **''/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: (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** [[http://uk.rs-online.com/web/p/power-banks/7757504/|(RS Article: 7757504)]] ({{2200mah_power_bank.pdf|data sheet}}), caricato a sua volta tramite adattatore accendisigari-USB da 2A. Una situazione del tutto simile a quella descritta in questo articolo: [[http://raspi.tv/2013/testing-rs-5200-mah-usb-lithium-battery-pack-as-a-ups|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: [[http://www.robotshop.com/productinfo.aspx?pc=RB-See-213&lang=en-US|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: [[http://rc.runryder.com/helicopter/t519305p1/|Just a caution to all of you who play with Lipo's]].