linux 下wifi 功能的实现

一、嵌入式linux四件套配置

1、网卡选型的依据:

a.网卡不能乱选,否则没戏。网卡的依据是,kernel的menuconfig -> device drivers -> network device support -> wireless lan -> 一堆驱动,however,这还没有结束;

b.buildroot -> menuconfig -> target packet -> hardware handling -> *** firmwares -> linux-firmware -> wifi firmwares -> 一堆驱动的bin。

# 这些网卡商都十分淫荡,在官网上放着10年前的固件,但是却给这些软件巨头发放最新的驱动,而且还不开源,嗞嗞。。

# 接下来是开启一些功能

2、开启内核rfkill功能

menuconfig -> networking support -> rf switch subsystem support

3、开启kernel和buildroot的驱动支持

a、就是第一步的那两个地方,然后:

b、Networking support  -> Networking options ->

<*> Packet socket

[*]   NETLINK: mmapped IO

[*]     IP: DHCP support

[*]     IP: BOOTP support

[*]     IP: RARP support

[*] Network packet filtering (replaces ipchains)    //添加,后面子选项可不选,配置CONFIG_NETFILTER

4、buildroot软件包设置

buildroot -> menuconfig -> target packet -> network applications

选择hostapd,iw,wireless tools,wpa_supplicant(注意全选)

5、然而还没有结束

buildroot -> busybox-menuconfig -> networking utilities -> udhcpd, udhcpc

嗯,telnet困难症的朋友,你们现在可以脱离苦海了,把telnetd也选上去吧

# 这个时候,应该就能顺利启动网卡了,需要验证一下/sys/class/net/wlan0里面有没有phy80211这个东西,如果没有,说明驱动安装失败。

# 如果是网上找到的开源驱动,并且你不需要开AP,那么即使没有phy80211也能够上网,详见附一

# 如果你的网卡是usb的,而且比较水,那么网卡有时候会死机,这个时候你怎么搞,它都不会再鸟你了,这个时候,嗯,抽出来,再插进去  = =..

二、应用程序配置(client篇)

1、ifconfig wlan0 up

2、情况一:要连接的AP没有密码

iw dev wlan0 connect "Guest hi-T"

udhcpc -i wlan0

# 然后可以用ping了

# 经过使用,Guest的信号还是不错的,丢包率只有10%上下,udhcpc找ip的速度也是非常快的。

3、情况二:要连接的AP使用WPA加密

需要使用wpa_supplicant

a、创建文件/etc/wpa_supplicant.conf,如果是在buildroot把这个包打上去的,那么应该本来就有这个文件;

b、编辑文件:/etc/wpa_supplicant.conf:

ctrl_interface=/var/run/wpa_

ap_scan=1 //必须要这一句,这是导演安排滴

network={

ssid="zhd-1"                 # 这是AP的名字

psk="123456789"        # 这是AP的密码

}

保存退出。

c、wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant

-D 表示驱动程序; -i 表示网卡; -c 表示配置文件

如果看到CTRL-EVENT-CONNECTED的debug输出,证明配置是对的。

如果看到 pre-shared key maybe incorrect,并且持续不断出现,表示密码可能是错的。

如果看到其他的信息,有可能是配置文件不完整,甚至是驱动程序本身也是不完整的。

d、CTRL-EVENT-CONNECTED之后一段时间内,如果没有任何输出,证明连接稳定,可以进行下一步:

wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant -B,让wpa_supplicant常驻在后台,控制网卡

处于client模式;

e、udhcpc -i wlan0, 获取ip

f、用完后,wpa_cli -i wlan0 terminate,退出wpa_supplicant,并停止wlan0

# 使用 zhd-1 测试带密码wifi,请务必保持耐心,不要随便 ^C ,请久等。。(ping的丢包率在40%以上。。。)

三、应用程序配置(AP篇)

1、sh: iw list

a. 找到Supported interface modes, 发现内有AP,lucky, go next;

b. No AP exist, oh shit! and fuck too!   You doomed, breake a window and just jump off, goodbye and never say hi ~~~

2、建立/etc/hostapd.conf,内容如下:

interface=wlan0    # 所用的网卡

driver=nl80211     # 所用的驱动

ssid=hostapd        # 热点名称

channel=6            # 也称为频段,wifi共有13个通道,其中1、6、11是最佳频道

hw_mode=g         # 可以为a、b、g

ignore_broadcast_ssid=0    # 广播ssid

auth_algs=1          # 1=WPA2,2=WEP

wpa=2                   # 1=WPA1, 2=WPA2, 3=BOTH

wpa_passphrase=12345678    # 密码

wpa_key_mgmt=WPA-PSK    # 加密方式

wpa_pairwise=TKIP    # 802.11g 加密算法

rsn_pairwise=CCMP    # 802.11i 加密算法

3、hostapd -d /etc/hostapd.conf

-d 表示debug模式,所以会出来一大片信息,仔细检查有没有发现file not found错误,一般是由于配置错误导致的,有时候也会是驱动的原因。这个时候用手机应该能够看到有一个叫hostapd的热点。。。

4、接下来,配置udhcpd,配置文件样本可以在buildroot/output/build/busybox***/examples/udhcpd/udhcpd.conf中找到,使用 cat udhcpd | grep ^\# -v 命令,查看默认的配置

5、那么,其实呢,这个东东是建立在有线网络的基础上的,并且要作为一个能够上网的路由器使用,而我们只需要互联通信就ok了,所以有很多东西是没有必要的,核心配置,只有如下的几条:

# 确定IP的范围

start    192.168.0.20

end     192.168.0.25

# 选定udhcpd的设备

interface    wlan0

option    subnet    255.255.255.0    # 子网掩码

option    router    192.168.0.1        # 网关(就是本机)

option    lease        86400                # 租约时间,其实就是该IP地址的生命周期,单位是秒,86400是一天

设置好了后,保存在/etc/udhcpd.conf;

6、hostapd /etc/hostapd.conf -B

ifconfig wlan0 192.168.0.1 netmask 255.255.255.0   # 注意,一定要和udhcpd.conf严格匹配

touch /var/lib/misc/udhcpd.leases

udhcpd -S /etc/udhcpd.conf

7、用手机再找到hostapd热点,连接,连接了之后,查看手机IP;

8、开发板:ping -I wlan0 手机ip, 如果有应答,就成功了。

附一、开源驱动的应用程序配置(仅client)

# 现在的驱动程序已不支持iwconfig,用iwconfig配置任何新版wlan驱动均会报错

1、ifconfig wlan0 up

2、iwconfig wlan0 scan  # 得到附近AP的列表

3、iwconfig wlan0 essid "zhd-1" key "123456789"

# 感想:脚本is very important,要加进系统的东西越来越多,不得不学着写了脚本,在buildroot编完后,还要再用脚本向rootfs中打进一大堆文件、修改一堆东西,要是手动完成的话,这得等到猴年马月啊。。。

时间: 2024-10-15 09:27:56

linux 下wifi 功能的实现的相关文章

Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析

SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈.可以实现用户主平台数据通过SDIO口到无线网络之间的转换.SDIO具有数据传输快,兼容SD.MMC接口等特点. 对于SDIO接口的wifi,首先,它是一个sdio的卡的设备.然后具备了wifi的功能.所以.注冊的时候还是先以sdio的卡的设备去注冊的. 然后检測到卡之后就要驱动他的wifi功能了.显然,他是用sdio的协议,通过发命令和数据来控制的.以

编程实现类似Linux下cp功能

MyCP的代码实现 一.题目要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件 java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字) 二.设计思路 此次的代码要求实现类似Linux下cp的功能.我们需要注意的以及考虑的细节有以下几点: 源文件和目标文件分属不同的

Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

转: http://blog.csdn.net/zqixiao_09/article/details/51146149 前面学习了SDIO接口的WiFi驱动,现在我们来学习一下USB接口的WiFi驱动,二者的区别在于接口不同.而USB接口的设备驱动,我们前面也有学习,比如USB摄像头驱动.USB鼠标驱动,同样都符合LinuxUSB驱动结构: USB设备驱动(字符设备.块设备.网络设备) | USB 核心 | USB主机控制器驱动 不同之处只是在于USB摄像头驱动是字符设备,而我们今天要学习的Wi

Linux 下wifi 驱动开发(一)—— WiFi基础知识解析

 一.WiFi相关基础概念 1.什么是wifi  我们看一下百度百科是如何定义的: Wi-Fi是一种可以将个人电脑.手持设备(如pad.手机)等终端以无线方式互相连接的技术,事实上它是一个高频无线电信号.[1]  无线保真是一个无线网络通信技术的品牌,由Wi-Fi联盟所持有.目的是改善基于IEEE 802.11标准的无线网路产品之间的互通性.有人把使用IEEE 802.11系列协议的局域网就称为无线保真.甚至把无线保真等同于无线网际网路(Wi-Fi是WLAN的重要组成部分). wifi 英文全称

小心公共wifi 之小白客带你走进黑客世界:kali linux下的无线攻击技术

本文标签: 黑客世界 wifi安全 无线攻击技术 公共wifi不安全 kali+linux 原文地址:http://whosmall.com/?post=460 我们常说公共wifi不安全,那么到底不安全在哪些地方呢?当不怀好意者和你同在一个wifi下,你的手机或者笔记本会被监听吗?除了上网被监视以外,还会产生什么不好的后果?介于小伙伴们对于wifi这一块比较感兴趣,在这篇文章里,就先为大家普及一下在公共wifi下究竟有多危险. 实验环境 一台装有kali linux的笔记本(模拟攻击者)ip地

【L】小米随身WiFi,Linux下AP热点驱动(开源)

前言 这是作者修改后的Linux下的小米随身WiFi驱动,支持Ap模式,开源,同时支持360随身WiFi二代 注意: 1.这个是Linux下的小米随身WiFi驱动,不是Window和MAC下 2.这个不是STA模式下的可当作无线网卡的驱动,是可当Ap热点模式的驱动 3.这个理论上也是支持360随身WiFi二代..(rtusb_dev_id.c 里面同样有360的id) 原由: 小米随身WiFi很好用,有Widnow和Mac的系统的驱动, 但是可怜不少Linux下的苦逼开发者,没有驱动就是没有..

[Kali_USB Live模式下网卡加载安装问题]针对ASUS X202E笔记本配置的本地Broadcom43142无线网卡启动并显示wifi功能

Thank you "kali75" for your time.Although the links didn't work for me because the "link to the patch file" was dead.However after this I googled and have found the following solution working for me.I'm telling it here because if someo

rlwrap: command not found和解决linux下sqlplus 提供浏览历史命令行的功能

rlwrap工具可以解决linux下sqlplus 提供浏览历史命令行的功能,和删除先前输入错误的字母等问题 1.安装 需要readline包 这个安装光盘就有 [[email protected] RedHat]# cd RPMS/[[email protected] RPMS]# rpm -Uvh readline*warning: readline-4.3-13.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60eerror: Failed

华为WiFi Pro E5771h-937在linux下使用usb连接

买了一个WiFi Pro E5771h-937无线路由,一直想在linux下使用,官方文档也没有linux下的说明,自己查找资料研究了一下,并测试成功. 在centos7下,直接运行如下modprobe rndis_host命令即可加载 rndis_host.ko和usbnet.ko驱动 然后使用ip a就可以看到usb网卡了 至于路由表,自己可以根据实际情况用route命令进行控制.