AM335x 加载 无线网卡步骤 (WPA)

来源:互联网 发布:傻瓜式编程软件 编辑:程序博客网 时间:2024/05/01 23:23

主机 ubuntu12.04。编译工具:arm-linux-gcc 4.5.3嵌入式平台OK335xSII 内核linux。3.2.0。
网卡芯片 RTL8188cus
添加CONFIG_PLATFORM_ARM_AM335X = y


;然后是去修改编译工具。内核路径。


ifeq ($(CONFIG_PLATFORM_ARM_AM335X), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-linux-gnueabihf-
KVER  := 3.2.0
KSRC := /home/raymon/work/linux-3.2.0
endif


8192cu.ko就是我们要的文件。复制到开发板。insmod 8192cu.koroot@ok335x:/# insmod 8192cu.ko 
[  397.861355] Disabling lock debugging due to kernel taint
[  397.919836] rtl8192cu driver version=v4.0.2_9000.20130911
[  397.925530] build time: Mar 10 2015 10:27:37
[  397.930100] 
[  397.930105] usb_endpoint_descriptor(0):
[  397.935665] bLength=7
[  397.938028] bDescriptorType=5
[  397.941125] bEndpointAddress=81
[  397.944396] wMaxPacketSize=200
[  397.947572] bInterval=0
[  397.950115] RT_usb_endpoint_is_bulk_in = 1
[  397.954389] 
[  397.954393] usb_endpoint_descriptor(1):
[  397.959928] bLength=7
[  397.962298] bDescriptorType=5
[  397.965384] bEndpointAddress=2
[  397.968560] wMaxPacketSize=200
[  397.971746] bInterval=0
[  397.974290] RT_usb_endpoint_is_bulk_out = 2
[  397.978644] 
[  397.978647] usb_endpoint_descriptor(2):
[  397.984190] bLength=7
[  397.986552] bDescriptorType=5
[  397.989637] bEndpointAddress=3
[  397.992822] wMaxPacketSize=200
[  397.995998] bInterval=0
[  397.998543] RT_usb_endpoint_is_bulk_out = 3
[  398.002914] 
[  398.002917] usb_endpoint_descriptor(3):
[  398.008450] bLength=7
[  398.010822] bDescriptorType=5
[  398.013909] bEndpointAddress=84
[  398.017175] wMaxPacketSize=40
[  398.020261] bInterval=1
[  398.022812] RT_usb_endpoint_is_int_in = 4, Interval = 1
[  398.028257] nr_endpoint=4, in_num=2, out_num=2
[  398.028263] 
[  398.034435] USB_SPEED_HIGH
[  398.037311] CHIP TYPE: RTL8188C_8192C
[  398.041184] register rtw_netdev_ops to netdev_ops
[  398.048783] Chip Version ID: VERSION_NORMAL_TSMC_CHIP_88C.
[  398.054586] RF_Type is 3!!
[  398.057623] EEPROM type is E-FUSE
[  398.061096] ====> ReadAdapterInfo8192C
[  398.068345] Boot from EFUSE, Autoload OK !
[  398.151137] EEPROMVID = 0x0bda
[  398.154318] EEPROMPID = 0x8176
[  398.157495] EEPROMCustomerID : 0x00
[  398.161140] EEPROMSubCustomerID: 0x00
[  398.164955] RT_CustomerID: 0x00
[  398.168229] _ReadMACAddress MAC Address from EFUSE = 00:1d:43:e0:20:94
[  398.175046] EEPROMRegulatory = 0x0
[  398.178588] _ReadBoardType(0)
[  398.181686] BT Coexistance = disable
[  398.185410] mlmepriv.ChannelPlan = 0x02
[  398.189408] _ReadPSSetting...bHWPwrPindetect(0)-bHWPowerdown(0) ,bSupportRemoteWakeup(0)
[  398.197850] ### PS params=>  power_mgnt(1),usbss_enable(0) ###
[  398.203937] ### AntDivCfg(0)
[  398.206934] readAdapterInfo_8192CU(): REPLACEMENT = 1
[  398.212208] <==== ReadAdapterInfo8192C in 150 ms
[  398.218184] rtw_macaddr_cfg MAC Address  = 00:1d:43:e0:20:94
[  398.224122] bDriverStopped:1, bSurpriseRemoved:0, bup:0, hw_init_completed:0
[  398.232180] _rtw_drv_register_netdev, MAC Address (if1) = 00:1d:43:e0:20:94
[  398.239584] usbcore: registered new interface driver rtl8192cu

开启wlan0
root@ok335x:/# ifconfig wlan0 up
[  506.322148] +871x_drv - drv_open, bup=0
[  506.328703]  ===> FirmwareDownload91C() fw:Rtl819XFwImageArray_TSMC
[  506.335292] FirmwareDownload92C accquire FW from embedded image
[  506.341482] fw_ver=v88, fw_subver=2, sig=0x88c0
[  506.364524] fw download ok!
[  506.367455] Set RF Chip ID to RF_6052 and RF type to 1T1R.
[  506.673924] IQK:Start!!!
[  506.681122] Path A IQK Success!!
[  506.687865] Path A IQK Success!!
[  506.693614] IQK: final_candidate is 0
[  506.697440] IQK: RegE94=fe RegE9C=b RegEA4=ff RegEAC=3fe RegEB4=0 RegEBC=0 RegEC4=0 RegECC=0
[  506.697449]  Path A IQ Calibration Success !
[  506.822380] pdmpriv->TxPowerTrackControl = 1
[  506.828195] rtl8192cu_hal_init in 500ms
[  506.853131] MAC Address = 00:1d:43:e0:20:94
[  506.857988] -871x_drv - drv_open, bup=1
root@ok335x:/# [  508.852643] ==>rtw_ps_processor .fw_state(0)
[  508.857106] ==>ips_enter cnts:1
[  508.860375] ===> rtw_ips_pwr_down...................
[  508.866283] ====> rtw_ips_dev_unload...
[  508.885372] usb_read_port_cancel
[  508.889293] usb_read_port_complete()-1284: RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) bReadPortCancel(1)
[  508.900357] usb_read_port_complete()-1284: RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) bReadPortCancel(1)
[  508.911323] usb_read_port_complete()-1284: RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) bReadPortCancel(1)
[  508.922277] usb_read_port_complete()-1284: RX Warning! bDriverStopped(0) OR bSurpriseRemoved(0) bReadPortCancel(1)
[  508.933153] usb_write_port_cancel 
[  508.936802] ==> rtl8192cu_hal_deinit 
[  508.940615] bkeepfwalive(0)
[  508.943544] card disble without HWSM...........
[  508.951243] <=== rtw_ips_pwr_down..................... in 100ms


查看是否成功

root@ok335x:/# ifconfig 
eth0      Link encap:Ethernet  HWaddr D0:39:72:0C:C9:85  
          inet addr:10.3.29.36  Bcast:10.3.29.255  Mask:255.255.255.0
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:13177 errors:0 dropped:1114 overruns:0 frame:0
          TX packets:5354 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6649078 (6.3 MiB)  TX bytes:809470 (790.4 KiB)


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


wlan0     Link encap:Ethernet  HWaddr 00:1D:43:E0:20:94  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


在WPA下,需要安装4个开发工具

下载wireless_tools.29.tar.gz(支持wep),这个网上都能下到的,修改makefile 

## Compiler to use (modify this for cross compile).
CC = arm-linux-gnueabihf-gcc
## Other tools you need to modify for cross compile (static lib only).
AR = arm-linux-gnueabihf-ar
RANLIB = arm-linux-gnueabihf-ranlib

make 编译。会生成iwpriv,iwconfig,iwlist,iwspy,copy这些文件到开发板/sbin 目录下。同时copy同目录下的libiw。so。29到开发板/lib 目录下


下载libnl-1.1.4.tar.gz

tar xzf libnl-1.1.4.tar.gz 
cd libnl-1.1.4/
CC=/home/raymon/work/linux-devkit/bin/arm-linux-gnueabihf-gcc ./configure --prefix=$PWD/_install --host=arm-linux-gnueabihf
make
make install
之后将生成的库文件和头文件复制到交叉编译路径:
cp -rf _install/* /home/raymon/work//linux-devkit/arm-arago-linux-gnueabi/usr/


 下载openssl-0.9.8e.tar.gzwireless_tools.29.tar.gz。

将wpa_supplicant中的补丁拷贝到openssl中 
        # cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/
        #cd openssl-0.9.8e
        #mkdir /usr/local/ssl
        #vim Makefile
                CC= arm-linux-gnueabihf-gcc
                AR= arm-linux-gnueabihf-ar $(ARFLAGS) r
                RANLIB= arm-linux-gnueabihf-ranlib
                INSTALLTOP=/usr/local/ssl
                OPENSSLDIR=/usr/local/ssl
        #make 
        #make install

在/usr/local/ssl目录下安装了ssl库
 #ls /usr/local/ssl #bin  certs  include  lib  man  misc  openssl.cnf  private


下载wpa_supplicant-2.3.tar.gz (openssl用到0.7.3提供的补丁)

进入wpa_supplicant-0.7.3.tar.gz解压生成的wpa_supplicant-0.7.3/wpa_supplicant目录中:
        #cp defconfig        .config
        #vim .config
                CC=arm-linux-gnueabihf-gcc  -L/usr/local/ssl/lib/
          #CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
CFLAGS += -I/usr/local/ssl/include
#CPPFLAGS += -I../src/include -I../../src/router/openssl/include
LIBS += -L/usr/local/ssl/lib
        #make

经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。


配置wpa_supplicant
在板子根目录nfsroot/etc中修改wpa_supplicant.conf文件


文件内容如下
ctrl_interface=/var/run/wpa_supplicant


network={
                ssid="RIMMS"     //填写无线网络的的用户名
                key_mgmt=WPA-PSK
                proto=WPA
                pairwise=TKIP
                group=TKIP
                psk="1234567890" //填写密码
}
注意要与你的无线路由中的设置对应。


测试
insmod 8192cu.ko
ifconfig wlan0 up
iwconfig wlan0 essid  RIMMS
wpa_passphrase RIMMS 1234567890 >> /etc/wpa_supplicant.conf


之后wpa_supplicant.conf中会添加以下内容,然后把最后面的经过加密的密码修改到上面去,再把下面的内容删掉!
network={
      ssid="RIMMS"
      #psk="1234567890"
      psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba
}
如:
network={
                ssid="RIMMS"     //填写无线网络的的用户名
                key_mgmt=WPA-PSK
                proto=WPA
                pairwise=TKIP
                group=TKIP
                psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba                
                #psk="1234567890" //填写密码
}


连接AP

wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B

 
root@ok335x:/# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B
[ 1915.278393] [rtw_wx_set_pmkid] IW_PMKSA_FLUSH!
[ 1915.284305] _rtw_pwr_wakeup call ips_leave....
[ 1915.290031] ==>ips_leave cnts:1
[ 1915.293567] ===>  rtw_ips_pwr_up..............
[ 1915.298205] ===> ips_netdrv_open.........
[ 1915.306835]  ===> FirmwareDownload91C() fw:Rtl819XFwImageArray_TSMC
[ 1915.313417] FirmwareDownload92C accquire FW from embedded image
[ 1915.319589] fw_ver=v88, fw_subver=2, sig=0x88c0
[ 1915.341760] fw download ok!
[ 1915.344674] Set RF Chip ID to RF_6052 and RF type to 1T1R.
[ 1915.653335] IQK:Start!!!
[ 1915.660272] Path A Rx IQK fail!!
[ 1915.665524] Path A Rx IQK fail!!
[ 1915.668889] Path A IQK Only  Tx Success!!
[ 1915.677194] Path A IQK Success!!
[ 1915.685679] Path A Rx IQK fail!!
[ 1915.690525] Path A Rx IQK fail!!
[ 1915.693907] Path A IQK Only  Tx Success!!
[ 1915.699705] IQK: final_candidate is 0
[ 1915.703543] IQK: RegE94=fe RegE9C=c RegEA4=0 RegEAC=0 RegEB4=0 RegEBC=0 RegEC4=0 RegECC=0
[ 1915.703553]  Path A IQ Calibration Success !
[ 1915.717584] _PHY_PathAFillIQKMatrix only Tx OK
[ 1915.832066] pdmpriv->TxPowerTrackControl = 1
[ 1915.837867] rtl8192cu_hal_init in 530ms
[ 1915.863220] <===  rtw_ips_pwr_up.............. in 570ms
[ 1915.868762] ==> ips_leave.....LED(0x00028080)...
[ 1915.873599] set_mode = IW_MODE_INFRA
[ 1915.877792] hw_var_set_opmode()-4234 mode = 2
ioctl[SIOCSIWAP]: Operation not permitted
[ 1915.911347] [rtw_wx_set_pmkid] IW_PMKSA_FLUSH!
root@ok335x:/# [ 1917.433405] survey done event(3b) band:0 for wlan0
[ 1917.441661] wpa_set_auth_algs, AUTH_ALG_OPEN_SYSTEM
[ 1917.446773] set_mode = IW_MODE_INFRA
[ 1917.451242] 
[ 1917.451248]  wpa_ie(length:24):
[ 1917.456067] 0xdd 0x16 0x00 0x50 0xf2 0x01 0x01 0x00 
[ 1917.461267] 0x00 0x50 0xf2 0x02 0x01 0x00 0x00 0x50 
[ 1917.466445] 0xf2 0x04 0x01 0x00 0x00 0x50 0xf2 0x02 
[ 1917.471657] hw_var_set_opmode()-4234 mode = 2
[ 1917.476951] SetHwReg8192CU, 5130, RCR= 700060ca 
[ 1917.481995] =>rtw_wx_set_essid
[ 1917.485179] ssid=RIMMS, len=5
[ 1917.488283] Set SSID under fw_state=0x00000008
[ 1917.492950] [by_bssid:0][assoc_ssid:RIMMS][to_roaming:0] new candidate: RIMMS(94:0c:6d:35:7f:a2, ch6) rssi:-55
[ 1917.503409] rtw_select_and_join_from_scanned_queue: candidate: RIMMS(94:0c:6d:35:7f:a2, ch:6)
[ 1917.512366] link to Artheros AP
[ 1917.515702] <=rtw_wx_set_essid, ret 0
[ 1917.520176] Set BSSID under fw_state=0x00000088
[ 1917.525313] start_join_set_ch_bw: ch=6, bwmode=0, ch_offset=0
[ 1917.615110] link to Artheros AP
[ 1917.622448] OnAuthClient
[ 1917.625114] network.SupportedRates[0]=82
[ 1917.629205] network.SupportedRates[1]=84
[ 1917.633313] network.SupportedRates[2]=8B
[ 1917.637397] network.SupportedRates[3]=96
[ 1917.641489] network.SupportedRates[4]=0C
[ 1917.645584] network.SupportedRates[5]=18
[ 1917.649667] network.SupportedRates[6]=30
[ 1917.653760] network.SupportedRates[7]=48
[ 1917.657846] network.SupportedRates[8]=12
[ 1917.661937] network.SupportedRates[9]=24
[ 1917.666020] network.SupportedRates[10]=60
[ 1917.670196] network.SupportedRates[11]=6C
[ 1917.674380] bssrate_len = 12
[ 1917.682493] OnAssocRsp
[ 1917.684986] report_join_res(17)
[ 1917.688260] rtw_joinbss_update_network
[ 1917.692208] rtw_joinbss_update_stainfo
[ 1917.696537] HW_VAR_BASIC_RATE: BrateCfg(0x15d)
[ 1917.702663] HTOnAssocRsp
[ 1917.707273] update raid entry, mask=0x40000fff, arg=0x80
[ 1917.713794] rtl8192c_set_FwJoinBssReport_cmd mstatus(1)
[ 1917.719709] SetFwRsvdPagePkt
[ 1917.722801] Set RSVD page location to Fw.
[ 1917.727448] =>mlmeext_joinbss_event_callback
[ 1918.843410] rtw_tkip_decrypt(wlan0) no_gkey_bc_cnt:4, no_gkey_mc_cnt:0
[ 1919.170731] 
[ 1919.170745]  ~~~~stastakey:unicastkey
[ 1919.865938] rtw_tkip_decrypt(wlan0) no_gkey_bc_cnt:3, no_gkey_mc_cnt:0
[ 1920.161530]  ~~~~set sta key:groupkey
[ 1920.165359] ==> rtw_set_key algorithm(2),keyid(1),key_mask(0)
[ 1920.172590] SetHwReg8192CU, 5126, RCR= 700060ce 
[ 1920.873300] rtl8192c_dm_RF_Saving(): RF_Save
[ 1921.194270]  ~~~~set sta key:groupkey
[ 1921.198106] ==> rtw_set_key algorithm(2),keyid(1),key_mask(0)
[ 1921.205636] SetHwReg8192CU, 5126, RCR= 700060ce 
[ 1921.211459]  ~~~~set sta key:groupkey
[ 1921.215299] ==> rtw_set_key algorithm(2),keyid(2),key_mask(0)
[ 1921.222379] SetHwReg8192CU, 5126, RCR= 700060ce 
[ 1926.870961] rtw_set_ps_mode(): Enter 802.11 power save mode...
[ 1926.877546] rtl8192c_dm_RF_Saving(): RF_Normal
[ 1926.882200] rtl8192c_set_FwPwrMode_cmd(): Mode = 1, SmartPS = 2
[ 1952.229781]  ~~~~set sta key:groupkey
[ 1952.233677] ==> rtw_set_key algorithm(2),keyid(1),key_mask(0)
[ 1952.241038] SetHwReg8192CU, 5126, RCR= 700760ce 
[ 1952.246280] rtw_set_ps_mode(): Busy Traffic , Leave 802.11 power save..
[ 1952.253708] rtl8192c_set_FwPwrMode_cmd(): Mode = 0, SmartPS = 0
[ 1952.872544] rtl8192c_dm_RF_Saving(): RF_Save
[ 1954.870942] rtw_set_ps_mode(): Enter 802.11 power save mode...
[ 1954.877492] rtl8192c_dm_RF_Saving(): RF_Normal
[ 1954.882150] rtl8192c_set_FwPwrMode_cmd(): Mode = 1, SmartPS = 2
 

在执行udhcpc -i wlan0 可以顺利获取ip

root@ok335x:/# udhcpc -i wlan0

udhcpc (v1.20.2) started
Sending discover...
[ 2055.533798] rtw_set_ps_mode(): Busy Traffic , Leave 802.11 power save..
[ 2055.542992] rtl8192c_set_FwPwrMode_cmd(): Mode = 0, SmartPS = 0
Sending select for 192.168.1.213...
Lease of 192.168.1.213 obtained, lease time 7200
RTNETLINK answers: File exists
/etc/udhcpc.d/50default: Adding DNS 8.8.8.8
/etc/udhcpc.d/50default: Adding DNS 61.233.9.9
root@ok335x:/# [ 2056.872881] rtl8192c_dm_RF_Saving(): RF_Save
[ 2058.870972] rtw_set_ps_mode(): Enter 802.11 power save mode...
[ 2058.877519] rtl8192c_dm_RF_Saving(): RF_Normal
[ 2058.882180] rtl8192c_set_FwPwrMode_cmd(): Mode = 1, SmartPS = 2
[ 2060.870975] rtw_set_ps_mode(): Busy Traffic , Leave 802.11 power save..
[ 2060.877948] rtl8192c_set_FwPwrMode_cmd(): Mode = 0, SmartPS = 0
[ 2060.902333] rtl8192c_dm_RF_Saving(): RF_Save


找了个笔记本连了wifi后ping着通了,大包效果还不错,也折腾了两天借鉴了http://blog.csdn.net/ti_tantbx/article/details/7037741;http://blog.csdn.net/mirkerson/article/details/9162325;整合了下

0 0