ラズパイとラズパイをWi-Fiダイレクト接続するという機会があったので、手順をメモっておきます。下記の手順は片方のラズパイに設定することで、もう片方のラズパイからはWi-Fi接続先をGUIから設定するのみ(無線LANルータに接続する手順と同様)で接続可能です。

hostapd

hostapdは、ラズパイをアクセスポイントにするソフトウェアそのものです。インストールが完了したら、SSID,パスワード,セキュリティなど数項目の設定が必要です。

hostapdのインストール

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install -y hostapd

hostapdを明示的に停止します。

$ sudo systemctl stop hostapd
 

インターフェース設定

IPアドレスを設定します。ここでは192.168.80.1としていますが、環境によって書き換えてください。ラズパイ自身がアクセスポイントになるので、最後は必ず1にしましょう。

$ sudo nano /etc/dhcpcd.conf
denyinterfaces wlan0
interface wlan0
static ip_address=192.168.80.1/24

IPアドレスを固定します。/etc/network/interfacesを開き、wlan0の設定を下記の通り変更します。

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.80.1
netmask 255.255.255.0

hostapdの設定

hostapd.confは、環境によって存在しない場合があります。存在すれば新規作成すればよいですが、ない場合は新規作成します。SSID,passphrase(パスワード)は任意です。接続が不安定な場合、channelを変えてみてください。

$ sudo nano /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=RASPI_SSID
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=YOUR_PASSWORD

起動時にこの設定を読み込んでくれるように設定します。

$ sudo nano /etc/default/hostapd
# Defaults for hostapd initscript
#
# WARNING: The DAEMON_CONF setting has been deprecated and will be removed
#          in future package releases.
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
#DAEMON_CONF=""

# Additional daemon options to be appended to hostapd command:-
#       -d   show more debug messages (-dd for even more)
#       -K   include key data in debug messages
#       -t   include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS=""

中ほどにある#DAEMON_CONF=””のコメントアウト(#)を外し、先ほど作成した設定ファイル(hostapd.conf)のパスを追加します。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

自動起動設定

/etc/rc.localにhostapdの起動コマンドを追記し、電源ON時に自動起動するようにします。
fiとexit0の間に追記します。

$ sudo nano /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

/etc/init.d/hostapd start 

exit 0

dnsmasq

dnsmasqは小規模ネットワーク向けのDNS/DHCP/TFTPサーバーです。

dnsmasqのインストール

$ sudo apt-get install dnsmasq

dnsmasqを明示的に停止します。

$ sudo systemctl stop dnsmasq

dnsmasqの設定

接続してくる端末に配布するIPアドレスの範囲を設定します。アクセスポイント自身が192.168.80.1なので、2以上が設定できます。ここでは2~40としています。(192.168.80.2~192.168.80.40)

$ sudo nano /etc/dnsmasq.conf
interface=wlan0
dhcp-range=192.168.80.2,192.168.80.40,255.255.255.0,24h

hostpad,dnsmasqの起動

アプリを起動します。

$ sudo systemctl start hostapd
$ sudo systemctl start dnsmasq

マスクがうんぬんというエラーが出た場合は、サービスのマスクを外すコマンドを実行してから再度起動します。

$ sudo systemctl unmask hostapd
$ sudo systemctl enable hostapd
$ sudo systemctl start hostapd

完了!

手順は以上です。ラズパイを再起動して、設定したSSIDがスマートフォンなどから見えれば成功です。

↓自分のスマホで見てみると、先ほど設定した「RASPI_SSID」が表示されています。あとはファイルサーバを立てるなり、ストリーミングを行うなり、好きに使ってしまいましょう。

参考サイト