日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux SDIO WIFI Marvell8801/Marvell88w8801(三) --- Linux驱动以及组件的使用

發布時間:2024/3/7 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux SDIO WIFI Marvell8801/Marvell88w8801(三) --- Linux驱动以及组件的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼工程的GITHUB連接:點進進入GITHUB倉庫
https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi

1.Linux SDIO WIFI Marvell8801/Marvell88w8801(一) — 代碼及文檔介紹
2. Linux SDIO WIFI Marvell8801/Marvell88w8801(二) — Marvell88w8801驅動編譯
3. Linux SDIO WIFI Marvell8801/Marvell88w8801(三) — Linux驅動以及組件的使用
4. Linux SDIO WIFI Marvell8801/Marvell88w8801(四) — Linux Wi-Fi架構
5. Linux SDIO WIFI Marvell8801/Marvell88w8801(五) — Linux SDIO API介紹
6. Linux SDIO WIFI Marvell8801/Marvell88w8801(六) — Marvell Linux Wi-Fi driver介紹-WIFI插入卡槽內發生的事情
7. Linux SDIO WIFI Marvell8801/Marvell88w8801(七) — Marvell Linux Wi-Fi driver初始化
8. Linux SDIO WIFI Marvell8801/Marvell88w8801(八) — Marvell Linux Wi-Fi driver 對接芯片上行下行接口介紹


關于Linux驅動以及組件的使用介紹主要分為以下圖示幾部分介紹

1)Marvell8801驅動使用,主要擴展介紹驅動的加載以及使用
2)Marvell驅動中APP mlanutl的編譯使用,主要對marvell官方自帶的驗證驅動的app做編譯使用說明
3)wpa_supplicant的使用介紹
4)Udhcpc的使用,由于wpa_supplicant只能連接熱點,不能主動向AP索要IP,此APP就是DHCP client
5)Marvell驅動中APP uaptul的編譯使用
6)Udhcpd的使用,主要是DHCP server的使用
7)SHELL整合STA的功能
8)SHELL整合AP的功能

1 Marvell88w8801驅動的使用

1.1驅動加載

在上一篇文章我們加載驅動方式只是用了:
insmod ./mlan.ko
insmod ./sd8xxx.ko
這種方法一下就是把STA,AP,WIFIDIRECT mode的interface都做出來,但是如果我們想要其中的某一個interface,那么看下面就對了
1)首先模式加載可以選擇,參數是drv_mode,默認是STA,UAP,WIFIDIRECT都有,所以有3個節點:mlan0,uap0,wfd0,這個driver mode的值見下面
The bit settings of drv_mode are,
Bit 0 : STA
Bit 1 : uAP
Bit 2 : WIFIDIRECT
The default drv_mode is 7.
舉一個例子:
insmod mlan.ko
insmod sd8xxx.ko drv_mode=1
這樣就是只設置了STA mode,這樣設置后就會發現只會有mlan0出現

其他參數如下,你們可以自己試下其他的:
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)運行時切換狀態
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)加載完畢驅動在 /proc/mwlan中會發現3個文件夾和一個文件,分別是mlan0,uap0,wfd0,config文件
不過文件夾要看你選擇什么模式加載,如果你選擇drv_mode 7就是三個
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.
此部分可以查看一些基本信息,你可以自動去看下,對我來說也就是掃一眼,對我來說沒有太大的作用,但是還是要列出來,萬一有想到想知道一個信息,直接先通過這里查看有沒有
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.
此部分可以縱覽一些運行情況,也就是debug信息,或者說是統計情況
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 調試SDIO CMD52

此部分是用于調試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

read會跳出read value (0x2) from func 0 reg 0x4

2 Marvell88w8801驅動中APP mlanutl的編譯&使用

2.1 mlanutl的編譯

分為幾個步驟:
1)修改mapp/mlanutl下的makefile
增加CC = arm-linux-gcc
2)在wlan_src下敲指令
make mapp/mlanutl
做完以上兩步就會提到mlanutl

2.2 mlanutl的常用功能使用

1)help指令
./mlanutl --help
會得到運行的格式:mlanutl […]
其中ifname:wireless network interface name, such as mlanX or uapX,我們是用的mlanutl,所以我們這部分填寫mlan0,cmd list自己敲下命令,有很多,我就不列舉,我只是會說明一些常用的指令
2)assocessid
人家文檔中說的很詳細了,我就不做累贅
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”

使用:連接一個open的ssid

獲取一下剛剛的proc的信息

分配IP并且ping,其實此部分可以通過udhcpc,但是用法后面再說

3)Deauth
從熱點斷線,執行下面命令就斷線了
./mlanutl mlan0 deauth
4)Scan
Scan的介紹還是比較多的,我給你說下最簡單的應用,詳細還是要你們自己看下
執行在termainal上敲命令:./mlanutl mlan0 setuserscan

3 wpa_supplicant的使用

以上是介紹了Marvell Linux wifi驅動的APP測試工具,那么現在我們也試著用下wpa_supplicant的工具,畢竟此工具比較通用,以后大部分的wifi驅動是可以用這個工具實現STA mode的加密認證的。
先從readme中看看是否有找到一些重要的信息
Wpa_supplicant一共生成三個工具:wpa_cli,wpa_supplicant,wpa_passphrase
主要介紹下前兩個:

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
看完這個,我們大概已經知道有用法的概念了
wpa_supplicant -B -cxxx.conf -iwlan0
2)配置文件,我們直接列出配置文件,然后再一個個驗證
沒有加密的配置文件
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 # 認證方式
# 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”
}
那么我們就一個個的驗證:
Open方式的驗證
wpa_supplicant -B -cxxx.conf -iwlan0
wpa_cli -iwlan0 status // 查看狀態
ifconfig wlan0 192.168.43.120
ping 192.168.43.120




其他的加密方式驗證方法以及命令都一樣,所以不再累贅

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按回車健就能進入,然后可以隨便輸入以上命令,輸去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

下面我們直接用交互模式說明一些常用的命令,其實和命令是一樣的道理
1)搜索:scan
scan_result

3)連接無密碼網絡
注意一下有幾點需要注意的點:
1)index id不是寫死的,是根據add_network返回的值
2)連接不成功很有可能是因為中英文輸入法造成,我開始在這里耗費了半個小時怎么都連接不成功,返現敲的命令沒錯,但是實際是錯的,有亂碼行為,怎么知道敲的是否對呢,這樣,拿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的使用

這個文章的邏輯很縝密啊,你覺得哪里不合理那么就會出現什么,哈哈,自己夸自己也是沒誰了,為什么說上面不太合理呢,因為你沒發現連接上,以后就沒有然后了,IP呢?只能手動分配,敲ifconfig命令(PS:也許有的手機你曾經敲過ifconfig后還是給你保留原IP),那么既然有上面的不合理我們就解決他,通過dhcp client的角色自動向dhcp server索要IP。
怎樣編譯已經在上篇文章說明了,再這里就不再提,只是說怎樣使用,命令行格式如下
-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
首先用之前我們先看下網卡的狀態以及是否有IP地址

執行完畢后我們發現變成了這樣

Udhcpc的使用還是比較簡單的

5 uaputl的使用

啊,慚愧啊,接著上篇,還是沒有用起來hostapd,所以用這個uaputl替代吧

5.1 uaputl的編譯

分為幾個步驟:
1)修改mapp/uaputl下的makefile
增加CC = arm-linux-gcc
2)在wlan_src下敲指令
make make mapp/uaputl
做完以上兩步就會提到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”

./uaputl.exe sys_config --help"display help for sys_config command"

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]]
又是一大堆啊·,那么還是老樣子,常規功能使用
友情提示幾點:自帶的conf文件MaxStaNum為10,但是如果按照自帶的conf文件使用,會報最大的sta的個數不能超過8個的錯誤
另外一個需要注意的點是:我開始用bss_start一直報錯,后來查看代碼發現需要把uaputl的conf文件夾一起拿過去,這個是通過查看代碼得知


先來創建個熱點玩玩:
分為幾點:
5.2.1 創建一個沒有密碼的熱點
步驟:
修改配置配置文件(配置文件太多,就不都列出來)
SSID=“IoT_lwos_wifi_none”
MaxStaNum=6
敲命令
./uaputl.exe bss_config ./config/uaputl_none.conf
./uaputl.exe bss_start
結果,會有類似log提示,并且手機提示正在獲取IP,代表連接成功,但是分配不到IP,因為我們沒弄dhcp server的部分,肯定是分配不到IP了,下一part講dhcpd的部分。


5.2.2創建一個WPA的熱點
步驟:
PS:在開始一個新的熱點之前,需要敲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)結果,會有類似log提示,并且手機提示正在獲取IP,代表連接成功,但是分配不到IP,因為我們沒弄dhcp server的部分,肯定是分配不到IP了,下一part講dhcpd的部分。

5.2.3 創建一個WPA2的熱點

步驟:
PS:在開始一個新的熱點之前,需要敲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)結果,會有類似log提示,并且手機提示正在獲取IP,代表連接成功,但是分配不到IP,因為我們沒弄dhcp server的部分,肯定是分配不到IP了,下一part講dhcpd的部分。

6 udhcpd的使用

udhcpd的使用很簡單,步驟如下:
1)修改udhcpd 配置文件
我們可以看到默認的已經自帶了配置文件,所以我們大致修改下配置文件,修改完的配置文件見連接:xxxx
修改如下:
start 192.168.10.100
end 192.168.10.254
interface uap0
2)創建一個文件/var/lib/misc/udhcpd.leases
3)ifconfig uap0 up;ifconfig uap0 192.168.1.1 啟動網卡并且分配AP的IP地址
4)啟動dhcpd
./udhcpd ./udhcpd.conf
5)然后用手機連接并且PING一下看看

啊,爽了···所有的功能都已經完成了,但是你沒發現我們開機要敲一堆命令很煩人嗎?我們要不要搞一個shell來玩玩,開機敲一下,所以的動作都幫我完成,說搞咱就搞

7 SHELL整合STA的功能

此部分沒啥好特別說明的,就是把之前的命令用shell整合到一起,不再逐條敲,那我就直接貼出來shell供大家參考,僅供參考,因為每個人的路徑不同

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供大家參考,僅供參考,因為每個人的路徑不同
#!/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

總結

以上是生活随笔為你收集整理的Linux SDIO WIFI Marvell8801/Marvell88w8801(三) --- Linux驱动以及组件的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。