Raspberry Pi 3 Ad-Hoc Wireless network with wpa_supplicant/WPA2 configuration

1

1

I need help with securing Ad-Hoc network with wpa_supplicant.

I've been trying to setup Ad-Hoc wireless network between Raspberry PIs 3 using the onboard WiFi adapter.

pi@raspberrypi3bare:~ $ iw list
Wiphy phy0
    max # scan SSIDs: 10
    max scan IEs length: 2048 bytes
    Retry short limit: 7
    Retry long limit: 4
    Coverage class: 0 (up to 0m)
    Device supports T-DLS.
    Supported Ciphers:
        * WEP40 (00-0f-ac:1)
        * WEP104 (00-0f-ac:5)
        * TKIP (00-0f-ac:2)
        * CCMP (00-0f-ac:4)
        * CMAC (00-0f-ac:6)
    Available Antennas: TX 0 RX 0
    Supported interface modes:
         * IBSS
         * managed
         * AP
         * P2P-client
         * P2P-GO
         * P2P-device
    Band 1:
        Capabilities: 0x1020
            HT20
            Static SM Power Save
            RX HT20 SGI
            No RX STBC
            Max AMSDU length: 3839 bytes
            DSSS/CCK HT40
        Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
        Minimum RX AMPDU time spacing: 16 usec (0x07)
        HT TX/RX MCS rate indexes supported: 0-7
        Bitrates (non-HT):
            * 1.0 Mbps
            * 2.0 Mbps (short preamble supported)
            * 5.5 Mbps (short preamble supported)
            * 11.0 Mbps (short preamble supported)
...
            * 54.0 Mbps
        Frequencies:
            * 2412 MHz [1] (20.0 dBm)
...
            * 2472 MHz [13] (20.0 dBm)
            * 2484 MHz [14] (disabled)
    Supported commands:
         * new_interface
         * set_interface
         * new_key
         * start_ap
         * join_ibss
         * set_pmksa
         * del_pmksa
         * flush_pmksa
         * remain_on_channel
         * frame
         * set_channel
         * tdls_oper
         * start_sched_scan
         * start_p2p_device
         * crit_protocol_start
         * crit_protocol_stop
         * connect
         * disconnect
    Supported TX frame types:
         * managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
         * P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
         * P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
         * P2P-device: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    Supported RX frame types:
         * managed: 0x40 0xd0
         * P2P-client: 0x40 0xd0
         * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
         * P2P-device: 0x40 0xd0
    software interface modes (can always be added):
    valid interface combinations:
         * #{ managed } <= 1, #{ P2P-device } <= 1, #{ P2P-client, P2P-GO } <= 1,
           total <= 3, #channels <= 2
         * #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1,
           total <= 4, #channels <= 1

According to the above, P2P (Ad-Hoc) is supported.

My Network interface config looks like this:

auto wlan0
iface wlan0 inet static
        address 192.168.0.10
        netmask 255.255.255.0
        wireless-channel 11
        wireless-essid FooBar2
        wireless-mode ad-hoc
#       wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

With no wpa_supplicant enabled I can start wlan0 on two different Pi'es (two different IP addresses) and it works fine. I can ping one Pi from another (and the other way around).

When I try to run wpa_supplicant on top of it (on both Pi'es), I can't get them to work.

wpa_supplicant config file looks like this:

pi@raspberrypi3bare:~ $ sudo cat /etc/wpa_supplicant/wpa_supp.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=2
network={
        ssid="FooBar2"
        key_mgmt=WPA-PSK
        psk=102ea4041e1612cc5905c4b9008f5e9aaebe91d20792ca16ab7754fd137865a8
        mode=1
        proto=RSN
        group=CCMP
        pairwise=CCMP
        frequency=2462
}

The output of the startup command:

pi@raspberrypi3bare:~ $ sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supp.conf -D nl80211 -i wlan0
Successfully initialized wpa_supplicant
Note: nl80211 driver interface is not designed to be used with ap_scan=2; this can result in connection failures
wlan0: Trying to associate with SSID 'FooBar2'
wlan0: Associated with 7e:6c:29:3d:49:eb
wlan0: CTRL-EVENT-CONNECTED - Connection to 7e:6c:29:3d:49:eb completed [id=0 id_str=]
WMM AC: Missing IEs
wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0


pi@raspberrypi3bare:~ $ ping 192.168.0.30
PING 192.168.0.30 (192.168.0.30) 56(84) bytes of data.
From 192.168.0.10 icmp_seq=1 Destination Host Unreachable

Couple of other details:

pi@raspberrypi3bare:~ $ wpa_supplicant -v
wpa_supplicant v2.6
Copyright (c) 2003-2016, Jouni Malinen <j@w1.fi> and contributors
pi@raspberrypi3bare:~ $ uname -a
Linux raspberrypi3bare 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l GNU/Linux

Any idea what could I change to get wpa_supplicant to work?

greggigon

Posted 2016-10-18T22:25:23.230

Reputation: 11

Why exactly do you wish to setup an ad hoc network? You can achieve whatever you are trying to achieve with hostpad, including WP2-PSK authentication, without any problem. – MariusMatutiae – 2016-10-19T13:31:00.533

Answers

1

By the way: P2P is Wi-Fi Direct, which is a much different thing than Ad Hoc. Ad Hoc refers exclusively to IBSS. The rest of this Answer assumes you meant IBSS, not P2P.

WPA2-PSK authentication over IBSS is possible (the IEEE 802.11 standard defines how to do it), but it's a bit complicated to implement, so I'm not sure how widely supported it is. I wouldn't be surprised if wpa_supplicant doesn't support it, as it requires the supplicant to switch roles and become the authenticator in some cases and still act as the supplicant in other cases, based on which device has the higher MAC address. Usually the role of the WPA2-PSK authenticator is played by hostapd on a device in AP mode. I'm not sure if any authenticator code exists in wpa_supplicant.

Try getting Ad Hoc (IBSS) working with 40-bit WEP. Once you've got that working, research whether wpa_supplicant supports WPA2-PSK over IBSS, and how to set it up.

Spiff

Posted 2016-10-18T22:25:23.230

Reputation: 84 656

You are right in assuming IBSS. I will try to get it to work first with WEP tonight. Looking into docs in the wpa_supplication config file, I have the feeling that WPA2-PSK should be supported for IBSS https://w1.fi/cgit/hostap/plain/wpa_supplicant/wpa_supplicant.conf (bottom of the file with samples). Thanks for you reply Spiff, much appriciated!

– greggigon – 2016-10-19T11:55:51.023

@greggigon I agree it looks like wpa_supplicant supports WPA2-PSK on IBSS (I was on mobile before or I would have verified myself). So now I'd say, maybe look into the warning you're getting about how using ap_scan=2 with that driver can cause connection failures. There example .conf file you linked to has more information about it. If ap_scan=1 works for you, post that as your own Answer and accept your own Answer. – Spiff – 2016-10-19T23:47:39.767