I need my Raspberry Pi to create its own private dedicated Wi-Fi network so that people can connect on it an access some service it provide (like camera broadcast).
To do so I’ve done some search and find out several tutorial to do it (see links at the end of the post). This post is just a sum up of what worked in my case (in case I need to redo it). I strongly suggest to check the links at the end of the article.
The solution rely on 2 software:
- hostapd
HostAPD is a user space daemon for access point and authentication servers. That means it can will turn your Raspberry Pi into an access point that other computers can connect to. It will also handle security such that you can setup a WiFi password.
- isc-dhcp-server
isc-dhcp-server is the Internet Systems Consortium’s implementation of a DHCP server. A DHCP server is responsible for assigning addresses to computers and devices connection to the WiFi access point.
Some people use udhcpd which is lighter version
The first thing to do is install the software :
sudo apt-get update sudo apt-get install isc-dhcp-server hostapd
DHCP configuration
Then configure the DHCP server with 2 files :
- /etc/default/isc-dhcp-server
#This will make the DHCP server hand out network addresses on the wireless interface Change “INTERFACES=""” to “INTERFACES="wlan0"”
- /etc/dhcp/dhcpd.conf
comment the following lines :
option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org;
make the DHCP as master on the domain by removing the comment at lines
#authoritative;
define a network and dhcp config by adding the following block (This configuration will use the Google DNS servers at 8.8.8.8 and 8.8.4.4. )
subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.10 192.168.10.20; option broadcast-address 192.168.10.255; option routers 192.168.10.1; default-lease-time 600; max-lease-time 7200; option domain-name "local-network"; option domain-name-servers 8.8.8.8, 8.8.4.4; }
Network interface
Now that the DHCP server is configured we will setup the network card (wifi dongle in our case) with static IP
edit the file :
/etc/network/interfaces
remove everything related to “wlan0” and past :
allow-hotplug wlan0 iface wlan0 inet static address 192.168.10.1 netmask 255.255.255.0
and now the last configuration step is the hostapd server
HostApd
create new file:
/etc/hostapd/hostapd.conf
past :
interface=wlan0 driver=nl80211 #driver=rtl871xdrv ssid=MyPi hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=raspberry wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
Be aware of the driver choice : nl8021.
Then the last file to configure :
/etc/default/hostapd
Find the line #DAEMON_CONF=”” and edit it so it says DAEMON_CONF=”/etc/hostapd/hostapd.conf”
Don’t forget to remove the # in front to activate it!
Then you can test with :
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
If it does not works with an error related to the driver….you need to DL the one made by adafruit (see llinks at the end)
Extra
To start the 2 services :
sudo service isc-dhcp-server start sudo service hostapd-server start
and if you want to start them at boot time :
sudo update-rc.d isc-dhcp-server enable sudo update-rc.d hostapd enable
Useful links found in my research:
- https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software
- http://elinux.org/RPI-Wireless-Hotspot
- http://raspberrypihq.com/how-to-turn-a-raspberry-pi-into-a-wifi-router/
- https://docs.google.com/document/d/1vWlYIJwcXLzDwwK-IxnyjCG3tE_iyYSpEt23WHhBBDQ/edit
- http://andypi.co.uk/?page_id=220
- http://lcdev.dk/2012/11/18/raspberry-pi-tutorial-connect-to-wifi-or-create-an-encrypted-dhcp-enabled-ad-hoc-network-as-fallback/
- https://www.maketecheasier.com/set-up-raspberry-pi-as-wireless-access-point/
- http://sirlagz.net/2013/01/22/script-starting-hostapd-when-wifi-goes-down/
- https://github.com/heeed/hotpi/blob/master/start_pispot.sh
- http://lcdev.dk/2012/11/18/raspberry-pi-tutorial-connect-to-wifi-or-create-an-encrypted-dhcp-enabled-ad-hoc-network-as-fallback/
- http://captainunlikely.com/blog/2013/08/16/fallback-routing-with-linux/