Linux SDIO WIFI Marvell8801/Marvell88w8801(三) --- Linux驱动以及组件的使用
代碼工程的GITHUB連接:點(diǎn)進(jìn)進(jìn)入GITHUB倉庫
https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi
1.Linux SDIO WIFI Marvell8801/Marvell88w8801(一) — 代碼及文檔介紹
2. Linux SDIO WIFI Marvell8801/Marvell88w8801(二) — Marvell88w8801驅(qū)動(dòng)編譯
3. Linux SDIO WIFI Marvell8801/Marvell88w8801(三) — Linux驅(qū)動(dòng)以及組件的使用
4. Linux SDIO WIFI Marvell8801/Marvell88w8801(四) — Linux Wi-Fi架構(gòu)
5. Linux SDIO WIFI Marvell8801/Marvell88w8801(五) — Linux SDIO API介紹
6. Linux SDIO WIFI Marvell8801/Marvell88w8801(六) — Marvell Linux Wi-Fi driver介紹-WIFI插入卡槽內(nèi)發(fā)生的事情
7. Linux SDIO WIFI Marvell8801/Marvell88w8801(七) — Marvell Linux Wi-Fi driver初始化
8. Linux SDIO WIFI Marvell8801/Marvell88w8801(八) — Marvell Linux Wi-Fi driver 對(duì)接芯片上行下行接口介紹
關(guān)于Linux驅(qū)動(dòng)以及組件的使用介紹主要分為以下圖示幾部分介紹
1)Marvell8801驅(qū)動(dòng)使用,主要擴(kuò)展介紹驅(qū)動(dòng)的加載以及使用
2)Marvell驅(qū)動(dòng)中APP mlanutl的編譯使用,主要對(duì)marvell官方自帶的驗(yàn)證驅(qū)動(dòng)的app做編譯使用說明
3)wpa_supplicant的使用介紹
4)Udhcpc的使用,由于wpa_supplicant只能連接熱點(diǎn),不能主動(dòng)向AP索要IP,此APP就是DHCP client
5)Marvell驅(qū)動(dòng)中APP uaptul的編譯使用
6)Udhcpd的使用,主要是DHCP server的使用
7)SHELL整合STA的功能
8)SHELL整合AP的功能
1 Marvell88w8801驅(qū)動(dòng)的使用
1.1驅(qū)動(dòng)加載
在上一篇文章我們加載驅(qū)動(dòng)方式只是用了:
insmod ./mlan.ko
insmod ./sd8xxx.ko
這種方法一下就是把STA,AP,WIFIDIRECT mode的interface都做出來,但是如果我們想要其中的某一個(gè)interface,那么看下面就對(duì)了
1)首先模式加載可以選擇,參數(shù)是drv_mode,默認(rèn)是STA,UAP,WIFIDIRECT都有,所以有3個(gè)節(jié)點(diǎn):mlan0,uap0,wfd0,這個(gè)driver mode的值見下面
The bit settings of drv_mode are,
Bit 0 : STA
Bit 1 : uAP
Bit 2 : WIFIDIRECT
The default drv_mode is 7.
舉一個(gè)例子:
insmod mlan.ko
insmod sd8xxx.ko drv_mode=1
這樣就是只設(shè)置了STA mode,這樣設(shè)置后就會(huì)發(fā)現(xiàn)只會(huì)有mlan0出現(xiàn)
其他參數(shù)如下,你們可以自己試下其他的:
max_sta_bss: Maximum number of STA BSS (default 1, max 1)
sta_name: Name of the STA interface (default: “mlan”)
max_uap_bss: Maximum number of uAP BSS (default 1, max 2)
uap_name: Name of the uAP interface (default: “uap”)
max_wfd_bss: Maximum number of WIFIDIRECT BSS (default 1, max 1)
wfd_name: Name of the WIFIDIRECT interface (default: “wfd”)
2)運(yùn)行時(shí)切換狀態(tài)
echo drv_mode=1 > /proc/mwlan/config // STA mode
echo drv_mode=2 > /proc/mwlan/config // uAP mode
echo drv_mode=3 > /proc/mwlan/config // STA+uAP mode
echo drv_mode=7 > /proc/mwlan/config // STA+uAP+WIFIDIRECT mode
1.2 proc & debug
1)加載完畢驅(qū)動(dòng)在 /proc/mwlan中會(huì)發(fā)現(xiàn)3個(gè)文件夾和一個(gè)文件,分別是mlan0,uap0,wfd0,config文件
不過文件夾要看你選擇什么模式加載,如果你選擇drv_mode 7就是三個(gè)
The following info are provided in /proc/net/mwlan/mlanX|uapX|wfdX/info,
on kernel 2.6.24 or later, the entry is /proc/mwlan/mlanX|uapX|wfdX/info.
此部分可以查看一些基本信息,你可以自動(dòng)去看下,對(duì)我來說也就是掃一眼,對(duì)我來說沒有太大的作用,但是還是要列出來,萬一有想到想知道一個(gè)信息,直接先通過這里查看有沒有
driver_name = “wlan” or “uap”
driver_version = <chip id, firmware version and driver version>
interface_name = “mlanX”, “uapX” or “wfdX”
bss_mode = “Ad-hoc” | “Managed” | “Auto” | “Unknown”
media_state = “Disconnected” | “Connected”
mac_address = <6-byte adapter MAC address>
multicase_count = // Only for STA
essid = // Only for STA
bssid = // Only for STA
channel = // Only for STA
region_code = // Only for STA
multicast_address[n] = // Only for STA
num_tx_bytes =
num_rx_bytes =
num_tx_pkts =
num_rx_pkts =
num_tx_pkts_dropped =
num_rx_pkts_dropped =
num_tx_pkts_err =
num_rx_pkts_err =
carrier “on” | “off”
tx queue “stopped” | “started”
tkip_mic_failures = 0 // Only for uAP
ccmp_decrypt_errors = 0 // Only for uAP
wep_undecryptable_count = 0 // Only for uAP
wep_icv_error_count = 0 // Only for uAP
decrypt_failure_count = 0 // Only for uAP
mcast_tx_count = 0 // Only for uAP
failed_count = 0 // Only for uAP
retry_count = 0 // Only for uAP
multiple_retry_count = 0 // Only for uAP
frame_duplicate_count = 0 // Only for uAP
rts_success_count = 0 // Only for uAP
rts_failure_count = 0 // Only for uAP
ack_failure_count = 0 // Only for uAP
rx_fragment_count = 0 // Only for uAP
mcast_rx_frame_count = 0 // Only for uAP
fcs_error_count = 0 // Only for uAP
tx_frame_count = 0 // Only for uAP
rsna_tkip_cm_invoked = 0 // Only for uAP
rsna_4way_hshk_failures = 0 // Only for uAP
The following debug info are provided in /proc/net/mwlan/mlanX|uapX|wfdX/debug,
on kernel 2.6.24 or later, the entry is /proc/mwlan/mlanX|uapX|wfdX/debug.
此部分可以縱覽一些運(yùn)行情況,也就是debug信息,或者說是統(tǒng)計(jì)情況
drvdbg =
wmm_ac_vo =
wmm_ac_vi =
wmm_ac_be =
wmm_ac_bk =
max_tx_buf_size =
tx_buf_size =
curr_tx_buf_size =
ps_mode = <0/1, CAM mode/PS mode>
ps_state = <0/1/2/3, awake state/pre-sleep state/sleep-confirm state/sleep state>
is_deep_sleep = <0/1, not deep sleep state/deep sleep state> // Only for STA
wakeup_dev_req = <0/1, wakeup device not required/required>
wakeup_tries = <wakeup device count, cleared when device awake>
hs_configured = <0/1, host sleep not configured/configured>
hs_activated = <0/1, extended host sleep not activated/activated>
tx_pkts_queued =
pps_uapsd_mode = <0/1, PPS/UAPSD mode disabled/enabled> // Only for STA
sleep_pd = // Only for STA
qos_cfg = // Only for STA
tx_lock_flag = <0/1, Tx lock flag> // Only for STA
port_open = <0/1, port open flag> // Only for STA
scan_processing = <0/1, scan processing flag> // Only for STA
num_bridge_pkts = // Only for uAP
num_drop_pkts = // Only for uAP
num_tx_timeout =
num_cmd_timeout =
timeout_cmd_id =
timeout_cmd_act =
last_cmd_id =
last_cmd_act =
last_cmd_index = <0 based last command index>
last_cmd_resp_id =
last_cmd_resp_index = <0 based last command response index>
last_event =
last_event_index = <0 based last event index>
num_cmd_h2c_fail =
num_cmd_sleep_cfm_fail =
num_tx_h2c_fail =
num_cmdevt_c2h_fail = <number of commands/events failed to receive from device>
num_rx_c2h_fail =
num_int_read_fail =
last_int_status =
num_evt_deauth = // Only for STA
num_evt_disassoc = // Only for STA
num_evt_link_lost = // Only for STA
num_cmd_deauth = // Only for STA
num_cmd_assoc_ok = // Only for STA
num_cmd_assoc_fail = // Only for STA
cmd_sent = <0/1, send command resources available/sending command to device>
data_sent = <0/1, send data resources available/sending data to device>
mp_rd_bitmap =
curr_rd_port =
mp_wr_bitmap =
curr_wr_port =
cmd_resp_received = <0/1, no cmd response to process/response received and yet to process>
event_received = <0/1, no event to process/event received and yet to process>
ioctl_pending =
tx_pending =
rx_pending =
lock_count =
malloc_count =
mbufalloc_count =
main_state =
sdiocmd53w =
sdiocmd53r =
hs_skip_count =
hs_force_count =
1.3 調(diào)試SDIO CMD52
此部分是用于調(diào)試Wi-FI寄存器的,也就是直接通過CMD52修改獲取讀出來寄存器的值
Issue SDIO cmd52 read/write through proc.Usage:
echo “sdcmd52rw= [data]” > /proc/mwlan/config
where the parameters:
func: The function number to use (0-7)
reg: The address of the register
data: The value to write, read if the value is absent
For SDIO MMC driver, only function 0 and WLAN function access is allowed.
And there is a limitation for function 0 write, only vendor specific CCCR
registers (0xf0 -0xff) are permiited.
Examples:
echo “sdcmd52rw= 0 4” > /proc/mwlan/config # read func 0 address 4
cat /proc/mwlan/config # display the register value
echo “sdcmd52rw= 1 3 0xf” > /proc/mwlan/config# write 0xf to func 1 address 3
2 Marvell88w8801驅(qū)動(dòng)中APP mlanutl的編譯&使用
2.1 mlanutl的編譯
分為幾個(gè)步驟:
1)修改mapp/mlanutl下的makefile
增加CC = arm-linux-gcc
2)在wlan_src下敲指令
make mapp/mlanutl
做完以上兩步就會(huì)提到mlanutl
2.2 mlanutl的常用功能使用
1)help指令
./mlanutl --help
會(huì)得到運(yùn)行的格式:mlanutl […]
其中ifname:wireless network interface name, such as mlanX or uapX,我們是用的mlanutl,所以我們這部分填寫mlan0,cmd list自己敲下命令,有很多,我就不列舉,我只是會(huì)說明一些常用的指令
2)assocessid
人家文檔中說的很詳細(xì)了,我就不做累贅
This command is used to assoc essid with asynced mode,and driver will auto retry if driver auto assoc enabled.
Usage:
mlanutl mlanX assocessid <"[essid]">
Where
<"[essid]"> is the essid which need to be associated with asynced mode.
Examples:
mlanutl mlan0 assocessid “Marvell Micro AP”
使用:連接一個(gè)open的ssid
獲取一下剛剛的proc的信息
分配IP并且ping,其實(shí)此部分可以通過udhcpc,但是用法后面再說
3)Deauth
從熱點(diǎn)斷線,執(zhí)行下面命令就斷線了
./mlanutl mlan0 deauth
4)Scan
Scan的介紹還是比較多的,我給你說下最簡(jiǎn)單的應(yīng)用,詳細(xì)還是要你們自己看下
執(zhí)行在termainal上敲命令:./mlanutl mlan0 setuserscan
3 wpa_supplicant的使用
以上是介紹了Marvell Linux wifi驅(qū)動(dòng)的APP測(cè)試工具,那么現(xiàn)在我們也試著用下wpa_supplicant的工具,畢竟此工具比較通用,以后大部分的wifi驅(qū)動(dòng)是可以用這個(gè)工具實(shí)現(xiàn)STA mode的加密認(rèn)證的。
先從readme中看看是否有找到一些重要的信息
Wpa_supplicant一共生成三個(gè)工具:wpa_cli,wpa_supplicant,wpa_passphrase
主要介紹下前兩個(gè):
3.1 wpa_supplicant的介紹
1)usage:
wpa_supplicant [-BddfhKLqqtuvwW] [-P] [-g]
-i -c [-C] [-D] [-p<driver_param>]
[-b<br_ifname> [-N -i -c [-C] [-D]
[-p<driver_param>] [-b<br_ifname>] …]
options:
-b = optional bridge interface name
-B = run daemon in the background
-c = Configuration file
-C = ctrl_interface parameter (only used if -c is not)
-i = interface name
-d = increase debugging verbosity (-dd even more)
-D = driver name (can be multiple drivers: nl80211,wext)
-f = Log output to default log location (normally /tmp)
-g = global ctrl_interface
-K = include keys (passwords, etc.) in debug output
-t = include timestamp in debug messages
-h = show this help text
-L = show license (BSD)
-p = driver parameters
-P = PID file
-q = decrease debugging verbosity (-qq even less)
-u = enable DBus control interface
-v = show version
-w = wait for interface to be added, if needed
-W = wait for a control interface monitor before starting
-N = start describing new interface
看完這個(gè),我們大概已經(jīng)知道有用法的概念了
wpa_supplicant -B -cxxx.conf -iwlan0
2)配置文件,我們直接列出配置文件,然后再一個(gè)個(gè)驗(yàn)證
沒有加密的配置文件
ctrl_interface=/var/run/wpa_supplicant
network={
ssid=“IoT_lwos_wifi”
key_mgmt=NONE
}
WEP的配置文件
ctrl_interface=/var/run/wpa_supplicant
network={
ssid=“IoT_lwos_wifi”
key_mgmt=NONE
wep_key0=“IoT_lwos_wifi”
wep_tx_keyidx=0
}
WPA的配置文件
ctrl_interface=/var/run/wpa_supplicant
network={
ssid=“IoT_lwos_wifi”
proto=WPA # proto: list of accepted protocols, 可取WPA,RSN
# If not set, this defaults to: WPA RSN
key_mgmt=WPA-PSK # 認(rèn)證方式
# If not set, this defaults to: WPA-PSK WPA-EAP
pairwise=TKIP # If not set, this defaults to: CCMP TKIP
group=TKIP # If not set, this defaults to: CCMP TKIP WEP104 WEP40
psk=“12345678”
}
WPA2的配置文件
ctrl_interface=/var/run/wpa_supplicant
network={
ssid=“IoT_lwos_wifi”
psk=“12345678”
}
那么我們就一個(gè)個(gè)的驗(yàn)證:
Open方式的驗(yàn)證
wpa_supplicant -B -cxxx.conf -iwlan0
wpa_cli -iwlan0 status // 查看狀態(tài)
ifconfig wlan0 192.168.43.120
ping 192.168.43.120
其他的加密方式驗(yàn)證方法以及命令都一樣,所以不再累贅
3.2 wpa_cli的介紹
wpa_cli commands
status = get current WPA/EAPOL/EAP status
mib = get MIB variables (dot1x, dot11)
help = show this usage help
interface [ifname] = show interfaces/select interface
level = change debug level
license = show full wpa_cli license
logoff = IEEE 802.1X EAPOL state machine logoff
logon = IEEE 802.1X EAPOL state machine logon
set = set variables (shows list of variables when run without arguments)
pmksa = show PMKSA cache
reassociate = force reassociation
reconfigure = force wpa_supplicant to re-read its configuration file
preauthenticate = force preauthentication
identity = configure identity for an SSID
password = configure password for an SSID
pin = configure pin for an SSID
otp = configure one-time-password for an SSID
passphrase = configure private key passphrase
for an SSID
bssid = set preferred BSSID for an SSID
list_networks = list configured networks
select_network = select a network (disable others)
enable_network = enable a network
disable_network = disable a network
add_network = add a network
remove_network = remove a network
set_network = set network variables (shows
list of variables when run without arguments)
get_network = get network variables
save_config = save the current configuration
disconnect = disconnect and wait for reassociate command before connecting
scan = request new BSS scan
scan_results = get latest scan results
get_capability <eap/pairwise/group/key_mgmt/proto/auth_alg> = get capabilies
terminate = terminate wpa_supplicant
quit = exit wpa_cli
Wpa_cli分為兩種模式:
1)交互模式,輸入wap_cli按回車健就能進(jìn)入,然后可以隨便輸入以上命令,輸去quit退出
2)命令行模式,就是在terminal上敲命令,格式如下
wpa_cli command line options
wpa_cli [-p] [-i] [-hvB] [-a]
[-P] [-g] [command…]
-h = help (show this usage text)
-v = shown version information
-a = run in daemon mode executing the action file based on events from
wpa_supplicant
-B = run a daemon in the background
default path: /var/run/wpa_supplicant
default interface: first interface found in socket path
下面我們直接用交互模式說明一些常用的命令,其實(shí)和命令是一樣的道理
1)搜索:scan
scan_result
3)連接無密碼網(wǎng)絡(luò)
注意一下有幾點(diǎn)需要注意的點(diǎn):
1)index id不是寫死的,是根據(jù)add_network返回的值
2)連接不成功很有可能是因?yàn)橹杏⑽妮斎敕ㄔ斐?#xff0c;我開始在這里耗費(fèi)了半個(gè)小時(shí)怎么都連接不成功,返現(xiàn)敲的命令沒錯(cuò),但是實(shí)際是錯(cuò)的,有亂碼行為,怎么知道敲的是否對(duì)呢,這樣,拿ssid為例,你可以敲 get_network 1 ssid看返回
add_network
set_network 1 ssid “IoT_lwos_wifi”
set_network 1 key_mgmt NONE
select_network 1
4)在連接回來WPA2的模式
add_network
set_network 2 ssid “WIFI_AP”
set_network 2 key_mgmt WPA-PSK
set_network 2 psk “12345678”
select_network 2
4 udhcpc的使用
這個(gè)文章的邏輯很縝密啊,你覺得哪里不合理那么就會(huì)出現(xiàn)什么,哈哈,自己夸自己也是沒誰了,為什么說上面不太合理呢,因?yàn)槟銢]發(fā)現(xiàn)連接上,以后就沒有然后了,IP呢?只能手動(dòng)分配,敲ifconfig命令(PS:也許有的手機(jī)你曾經(jīng)敲過ifconfig后還是給你保留原IP),那么既然有上面的不合理我們就解決他,通過dhcp client的角色自動(dòng)向dhcp server索要IP。
怎樣編譯已經(jīng)在上篇文章說明了,再這里就不再提,只是說怎樣使用,命令行格式如下
-c, --clientid=CLIENTID Client identifier
-H, --hostname=HOSTNAME Client hostname
-h, Alias for -H
-f, --foreground Do not fork after getting lease
-b, --background Fork to background if lease cannot be immediately negotiated.
-i, --interface=INTERFACE Interface to use (default: eth0)
-n, --now Exit with failure if lease cannot be immediately negotiated.
-p, --pidfile=file Store process ID of daemon in file
-q, --quit Quit after obtaining lease
-r, --request=IP IP address to request (default: none)
-s, --script=file Run file at dhcp events (default:
/usr/share/udhcpc/default.script)
-v, --version Display version
這樣我們就知道大概用法了 udhcpc -imlan0
首先用之前我們先看下網(wǎng)卡的狀態(tài)以及是否有IP地址
執(zhí)行完畢后我們發(fā)現(xiàn)變成了這樣
Udhcpc的使用還是比較簡(jiǎn)單的
5 uaputl的使用
啊,慚愧啊,接著上篇,還是沒有用起來hostapd,所以用這個(gè)uaputl替代吧
5.1 uaputl的編譯
分為幾個(gè)步驟:
1)修改mapp/uaputl下的makefile
增加CC = arm-linux-gcc
2)在wlan_src下敲指令
make make mapp/uaputl
做完以上兩步就會(huì)提到uaputl.exe
5.2 uaputl的常用功能使用
看功能還是直接看readme比較官方
格式為:
uaputl.exe [options] [command parameters]]
Options:
–help Display help
-v Display version
-i
-d <debug_level=0|1|2>
Example:
./uaputl.exe --help
“display help for uaputl”
This tool can be used to set/get uAP’s settings. To change AP settings, you might
need to issue “bss_stop” command to stop AP before making change and issue “bss_start”
command to restart the AP after making change.
Supported Commands
version
debug_level
sys_config [CONFIG_FILE_NAME]
bss_config [CONFIG_FILE_NAME]
sys_info
sys_reset
bss_start
bss_stop
sta_list
sta_deauth <STA_MAC_ADDRESS>
sta_deauth_ext <STA_MAC_ADDRESS> <REASON_CODE>
radioctrl [0|1]
txratecfg [l] [m] [n]
pscfg [MODE] [CTRL INACTTO MIN_SLEEP MAX_SLEEP MIN_AWAKE MAX_AWAKE]
sys_cfg_custom_ie [INDEX] [MASK] [IEBuffer]
hscfg [condition [[GPIO# [gap]]]]
hssetpara condition [[GPIO# [gap]]]
sys_cfg_wmm [qosinfo=]
[AC_BE AIFSN ECW_MAX ECW_MIN TX_OP]
[AC_BK AIFSN ECW_MAX ECW_MIN TX_OP]
[AC_VI AIFSN ECW_MAX ECW_MIN TX_OP]
[AC_VO AIFSN ECW_MAX ECW_MIN TX_OP]
sys_cfg_ap_wmm [0]
[AC_BE AIFSN ECW_MAX ECW_MIN TX_OP]
[AC_BK AIFSN ECW_MAX ECW_MIN TX_OP]
[AC_VI AIFSN ECW_MAX ECW_MIN TX_OP]
[AC_VO AIFSN ECW_MAX ECW_MIN TX_OP]
sys_cfg_11n [ENABLE] [HTCAP] [AMPDU] [TXBFCAP] [HT_MCS_MAP]
addbapara [timeout txwinsize rxwinsize txamsdu rxamsdu]
aggrpriotbl …
addbareject …
httxcfg [] []
deepsleep [MODE] [IDLE_TIME]
sdcmd52rw
The following commands can be issued individually for debug purpose
sys_cfg_ap_mac_address [AP_MAC_ADDRESS]
sys_cfg_ssid [SSID]
sys_cfg_beacon_period [BEACON_PERIOD]
sys_cfg_dtim_period [DTIM_PERIOD]
sys_cfg_channel [CHANNEL] [MODE]
sys_cfg_scan_channels [CHANNEL[.BAND]]
sys_cfg_rates [RATES]
sys_cfg_rates_ext [rates RATES] [mbrate RATE]
sys_cfg_tx_power [TX_POWER]
sys_cfg_bcast_ssid_ctl [1|0]
sys_cfg_preamble_ctl
sys_cfg_bss_status
sys_cfg_antenna_ctl [MODE]
sys_cfg_rts_threshold [RTS_THRESHOLD]
sys_cfg_frag_threshold [FRAG_THRESHOLD]
sys_cfg_rsn_replay_prot [1|0]
sys_cfg_mcbc_data_rate [MCBC_DATA_RATE]
sys_cfg_pkt_fwd_ctl [PKT_FWD_CTRL]
sys_cfg_sta_ageout_timer [STA_AGEOUT_TIMER]
sys_cfg_ps_sta_ageout_timer [PS_STA_AGEOUT_TIMER]
sys_cfg_auth [AUTH_MODE]
sys_cfg_protocol [PROTOCOL] [AKM_SUITE]
sys_cfg_pmf [MFPC] [MFPR]
sys_cfg_wep_key [INDEX ISDEFAULT KEY]
sys_cfg_cipher [PAIRWISE_CIPHER GROUP_CIPHER]
sys_cfg_pwk_cipher [] [PAIRWISE_CIPHER]
sys_cfg_gwk_cipher [GROUP_CIPHER]
sys_cfg_group_rekey_timer [GROUP_REKEY_TIMER]
sys_cfg_wpa_passphrase [PASSPHRASE]
sys_cfg_max_sta_num [STA_NUM]
sys_cfg_retry_limit [RETRY_LIMIT]
sys_cfg_sticky_tim_config [ENABLE] [ <STICKY_BIT_MASK>]
sys_cfg_sticky_tim_sta_mac_addr [CONTROL] [STA_MAC_ADDRESS]
sys_cfg_2040_coex [ENABLE]
sys_cfg_eapol_pwk_hsk [ ]
sys_cfg_eapol_gwk_hsk [ ]
sta_filter_table <MACADDRESS_LIST>
regrdwr [value]
memaccess [value]
rdeeprom
cfg_data [*.conf]
sys_cfg_80211d [state STATE] [country COUNTRY]
uap_stats
sys_cfg_restrict_client_mode [ [MODE_CONFIG]]
又是一大堆啊·,那么還是老樣子,常規(guī)功能使用
友情提示幾點(diǎn):自帶的conf文件MaxStaNum為10,但是如果按照自帶的conf文件使用,會(huì)報(bào)最大的sta的個(gè)數(shù)不能超過8個(gè)的錯(cuò)誤
另外一個(gè)需要注意的點(diǎn)是:我開始用bss_start一直報(bào)錯(cuò),后來查看代碼發(fā)現(xiàn)需要把uaputl的conf文件夾一起拿過去,這個(gè)是通過查看代碼得知
先來創(chuàng)建個(gè)熱點(diǎn)玩玩:
分為幾點(diǎn):
5.2.1 創(chuàng)建一個(gè)沒有密碼的熱點(diǎn)
步驟:
修改配置配置文件(配置文件太多,就不都列出來)
SSID=“IoT_lwos_wifi_none”
MaxStaNum=6
敲命令
./uaputl.exe bss_config ./config/uaputl_none.conf
./uaputl.exe bss_start
結(jié)果,會(huì)有類似log提示,并且手機(jī)提示正在獲取IP,代表連接成功,但是分配不到IP,因?yàn)槲覀儧]弄dhcp server的部分,肯定是分配不到IP了,下一part講dhcpd的部分。
5.2.2創(chuàng)建一個(gè)WPA的熱點(diǎn)
步驟:
PS:在開始一個(gè)新的熱點(diǎn)之前,需要敲bss_stop指令
1)修改配置配置文件(配置文件太多,就不都列出來)
SSID=“IoT_lwos_wifi_wpa”
MaxStaNum=6
Protocol=8
PwkCipherWPA=12
GwkCipher=4
PSK=“12345678”
2)敲命令
./uaputl.exe bss_config ./config/uaputl_wpa.conf
./uaputl.exe bss_start
3)結(jié)果,會(huì)有類似log提示,并且手機(jī)提示正在獲取IP,代表連接成功,但是分配不到IP,因?yàn)槲覀儧]弄dhcp server的部分,肯定是分配不到IP了,下一part講dhcpd的部分。
5.2.3 創(chuàng)建一個(gè)WPA2的熱點(diǎn)
步驟:
PS:在開始一個(gè)新的熱點(diǎn)之前,需要敲bss_stop指令
1)修改配置配置文件(配置文件太多,就不都列出來)
SSID=“IoT_lwos_wifi_wpa2”
MaxStaNum=6
Protocol=32
PwkCipherWPA2=8
GwkCipher=8
PSK=“12345678”
2)敲命令
./uaputl.exe bss_config ./config/uaputl_wpa2.conf
./uaputl.exe bss_start
3)結(jié)果,會(huì)有類似log提示,并且手機(jī)提示正在獲取IP,代表連接成功,但是分配不到IP,因?yàn)槲覀儧]弄dhcp server的部分,肯定是分配不到IP了,下一part講dhcpd的部分。
6 udhcpd的使用
udhcpd的使用很簡(jiǎn)單,步驟如下:
1)修改udhcpd 配置文件
我們可以看到默認(rèn)的已經(jīng)自帶了配置文件,所以我們大致修改下配置文件,修改完的配置文件見連接:xxxx
修改如下:
start 192.168.10.100
end 192.168.10.254
interface uap0
2)創(chuàng)建一個(gè)文件/var/lib/misc/udhcpd.leases
3)ifconfig uap0 up;ifconfig uap0 192.168.1.1 啟動(dòng)網(wǎng)卡并且分配AP的IP地址
4)啟動(dòng)dhcpd
./udhcpd ./udhcpd.conf
5)然后用手機(jī)連接并且PING一下看看
啊,爽了···所有的功能都已經(jīng)完成了,但是你沒發(fā)現(xiàn)我們開機(jī)要敲一堆命令很煩人嗎?我們要不要搞一個(gè)shell來玩玩,開機(jī)敲一下,所以的動(dòng)作都幫我完成,說搞咱就搞
7 SHELL整合STA的功能
此部分沒啥好特別說明的,就是把之前的命令用shell整合到一起,不再逐條敲,那我就直接貼出來shell供大家參考,僅供參考,因?yàn)槊總€(gè)人的路徑不同
7.1 使用wpa_supplicant做STA的功能
#!/bin/bash
insmod /lib/firmware/mrvl/mlan.ko
insmod /lib/firmware/mrvl/sd8xxx.ko
cd /mnt/mnt/
cd wpa_supplicant/
wpa_supplicant -B -c./conf/auth_wpa.conf -imlan0
sleep 2
cd …/dhcp/
./udhcpc -imlan0
7.2 使用mlanutl做STA的功能
#!/bin/bash
insmod /lib/firmware/mrvl/mlan.ko
insmod /lib/firmware/mrvl/sd8xxx.ko
cd /mnt/mnt/
./mlanutl mlan0 assocessid “IoT_lwos_wifi”
cd ./dhcp/
./udhcpc -imlan0
8 SHELL整合AP的功能
此部分同樣沒啥好特別說明的,就是把之前的命令用shell整合到一起,不再逐條敲,那我就直接貼出來shell供大家參考,僅供參考,因?yàn)槊總€(gè)人的路徑不同
#!/bin/bash
insmod /lib/firmware/mrvl/mlan.ko
insmod /lib/firmware/mrvl/sd8xxx.ko
cd /mnt/mnt/
./uaputl.exe bss_config ./config/uaputl_wpa2.conf
./uaputl.exe bss_start
cd ./dhcp/
mkdir /var/lib/misc
touch /var/lib/misc/udhcpd.leases
ifconfig uap0 up
ifconfig uap0 192.168.10.1
./udhcpd ./udhcpd.conf
總結(jié)
以上是生活随笔為你收集整理的Linux SDIO WIFI Marvell8801/Marvell88w8801(三) --- Linux驱动以及组件的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq浏览器打开word 技术原理_无需安
- 下一篇: Linux卸载搜狗输入法