主机 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
下载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