admin 管理员组文章数量: 1184232
1.背景
hx2@Ubantu:~/桌面/shell$ sh wifi-hard.sh
-e === Wi-Fi 硬件检测 ===
-e
[1] 检测 Wi-Fi 硬件...
-e ✓ 检测到 PCIe Wi-Fi 设备:
06:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4313 802.11bgn Wireless Network Adapter [14e4:4727] (rev 01)
Subsystem: Broadcom Inc. and subsidiaries BCM4313 802.11bgn Wireless Network Adapter [14e4:051b]
-e
[2] 检查驱动状态...
-e ✓ 已加载驱动: bcma-pci-bridge
-e 驱动信息:
modinfo: ERROR: Module bcma-pci-bridge not found.
-e
[3] 检查内核日志...
-e ✗ 发现内核错误:
[ 4.269655] EXT4-fs (sdb6): re-mounted. Opts: errors=remount-ro
[ 5.276410] ACPI: \_SB_.PCI0.GFX0: failed to evaluate _DSM
[ 5.369686] b43: probe of bcma0:1 failed with error -524
[ 5.476008] [Firmware Bug]: ACPI(PEGP) defines _DOD but not _DOS
[ 6.019850] brcmsmac bcma0:1 wlp6s0b1: renamed from wlan0
-e
[4] 检查固件文件...
-e ⚠ 未明确检测到固件加载记录。
-e
=== 检测结果 ===
-e ⚠ Wi-Fi 硬件存在问题,请检查驱动或固件。
hx2@Ubantu:~/桌面/shell$ 分析什么问题
2.分析问题
根据你的脚本输出,Wi-Fi 硬件(Broadcom BCM4313)已被识别,但存在 驱动加载失败 和 固件缺失 问题。以下是详细分析和解决方案:
问题诊断
1. 驱动加载错误
-
检测到的驱动:
bcma-pci-bridge(这是 PCI 桥接驱动,并非 Wi-Fi 驱动)。 -
内核错误:
plaintext
-
b43: probe of bcma0:1 failed with error -524
表明系统尝试加载
b43驱动但失败(错误码-524通常与固件缺失或兼容性有关)。
2. 固件未加载
-
脚本未检测到固件加载记录,说明系统缺少 Broadcom 所需的固件文件。
3. 实际生效的驱动
-
日志末尾显示
brcmsmac驱动已绑定网卡(wlp6s0b1),但可能因固件问题无法正常工作。
解决方案
步骤 1:安装正确的驱动和固件
Broadcom BCM4313 需要 b43 或 brcmsmac 驱动,但需手动安装固件:
bash
# 安装固件和驱动 sudo apt update sudo apt install firmware-b43-installer # 如果上述无效,尝试替代方案 sudo apt install firmware-b43legacy-installer # 旧版固件
步骤 2:卸载冲突驱动
bash
# 禁用可能导致冲突的驱动 sudo modprobe -r b43 brcmsmac bcma sudo modprobe brcmsmac # 重新加载驱动
步骤 3:检查驱动加载状态
bash
# 确认驱动是否正确加载 dmesg | grep -i "brcmsmac\|b43" lsmod | grep -i "brcmsmac\|b43"
步骤 4:禁用 Secure Boot(如有必要)
某些 Broadcom 驱动需关闭 Secure Boot:
bash
sudo mokutil --disable-validation
验证修复
-
重启后运行脚本,检查错误是否消失:
bash
-
sudo ./wifi-hard.sh
-
测试 Wi-Fi 功能:
bash
-
nmcli device wifi list
常见问题
-
如果
firmware-b43-installer无效:
Broadcom BCM4313 可能需要wl驱动(需从官方仓库安装):bash
-
sudo apt install broadcom-sta-dkms sudo modprobe wl
-
仍无法工作:
尝试在grub中禁用bcma模块:bash
-
# 编辑 /etc/default/grub,添加: GRUB_CMDLINE_LINUX_DEFAULT="modprobe.blacklist=bcma" sudo update-grub
总结
你的 Broadcom BCM4313 网卡因 固件缺失 和 驱动冲突 导致故障。
关键操作:
-
安装
firmware-b43-installer。 -
确保
brcmsmac驱动正确加载。 -
关闭 Secure Boot(如需)。
修复后若仍有问题,请提供 dmesg | grep -i "brcmsmac\|b43" 的完整输出进一步分析。
3.附录代码shell
#!/bin/bash
# 定义颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${YELLOW}=== Wi-Fi 硬件检测 ===${NC}"
# 1. 检查 Wi-Fi 硬件是否存在(PCIe 或 USB)
echo -e "\n${YELLOW}[1] 检测 Wi-Fi 硬件...${NC}"
WIFI_PCI=$(lspci -knn 2>/dev/null | grep -i "network\|wifi\|wireless")
WIFI_USB=$(lsusb 2>/dev/null | grep -i "network\|wifi\|wireless")
if [ -n "$WIFI_PCI" ]; then
echo -e "${GREEN}✓ 检测到 PCIe Wi-Fi 设备:${NC}"
echo "$WIFI_PCI"
elif [ -n "$WIFI_USB" ]; then
echo -e "${GREEN}✓ 检测到 USB Wi-Fi 设备:${NC}"
echo "$WIFI_USB"
else
echo -e "${RED}✗ 未检测到 Wi-Fi 硬件!可能原因:${NC}"
echo " - 硬件未连接或损坏"
echo " - BIOS 中禁用了 Wi-Fi"
echo " - 设备未被内核识别"
exit 1
fi
# 2. 检查 Wi-Fi 驱动是否加载
echo -e "\n${YELLOW}[2] 检查驱动状态...${NC}"
DRIVER=$(lspci -knn 2>/dev/null | grep -iA3 "network\|wifi\|wireless" | grep "Kernel driver" | awk '{print $NF}')
if [ -z "$DRIVER" ]; then
echo -e "${RED}✗ 未加载 Wi-Fi 驱动!${NC}"
echo -e "${YELLOW}尝试列出可用模块...${NC}"
lsmod | grep -i "wifi\|wireless\|iwlwifi\|ath\|rtl"
else
echo -e "${GREEN}✓ 已加载驱动:${NC} $DRIVER"
echo -e "驱动信息:"
modinfo "$DRIVER" | grep -E "description|version|firmware"
fi
# 3. 检查内核日志中的错误
echo -e "\n${YELLOW}[3] 检查内核日志...${NC}"
ERROR_LOG=$(dmesg 2>/dev/null | grep -i "wifi\|wlan\|firmware\|failed\|error" | tail -n 5)
if [ -n "$ERROR_LOG" ]; then
echo -e "${RED}✗ 发现内核错误:${NC}"
echo "$ERROR_LOG"
else
echo -e "${GREEN}✓ 内核日志未发现 Wi-Fi 相关错误。${NC}"
fi
# 4. 检查固件是否加载
echo -e "\n${YELLOW}[4] 检查固件文件...${NC}"
FIRMWARE=$(dmesg 2>/dev/null | grep -i "firmware\|loaded" | grep -i "wifi\|wlan")
if [ -n "$FIRMWARE" ]; then
echo -e "${GREEN}✓ 固件已加载:${NC}"
echo "$FIRMWARE" | tail -n 2
else
echo -e "${YELLOW}⚠ 未明确检测到固件加载记录。${NC}"
fi
# 5. 最终状态汇总
echo -e "\n${YELLOW}=== 检测结果 ===${NC}"
if [ -n "$WIFI_PCI" ] || [ -n "$WIFI_USB" ]; then
if [ -n "$DRIVER" ] && [ -z "$ERROR_LOG" ]; then
echo -e "${GREEN}✅ Wi-Fi 硬件状态正常!${NC}"
else
echo -e "${YELLOW}⚠ Wi-Fi 硬件存在问题,请检查驱动或固件。${NC}"
fi
else
echo -e "${RED}❌ Wi-Fi 硬件未识别!${NC}"
fi
版权声明:本文标题:Ubantu-wifi 日记3-wifi硬件模块 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1763599467a3253737.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论