7/23/2014

WIFI Tool(WE/WEXT)을 이용한 환경설정

1. WIFI TEST(WE/WEXT) Tool 설명  

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 주요기능설명
  1. iwconfig  : wlan를 설정하는 tool로 client 접속과 설정을 담당한다.
  2. iwlist       : ap 검색 및 등
  3. iwpriv      : Driver 환경값 설정.
dhcp 관련 Tool
    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
         
  • Download Wireless-tools For wext
Android에서 사용할수 있는 Wireless tool source, 이며, 사용법은, externel 안에 넣고 compile하면된다.

Download site
  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)

  http://lxr.free-electrons.com/source/include/uapi/linux/wireless.h#L282

5. 이외 유용한 WIFI Tool 및 관련 TEST  


iw (cfg80211/dl80211 위한 Test tool)
iw list /event 등 다양한 정보및 쉽게 테스트 가능 
  http://wireless.kernel.org/en/users/Documentation/iw

Test wifi shell program by using iw
상위 iw를 이용하여 wifi test 하는 것으로 추후 테스트 시 이용 
  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