26.02.2017: Howto tested & working 🙂
Today, we will look at howto create AP hotspot on Raspberry Pi using Ralink RT5370 chipset (see previous article).
First step should be update your repositories and update system to lastest:
sudo aptitude update; sudo aptitude -y upgrade
Then, reboot will be good thing to do..
sudo shutdown -r now
After boot, login, run sudo su – and lsusb command and you should see something like this:
pi@raspberrypi ~ $ sudo su -
root@raspberrypi:~# lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
Install hostapd and dnsmasq:
aptitude install hostapd dnsmasq
Edit file with network settings to some static IP of wlan0:
nano /etc/network/interfaces
And wlan0 section should like:
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.100.1
netmask 255.255.255.0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet manual
(close nano with Ctrl+X, then Y and Enter)
After that, get down and up wlan0 interface and check, if you have your IP set it up on interface
ifdown wlan0; ifup wlan0
ifconfig wlan0 # this command should wrote these informations
# as you can see, there is right IP
wlan0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Create new configuration for hostapd in /etc/hostapd/hostapd.conf and put there this info:
# you can create it with command
nano /etc/hostapd/hostapd.conf
#write info below into file
interface=wlan0
driver=nl80211
ssid=RaspberryPi_AP
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Your_fav_super_password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Edit files /etc/default/hostapd and uncomment DAEMON_CONF, and add path to config. So line will looks like this:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Then, you can finally restart hostapd, and you have your hotspot up and running.
/etc/init.d/hostapd restart
# allow hostapd after boot
update-rc.d hostapd enable
Your hotspot is running, but you need to run some DHCP client for your clients which will use your hotspot. Edit and change these parameters in dnsmasq (and restart it):
#edit dnsmasq by following command
nano /etc/dnsmasq.conf
#find and change following parameters.. (or you can add these on end of the file
interface=wlan0
except-interface=eth0
dhcp-range=192.168.100.2,192.168.100.150,255.255.255.0,12h
# restart dnsmasq
/etc/init.d/dnsmasq restart
# allow dnsmasq after boot
update-rc.d dnsmasq enable
Then, you need to do NAT.. so..
#edit file /etc/sysctl.conf and uncomment this line
net.ipv4.ip_forward=1
# run this command to load it
sysctl -p
#run these command for allow forwarding..
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
# save iptables to file which will load after start
iptables-save > /etc/iptables.nat
# create file with forwarding in /etc/network/if-up.d
echo '#!/bin/bash' > /etc/network/if-up.d/forwarding; echo 'iptables-restore < /etc/iptables.nat' >> /etc/network/if-up.d/forwarding; chmod +x /etc/network/if-up.d/forwarding
I found problem after reboot (and hostapd start) that wlan0 doesnt have IP assigned. You can solve it by chage file /etc/default/ifplugd and change it like this:
INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
Source: http://elinux.org/RPI-Wireless-Hotspot
Help with hostapd and IP: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless-access-pointrouter-part-3b/