Linux에서 WIFI를 Control 하기위해서 사용되는 Tool은 사용되는 iwconfig,iwlist, iwpriv등 존재한다.
이는 Wireless-Extension (WE or WEXT)를 위한 wpa_supplicant test tool 일 뿐아니라, WIFI Device의 관련정보들을 가지고 있다.
WE or Wext의 기본 interface는 ioctl이기에 이 test tool도 동일하게 구성이 되어있으며,
향후 cfg80211/nl80211 interface를 사용할 경우 다른 tool를 사용해야 한다고 한다.
WE/WEXT 주요기능설명
dhclient/dhcpcd : dhcp client tool
WE/WEXT 주요기능설명
- iwconfig : wlan를 설정하는 tool로 client 접속과 설정을 담당한다.
- iwlist : ap 검색 및 등
- iwpriv : Driver 환경값 설정.
dhclient/dhcpcd : dhcp client tool
Ref.
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
http://wireless.kernel.org/en/developers/Documentation/Wireless-Extensions
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Linux.Wireless.pdf
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
http://wireless.kernel.org/en/developers/Documentation/Wireless-Extensions
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Linux.Wireless.pdf
- Download Wireless-tools For wext
Download site
https://github.com/nvamelichev/wireless-tools-android
https://github.com/CyanogenMod/android_external_wireless-tools
2. WIFI Tool을 이용하여 Client에서 AP접속 방법
iwconfig, iwlist 는 wext 로 연결된 interface것 만 가능하다.
2.1 AP에 직접접속할 경우 (인증이 필요없는 경우)
1. # iwconfig //기본 무선랜 장치확인
2. # ifconfig wlan0 up // wlan0 활성화 시킨다.
3. # iwlist scanning // 각 AP를 검색을 한다.
4. # iwconfig wlan0 essid "CWPW" // * 원하는 AP로 바로 접속 및 연결설정
5. # iwconfig // 접속된 것을 확인, 아래의 ESSID 부분확인.
6. # dhclient wlan0 // dhcp client 로 IP주소를 받아온다.
or # dhcpcd wlan0 & ( dhcpd -n , 문제가 일을 경우 renew )
2. 인증을 통한 AP 접속
iwpriv를 통해서, wpa_supplicant 도움 없이도 인증을 통해 AP를 접속 가능한 Driver들이 존재
이는 각 Driver의 Manual 참조
2.2 AP에 WEP 인증하여 사용 접속할때 (WEP만 지원)
# iwconfig wlan0 key restricted XXXX-XXXX-XX
2.3 AP WPA-PSK 인증 필요 할 경우 ,
//TEST 다 진행 못함.
wpa_supplicant가 tool이 필요하며, wpa_supplicant.conf 설정을 해야한다.
#wpa_passphrase GK_1234 // 입력과 동시에 password를 입력하라고 나온다
기존의 값을 유지하고 싶으면 wpa_supplicant.conf에 추가해준다.
아니면 아래와 같이 다시한번 실행해서 wpa_supplicant.conf 초기화한다.
# wpa_passphrase ssid_name > /etc/wpa_supplicant/wpa_supplicant.conf
# cat /etc/wpa_supplicant/wpa_supplicant.conf
# iwconfig wlan0 essid "GK_1234"
# wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
위와 같은 에러 발생, rfkill 문제와 wlan 문제발생
3. Network 설정예제
//타사이트 설정 TEST못해봤음 , 자동으로 설정해주는 것 같음.
# vi /etc/network/interfaces
//안드로이드 설정
# vi /etc/wifi/wpa_supplicant.conf
4. 기타사항
Tool 사용시 숙지내용
http://lxr.free-electrons.com/source/include/uapi/linux/wireless.h#L282
5. 이외 유용한 WIFI Tool 및 관련 TEST
https://github.com/nvamelichev/wireless-tools-android
https://github.com/CyanogenMod/android_external_wireless-tools
- 설치 및 Build Wiress-Tool
위 사이트에서 Download 한 후, externel에 압축풀기 # cd android // Android Main 위치변경. WIFI TOOL 만 빌드 (부분 빌드, 위치 Android Main ) # source build/envsetup.sh # export TARGET_PRODUCT=odroidx2 # mmm /external/wireless-tools
- WINDOW or LINUX 에서 ADB로 IWMULTICALL 로 FILE만 전송 (Embeded 용 Util )
adb push iwmulticall /system/xbin
- Serial or ADB Shell 에서 Embedded 용 WIFI Tool 설정
# cd /system/xbin # chmod 755 iwmulticall # ln -s /system/xbin/iwmulticall iwconfig # ln -s /system/xbin/iwmulticall iwlist # ln -s /system/xbin/iwmulticall iwspy # ln -s /system/xbin/iwmulticall iwpriv # ln -s /system/xbin/iwmulticall iwgetid
2. WIFI Tool을 이용하여 Client에서 AP접속 방법
iwconfig, iwlist 는 wext 로 연결된 interface것 만 가능하다.
2.1 AP에 직접접속할 경우 (인증이 필요없는 경우)
1. # iwconfig //기본 무선랜 장치확인
wlan0 unassociated Nickname:"rtl_wifi" Mode:Auto Access Point: Not-Associated Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 lo no wireless extensions. eth0 no wireless extensions.
2. # ifconfig wlan0 up // wlan0 활성화 시킨다.
3. # iwlist scanning // 각 AP를 검색을 한다.
Cell 04 - Address: 00:01:3F:20:A1:DC ESSID:"CWPW" Protocol:IEEE 802.11bg Mode:Master Frequency:2.472 GHz (Channel 13) Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s 18 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 12 Mb/s 24 Mb/s; 48 Mb/s Signal level=100/100
4. # iwconfig wlan0 essid "CWPW" // * 원하는 AP로 바로 접속 및 연결설정
5. # iwconfig // 접속된 것을 확인, 아래의 ESSID 부분확인.
wlan0 IEEE 802.11bg ESSID:"CWPW" Nickname:"rtl_wifi" Mode:Managed Frequency:2.472 GHz Access Point: 00:01:3F:20:A1:DC Bit Rate:54 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=96/100 Signal level=100/100 Noise level=0/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
6. # dhclient wlan0 // dhcp client 로 IP주소를 받아온다.
or # dhcpcd wlan0 & ( dhcpd -n , 문제가 일을 경우 renew )
2. 인증을 통한 AP 접속
iwpriv를 통해서, wpa_supplicant 도움 없이도 인증을 통해 AP를 접속 가능한 Driver들이 존재
이는 각 Driver의 Manual 참조
2.2 AP에 WEP 인증하여 사용 접속할때 (WEP만 지원)
# iwconfig wlan0 key restricted XXXX-XXXX-XX
2.3 AP WPA-PSK 인증 필요 할 경우 ,
//TEST 다 진행 못함.
wpa_supplicant가 tool이 필요하며, wpa_supplicant.conf 설정을 해야한다.
#wpa_passphrase GK_1234 // 입력과 동시에 password를 입력하라고 나온다
#reading passphrase from stdin 12345678 network={ ssid="GK_1234" #psk="12345678" psk=133da4b2310ed9fe920dfb61c03c271f7f583656cc2b185b118a93bea788b703 }
기존의 값을 유지하고 싶으면 wpa_supplicant.conf에 추가해준다.
아니면 아래와 같이 다시한번 실행해서 wpa_supplicant.conf 초기화한다.
# wpa_passphrase ssid_name > /etc/wpa_supplicant/wpa_supplicant.conf
# cat /etc/wpa_supplicant/wpa_supplicant.conf
# iwconfig wlan0 essid "GK_1234"
# wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
rfkill: Cannot open RFKILL control device wlan0: Failed to initialize driver interface
# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
위와 같은 에러 발생, rfkill 문제와 wlan 문제발생
3. Network 설정예제
//타사이트 설정 TEST못해봤음 , 자동으로 설정해주는 것 같음.
# vi /etc/network/interfaces
auto wlan0 iface wlan0 inet dhcp wireless-essid 사용할ssid wpa-driver wext wpa-conf /etc/wpa_supplicant.conf1
//안드로이드 설정
# vi /etc/wifi/wpa_supplicant.conf
update_config=1 ctrl_interface=wlan0 eapol_version=1 ap_scan=1 fast_reauth=1
4. 기타사항
Tool 사용시 숙지내용
- set WPA IE for AssocReq with private ioctl
- set SSID with SIOCSIWESSID
- set channel/frequency with SIOCSIWFREQ
- set BSSID with SIOCSIWAP (this last ioctl will trigger the driver to request association)
5. 이외 유용한 WIFI Tool 및 관련 TEST
iw (cfg80211/dl80211 위한 Test tool)
Test wifi shell program by using iw
상위 iw를 이용하여 wifi test 하는 것으로 추후 테스트 시 이용
http://wireless.kernel.org/en/developers/Testing/wifi-test#Wifi_test_1.0
http://wireless.kernel.org/en/developers/Testing/wifi-test#Wifi_test_1.0
EAP peer 와 RADIUS client test
http://w1.fi/wpa_supplicant/devel/testing_tools.html
6. Wireless 관련자료
- Wireless tool 기본구성
http://en.wikipedia.org/wiki/Wireless_tools_for_Linux
- WIFI 설정 쉡 스크립트
http://rhdxmr.tistory.com/158
- 각종 파일 설정 예시 및 (wpa_supplicant.conf 설정)
http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=4&chap=4#doc_chap2
- WEP KEY 보안 접속 예제
http://mandrivausers.org/index.php?/topic/21736-iwconfig-wlan0-essid-doesnt-work-solved/
- Test ICS WIFI Configuration
https://wiki.linaro.org/Resources/HowTo/SamsungWlanInOrigenAndroid
- iwconfig 설정 설명
http://jake9999.tistory.com/47
- 기본용어설명
http://www.cwnp.com/forums/forum-posts.php?postNum=288446
- WPA-PSK 보안 접속 예제1
http://pracon.tistory.com/48
- WPA-PSK 보안 접속 예제2
http://webnautes.tistory.com/141
-iwconfig 문제이슈 해결
https://kldp.org/node/122317
- RFKILL 관한설명
https://access.redhat.com/documentation/ko-KR/Red_Hat_Enterprise_Linux/6/html/Power_Management_Guide/RFKill.html
6. Wireless 관련자료
- Wireless tool 기본구성
http://en.wikipedia.org/wiki/Wireless_tools_for_Linux
- WIFI 설정 쉡 스크립트
http://rhdxmr.tistory.com/158
- 각종 파일 설정 예시 및 (wpa_supplicant.conf 설정)
http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=4&chap=4#doc_chap2
- WEP KEY 보안 접속 예제
http://mandrivausers.org/index.php?/topic/21736-iwconfig-wlan0-essid-doesnt-work-solved/
- Test ICS WIFI Configuration
https://wiki.linaro.org/Resources/HowTo/SamsungWlanInOrigenAndroid
- iwconfig 설정 설명
http://jake9999.tistory.com/47
- 기본용어설명
http://www.cwnp.com/forums/forum-posts.php?postNum=288446
- WPA-PSK 보안 접속 예제1
http://pracon.tistory.com/48
- WPA-PSK 보안 접속 예제2
http://webnautes.tistory.com/141
-iwconfig 문제이슈 해결
https://kldp.org/node/122317
- RFKILL 관한설명
https://access.redhat.com/documentation/ko-KR/Red_Hat_Enterprise_Linux/6/html/Power_Management_Guide/RFKill.html