WPS-PIN : AP-STA between 2 RPIs

Step 1: STA : Stop ongoing wireless activities

Step 1: AP : Stop ongoing wireless activities

Warning

Internet is cut-off after this !

Warning

Internet is cut-off after this !

$ service wpad stop

$ service network stop

$ service odhcpd stop

$ killall wpa_supplicant

$ killall wpa_cli

$ killall hostapd

$ killall hostapd_cli

$ killall dhclient

$ killall udhcpc

$ ifconfig wlan0 down

$ ifconfig wlan0 up
$ service wpad stop

$ service network stop

$ service odhcpd stop

$ killall wpa_supplicant

$ killall wpa_cli

$ killall hostapd

$ killall hostapd_cli

$ killall dhclient

$ killall udhcpc

$ ifconfig wlan0 down

$ ifconfig wlan0 up

Step 2: STA : Wireless interface status before connection

Step 2: AP : Wireless interface status before connection

Note

wlan0 is the name of wireless interface on this RPI

Note

wlan0 is the name of wireless interface on this RPI

$ iwconfig wlan0
wlan0     IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
$ iwconfig wlan0
wlan0     IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

Step 3: STA : ifconfig interface status before connection

Step 3: AP : ifconfig interface status before connection

$ ifconfig wlan0
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 02:00:00:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
$ ifconfig wlan0
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 02:00:00:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Step 4: STA : Bring down and Bring up wlan0 interface

Step 4: AP : Bring down and Bring up wlan0 interface

$ ifconfig wlan0 down

$ ifconfig wlan0 up
$ ifconfig wlan0 down

$ ifconfig wlan0 up

Step 5: STA : Create run_supplicant.conf

Step 5: AP : Create run_hostapd.conf

Note

ssid need not be mentioned in /tmp/run_supplicant.conf

Note

ssid in /tmp/run_hostapd.conf should be used by clients while connecting to AP

$ vim /tmp/run_supplicant.conf

ctrl_interface=/tmp/wpa_supplicant
$ vim /tmp/run_hostapd.conf

ctrl_interface=/tmp/hostapd
interface=wlan0
driver=nl80211
ssid=test_wps_pin
hw_mode=a
channel=36
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0

wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
group_cipher=CCMP

eap_server=1
wps_state=2
ap_setup_locked=1
uuid=e22ecb71-2706-5c5b-9521-e1cd7dbf8e11

Step 6: STA : Run wpa_supplicant

Step 6: AP : Run hostapd

Note

CTRL-EVENT-CONNECTED indicates successful connection to AP

Note

AP-STA-CONNECTED indicates successful connection of STA

$ /usr/sbin/wpa_supplicant -Dnl80211 -i wlan0 -c /tmp/run_supplicant.conf &

Successfully initialized wpa_supplicant
$ /usr/sbin/hostapd /tmp/run_hostapd.conf &

Using interface wlan0 with hwaddr 02:00:00:00:00:00 and ssid "test_wps_pin"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED

Step 7: STA : Check ps status and confirm wpa_supplicant process is running

Step 7: AP : Check ps status and confirm hostapd process is running

$ ps | grep -i wpa
 3852 root      4372 S    /usr/sbin/wpa_supplicant -Dnl80211 -i wlan0 -c /tmp/run_supplicant
$ ps | grep -i hostapd
 2144 root      4380 S    /usr/sbin/hostapd /tmp/run_hostapd.conf

Step 8: STA : Run wps_pin

Step 8: AP : Run wps_pin

Attention

This starts enrollee operation on supplicant

Attention

This starts registrar operation on hostapd

Attention

/usr/sbin/wpa_cli -i wlan0 -p /tmp/wpa_supplicant wps_pin any will generate a pin !

Attention

/usr/sbin/hostapd_cli -i wlan0 -p /tmp/hostapd wps_pbc status will generate a UUID !

Note

86559560 is generated in this case. Use it in hostapd_cli

Note

86559560 is taken from output of wps_pin any on station side

$ /usr/sbin/wpa_cli -i wlan0 -p /tmp/wpa_supplicant wps_pin any

86559560
$ /usr/sbin/hostapd_cli -i wlan0 -p /tmp/hostapd wps_pbc status

uuid=572cf82f-c957-5653-9b16-b5cfb298abf1

$ /usr/sbin/hostapd_cli -i wlan0 -p /tmp/hostapd wps_pin 572cf82f-c957-5653-9b16-b5cfb298abf1 86559560

Step 9: STA : Check connection status using wpa_cli

Step 9: AP : Check connection status using hostapd_cli

Note

wpa_state=COMPLETED indicates successful connection. Check output of status

Note

aid=1 is assigned to connected station. Check output of all_sta

$ wpa_cli -i wlan0 -p /tmp/wpa_supplicant
>
> wps_pin any
86559560
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>SME: Trying to authenticate with 02:00:00:00:00:00 (SSID='test_wps_pin' freq=2437 MHz)
<3>Trying to associate with 02:00:00:00:00:00 (SSID='test_wps_pin' freq=2437 MHz)
<3>Associated with 02:00:00:00:00:00
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>CTRL-EVENT-EAP-STARTED EAP authentication started
<3>CTRL-EVENT-EAP-STATUS status='started' parameter=''
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=1
<3>CTRL-EVENT-EAP-STATUS status='accept proposed method' parameter='WSC'
<3>CTRL-EVENT-EAP-METHOD EAP vendor 14122 method 1 (WSC) selected
<3>WPS-M2D dev_password_id=0 config_error=15
<3>CTRL-EVENT-EAP-STATUS status='completion' parameter='failure'
<3>CTRL-EVENT-EAP-FAILURE EAP authentication failed
<3>CTRL-EVENT-DISCONNECTED bssid=02:00:00:00:00:00 reason=3 locally_generated=1
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>SME: Trying to authenticate with 02:00:00:00:00:00 (SSID='test_wps_pin' freq=2437 MHz)
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>Trying to associate with 02:00:00:00:00:00 (SSID='test_wps_pin' freq=2437 MHz)
<3>Associated with 02:00:00:00:00:00
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>CTRL-EVENT-EAP-STARTED EAP authentication started
<3>CTRL-EVENT-EAP-STATUS status='started' parameter=''
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=1
<3>CTRL-EVENT-EAP-STATUS status='accept proposed method' parameter='WSC'
<3>CTRL-EVENT-EAP-METHOD EAP vendor 14122 method 1 (WSC) selected
<3>WPS-M2D dev_password_id=0 config_error=15
<3>CTRL-EVENT-EAP-STATUS status='completion' parameter='failure'
<3>CTRL-EVENT-EAP-FAILURE EAP authentication failed
<3>CTRL-EVENT-DISCONNECTED bssid=02:00:00:00:00:00 reason=3 locally_generated=1
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>SME: Trying to authenticate with 02:00:00:00:00:00 (SSID='test_wps_pin' freq=2437 MHz)
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>Trying to associate with 02:00:00:00:00:00 (SSID='test_wps_pin' freq=2437 MHz)
<3>Associated with 02:00:00:00:00:00
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>CTRL-EVENT-EAP-STARTED EAP authentication started
<3>CTRL-EVENT-EAP-STATUS status='started' parameter=''
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=1
<3>CTRL-EVENT-EAP-STATUS status='accept proposed method' parameter='WSC'
<3>CTRL-EVENT-EAP-METHOD EAP vendor 14122 method 1 (WSC) selected
<3>WPS-CRED-RECEIVED 
<3>WPS-SUCCESS 
<3>CTRL-EVENT-EAP-STATUS status='completion' parameter='failure'
<3>CTRL-EVENT-EAP-FAILURE EAP authentication failed
<3>CTRL-EVENT-DISCONNECTED bssid=02:00:00:00:00:00 reason=3 locally_generated=1
<3>SME: Trying to authenticate with 02:00:00:00:00:00 (SSID='test_wps_pin' freq=2437 MHz)
<3>Trying to associate with 02:00:00:00:00:00 (SSID='test_wps_pin' freq=2437 MHz)
<3>Associated with 02:00:00:00:00:00
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>WPA: Key negotiation completed with 02:00:00:00:00:00 [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to 02:00:00:00:00:00 completed [id=0 id_str=]
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
> 
> 
> status
bssid=02:00:00:00:00:00
freq=2437
ssid=test_wps_pin
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
address=02:00:00:00:01:00
uuid=572cf82f-c957-5653-9b16-b5cfb298abf1
$ /usr/sbin/hostapd_cli -i wlan0 -p /tmp/hostapd
> 
> 
> <3>WPS-ENROLLEE-SEEN 02:00:00:00:01:00 572cf82f-c957-5653-9b16-b5cfb298abf1 0-00000000-0 0x3108 0 1 [ ]
<3>WPS-ENROLLEE-SEEN 02:00:00:00:01:00 572cf82f-c957-5653-9b16-b5cfb298abf1 0-00000000-0 0x3108 0 1 [ ]
<3>WPS-ENROLLEE-SEEN 02:00:00:00:01:00 572cf82f-c957-5653-9b16-b5cfb298abf1 0-00000000-0 0x3108 0 1 [ ]
<3>CTRL-EVENT-EAP-STARTED 02:00:00:00:01:00
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=254
<3>WPS-PIN-NEEDED 572cf82f-c957-5653-9b16-b5cfb298abf1 02:00:00:00:01:00 [ | | | | |0-00000000-0]
<3>CTRL-EVENT-EAP-FAILURE 02:00:00:00:01:00
<3>WPS-ENROLLEE-SEEN 02:00:00:00:01:00 572cf82f-c957-5653-9b16-b5cfb298abf1 0-00000000-0 0x3108 0 1 [ ]
<3>CTRL-EVENT-EAP-STARTED 02:00:00:00:01:00
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=254
<3>WPS-PIN-NEEDED 572cf82f-c957-5653-9b16-b5cfb298abf1 02:00:00:00:01:00 [ | | | | |0-00000000-0]
<3>CTRL-EVENT-EAP-FAILURE 02:00:00:00:01:00

> 
> <3>WPS-ENROLLEE-SEEN 02:00:00:00:01:00 572cf82f-c957-5653-9b16-b5cfb298abf1 0-00000000-0 0x3108 0 1 [ ]
wps_pin 572cf82f-c957-5653-9b16-b5cfb298abf1 86559560
OK
> <3>CTRL-EVENT-EAP-STARTED 02:00:00:00:01:00
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=254
<3>WPS-REG-SUCCESS 02:00:00:00:01:00 572cf82f-c957-5653-9b16-b5cfb298abf1
<3>WPS-SUCCESS 
<3>CTRL-EVENT-EAP-FAILURE 02:00:00:00:01:00
<3>AP-STA-CONNECTED 02:00:00:00:01:00

> 
> status
state=ENABLED
phy=phy1
freq=2437
num_sta_non_erp=0
num_sta_no_short_slot_time=0
num_sta_no_short_preamble=0
olbc=0
num_sta_ht_no_gf=0
num_sta_no_ht=0
num_sta_ht_20_mhz=0
num_sta_ht40_intolerant=0
olbc_ht=0
ht_op_mode=0x0
cac_time_seconds=0
cac_time_left_seconds=N/A
channel=6
secondary_channel=0
ieee80211n=0
ieee80211ac=0
ieee80211ax=0
beacon_int=100
dtim_period=2
supported_rates=02 04 0b 16 0c 12 18 24 30 48 60 6c
max_txpower=20
bss[0]=wlan0
bssid[0]=02:00:00:00:00:00
ssid[0]=test_wps_pin
num_sta[0]=1
> 

Step 10: STA : Wireless interface status after connection

Step 10: AP : Wireless interface status after connection

Note

ESSID field in iwconfig should show ssid of AccessPoint

Note

Mode field in iwconfig should show master

$ iwconfig 
wlan0     IEEE 802.11  ESSID:"test_wps_pin"  
          Mode:Managed  Frequency:2.437 GHz  Access Point: 02:00:00:00:00:00   
          Bit Rate:54 Mb/s   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=70/70  Signal level=-30 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0



$ iw dev
phy#2
	Interface wlan0
		ifindex 6
		wdev 0x200000001
		addr 02:00:00:00:01:00
		ssid test_wps_pin
		type managed
		channel 6 (2437 MHz), width: 20 MHz (no HT), center1: 2437 MHz
$ iwconfig 
wlan0     IEEE 802.11  Mode:Master  Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

$ iw dev
phy#1
	Interface wlan0
		ifindex 5
		wdev 0x100000001
		addr 02:00:00:00:00:00
		ssid test_wps_pin
		type AP
		channel 6 (2437 MHz), width: 20 MHz (no HT), center1: 2437 MHz
		txpower 20.00 dBm

Step 11: STA : Assign Static IP address

Step 11: AP : Assign Static IP address

Note

Station and AP should be in same IP subnet. Assign 192.168.3.10 to Station

Note

Station and AP should be in same IP subnet. Assign 192.168.3.1 to AP

Attention

Use static IP assignment if DHCP server is not supported by AP

Attention

Use static IP assignment if DHCP server is not supported by AP

$ ifconfig wlan0 192.168.3.10 up

$ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.10  netmask 255.255.255.0  broadcast 192.168.3.255
        ether 02:00:00:00:01:00  txqueuelen 1000  (Ethernet)
        RX packets 73  bytes 13119 (13.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 65  bytes 13111 (13.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
$ ifconfig wlan0 192.168.3.1 up

$ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.1  netmask 255.255.255.0  broadcast 192.168.3.255
        ether 02:00:00:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 61  bytes 11085 (11.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 130  bytes 25688 (25.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Step 12: STA : Assign DHCP IP address

Step 12: AP : Assign DHCP IP address

Attention

This initiates DORA. Make sure DHCP server is running in AP !

Attention

odhcpd and dnsmasq needs to be installed to setup DHCP server

Note

udhcpc is DHCP client

Note

See below ! Add configuration in /etc/dhcp/dhcpd.conf

Note

udhcpc -i wlan0 -p /tmp/wpa_supplicant gets IP address from DHCP server

Note

See below ! Add configuration in /etc/default/odhcpd and dnsmasq

# Release any existing IP address

$ ifconfig wlan0 0.0.0.0 up

# Run DHCP client on wlan0. This initiates DORA

$ udhcpc -i wlan0

# Check if wlan0 got IP address

$ ifconfig wlan0


Step 13: STA : Ping AP

Step 13: AP : Ping STA

Note

192.168.3.1 is IP address of Access Point

Note

192.168.3.10 is IP address of Station

$ ping 192.168.3.1
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: icmp_seq=2 ttl=64 time=0.091 ms
64 bytes from 192.168.3.1: icmp_seq=3 ttl=64 time=0.090 ms
64 bytes from 192.168.3.1: icmp_seq=4 ttl=64 time=0.097 ms
64 bytes from 192.168.3.1: icmp_seq=5 ttl=64 time=0.243 ms
$ ping 192.168.3.10
PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.
64 bytes from 192.168.3.10: icmp_seq=1 ttl=64 time=0.092 ms
64 bytes from 192.168.3.10: icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from 192.168.3.10: icmp_seq=3 ttl=64 time=0.094 ms
64 bytes from 192.168.3.10: icmp_seq=4 ttl=64 time=0.105 ms
64 bytes from 192.168.3.10: icmp_seq=5 ttl=64 time=0.094 ms

Step 14: STA : Run TCP server for TCP DL test

Step 14: AP : Run TCP Client for TCP DL test

$ iperf -s -i 1
$ iperf -c 192.168.3.10 -i 1 -t 30

Step 15: STA : Run TCP client for TCP UL test

Step 15: AP : Run TCP Server for TCP UL test

$ iperf -c 192.168.3.1 -i 1 -t 30
$ iperf -s -i 1

Step 16: STA : Run UDP server for UDP DL test

Step 16: AP : Run UDP Client for UDP DL test

$ iperf -s -u -i 1 
$ iperf -c 192.168.3.10 -u -b 1000M -i 1 -t 30

Step 17: STA : Run UDP client for UDP UL test

Step 17: AP : Run UDP Server for UDP UL test

$ iperf -c 192.168.3.1 -u -b 1000M -i 1 -t 30
$ iperf -s -u -i 1