hostapd on Raspberry Pi

The daemon hostapd is a Linux service which enables  a “host” computer to become a wifi Access Point (AP).     Thus  “host” + “AP” + “d”  (for daemon) gives the name hostapd.

I originally learned to set up hostapd from  instructions on Pastebin written by user Dryfire117, at https://pastebin.com/A4jUp2Nq.   The process is now much easier since the version that comes with Raspbian Stretch includes the “nl80211” driver.   Previously, one had to build a version from source code.   Here are the main steps:

  1.  Install:  Install hostapd with the following command
    $ sudo apt-get install hostapd
  2. Configure: Create and edit the configuration file, at /etc/hostapd/hostapd.conf.
    For starters, include the following:

    interface=wlan1
    #If this fails, try rt1871xdrv a 
    driver=nl80211
    # Name of the new network: best use the hostname
    ssid=wifipi
    
    # Pick a channel not already in use
    channel=6
    # Change to b for older devices?
    hw_mode=g
    macaddr_acl=0
    auth_algs=3
    # Disable this to insure the AP is visible:
    ignore_broadcast_ssid=0

    This creates an open, unsecured access point. Anybody can connect to it without having to give a password. In some cases that is what you want, but in other cases you will want
    to turn on WPA for security and add a password.  In that case, add the following to the hostapd.conf file:

    wpa=2
    wpa_passphrase="Raspberry"
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
    

    You should, of course, pick a better password. It has to be at least 8 characters long.

    There are many, many other options which can be set in this configuration file, but these are the ones needed in most cases to get up and running. Full documentation of the options can be found in a sample configuration file at https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf

    A few things I’ve learned from testing options on the Raspberry pi are that trying to enable the Automated Channel Selection (ACS) algorithm  via “channel=0” does not work, and setting “hw_mode=any” does not work.

  3. Test:  Test it manually to make sure the configuration file is okay:
    $ sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
    If there are errors it will complain and abort.  Unfortunately some older wifi devices don’t support all the features necessary to run an access point.   This is where you find out if yours will work.If there are no problems it will run and you can see the network SSID on a nearby device. Simply press ^C to stop it.
  4. Enable: Have hostapd start at boot time, by doing the following:
    1. Set the default location for the configuration file, by editing the file /etc/default/hostapd to add the following line:
      DAEMON_CONF="/etc/hostapd/hostapd.conf"
    2. Enable the service at boot time with the command:
      $ sudo update-rc.d hostapd enable
    3. You can test it now with the command
      $ sudo service hostapd start
      and/or you can reboot.

Once hostapd is enabled and running, the next step is to enable the DHCP service, so that clients joining the network are automatically assigned IP addresses.

Print Friendly, PDF & Email