LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 779|回复: 9

[ 杯具丫 ] Broadcom BCM4313 无线驱动问题

[复制链接]
发表于 2012-3-17 10:00:21 | 显示全部楼层 |阅读模式
我的网卡型号 BCM4313 信息:


  1. #  lspci -vnn | grep 14e4
  2. 03:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller [14e4:4727] (rev 01)
  3.         Subsystem: Broadcom Corporation Device [14e4:051a]
复制代码


根据 wiki 里面,内核自带的 brcmsmac 驱动是可用的


  1. # lsmod|grep brc
  2. brcmsmac              533512  0
  3. cordic                  1073  1 brcmsmac
  4. crc8                    1186  1 brcmsmac
  5. brcmutil                3617  1 brcmsmac
  6. mac80211              228527  2 b43,brcmsmac
  7. cfg80211              172260  3 mac80211,b43,brcmsmac
复制代码


没有安装 firmware 之前,系统是可以识别出无线网卡的


  1. # ip link
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 576 qdisc pfifo_fast state UP qlen 1000
  5.     link/ether 5c:26:0a:32:71:81 brd ff:ff:ff:ff:ff:ff
  6. 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
  7.     link/ether 88:25:2c:cf:6b:aa brd ff:ff:ff:ff:ff:ff
复制代码


之后我从 AUR 中安装 b43-firmware 固件,并在 /etc/rc.conf 添加开机自动加载 b43 驱动
重启机器后,b43 已经加载

1. 问题:内核里面的那个 brcmsmac 是驱动,那这个 b43 是什么,也算驱动吗?


  1. # lsmod |grep b43
  2. b43                   338777  0
  3. ssb                    48207  1 b43
  4. pcmcia                 36225  2 ssb,b43
  5. mmc_core               80910  2 ssb,b43
  6. mac80211              228527  2 b43,brcmsmac
  7. cfg80211              172260  3 mac80211,b43,brcmsmac
复制代码


配置 /etc/wpa_supplicant.conf
2. 问题:google 说,wpa_supplicant 不支持 WPA-PSK2/AES 加密方式,我使用 TKIP 方式


  1. ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
  2. update_config=1

  3. network={
  4.     ssid="ink"
  5.     proto=RSN
  6.     key_mgmt=WPA-PSK
  7.     pairwise=CCMP TKIP
  8.     group=CCMP TKIP
  9.     # psk="..."
  10.     # wpa_passphrase <ssid> <password>
  11.     psk=43708052...424
  12. }
复制代码


之后是连接步骤:

1. 激活 wlan0 无线网卡设备
2. 连接无线信号


  1. # ifconfig wlan0 up

  2. # wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
  3. Trying to associate with b0:48:7a:30:f6:a4 (SSID='ink' freq=2472 MHz)
  4. Authentication with b0:48:7a:30:f6:a4 timed out.
  5. Trying to associate with b0:48:7a:30:f6:a4 (SSID='ink' freq=2472 MHz)
  6. Authentication with b0:48:7a:30:f6:a4 timed out.
  7. Trying to associate with b0:48:7a:30:f6:a4 (SSID='ink' freq=2472 MHz)
复制代码


执行之后提示上面的信息,如果强制使用后台执行:


  1. # wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf

  2. # iwconfig
  3. lo        no wireless extensions.

  4. wlan0     IEEE 802.11bgn  ESSID:"ink"  
  5.           Mode:Managed  Frequency:2.472 GHz  Access Point: Not-Associated   
  6.           Tx-Power=19 dBm   
  7.           Retry  long limit:7   RTS thr:off   Fragment thr:off
  8.           Encryption key:off
  9.           Power Management:off

  10. eth0      no wireless extensions.
复制代码


无法分配到 dhcp 地址,不清楚上面的显示是否成功的连接上 ink 无线信号


  1. # dhcpcd wlan0
  2. dhcpcd[8124]: version 5.5.4 starting
  3. dhcpcd[8124]: wlan0: waiting for carrier
  4. dhcpcd[8124]: timed out
复制代码


----------------------------------------------------------------------------------------

使用 b43 firmware 不行,我又改用 broadcom-wl 驱动,按照 wiki 从 AUR 安装 broadcom-wl 驱动
并配置内核模块加载信息,之后重启正常加载


  1. # lsmod|grep wl
  2. wl                   2557323  0
  3. lib80211                3981  2 wl,lib80211_crypt_tkip
  4. cfg80211              172260  1 wl
复制代码


  1. # cat /etc/modprobe.d/broadcom-wl.conf
  2. blacklist b43
  3. blacklist bcma
  4. blacklist ssb
复制代码


重启之后,网卡的名称识别变,下面是使用 broadcom-wl 前后的对应关系:

eth0    --> eth1
wlan0   --> eth0

下面是连接过程


  1. # ip addr
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5.     inet6 ::1/128 scope host
  6.        valid_lft forever preferred_lft forever
  7. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
  8.     link/ether 88:25:2c:cf:6b:aa brd ff:ff:ff:ff:ff:ff
  9.     inet6 fe80::8a25:2cff:fecf:6baa/64 scope link
  10.        valid_lft forever preferred_lft forever
  11. 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
  12.     link/ether 5c:26:0a:32:71:81 brd ff:ff:ff:ff:ff:ff
复制代码


  1. # iwconfig
  2. lo        no wireless extensions.

  3. eth1      no wireless extensions.

  4. eth0      IEEE 802.11abg  ESSID:off/any  
  5.           Mode:Managed  Access Point: Not-Associated   
  6.           Retry  long limit:7   RTS thr:off   Fragment thr:off
  7.           Power Management:off
复制代码


  1. # sudo ifconfig eth0 up
复制代码


  1. # ifconfig
  2. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  metric 1
  3.         inet6 fe80::8a25:2cff:fecf:6baa  prefixlen 64  scopeid 0x20<link>
  4.         ether 88:25:2c:cf:6b:aa  txqueuelen 1000  (Ethernet)
  5.         RX packets 0  bytes 0 (0.0 B)
  6.         RX errors 0  dropped 0  overruns 0  frame 0
  7.         TX packets 0  bytes 0 (0.0 B)
  8.         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  9.         device interrupt 17
复制代码


我将原来的 wlan0 改为 eth0 之后,直接都没有任何输出


  1. # sudo wpa_supplicant -Dwext -i eth0 -c /etc/wpa_supplicant.conf
  2. ^CCTRL-EVENT-TERMINATING - signal 2 received
复制代码


使用 iwlist 根本就没有扫描自己的无线信号,但是我用手机,其他同学都是正常的


  1. # sudo iwlist eth0 scan|grep ink
  2.                    ESSID:"TP-LINK_CA95C6"
  3.                    ESSID:"TP-LINK_46C38E"
复制代码


不知各位是否有用 BCM4313 无线网卡的,请问你们的无线是采用那种方式连接的
发表于 2012-3-17 13:13:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-3-17 13:41:56 | 显示全部楼层
1) Broadcom BCM4313 要用 brcmsmac 驱动(内核自带),我用的 z470 也是这个芯片

2) 那个什么 wl 或 b43 不能用(好象在 archlinux bbs 看到过)

3) 这是我的 /etc/wpa_supplicant.conf:
  1. ctrl_interface=/var/run/wpa_supplicant
  2. ctrl_interface_group=wheel
  3. network={
  4.         ssid="myssid-3.3"
  5.         psk=**************************
  6.         proto=RSN
  7.         key_mgmt=WPA-PSK
  8.         pairwise=CCMP
  9.         group=CCMP
  10. #        pairwise=CCMP TKIP
  11. #        group=CCMP TKIP
  12. }
复制代码

4) 启动无线连接的脚本:
  1. ip link set wlan0 up
  2. wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
  3. dhcpcd wlan0
  4. wpa_gui &
复制代码
wpa_gui 来自包 wpa_supplicant_gui (要把 用户名 加入 wheel 才能正常使用 wpa_gui )
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-17 15:00:56 | 显示全部楼层
@jouyouyun 我现在的 kernel 是  3.2.9-1-ARCH

其中我没有找到:

# modinfo bcma
ERROR: Module bcma not found.

现在 modprobe -l 参数 -l 没有了,没法查询是否有这个模块?

  1. # cat /etc/modprobe.d/modprobe.conf
  2. blacklist b43
  3. blacklist bcma
  4. blacklist acer_wmi
复制代码

@nat 兄,我的路由器使用的 WPA-PSK2/TKIP 协议,不知道你用的什么?
我试了你的配置文件,不知道你用的是什么协议,好像没有连接上
我的配置文件,在我上一次升级之前,是可以使用 wpa_supplicant 连接的
之后好久没有用无线,update 之后就连不上了

谢谢两位兄台!
回复 支持 反对

使用道具 举报

发表于 2012-3-17 22:03:36 | 显示全部楼层
路由器:

  1. WPA-PSK/WPA2-PSK

  2. 认证类型:自动
  3. 加密算法:AES
  4. PSK密码:***
  5. 组密钥更新周期:86400
复制代码

我注释掉 TKIP 就是看看路由设为 AES 是否可用,结果是可用。


你的情况可能是模块冲突,导致没有使用 brcmsmac 模块的结果
试试 google "brcmsmac conflict"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-17 23:02:18 | 显示全部楼层
@nat 兄,你就只使用了内核已有的 brcmsmac ,没有再额外安装 其他 firmware 了?
那我把从 AUR 里面安装的 b43-firmware 和 broadcom-wl 卸下载掉,试试看!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-17 23:23:37 | 显示全部楼层
@nat 兄,我卸载了所有无关 firmware 驱动,只使用 kernel 自带的 brcmsmac 模块
  1. # lsmod|grep brcm
  2. brcmsmac              533512  0
  3. cordic                  1073  1 brcmsmac
  4. crc8                    1186  1 brcmsmac
  5. brcmutil                3617  1 brcmsmac
  6. mac80211              228527  1 brcmsmac
  7. cfg80211              172260  2 mac80211,brcmsmac
复制代码

之后 wpa_supplicant 还是无法连接到无线
  1. # ifconfig wlan0
  2. wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500  metric 1
  3.         ether 88:25:2c:cf:6b:aa  txqueuelen 1000  (Ethernet)
  4.         RX packets 0  bytes 0 (0.0 B)
  5.         RX errors 0  dropped 0  overruns 0  frame 0
  6.         TX packets 0  bytes 0 (0.0 B)
  7.         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
复制代码
  1. # iwconfig
  2. lo        no wireless extensions.
  3. wlan0     IEEE 802.11bgn  ESSID:"ink"  
  4.           Mode:Managed  Frequency:2.472 GHz  Access Point: Not-Associated   
  5.           Tx-Power=19 dBm   
  6.           Retry  long limit:7   RTS thr:off   Fragment thr:off
  7.           Encryption key:off
  8.           Power Management:off
  9. eth0      no wireless extensions.
复制代码
  1. # wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
  2. Trying to associate with b0:48:7a:30:f6:a4 (SSID='ink' freq=2472 MHz)
  3. Authentication with b0:48:7a:30:f6:a4 timed out.
  4. Trying to associate with b0:48:7a:30:f6:a4 (SSID='ink' freq=2472 MHz)
  5. ^CCTRL-EVENT-TERMINATING - signal 2 received
复制代码

这段是在 /var/log/messages.log 找到的日志信息
  1. kernel: [   95.688524] sd 4:0:0:0: [sdb] Test WP failed, assume Write Enabled
  2. kernel: [   98.625022] ADDRCONF(NETDEV_UP): wlan0: link is not ready
  3. kernel: [  146.888503] sd 4:0:0:0: [sdb] Test WP failed, assume Write Enabled
  4. kernel: [  164.733428] ------------[ cut here ]------------
  5. kernel: [  164.733453] WARNING: at drivers/net/wireless/brcm80211/brcmsmac/main.c:8234 brcms_c_wait_for_tx_completion+0x99/0xb0 [brcmsmac]()
  6. kernel: [  164.733457] Hardware name: Inspiron 1120   
  7. kernel: [  164.733460] Modules linked in: arc4 uvcvideo videodev v4l2_compat_ioctl32 media uas ums_realtek usb_storage btusb bluetooth usbhid brcmsmac radeon cordic snd_hda_codec_hdmi i2c_algo_bit hid drm_kms_helper joydev ttm snd_hda_codec_realtek crc8 brcmutil mac80211 drm snd_hda_intel shpchp cfg80211 snd_hda_codec snd_hwdep snd_pcm snd_page_alloc snd_timer snd i2c_piix4 dell_laptop dell_wmi ohci_hcd edac_mce_amd ehci_hcd serio_raw usbcore pcspkr evdev sparse_keymap k10temp soundcore atl1c sp5100_tco psmouse usb_common pci_hotplug wmi edac_core rfkill battery ac dcdbas button processor video lm90 i2c_core kvm_amd kvm fuse ext4 crc16 jbd2 mbcache dm_mod sd_mod ahci libahci libata scsi_mod
  8. kernel: [  164.733533] Pid: 109, comm: kworker/u:3 Not tainted 3.2.9-1-ARCH #1
  9. kernel: [  164.733537] Call Trace:
  10. kernel: [  164.733547]  [<ffffffff810660af>] warn_slowpath_common+0x7f/0xc0
  11. kernel: [  164.733552]  [<ffffffff8106610a>] warn_slowpath_null+0x1a/0x20
  12. kernel: [  164.733563]  [<ffffffffa06e9179>] brcms_c_wait_for_tx_completion+0x99/0xb0 [brcmsmac]
  13. kernel: [  164.733572]  [<ffffffffa06db1bb>] brcms_ops_flush+0x3b/0x60 [brcmsmac]
  14. kernel: [  164.733585]  [<ffffffffa052e5d2>] __ieee80211_recalc_idle+0x202/0x240 [mac80211]
  15. kernel: [  164.733596]  [<ffffffffa052f4d3>] ieee80211_recalc_idle+0x33/0x60 [mac80211]
  16. kernel: [  164.733607]  [<ffffffffa052bc1f>] ieee80211_work_work+0x4df/0x1340 [mac80211]
  17. kernel: [  164.733614]  [<ffffffff81459dde>] ? __schedule+0x33e/0x980
  18. kernel: [  164.733620]  [<ffffffff81080312>] ? cwq_activate_first_delayed+0x52/0x150
  19. kernel: [  164.733630]  [<ffffffffa052b740>] ? free_work+0x20/0x20 [mac80211]
  20. kernel: [  164.733636]  [<ffffffff81082a66>] process_one_work+0x116/0x4d0
  21. kernel: [  164.733641]  [<ffffffff810833fe>] worker_thread+0x15e/0x350
  22. kernel: [  164.733646]  [<ffffffff810832a0>] ? manage_workers.isra.29+0x230/0x230
  23. kernel: [  164.733651]  [<ffffffff8108843c>] kthread+0x8c/0xa0
  24. kernel: [  164.733656]  [<ffffffff8145feb4>] kernel_thread_helper+0x4/0x10
  25. kernel: [  164.733661]  [<ffffffff810883b0>] ? kthread_worker_fn+0x190/0x190
  26. kernel: [  164.733666]  [<ffffffff8145feb0>] ? gs_change+0x13/0x13
  27. kernel: [  164.733669] ---[ end trace b1e449d1106ceb4f ]---
  28. dhcpcd[1472]: version 5.5.4 starting
  29. dhcpcd[1472]: wlan0: waiting for carrier
  30. kernel: [  198.088477] sd 4:0:0:0: [sdb] Test WP failed, assume Write Enabled
  31. kernel: [  249.288451] sd 4:0:0:0: [sdb] Test WP failed, assume Write Enabled
复制代码

@nat 兄

1. 你就只是用内核默认的 brcmsmac 模块,没有再安装过第三方的 firmware
2. 你使用的内核也是这个吗?:
  1. Linux king-netbook 3.2.9-1-ARCH #1 SMP PREEMPT Thu Mar 1 09:31:13 CET 2012 x86_64
  2. AMD Athlon(tm) II Neo K345 Dual-Core Processor AuthenticAMD GNU/Linux
复制代码

关于 broadcom conflict 好像没有搜到有关解决方案的,回头我再仔细搜搜
现有的可行方案我都试了一下,貌似都没有解决问题


谢谢!
回复 支持 反对

使用道具 举报

发表于 2012-3-18 10:34:44 | 显示全部楼层
1) 查看设备所用驱动:
  1. $ lspci -vnn
  2. ......
  3. 06:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller [14e4:4727] (rev 01)
  4.         Subsystem: Broadcom Corporation Device [14e4:051b]
  5.         Flags: bus master, fast devsel, latency 0, IRQ 18
  6.         Memory at e8100000 (64-bit, non-prefetchable) [size=16K]
  7.         Capabilities: <access denied>
  8.         Kernel driver in use: brcmsmac
复制代码
看最后一行,是使用 brcmsmac 驱动


2) 我应该没有安装过第三方的 firmware

3)
  1. $ uname -a
  2. Linux cnb 3.2.11-1-ARCH #1 SMP PREEMPT Thu Mar 15 09:19:02 CET 2012 x86_64 Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz GenuineIntel GNU/Linux
复制代码

4) 我用 www.google.com/ncr 搜索 brcmsmac conflict archlinux 看到很多关于 conflict 的文章,这个问题应该很多人碰到
如没有这样搜过也试试:brcmsmac 冲突

5) 其它
  1. [url]https://wiki.archlinux.org/index.php/Wireless_Setup[/url]
  2. [url]https://wiki.archlinux.org/index.php/Broadcom_wireless[/url]
  3. [url]http://www.broadcom.com/docs/linux_sta/README.txt[/url]
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-19 22:16:50 | 显示全部楼层
dmeg 里面有这些信息,但是启动之后,连接无线网络过程中,就没有再报这些信息了
不知弟是否仅仅是开机初期的一些提示?
  1. · dmesg |grep brcm
  2. [    5.760790] brcmsmac 0000:03:00.0: bus 3 slot 0 func 0 irq 10
  3. [    5.760842] brcmsmac 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
  4. [    5.760850] brcmsmac 0000:03:00.0: setting latency timer to 64
  5. [   84.065121] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
  6. [   84.065128] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
  7. [   84.065616] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
复制代码

卸载 wl 和 b43 驱动后,我用 lspci -vnn 用的也是 brcmsmac 驱动

google brcmsmac 冲突 ,在 rc.conf 里面添加 brcmsmac:
  1. MODULES=(fuse brcmsmac)
复制代码

只是解决了开机 udev 超时问题:

其中在连接过程一直有条:
  1. kernel: [  249.288451] sd 4:0:0:0: [sdb] Test WP failed, assume Write Enabled
复制代码

我没有 sdb 不知这条信息是否有关?其他的真的没什么醒目的错误,该有的都已经在上面罗列了

兄台,你的无线配置过程,有遇到 conflict 冲突问题吗?

谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-19 23:08:12 | 显示全部楼层
https://bbs.archlinux.org/viewtopic.php?id=135439

这个兄台,好像也有遇到 dmesg 和我类似的报错,但我试过了他的方法,下面有人说:
brcmsmac 会自己调用 linux-firmware  里面的 firmware ,所以无需额外安装 固件
wiki 里面针对 brcmsemac 好像也没有提及说额外安装 firmware 的!

现在,我真的是有些纠结丫!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表