====== WPA Supplicant 핵심가이드 - 개정판 ======
기존의 [[wpa_supplicant|WPASupplicant 핵심가이드]] 의 개정 문서로서 작성 당시의 최신버전(2.3)을 기준으로 설명한다. 여기서 설명하는 모든 기준은 NX1(SD8887) 이다.
====== 준비 운동하기 ======
| Host OS | Ubuntu 14.04.1 LTS(64bit) |
| Kernel | Linux ubuntu 3.13.0-37-generic |
| Toolchain | ARM(arm-2011.09)/arm-none-linux-gnueabi-gcc(NX1 용) - 설치 경로(/usr/local/arm-2011.09/bin) |
| Etc | wpa_supplicant-2.3.tar.gz(2014.10 최신), libnl-3.2.25.tar.gz(2014.10 최신), openssl-1.0.1i.tar.gz(2014.10 최신), ncurses-5.9.tar.gz(2014.10 최신), readline-6.3.tar.gz(2014.10 최신) |
| Driver | SD8887-15.68.4.p211-C3X15C059-GPL-(FP68) |
필요한 프로그램 소스코드들은 아래의 주소에서 다운 받을 수 있다.
| 이름 | 주소 | 설치 경로 |
| openssl | https://www.openssl.org/source/ | /usr/local/lib/openssl-arm |
| libnl | http://www.infradead.org/~tgr/libnl/ | /usr/local/lib/libnl-arm |
| readline | http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html | /usr/local/lib/readline |
| ncurses | http://ftp.gnu.org/pub/gnu/ncurses/ | /usr/local/lib/ncurses |
| wpa_supplicant | http://w1.fi/wpa_supplicant/ | /usr/local/wpa_supplicant-arm |
====== 빌드하기(openssl) ======
먼저 압축을 풀고, Configure 파일을 수정한다.
#tar xzf openssl-1.0.1i.tar.gz
#cd openssl-1.0.1i/
#vi Configure
'linux-elf-arm' 이라는 빌드 타겟을 추가로 선언한다. 기존의 'linux-elf' 타겟을 복사하여 컴파일러 이름과 경로만 수정한다.
"linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"linux-elf-arm", "/usr/local/arm-2011.09/bin/arm-none-linux-gnueabi-gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
이제 Makefile 파일을 만들 차례다.
#./Configure linux-elf-arm --prefix=/usr/local/lib/openssl-arm --openssldir=/usr/local/lib/openssl-arm no-threads no-asm
prefix 와 openssldir 은 빌드 후 설치할 경로를 적으면 된다. 이제 빌드 후, 설치하면 된다.
#make
#make install
에러없이 종료되었다면, 설치된 경로에 가보자.
#cd /usr/local/lib/openssl-arm
#ls include/openssl/
aes.h asn1t.h bn.h cast.h comp.h crypto.h dh.h dtls1.h ec.h engine.h hmac.h kssl.h md5.h obj_mac.h opensslconf.h pem.h pkcs7.h rc2.h rsa.h sha.h ssl.h ssl3.h tls1.h ui.h x509.h
asn1.h bio.h buffer.h cmac.h conf.h des.h dsa.h e_os2.h ecdh.h err.h idea.h lhash.h mdc2.h objects.h opensslv.h pem2.h pqueue.h rc4.h safestack.h srp.h ssl2.h stack.h ts.h ui_compat.h x509_vfy.h
asn1_mac.h blowfish.h camellia.h cms.h conf_api.h des_old.h dso.h ebcdic.h ecdsa.h evp.h krb5_asn.h md4.h modes.h ocsp.h ossl_typ.h pkcs12.h rand.h ripemd.h seed.h srtp.h ssl23.h symhacks.h txt_db.h whrlpool.h x509v3.h
#ls lib/
engines libcrypto.a libssl.a pkgconfig
wpa_supplicant 가 참조하는 파일인 헤더파일(include)과 라이브러리(lib) 파일들을 확인한다.
====== 빌드하기(libnl) ======
압축을 풀고, Makefile 을 생성하기 위해 아래와 같이 실행한다.
#tar xzf libnl-3.2.25.tar.gz
#cd libnl-3.2.25
#./configure --host=/usr/local/arm-2011.09/bin/arm-none-linux-gnueabi CC=/usr/local/arm-2011.09/bin/arm-none-linux-gnueabi-gcc LD=/usr/local/arm-2011.09/bin/arm-none-linux-gnueabi-ld AR=/usr/local/arm-2011.09/bin/arm-none-linux-gnueabi-ar --prefix=/usr/local/lib/libnl-arm
#make
#make install
에러없이 빌드되었다면, 설치된 경로(/usr/local/lib/libnl-arm)에 가서 헤더 파일과 라이브러리가 생성되었을 것이다. 이후 wpa_supplicant 빌드 시, 이 경로를 참조할 것이다.
====== 빌드하기(readline) ======
readline 라이브러리는 wpa_supplicant 를 빌드하는데 반드시 필요한 것은 아니다. 이것은 wpa_cli 를 사용할 때, TAB 키를 이용한 명령어 자동 완성 기능이나, 방향키를 이용하여 명령어 히스토리를 보는데에 사용된다.
다시 말해 크게 필요하지는 않지만 있으면 무척 편리하다.
압축을 풀고, Makefile 을 생성하기 위해 아래와 같이 실행한다.
#tar xzf readline-6.3.tar.gz
#cd readline-6.3
#./configure --host=arm-none-linux-gnueabi --prefix=/usr/local/lib/readline bash_cv_wcwidth_broken=yes
#make
#make install
에러없이 빌드되었다면, 지정한 위치(/usr/local/lib/readline)에 헤더파일과 라이브러리가 생성되었을 것이다.
====== 빌드하기(ncurses) ======
ncurses 역시, wpa_cli 의 편의를 위해 필요한 라이브러리다. 압축을 풀고, Makefile 을 생성하기 위해 아래와 같이 실행한다.
#tar xzf ncurses-5.9.tar.gz
#cd ncurses-5.9
#./configure --host=arm-none-linux-gnueabi --prefix=/usr/local/lib/ncurses CXX="arm-none-linux-gnueabi-g++" --with-shared
#make
#make install
에러없이 빌드되었다면, 지정한 위치(/usr/local/lib/ncurses)에 헤더파일과 라이브러리가 생성되었을 것이다.
====== 빌드하기(wpa_supplicantl) ======
#tar xzf wpa_supplicant-2.3.tar.gz
#cd wpa_supplicant-2.3/wpa_supplicant
#cp defconfig .config
===== .config 파일 수정하기 =====
앞서 복사한 .config 파일을 수정한다. 여기서 수정한 최종 파일은 {{ :computer:technology:config-wpa_supplicant |}} 에서 받을 수 있다.
...
# Driver interface for generic Linux wireless extensions
# Note: WEXT is deprecated in the current Linux kernel version and no new
# functionality is added to it. nl80211-based interface is the new
# replacement for WEXT and its use allows wpa_supplicant to properly control
# the driver to improve existing functionality like roaming and to support new
# functionality.
CONFIG_DRIVER_WEXT=y
# Driver interface for Linux drivers using the nl80211 kernel interface
CONFIG_DRIVER_NL80211=y
# driver_nl80211.c requires libnl. If you are compiling it yourself
# you may need to point hostapd to your version of libnl.
#
#CFLAGS += -I$
#LIBS += -L$
# Use libnl v2.0 (or 3.0) libraries.
#CONFIG_LIBNL20=y
# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
CONFIG_LIBNL32=y // 수정
CFLAGS += -I/usr/local/lib/libnl-arm/include/libnl3 // 추가
LIBS += -L/usr/local/lib/libnl-arm/lib // 추가
# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
#CONFIG_DRIVER_BSD=y
#CFLAGS += -I/usr/local/include
#LIBS += -L/usr/local/lib
#LIBS_p += -L/usr/local/lib
#LIBS_c += -L/usr/local/lib
...
# Wi-Fi Protected Setup (WPS)
CONFIG_WPS=y
# Enable WPS external registrar functionality
CONFIG_WPS_ER=y
# Disable credentials for an open network by default when acting as a WPS
# registrar.
#CONFIG_WPS_REG_DISABLE_OPEN=y
# Enable WPS support with NFC config method
CONFIG_WPS_NFC=y
...
# Include support for GNU Readline and History Libraries in wpa_cli.
# When building a wpa_cli binary for distribution, please note that these
# libraries are licensed under GPL and as such, BSD license may not apply for
# the resulting binary.
CONFIG_READLINE=y
# Include internal line edit mode in wpa_cli. This can be used as a replacement
# for GNU Readline to provide limited command line editing and history support.
CONFIG_WPA_CLI_EDIT=y
...
# IEEE 802.11n (High Throughput) support (mainly for AP mode)
CONFIG_IEEE80211N=y
# IEEE 802.11ac (Very High Throughput) support (mainly for AP mode)
# (depends on CONFIG_IEEE80211N)
CONFIG_IEEE80211AC=y
...
# AP mode operations with wpa_supplicant
# This can be used for controlling AP mode operations with wpa_supplicant. It
# should be noted that this is mainly aimed at simple cases like
# WPA2-Personal while more complex configurations like WPA2-Enterprise with an
# external RADIUS server can be supported with hostapd.
CONFIG_AP=y
# P2P (Wi-Fi Direct)
# This can be used to enable P2P support in wpa_supplicant. See README-P2P for
# more information on P2P operations.
CONFIG_P2P=y
# Enable TDLS support
CONFIG_TDLS=y
# Wi-Fi Direct
# This can be used to enable Wi-Fi Direct extensions for P2P using an external
# program to control the additional information exchanges in the messages.
CONFIG_WIFI_DISPLAY=y
...
===== Makefile 수정하기 =====
크로스 컴파일을 위해 Makefile 을 아래와 같이 수정한다. 최종 수정된 파일은 {{ :computer:technology:makefile-wpa_supplicant |}} 에서 받을 수 있다.
CC=/usr/local/arm-2011.09/bin/arm-none-linux-gnueabi-gcc // 추가
ifndef CC
CC=gcc
endif
ifndef CFLAGS
CFLAGS = -MMD -O2 -Wall -g
endif
export LIBDIR ?= /usr/local/lib/
export BINDIR ?= /usr/local/sbin/
PKG_CONFIG ?= pkg-config
CFLAGS += -I$(abspath ../src)
CFLAGS += -I$(abspath ../src/utils)
-include .config
ifdef CONFIG_TESTING_OPTIONS
CFLAGS += -DCONFIG_TESTING_OPTIONS
CONFIG_WPS_TESTING=y
CONFIG_TDLS_TESTING=y
endif
CFLAGS += -I/usr/local/lib/openssl-arm/include // 추가
CFLAGS += -I/usr/local/lib/readline/include // 추가
BINALL=wpa_supplicant wpa_cli
ifndef CONFIG_NO_WPA_PASSPHRASE
BINALL += wpa_passphrase
endif
...
...
ifeq ($(CONFIG_TLS), openssl)
ifdef TLS_FUNCS
CFLAGS += -DEAP_TLS_OPENSSL
OBJS += ../src/crypto/tls_openssl.o
LIBS += -L/usr/local/lib/openssl-arm/lib -lssl // 수정
endif
OBJS += ../src/crypto/crypto_openssl.o
OBJS_p += ../src/crypto/crypto_openssl.o
ifdef NEED_FIPS186_2_PRF
OBJS += ../src/crypto/fips_prf_openssl.o
endif
LIBS += -L/usr/local/lib/openssl-arm/lib -lcrypto // 수정
LIBS_p += -L/usr/local/lib/openssl-arm/lib -lcrypto // 수정
ifdef CONFIG_TLS_ADD_DL
LIBS += -ldl
LIBS_p += -ldl
endif
endif
...
...
ifdef CONFIG_PCSC
# PC/SC interface for smartcards (USIM, GSM SIM)
CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
OBJS += ../src/utils/pcsc_funcs.o
# -lpthread may not be needed depending on how pcsc-lite was configured
ifdef CONFIG_NATIVE_WINDOWS
#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
#dynamic symbol loading that is now used in pcsc_funcs.c
#LIBS += -lwinscard
else
LIBS += -lpcsclite -lpthread
endif
endif
LIBS += -lpthread -lm // 추가
ifdef CONFIG_SIM_SIMULATOR가
CFLAGS += -DCONFIG_SIM_SIMULATOR
NEED_MILENAGE=y
endif
...
ifdef CONFIG_READLINE
OBJS_c += ../src/utils/edit_readline.o
LIBS_c += -L/usr/local/lib/readline/lib -lreadline // 추가
LIBS_c += -L/usr/local/lib/ncurses/lib -lncurses // 추가
else
ifdef CONFIG_WPA_CLI_EDIT
OBJS_c += ../src/utils/edit.o
else
OBJS_c += ../src/utils/edit_simple.o
endif
endif
...
...
wpa_passphrase: $(OBJS_p)
$(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) -ldl // 추가
@$(E) " LD " $@
...
위의 수정사항을 반영했다면, 빌드하자.
#make
에러없이 빌드되었다면, 3개의 바이너리 파일(wpa_supplicant, wpa_cli, wpa_passphrase)이 보일 것이다. 이를 타겟으로 복사한다.
참고로 wpa_cli 의 경우, 실행시 libreadline.so.6 라이브러리 파일을 참조하기 때문에 이것 역시 타겟으로 복사해야 한다.
복사 시에는 아래와 같이 실행한다.
#cp libreadline.so.6.3 /usr/lib
#ln -s libreadline.so.6.3 libreadline.so.6
====== 동작 확인하기 ======
앞서 빌드한 바이너리 파일을 사용하여 기본 WiFi 기능을 확인해본다.
===== Station mode =====
먼저 Driver 와 F/W 를 로딩해야 하는데, 여기서는 각 모드마다 스크립트를 작성하여 차후 실행시 용이하게 한다.
sta()
{
echo "This is STA start()"
insmod /lib/modules/cfg80211.ko
insmod /lib/modules/mlan.ko
insmod /lib/modules/sd8xxx.ko cfg80211_wext=15 txpwrlimit_cfg=mrvl/txpwrlimit_cfg_w8887_nx1.bin cal_data_cfg=mrvl/WlanCalData_ext.conf drv_mode=7 mac_addr=a0:21:95:12:06:08 fw_name=mrvl/sd8887_uapsta.bin reg_alpha2=00
sleep 1
echo Starting wpa_supplicant...
/sdcard/tools/wpa_supplicant -Dnl80211 -imlan0 -c /sdcard/tools/config/wpa.conf -B
}
wpa_supplicant 실행을 위해 wpa.conf 파일을 생성하고, 아래를 입력한다.
ap_scan=1
ctrl_interface=/var/run/wpa_supplicant
device_name=RTL8192CU
manufacturer=Realtek
model_name=RTW_STA
model_number=WLAN_CU
serial_number=12345
device_type=1-0050F204-1
os_version=01020300
config_methods=virtual_display virtual_push_button keypad
그리고, 아래와 같이 실행한다.
#wpa_supplicant -Dnl80211 -i mlan0 -c /etc/wpa_supplicant/wpa.conf
접속 스크립트는 다른 문서를 참고한다.
===== WPS mode =====
접속 스크립트는 다른 문서를 참고한다.
===== P2P mode =====
P2P 의 경우 앞선 경우와 다르게 추가해야 하는 옵션이 몇가지 있다.
p2p()
{
echo "This is P2P start()"
insmod /lib/modules/cfg80211.ko
insmod /lib/modules/mlan.ko
insmod /lib/modules/sd8xxx.ko cfg80211_wext=15 txpwrlimit_cfg=mrvl/txpwrlimit_cfg_w8887_nx1.bin cal_data_cfg=mrvl/WlanCalData_ext.conf drv_mode=7 wfd_name=p2p max_vir_bss=1 p2p_enh=1 mac_addr=a0:21:95:12:06:08 fw_name=mrvl/sd8887_uapsta.bin reg_alpha2=00
sleep 1
echo Starting wpa_supplicant...
/sdcard/tools/wpa_supplicant -Dnl80211 -ip2p0 -c /sdcard/tools/config/p2p.conf -puse_p2p_group_interface=1 -puse_multi_chan_concurrent=1 -B
}
==== PBC from peer device ====
# ./wpa_cli
wpa_cli v2.3
Copyright (c) 2004-2014, Jouni Malinen and contributors
This software may be distributed under the terms of the BSD license.
See README for more details.
Selected interface 'p2p0'
Interactive mode
>
> p2p_find 5 // 5 초간 P2P Device 검색
[ 0: 45.662861] I/KERNEL (K 385): wlan: p2p0 START SCAN
OK
<3>CTRL-EVENT-SCAN-STARTED
<3>P2P-DEVICE-FOUND 02:12:36:e5:09:43 p2p_dev_addr=02:12:36:e5:09:43 pri_dev_type=10-0050F204-5 name='MYPHONE (SM-G900K)' config_methods=0x188 dev_capab=0x25 group_capab=0x0 vendor_elems=1
> [ 0: 47.128345] I/KERNEL (K 385): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 47.603683] I/KERNEL (K 385): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 48.066493] I/KERNEL (K 385): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 48.528506] I/KERNEL (K 385): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 48.888495] I/KERNEL (K 385): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 49.350913] I/KERNEL (K 385): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 49.711271] I/KERNEL (K 385): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 50.174084] I/KERNEL (K 385): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 50.636483] I/KERNEL (K 385): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
<3>P2P-FIND-STOPPED
> p2p_prov_disc 02:12:36:e5:09:43 pbc // 해당 MAC 디바이스에 pbc 지정
[ 0: 57.942527] I/KERNEL (K 385): wlan: TX P2P Provision Discovery Request, channel=1
OK
> [ 0: 57.969725] I/KERNEL (K 372): wlan: RX P2P Provision Discovery Response, channnel=1
<3>P2P-PROV-DISC-PBC-RESP 02:12:36:e5:09:43
>
>
> p2p_connect 02:12:36:e5:09:43 pbc // 해당 MAC 디바이스로 접속 시도함. 이때 Peer Device(휴대폰) 화면에 접속 여부를 묻는 창이 뜸
// 접속 버튼을 누르면 접속됨
[ 0: 63.182474] I/KERNEL (K 385): Add virtual interface p2p-p2p0-0
OK
[ 0: 63.200897] I/KERNEL (K 385): wlan: TX P2P Group Owner Negotiation Req Frame, channel=1
> [ 0: 63.549635] I/KERNEL (K 385): wlan: TX P2P Group Owner Negotiation Req Frame, channel=1
[ 0: 63.590644] I/KERNEL (K 385): wlan: TX P2P Group Owner Negotiation Req Frame, channel=1
[ 0: 63.729147] I/KERNEL (K 372): wlan: RX P2P Group Owner Negotiation Rsp Frame, channel=1
[ 0: 65.713115] I/KERNEL (K 372): wlan: RX P2P Group Owner Negotiation Req Frame, channel=6
[ 0: 65.722982] I/KERNEL (K 385): wlan: TX P2P Group Owner Negotiation Rsp Frame, channel=6
[ 0: 65.746164] I/KERNEL (K 372): wlan: RX P2P Group Owner Negotiation Confirm Frame, channel=6
<3>P2P-GO-NEG-SUCCESS role=client freq=5745 ht40=0 peer_dev=02:12:36:e5:09:43 peer_iface=02:12:36:e5:89[ 0: 65.785696] I/KERNEL (K 385): wlan: p2p-p2p0-0 START SCAN
:43 wps_method=PBC
<3>CTRL-EVENT-SCAN-RESULTS
<3>WPS-AP-AVAILABLE
> [ 0: 66.088498] I/KERNEL (K 385): wlan: p2p-p2p0-0 START SCAN
[ 0: 66.376118] I/KERNEL (K 385): wlan: Connected to bssid 02:XX:XX:XX:89:43 successfully
<3>P2P-GROUP-FORMATION-SUCCESS
>
> [ 0: 69.580625] I/KERNEL (K 385): wlan: Successfully disconnected from 02:XX:XX:XX:89:43: Reason code 3
st[ 0: 69.818808] I/KERNEL (K 385): wlan: Connected to bssid 02:XX:XX:XX:89:43 successfully
<3>P2P-GROUP-STARTED p2p-p2p0-0 client ssid="DIRECT-1q-MYPHONE (SM-G900K)" freq=5745 psk=a5504da71abc7d7403ffbbc3fbf854d44e627d83060feba9734abed8d2310c49 go_dev_addr=02:12:36:e5:09:43
>
>
>
> status
wpa_state=DISCONNECTED
p2p_device_address=a2:21:95:12:06:08
address=a2:21:95:12:06:08
uuid=e3cee235-259f-5f40-8b08-4a0e760c530c
> quit
# ./wpa_cli
wpa_cli v2.3
Copyright (c) 2004-2014, Jouni Malinen a뜸nd contributors
This software may be distributed under the terms of the BSD license.
See README for more details.
Selected interface 'p2p-p2p0-0'
Interactive mode
> status // 접속 확인
bssid=02:12:36:e5:89:43
freq=5745
ssid=DIRECT-1q-MYPHONE (SM-G900K)
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
p2p_device_address=a2:21:95:12:06:08
address=a2:21:95:12:86:08
uuid=e3cee235-259f-5f40-8b08-4a0e760c530c
>
==== PIN from peer device ====
# ./wpa_cli
wpa_cli v2.3
Copyright (c) 2004-2014, Jouni Malinen and contributors
This software may be distributed under the terms of the BSD license.
See README for more details.
Selected interface 'p2p0'
Interactive mode
>
> p2p_find 5 // 5초간 P2P 디바이스 검색
OK
[ 0: 37.379670] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
<3>P2P-DEVICE-FOUND 02:12:36:e5:09:43 p2p_dev_addr=02:12:36:e5:09:43 pri_dev_type=10-0050F204-5 name='MYPHONE (SM-G900K)' config_methods=0x188 dev_capab=0x25 group_capab=0x0 vendor_elems=1
> [ 0: 38.840687] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 39.315639] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 39.676092] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 40.037391] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 40.404623] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 40.867308] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> [ 0: 41.329363] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> p2p[ 0: 41.586898] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
> p2p_[ 0: 41.946461] I/KERNEL (K 378): wlan: p2p0 START SCAN
<3>CTRL-EVENT-SCAN-STARTED
<3>P2P-FIND-STOPPED
> p2p_prov_disc 02:12:36:e5:09:43 display // 해당 MAC 디바이스를 display 로 설정
[ 0: 48.715208] I/KERNEL (K 378): wlan: TX P2P Provision Discovery Request, channel=1
OK
> [ 0: 48.751697] I/KERNEL (K 368): wlan: RX P2P Provision Discovery Response, channnel=1
<3>P2P-PROV-DISC-ENTER-PIN 02:12:36:e5:09:43
>
>
> p2p_connect 02:12:36:e5:09:43 12345670 display // 해당 MAC 디바이스에서 접속 시, 사용할 PIN 번호(12345670)를 입력하고 접속 시도함
// Peer 디바이스에 PIN 번호를 입력하라는 창이 뜸. 여기서 PIN 번호(12345670)를 입력하면 접속됨
[ 0: 63.634823] I/KERNEL (K 378): Add virtual interface p2p-p2p0-0
OK
[ 0: 63.653118] I/KERNEL (K 378): wlan: TX P2P Group Owner Negotiation Req Frame, channel=1
> [ 0: 63.684933] I/KERNEL (K 368): wlan: RX P2P Group Owner Negotiation Rsp Frame, channel=1
[ 0: 69.909104] I/KERNEL (K 368): wlan: RX P2P Group Owner Negotiation Req Frame, channel=6
[ 0: 69.919005] I/KERNEL (K 378): wlan: TX P2P Group Owner Negotiation Rsp Frame, channel=6
[ 0: 69.952997] I/KERNEL (K 368): wlan: RX P2P Group Owner Negotiation Confirm Frame, channel=6
<3>P2P-GO-NEG-SUCCESS role=client freq=5745 ht40=0 peer_dev=02:12:36:e5:09:43 peer_ifac[ 0: 69.992073] I/KERNEL (K 378): wlan: p2p-p2p0-0 START SCAN
e=02:12:36:e5:89:43 wps_method=Display
<3>CTRL-EVENT-SCAN-RESULTS
> [ 0: 70.295015] I/KERNEL (K 378): wlan: p2p-p2p0-0 START SCAN
<3>CTRL-EVENT-SCAN-RESULTS
<3>WPS-AP-AVAILABLE
> [ 0: 70.598838] I/KERNEL (K 378): wlan: p2p-p2p0-0 START SCAN
[ 0: 70.888308] I/KERNEL (K 378): wlan: Connected to bssid 02:XX:XX:XX:89:43 successfully
<3>P2P-GROUP-FORMATION-SUCCESS
> [ 0: 74.092961] I/KERNEL (K 378): wlan: Successfully disconnected from 02:XX:XX:XX:89:43: Reason code 3
[ 0: 74.330504] I/KERNEL (K 378): wlan: Connected to bssid 02:XX:XX:XX:89:43 successfully
<3>P2P-GROUP-STARTED p2p-p2p0-0 client ssid="DIRECT-ZF-MYPHONE (SM-G900K)" freq=5745 psk=60b325e21d8f12690998cff2510b032e6496927d19ca6564f7346a5a6c11649c go_dev_addr=02:12:36:e5:09:43
>
>
> status
wpa_state=DISCONNECTED
p2p_device_address=a2:21:95:12:06:08
address=a2:21:95:12:06:08
uuid=e3cee235-259f-5f40-8b08-4a0e760c530c
> quit
[root@drime5 tools]# ./wpa_cli
wpa_cli v2.3
Copyright (c) 2004-2014, Jouni Malinen and contributors
This software may be distributed under the terms of the BSD license.
See README for more details.
Selected interface 'p2p-p2p0-0'
Interactive mode
> status // 접속 확인
bssid=02:12:36:e5:89:43
freq=5745
ssid=DIRECT-ZF-MYPHONE (SM-G900K)
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
p2p_device_address=a2:21:95:12:06:08
address=a2:21:95:12:86:08
uuid=e3cee235-259f-5f40-8b08-4a0e760c530c
>
----
{{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}}
----