Linux 学习记录2 驱动配置(WiFi rtl8723bs配置)

Linux 学习记录2 驱动配置

1. 驱动的使用:

1.1 加载驱动:

1.1.1 把驱动放入根文件目录
1.1.2 使用insmod或modprobe来加载驱动:
insmod 驱动
modprobe 驱动#对于一个第一次加载的驱动可以用depmod一下
       

1.2 查看挂载的驱动:

ismod

1.3 卸载驱动:

rmmod 模块名

1.4 查看设备号:

cat /proc/devices

WIFI驱动配置

1.配置主线内核

进入内核文件:

 make ARCH=arm licheepi_zero_defconfig
 make ARCH=arm menuconfig

找到divice drivers选项,然后找到staging drivers,配置为以下图片(按y选中,n取消):
在这里插入图片描述

2. 编译内核和模块:

编译内核:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 INSTALL_MOD_PATH=out modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 INSTALL_MOD_PATH=out modules_install
编译设备树: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

在这里插入图片描述

3. 配置根文件系统:

make menuconfig#配置根文件

进行以下配置:在这里插入图片描述

4.编译根文件系统:

sudo make

5.烧录:

按照上一篇文章进行烧录
完成后进行以下步骤:

1.将linux内核文件夹drivers/staging/rtl8723bs/内的 r8723bs.ko文件移动到根文件系统的root文件夹中。可直接打开usb进行操作。

2.去官网官网下载rtl8723bs_nic.bin文件放入到root文件夹下。

最终结果如下(那个sh文件是后面内容会讲解怎么创建):
在这里插入图片描述

启动Linux驱动:

连接数据线后,登录系统。
使用:ls命令看是否有以上两个文件

1.将rtl8723bs_nic.bin放入驱动文件夹:

mkdir -p  /lib/firmware/rtlwifi/   				#创建放置文件夹
cp rtl_8723bs_nic.bin  /lib/firmware/rtlwifi/   #拷贝至wifi驱动文件夹
insmod r8723bs.ko   							#加载驱动
ifconfig wlan0 up 								#开启驱动
ifconfig										#查看驱动

若打印出:

#  ls
r8723bs.ko         rtl8723bs_nic.bin  wifi_connect.sh
# insmod r8723bs.ko
[   21.427128] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
[   21.453689] RTL8723BS: module init start
[   21.457651] RTL8723BS: rtl8723bs v4.3.5.5_12290.20140916_BTCOEX20140507-4E40
[   21.464823] RTL8723BS: rtl8723bs BT-Coex version = BTCOEX20140507-4E40
[   21.472057] pnetdev = (ptrval)
[   21.506962] RTL8723BS: rtw_ndev_init(wlan0)
[   21.513071] RTL8723BS: module init ret =0
#
# ifconfig wlan0 up
[   49.117865] rtl8723bs: acquire FW from file:rtlwifi/rtl8723bs_nic.bin
[   49.277466] random: crng init done

# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  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)

wlan0     Link encap:Ethernet  HWaddr CC:79:CF:6F:67:EB
          UP BROADCAST 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)

则说明成功挂载WiFi成功。

2.配置连接WiFi:

1.修改interfaces文件:
vi  /etc/network/interfaces #使用vi编辑文件
vi基本操作:
使用i对该文件进行修改 ,然后按esc后,:w对文件进行保存, :q进行退出。
修改文件为以下内容:
# Configure Loopback
auto lo
iface lo inet loopback
# 增加wlan0描述
auto wlan0
iface wlan0 inet dhcp
2.修改wpa_supplicant.config文件,添加连接的wifi信息:
vi  /etc/wpa_supplicant.conf  #编辑文件
修改文件为以下内,修改wifi ssid和密码:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
    ssid="wifi_name" 
    scan_ssid=1
    key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
    pairwise=TKIP CCMP
    group=CCMP TKIP WEP104 WEP40
    psk="wifi_password"
    priority=5
}

3.创建一个socket通信的目录

mkdir -p /var/run/wpa_supplicant

4.连接WiFi

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

若提示以下,说明连接成功,如果不成功可以继续使用上面命令继续连接:

# [  880.338484] RTL8723BS: rtw_set_802_11_connect(wlan0)  fw_state = 0x00000008
[  880.723789] RTL8723BS: start auth
[  880.729711] RTL8723BS: auth success, start assoc
[  880.744700] RTL8723BS: rtw_cfg80211_indicate_connect(wlan0) BSS not found !!
[  880.751857] RTL8723BS: assoc success
[  880.760803] RTL8723BS: send eapol packet
[  880.778103] RTL8723BS: send eapol packet
[  880.786962] RTL8723BS: set pairwise key camid:4, addr:62:ad:f4:bb:60:26, kid:0, type:AES
[  880.797964] RTL8723BS: set group key camid:5, addr:62:ad:f4:bb:60:26, kid:1, type:AES

4.获取IP地址:

# udhcpc -i wlan0

结果如下:

# udhcpc -i wlan0
udhcpc: started, v1.29.2
udhcpc: sending discover
udhcpc: sending select for 172.20.10.13
udhcpc: lease of 172.20.10.13 obtained, lease time 85536
deleting routers
adding dns 172.20.10.1

5.可使用ping命令看是否网络连通

# ping www.baidu.com
PING www.baidu.com (183.232.231.174): 56 data bytes
64 bytes from 183.232.231.174: seq=0 ttl=55 time=39.431 ms
64 bytes from 183.232.231.174: seq=1 ttl=55 time=45.033 ms
64 bytes from 183.232.231.174: seq=2 ttl=55 time=43.003 ms
64 bytes from 183.232.231.174: seq=3 ttl=55 time=57.488 ms
64 bytes from 183.232.231.174: seq=4 ttl=55 time=38.929 ms

使用ctr+c可结束ping命令,以上结果说明网络连通。
--- www.baidu.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 38.929/44.776/57.488 ms
#

6.开机自动启动WiFi驱动:

可将以上命令放入一个sh命令中:
示例如下:

vi wifi_connect.sh  #创建一个sh命令

内容如下:
#!/bin/sh
insmod /root/r8723bs.ko
ifconfig wlan0 up
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
sleep 3s
udhcpc -i wlan0
echo "wifi_init finish!"

开机时直接使用 sh wifi_connect.sh 对wifi进行配置且连接。

使用iw库扫描WiFi:

1.iw库的交叉编译:

1.获取libnl库(编译依赖此库):

http://www.infradead.org/~tgr/libnl/files/

2.编译安装libnl库:
解压libnl库
tar -xvf libnl-3.2.25.tar.gz
cd libnl-3.2.25
mkdir work#创建一个文件夹存安装后的数据
./configure --host=arm-linux-gnueabihf --prefix=/root/home/libnl-3.2.25/work 
# host后为交叉编译器名称prefix后为路径
make
make install#成功后会产生以下文件夹

在这里插入图片描述

3.下载iw 5.3源文件:

https://mirrors.edge.kernel.org/pub/software/network/iw/

4.编译iw库:
tar -xvf iw-5.3.tar.gz 
cd iw-5.3/
#该地址为上面添加的work文件夹下的/lib/pkgconfig
export PKG_CONFIG_PATH=/root/home/libnl-3.2.25/work/lib/pkgconfig:$PKG_CONFIG_PATH
make CC=arm-linux-gnueabihf-gcc#交叉编译器 成功会在iw-4.0生成iw
5.将生成的iw放入板子的根文件目录中:

可以直接拖入根文件的root目录再使用:

cp iw /usr/bin #文件夹下
6.测试iw函数:
insmod r8723bs.ko
ifconfig wlan0 up
iwlist wlan0 scanning  #扫描WiFi

在这里插入图片描述

6.1 iw相关命令:
iw list #列出WIFI网卡的性能
iw dev wlan0 scan #扫描可连接WIFI AP
iw wlan0 connect dswei #连接到不加密的WIFI,WIFI名字为dswei
iw wlan0 connect iPhone keys d:0:1112222222 #连接WIFI,WIFI名为iPhone,d: default, 0: 第0个密码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值