1.1 개요
ODROID X2 보드 위에 다른 USB LAN을 사용하기 위해서 남은 USB LAN을 집에서 찾기 시작했지만,
내집에서는 찾지를 못하고 때마침 대전 집에서 우연히 발견된 IPTIME n150ua을 가지고 이를 시작하게됨.
- 모델명: IPTIME n150ua
- USB device로 동작이되는 WLAN Card
우선 IPTIME n150ua 사의 이 칩명이 알아야 할 것 같아 아래와 같이 IPTIME 사이트에서 질문을 했더니 정확한 칩명과 관련 Driver를 제공을 해주셨다.
집에서 심심해서 우연히 시작한일인데, 정보를 제공해주신 IPTIME에 감사할 뿐이다,
1.2 IPTIME n150ua 정보 및 관련 사이트
- 모델명: RT3070
- Device Driver : 2011_0107_RT3070.tar
- IPTIME 사용되는 CHIP이름알기
감사할 뿐이다. 그래서 위와 같이 Linux Driver를 구하고 이 일을 시작하게됨
오랜만에 다시 링크하니, 내가 질문한 것이 없어져서, 다른 것으로 대체,
http://www.iptime.co.kr/~iptime/bbs/view.php?id=qna&no=292133
2. WLAN Linux Driver 구성
2.1 기본숙지문서
Driver Build 방법 및 Test 하는 방법은 인터넷 및 책에 설명이 너무 잘 나와있다
Linux Driver의 상위 두 문서를 제대로 읽는다면, 기본 Build 및 Test 진행에 어려움이 없다.
1. Build 사항 및 How to install
2. RT2870STA.dat 설정 파일 설명
2.2 Makefile 기본구성
3. WLAN Linux Driver 환경설정 및 빌드
수정은 아래와 같이 순서대로 하고 빌드는 make를 하면 원하는 모듈을 얻을 수 있을 것이다.
3.1 Makefile 수정
아래의 변수 PLATFORM과 TARGET PLATFORM은 기존의 것을 가지고 수정하여 만들면된다.
어차피 Linux Kernel source path 문제로 인하여 아래와 같이 수정해야한다.
PLATFORM을 새로 만들어서 하면, 이상하게도 내 환경변수들이 제대로 설정이 안되어서,
기존 에 존재하던 것을 수정하여 Build를 시도.
- 기능설명, WPS란?
- Download Linux Driver
2. WLAN Linux Driver 구성
2.1 기본숙지문서
- README_STA_usb
- iwpriv_usage.txt
Driver Build 방법 및 Test 하는 방법은 인터넷 및 책에 설명이 너무 잘 나와있다
Linux Driver의 상위 두 문서를 제대로 읽는다면, 기본 Build 및 Test 진행에 어려움이 없다.
1. Build 사항 및 How to install
2. RT2870STA.dat 설정 파일 설명
2.2 Makefile 기본구성
Makefile // Main 구성 (PLATFORM 설정 및 기본 TEST) ./os/linux/config.mk // 각 설정 ./os/linux/Makefile.4 or 6 // kernel version 에 따라 설정되며, 실제 빌드
3. WLAN Linux Driver 환경설정 및 빌드
수정은 아래와 같이 순서대로 하고 빌드는 make를 하면 원하는 모듈을 얻을 수 있을 것이다.
- rt3070sta.ko
아래의 변수 PLATFORM과 TARGET PLATFORM은 기존의 것을 가지고 수정하여 만들면된다.
어차피 Linux Kernel source path 문제로 인하여 아래와 같이 수정해야한다.
PLATFORM을 새로 만들어서 하면, 이상하게도 내 환경변수들이 제대로 설정이 안되어서,
기존 에 존재하던 것을 수정하여 Build를 시도.
- PLATFORM : 5VT로 선정하여 수정
- LINUX_SRC 및 CROSS_COMPILE 환경설정
ifeq ($(PLATFORM),5VT)
LINUX_SRC = /home/jhlee/mywork/kernel/linux
CROSS_COMPILE = arm-none-eabi-
endif
LINUX: // TARGET LINUX에서 변수 TEST
echo ">>> PLATFORM $(PLATFORM)" // 각종 변수 TEST
echo ">>> TEST_INC $(TEST_INC)"
echo ">>> LINUX_SRC $(LINUX_SRC)"
....
echo " TEST my plaform LINUX_SRC=$(LINUX_SRC) CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH) " // 변수 TEST , 처음에 제대로 안들어옴
$(MAKE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
3.2 vi os/linux/config.mk 수정
WPA_SUPPLICANT 기능 지원을 위해 아래와 같은 기능을 추가.
(주의: HAS_WPA_SUPPLICANT=y 바로 옆에 주석을 달았더니, 환경변수가 미설정됨)
# Support Wpa_Supplicant HAS_WPA_SUPPLICANT=y # Support Native WpaSupplicant for Network Maganger HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y ifeq ($(PLATFORM),5VT) EXTRA_CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -DMODULE $(WFLAGS) endif
3.3 vi os/linux/usb_main_dev.c 수정
#include "rt_config.h" ...... MODULE_AUTHOR("Paul Lin "); MODULE_DESCRIPTION("RT2870 Wireless Lan Linux Driver"); MODULE_LICENSE("GPL");
참조사항
http://www.linuxforums.org/forum/wireless-internet/161550-rt3070sta-module-license-unspecified-taints-kernel-solved.html
참고사항 A.
CFLAG를 사용할 경우 에러, CFLAGS -> EXTRA_CFLAGS 변경해줌
scripts/Makefile.build:49: *** CFLAGS was changed in "/home/jhlee/mywork/2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux/Makefile". Fix it to use EXTRA_CFLAGS. Stop.
참고사항 B.
WLAGS 값이 제대로 동작이 안되어 이를 Debugging.
- vi os/linux/Makefile.6 (맨 아래에 추가, 각 변수확인 후 지움)
%.o: echo "WLAGS=$(WLAGS)" echo "EXTRA_CFLAGS=$(EXTRA_CFLAGS)"
참고사항 C.
아래와 같이 insmod시 에러시 MODULE_LICESE("GPL") 추가
# insmod /lib/modules/rt3070sta.ko [ 2152.229076] rt3070sta: Unknown symbol usb_alloc_urb (err 0) [ 2152.229239] rt3070sta: Unknown symbol usb_free_urb (err 0) [ 2152.234685] rt3070sta: Unknown symbol usb_alloc_coherent (err 0) [ 2152.240690] rt3070sta: Unknown symbol usb_register_driver (err 0) [ 2152.246849] rt3070sta: Unknown symbol usb_put_dev (err 0) [ 2152.252033] rt3070sta: Unknown symbol usb_get_dev (err 0) [ 2152.257417] rt3070sta: Unknown symbol usb_submit_urb (err 0) [ 2152.263094] rt3070sta: Unknown symbol usb_free_coherent (err 0) [ 2152.269011] rt3070sta: Unknown symbol usb_control_msg (err 0) [ 2152.274745] rt3070sta: Unknown symbol usb_deregister (err 0) [ 2152.280535] rt3070sta: Unknown symbol usb_kill_urb (err 0)
3.4 Android 관련수정
Android 수정관련사항
http://ac100.wikispaces.com/Android+rt3070+or+rt2x00
4. 기본 TEST on the ODROID
RT3070이 기본이 STA로 설정이 되어있게 되어있어서, 기본 네트워크 동작을 확인을 했으며, AP는 설명했지만 Test를 하지 못했다.
RT2870STA.dat 파일을 Loading 하는 시점은 ifconfig ra0 up 이다.그리고, 이와 관련된 설정은 iwpriv로 변경이 가능하다.
WPS설정 iwpriv에서 command 형식으로 지원을 하는데, 이부분도 Test 못함.
급히 다른 회사일 때문에 모든것을 마무리 했으며, 추후에 더 시간이 있다면 그때 하도록하자.
4.1 copy rt3070sta.ko to odroid
on serial or adb shell
# su # mount -o rw,remount -t ext4 /dev/block/mmcblk0p2 /system # mount -o rw,remount -t ext4 /dev/root /
Send the driver & data to the device on Window
Y:\WORKS\LINUX\SHARED> adb push rt3070sta.ko /system/lib/modules Y:\WORKS\LINUX\SHARED> adb push RT2870STA.dat /etc/Wireless/RT2870STA
4.2 USB 연결확인 및 기본설정확인.
on serial or adb shell
root@odroidx2:/etc/Wireless/RT3070STA # lsusb // 연결확인 Bus 001 Device 001: ID 1d6b:0002 Bus 002 Device 001: ID 1d6b:0001 Bus 001 Device 002: ID 0424:3503 Bus 001 Device 003: ID 0424:9514 Bus 001 Device 004: ID 0424:ec00 Bus 001 Device 006: ID 148f:3070 # vi RT2870STA.dat AuthMode OPEN ->WPA2 # cat /data/misc/wifi/wpa_supplicant.conf ctrl_interface=/data/misc/wifi/sockets update_config=1 device_name=odroidx2 manufacturer=HARDKERNEL Co., Ltd. model_name=ODROID-X2 model_number=ODROID-X2 serial_number= device_type=10-0050F204-5 config_methods=physical_display virtual_push_button network={ ssid="CWPW" key_mgmt=NONE priority=1 } network={ ssid="U+Net6AFB" psk="5000050330" key_mgmt=WPA-PSK priority=2 }
4.3 connect to AP with wpa_suppicant
on serial or adb shell
# su # insmod /lib/modules/rt3070sta.ko # ifconfig ra0 up # wpa_supplicant -Dwext -ira0 -c/data/misc/wifi/wpa_supplicant.conf -dd & # wpa_cli -p/data/misc/wifi/sockets -ira0 ..... Interactive mode > scan OK > scan_result bssid / frequency / signal level / flags / ssid 00:40:5a:9c:6a:f8 2422 -51 [WPA-PSK-TKIP][ESS] 00:40:5a:9c:6a:fa 2422 -55 [WPA2-EAP-CCMP][ESS] U+zone 00:40:5a:9c:6a:f9 2422 -55 [WPA2-PSK-CCMP][ESS] U+Net6AFB 00:26:66:a0:35:ba 2432 -73 [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS] iptime89 6c:fd:b9:30:ba:82 2457 -69 [WEP][ESS] SAMSUNG 00:24:a5:34:2f:b3 2462 -81 [WPS][ESS] 0024A5342FB3 > list_network // wpa_supplicant.conf 의 list network id / ssid / bssid / flags 0 CWPW any 1 U+Net6AFB any [CURRENT] > select_network 1 // list 중 선택 OK > add_network // 아래와 같이 WPA-PSK로 추가 가능 2 > set_network 2 ssid "U+NetE3CD" OK > set_network 2 key_mgmt WPA-PSK OK > set_network 2 psk "1122333353" // OK > select_network 1 // 추가했으나, 기존것으로 연결 OK > status bssid=00:40:5a:9c:6a:f9 ssid=U+Net6AFB id=1 mode=station pairwise_cipher=CCMP group_cipher=CCMP key_mgmt=WPA2-PSK wpa_state=COMPLETED address=00:26:66:41:26:12
관련사항
http://sirlagz.net/2012/08/27/how-to-use-wpa_cli-to-connect-to-a-wireless-network/
http://lists.shmoo.com/pipermail/hostap/2009-December/020817.html
4.4 connect to AP without wpa_suppicant
# ifconfig ra0 up
# iwconfig ra0 essid "U+NetE3CD" // iwpriv ra0 set SSID="U+NetE3CD" 동일
# iwpriv ra0 set AuthMode=WPA2PSK .
# iwpriv ra0 set EncrypType=AES
# iwpriv ra0 set WPAPSK="1000003353"
# iwconfig ra0 // 확인
ra0 Ralink STA ESSID:"U+NetE3CD" Nickname:"RT2870STA"
Mode:Managed Frequency=2.412 GHz Access Point: 00:27:1C:CC:E3:CB
Bit Rate=135 Mb/s
RTS thr:off Fragment thr:off
Encryption key:533A-C4F7-1FC2-8647-DE03-0301-329D-606C [2] Security mode:open
Link Quality=100/100 Signal level:-29 dBm Noise level:-32 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:
# dhcpcd -n ra0
dhcpcd[3816]: sending signal 14 to pid 3736
dhcpcd[3816]: version 5.5.6 starting
dhcpcd[3816]: ra0: sending IPv6 Router Solicitation
dhcpcd[3816]: ra0: rebinding lease of 192.168.219.109
dhcpcd[3816]: ra0: acknowledged 192.168.219.109 from 192.168.219.1
dhcpcd[3816]: ra0: checking for 192.168.219.109
dhcpcd[3816]: ra0: sending IPv6 Router Solicitation
dhcpcd[3816]: ra0: leased 192.168.219.109 for 86400 seconds
dhcpcd[3816]: forked to background, child pid 3850
# ping 192.168.219.1
64 bytes from 192.168.219.1: icmp_seq=1 ttl=64 time=8.91 ms
64 bytes from 192.168.219.1: icmp_seq=2 ttl=64 time=1.93 ms
64 bytes from 192.168.219.1: icmp_seq=3 ttl=64 time=1.92 ms
4.5 관련 기타사항 기록
dhcpd Manual
http://www.daemon-systems.org/man/dhcpcd.8.html
# iwpriv ra0 set EthConvertMode=clone
# iwpriv ra0 set EthCloneMac="00:00:00:00:00:00"
AuthMode=OPEN -> WPA2
Odroid 관련이슈
https://code.google.com/p/0xdroid/issues/detail?id=160
관련사항
http://forum.samygo.tv/viewtopic.php?f=4&t=3979
http://www.korenixembedded.com/images/support/faq/JetBox_UM_Sparklan%20WPER-150GN%20wifi_v0.0.1.pdf
https://forums.gentoo.org/viewtopic-p-7290276.html
http://rhdxmr.tistory.com/48
https://code.google.com/p/0xdroid/issues/detail?id=160
# cat /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ip6tnl0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ra0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # cat /proc/net/wireless Inter-| sta-| Quality | Discarded packets | Missed | WE face | tus | link level noise | nwid crypt frag retry misc | beacon | 22 ra0: 0000 10. -256 -256 0 0 0 0 0 0 root@odroidx2:/ # netcfg lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00 sit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00 ip6tnl0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00 eth0 UP 0.0.0.0/0 0x00001003 1a:35:8f:c5:6e:b0 ra0 UP 0.0.0.0/0 0x00001043 00:26:66:41:26:12 255|root@odroidx2:/ # ifconfig ra0 up [ 5851.355400] (Efuse for 3062/3562/3572) Size=0x2d [2d0-2fc] [ 5851.867774] -->RTUSBVenderReset [ 5851.868026] <--rtusbvenderreset p="">[ 5852.410959] RtmpOSFileOpen(): Error 2 opening /etc/Wireless/RT2870STA/RT2870STA.dat [ 5852.412997] Open file "/etc/Wireless/RT2870STA/RT2870STA.dat" failed! [ 5852.419480] 1. Phy Mode = 0 [ 5852.422330] ERROR!!! RTMPReadParametersHook failed, Status[=0x00000001] [ 5852.486133] !!! rt28xx Initialized fail !!! error: SIOCSIFFLAGS (Operation not permitted)--rtusbvenderreset>
http://forum.samygo.tv/viewtopic.php?f=4&t=3979
http://www.korenixembedded.com/images/support/faq/JetBox_UM_Sparklan%20WPER-150GN%20wifi_v0.0.1.pdf
https://forums.gentoo.org/viewtopic-p-7290276.html
http://rhdxmr.tistory.com/48