WPS-PBC : 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_pbc
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
ctrl_interface=/var/tmp/hostapd
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_pbc"
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_pbc |
Step 8: AP : Run wps_pbc |
Attention This starts enrollee operation on supplicant |
Attention This starts registrar operation on hostapd |
$ /usr/sbin/wpa_cli -i wlan0 -p /tmp/wpa_supplicant wps_pbc
|
$ /usr/sbin/hostapd_cli -i wlan0 -p /tmp/hostapd wps_pbc
|
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_pbc
OK
<3>WPS-PBC-ACTIVE
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-SCAN-RESULTS
<3>WPS-AP-AVAILABLE-PBC
<3>SME: Trying to authenticate with 02:00:00:00:00:00 (SSID='test_wps_pbc' freq=2437 MHz)
<3>Trying to associate with 02:00:00:00:00:00 (SSID='test_wps_pbc' freq=2437 MHz)
<3>Associated with 02:00:00:00:00:00
<3>CTRL-EVENT-EAP-STARTED EAP authentication started
<3>CTRL-EVENT-EAP-STATUS status='started' parameter=''
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<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_pbc' freq=2437 MHz)
<3>Trying to associate with 02:00:00:00:00:00 (SSID='test_wps_pbc' 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
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-SCAN-RESULTS
status
> bssid=02:00:00:00:00:00
freq=2437
ssid=test_wps_pbc
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
p2p_device_address=42:00:00:00:01:00
address=02:00:00:00:01:00
uuid=572cf82f-c957-5653-9b16-b5cfb298abf1
|
$ /usr/sbin/hostapd_cli -i wlan0 -p /tmp/hostapd
>
> wps_pbc
<3>WPS-PBC-ACTIVE
OK
> <3>WPS-ENROLLEE-SEEN 02:00:00:00:01:00 572cf82f-c957-5653-9b16-b5cfb298abf1 0-00000000-0 0x3108 4 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-REG-SUCCESS 02:00:00:00:01:00 572cf82f-c957-5653-9b16-b5cfb298abf1
<3>WPS-PBC-DISABLE
<3>WPS-SUCCESS
<3>CTRL-EVENT-EAP-FAILURE 02:00:00:00:01:00
<3>AP-STA-CONNECTED 02:00:00:00:01:00
<3>WPS-ENROLLEE-SEEN 02:00:00:00:01:00 84c04152-bdbe-5c82-a2b8-80059731a06d 0-00000000-0 0x3148 0 0 [ ]
>
> 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_pbc
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_pbc"
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_pbc
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_pbc
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 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
|