<<linux下无线上网>>

2023-05-16

                    <<linux下无线上网>>
            Tags: linux,linux-tool

1. 为什么linux下无线不可用?

今天, 突然想用无线上网, 正要用iwconfig配置无线设置, 发现系统里根本就没有对应的
无线接口, 但在windows系统下, 无线却用得很是正常.

[scr wifi]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:24:54:9d:4e:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.139/24 brd 192.168.1.255 scope global eth0
    inet 10.3.1.4/24 brd 10.3.1.255 scope global eth0:0
3: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
    link/sit 0.0.0.0 brd 0.0.0.0

从"ip a"的输出来看, 并没有类似于wlan0的接口, 第一感觉应该是没有安装相应驱动.

验证一下:

[root ~]# iwconfig
lo        no wireless extensions.
eth0      no wireless extensions.
sit0      no wireless extensions.

确实, 这三接口都不支持无线, 这是对的.

[scr wifi]$ dmesg | grep wlan
[scr wifi]$ lspci -vnn
... ...
03:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g LP-PHY [14e4:4727] (rev 01)
        Subsystem: Askey Computer Corp. Device [144f:7179]
        Flags: bus master, fast devsel, latency 0, IRQ 16
07:00.0 Ethernet controller [0200]: Marvell Technology Group Ltd. 88E8059 PCI-E Gigabit Ethernet Controller [11ab:4381] (rev 11)
        Subsystem: Samsung Electronics Co Ltd Device [144d:c551]
        Flags: bus master, fast devsel, latency 0, IRQ 45
        Memory at fc800000 (64-bit, non-prefetchable) [size=16K]
        I/O ports at 5000 [size=256]
        [virtual] Expansion ROM at fc400000 [disabled] [size=128K]
        Capabilities: <access denied>
        Kernel driver in use: sky2
        Kernel modules: sky2
... ...

从"lspci -vnn"的输出, 终于可以确定是没有安装无线驱动, 因为"Broadcom
Corporation BCM4313 802.11b/g LP-PHY" 没有对应的"kernel driver"等. 好吧, 下面
我们把驱动安装上!

"Ethernet controller"是以态网, 就是有有线网络.


2. Broadcom Corporation BCM4313 802.11b/g LP-PHY 对应的驱动是什么? 在那下载?

Broadcom Corporation BCM4313 802.11b/g LP-PHY 对应的驱动是什么? 这我也不知道,
不过这好办, google一下就ok了. 最终找到了一个非常靠普的:
http://www.broadcom.com/support/802.11/linux_sta.php , 该网页上有两个驱动包, 一
个是32位的, 另一个是64位; 但这一驱动合适我的机子吗?  "README"文件
(http://www.broadcom.com/docs/linux_sta/README.txt)就是回答这一问题的根据了.


根据README, 先检查一下, 我机子上的无线网卡是否被这一驱动包支持:

[scr wifi]$ pwd
// To find the Device ID's of Broadcom cards on your machines do:
[scr wifi]$ lspci -n | grep 14e4
03:00.0 0280: 14e4:4727 (rev 01)

对比了一下, 4727确实是支持的, 下面的工作就是把驱动包下载下来, 然后按README一步
一步进行就OK了. 不过对于fedora没这个必要, 因为在已提供了对应的yum源.


3. 安装驱动(fedora版)

[root wifi]$ pwd
// 安装相应的yum源
[root wifi]$ rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
// 安装驱动
[root wifi]$ yum -y install kmod-wl


完成后, 我们再验证一下是否已成功安装:

[scr wifi]$ iwconfig
lo        no wireless extensions.
eth0      no wireless extensions.
eth1      IEEE 802.11  Nickname:""
          Access Point: Not-Associated
          Link Quality:2  Signal level:183  Noise level:162
          Rx invalid nwid:0  invalid crypt:0  invalid misc:0
sit0      no wireless extensions.

多了一下"eth1", 是"IEEE 802.11"的, 说明安装已成功. 这命名比较奇怪, linux下无线
接口不应该是"wlanX"吗...


再验证一下:
[scr wifi]$ lspci -vnn
... ...
03:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g LP-PHY [14e4:4727] (rev 01)
        Subsystem: Askey Computer Corp. Device [144f:7179]
        Flags: bus master, fast devsel, latency 0, IRQ 16
         Memory at fc700000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: <access denied>
        Kernel driver in use: wl
        Kernel modules: wl
07:00.0 Ethernet controller [0200]: Marvell Technology Group Ltd. 88E8059 PCI-E Gigabit Ethernet Controller [11ab:4381] (rev 11)
        Subsystem: Samsung Electronics Co Ltd Device [144d:c551]
        Flags: bus master, fast devsel, latency 0, IRQ 45
        Memory at fc800000 (64-bit, non-prefetchable) [size=16K]
        I/O ports at 5000 [size=256]
        [virtual] Expansion ROM at fc400000 [disabled] [size=128K]
        Capabilities: <access denied>
        Kernel driver in use: sky2
        Kernel modules: sky2
... ...

可以看到, 对应的驱动(wl)已经安装上了.


4. 配置无线网络

4.1 用 iwconfig 和 iwlist

先扫一下, 看看都有什么AP可用:
[root ~]# iwlist eth1 scanning
eth1      Scan completed :
          Cell 01 - Address: 5C:63:BF:40:6B:1E
                    ESSID:"hellome"
                    Mode:Managed
                    Frequency:2.437 GHz (Channel 6)
                    Quality:2/5  Signal level:-71 dBm  Noise level:-95 dBm
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s

有一个, ESSID是"hellome", 正是我自己的路由器, 对应密码是"7878787878", PSK加密.

设置要连接到的AP, 和密码:
[root ~]# iwconfig eth1 essid 'hellome'
[root ~]# iwconfig eth1 key 7878787878
Error for wireless request "Set Encode" (8B2A) :
    SET failed on device eth1 ; Invalid argument.

设置essid没任何问题, 但设置key却不行! google一下, 有网友说是 iwconfig 工具不支
持PSK加密方式, 无奈只能用别的了.


4.2 用 wpa_supplicant

wpa_supplicant是一个用于管理无线网络的工具包, 很是好用, 它可以通过命令行的方式
来设置, 也可以通过读取配置文件的方式.


先新建或修改一下配置文件:

[root ~]# vi /etc/wpa_supplicant/wpa_supplicant.conf
# 可有可无, 没有的话无法用wpa_cli terminate来关闭wpa_supplicant
ctrl_interface=/var/run/wpa_supplicant
# 确保只有root用户能读取WPA的配置, 可有可无, 尤其是在嵌入式设备上
ctrl_interface_group=0
# 使用wpa_supplicant来扫描和选择AP, 也可以设置成0或2, 但只有1才能正确工作
ap_scan=1
network={
   ssid="hellome"       # AP的名字
   psk="7878787878"     # AP的key
}


设置IP并运行wpa_supplicant:

[root ~]# pwd
// 起用eth1
[root ~]# ifconfig eth1 up
// 设置ip地址
[root ~]# ifconfig eth1 192.168.1.156
// ## 运行 wpa_supplicant :
// # // -B 代表后台运行
// # // -Dwext 代表网卡芯片是wext
// # // -ieth1 代表使用设备eth1
// # // -c 指定配置文件
[root ~]# wpa_supplicant -B -Dwext -ieth1 -c/etc/wpa_supplicant/wpa_supplicant.conf


测试一下, 网络是否已连通(192.168.1.1是我的路由器的ip):

[root ~]# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
 64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=1.74 ms
 64 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=1.58 ms
 64 bytes from 192.168.1.1: icmp_req=3 ttl=64 time=1.98 ms
^C

OK! 没问题, 能连上路由器了, 现试一下biadu:

[root ~]# ping www.baidu.com
ping: unknown host www.baidu.com

居然不通! 有可能是没路由或没DNS服务:

[root ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
 172.16.198.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
 172.16.77.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet8

嗯! 真的是路由问题, 默认路由没有. 增加默认路由:

[root ~]# route add default gw 192.168.1.1
[root ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
 172.16.198.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
 172.16.77.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
 0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth1

再试:

[root ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.111.147) 56(84) bytes of data.
 64 bytes from 220.181.111.147: icmp_req=1 ttl=51 time=106 ms
 64 bytes from 220.181.111.147: icmp_req=2 ttl=51 time=104 ms
^C

OK!

可以把以上命令写到 /etc/rc.d/rc.local 文件下, 这样开机无线就自动配置好了.


5. reference

Broadcom Corporation 802.11 Linux STA driver
http://www.broadcom.com/support/802.11/linux_sta.php
http://www.broadcom.com/docs/linux_sta/README.txt

Linux WPA/WPA2/IEEE 802.1X Supplicant
http://hostap.epitest.fi/wpa_supplicant/

Example wpa_supplicant configuration file
http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf

wpa_supplicant使用笔记
http://hi.baidu.com/aberlee/blog/item/acb0a3d3ca0f64d9a9ec9af0.html/cmtid/76f0f80165cf8e081c958324
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

<<linux下无线上网>> 的相关文章

随机推荐

  • ROS常见问题及解决方法

    1 undefined reference to 96 tf TransformBroadcaster TransformBroadcaster 问题描述 xff1a CMakeFiles imu data dir src imu data
  • git的配置管理 配置用户名、邮箱

    git是现在常用的版本管理工具 xff0c 在使用git操作代码时 xff0c 可以保留操作痕迹 xff0c 查看是谁操作的 xff0c 这时候就需要提前设置git的操作用户信息 git配置文件 git的配置文件有三份 xff0c 按照优先
  • IOS学习之—— xib的用法--自定义View

    05 xib的用法 自定义View 自定义View xib的用法 项目名称 xff1a 设置文件头 滚动广告 五张图片 步骤 xff08 1 xff09 创建 新文件 userInterface 中的 empty 文件 取名CZHeader
  • CCF画图

    include lt stdio h gt struct rectStruct int a b int m n struct rectStruct rects 100 int rectS 61 0 int n int inYLine int
  • win10家庭版组策略添加及关闭自动更新

    Win10家庭版添加组策略和win10关闭系统自动更新的方法 看着别人能玩组策略 xff0c 可是自己输入pgedit msc却弹出无法找到的弹窗 xff0c 人生痛苦的事莫过如此啊 xff01 说到这里我又想吐槽Microsoft xff
  • 废旧笔记本改造记(1)---安装Linux系统和Docker

    以前贪便宜 xff0c 买了腾讯云1核2G的云服务器 xff0c 现在发现这个真不够 xff0c 刚好今年买了一台新的笔记本 xff0c 今天就打算把我那台历尽7年风雨的戴尔笔记本电脑改造成为Linux系统 xff0c 一方面是为了之后练习
  • git常用命令

    git基本概念 工作区 xff1a 仓库的目录 工作区是独立于各个分支的 暂存区 xff1a 数据暂时存放的区域 xff0c 类似于工作区写入版本库前的缓存区 暂存区是独立于各个分支的 版本库 xff1a 存放所有已经提交到本地仓库的代码版
  • Ubuntu 18.04/20.04 xrdp远程桌面连接

    搞了一晚上vnc 各种vnc xff0c 连上之后就是白屏 xff0c 最后换xrdp了 xff0c 参考了下面这篇文章 xff0c https blog csdn net qq 25556149 article details 82216
  • 如何查看firefox的cookie IE的cookie

    一查看firefox的cookie 首先 firexfox的cookie的文件存放不像ie那么如容易找到 xff0c 而且里面的内容也不一般普通编辑器能查看的 文件存放位置 xff0c 一般WIN XP系统的FF cookie存放于 xff
  • ffmpeg 带alpha透明层的视频编码

    png编码 可以封装为 mp4 mov等 ffmpeg f image2 r 25 i input d png vf fps span class token operator 61 span 25 vcodec png output mo
  • Golang实现选择排序

    64 Golang Golang实现选择排序 选择排序 xff08 Selection sort xff09 是一种简单直观的排序算法 它的工作原理如下 首先在未排序序列中找到最小 xff08 大 xff09 元素 xff0c 存放到排序序
  • Docker方式启动tomcat,访问首页出现404错误

    1 使用命令 xff1a docker pull tomcat 从阿里云上下载一个latest版本的tomcat 版本是从阿里云上拉下的 8 5 50 xff0c 运行镜像 xff0c 进行相关网络端口映射 xff0c 如下命令 xff1a
  • 批量创建txt文件

    1 创建txt文档如 xff1a 123 txt 2 打开文档 123 txt 3 复制如下内容保存至123 txt 64 echo off for L x in 1 1 10 do 64 echo x gt x txt 4 重命名文件12
  • anime4k 在真机租用上的应用尝试

    技术调研 anime4k是为动画图片设计的超分辨率提升算法 xff0c 并且在GPU上能达到个位数毫秒级延迟 https github com bloc97 Anime4K 1 1 高清图片 61 低清图片 43 残差 2 残差的边缘越细
  • python调用pytesseract识别某网站的验证码(实战项目)

    一 首先安装 tesseract ocr setup 4 00 00dev exe 下载地址 链接 xff1a https pan baidu com s 1PFIrfNeUjmrXlUABS8SquA 提取码 xff1a dctm 1 直
  • 基于python中jieba包的详细使用介绍

    一 xff0c jieba的介绍 jieba 是目前表现较为不错的 Python 中文分词组件 xff0c 它主要有以下特性 xff1a 支持四种分词模式 xff1a 精确模式全模式搜索引擎模式paddle模式 支持繁体分词 支持自定义词典
  • CentOS/Ubuntu 等操作系统 libssl.so.10/libcrypto.so.10 缺失问题

    经常在使用某些软件时调用 openssl 库 xff0c 出现库文件缺失问题 xff0c 下面执行步骤可以手工编译你所需要的 so 文件 xff0c 供使用 下载 openssl 源码 xff1a 下载地址 https www openss
  • Django 中 Model 生成数据库表、数据库表生成 Model

    记录一下 一 由Model生成表1 生成迁移文件 xff08 全局 xff09 2 执行迁移 xff08 全局 xff09 3 生成指定app的迁移文件4 执行指定app的迁移文件 二 由表反向生成Model5 根据设置的数据库中的表 xf
  • 阿里云如何降级(安装CentOS5.11)?

    CentOS 5 在2017 03月已经停止支持 xff0c 目前的腾讯云阿里云CentOS也早已没有5系的身影了 xff0c 7系以上搭建dxf会出现内核崩溃的问题 xff0c 所以想在云服务器上搭建DXF真没有办法嘛 xff1f 办法还
  • <<linux下无线上网>>

    lt lt linux下无线上网 gt gt Tags linux linux tool 1 为什么linux下无线不可用 今天 突然想用无线上网 正要用iwconfig配置无线设置 发现系统里根本就没有对应的 无线接口 但在windows