wifi 配置 灵芯派

 

zmrobo@SmartPi:/etc/network$ ls -la /etc/wpa_supplicant/
总用量 48
drwxr-xr-x 2 root root 4096 2月 14 2019 .
drwxr-xr-x 112 root root 4096 12月 22 10:56 ..
-rwxr-xr-x 1 root root 937 2月 14 2019 action_wpa.sh
-rw-r--r-- 1 root root 25569 2月 14 2019 functions.sh
-rwxr-xr-x 1 root root 4696 2月 14 2019 ifupdown.sh

zmrobo@SmartPi:/etc/network$ sudo nmcli connection show
NAME UUID TYPE DEVICE
AC86U 1b55d89b-c0a3-4e06-9772-6d16c92b3290 wifi wlan0
zhixing_edu 55409393-d0e5-4bbd-82c8-79d7434b703d wifi --


zmrobo@SmartPi:/etc/network$ ls -la /etc/NetworkManager/system-connections/
总用量 16
drwxr-xr-x 2 root root 4096 12月 23 13:37 .
drwxr-xr-x 7 root root 4096 12月 1 11:32 ..
-rw------- 1 root root 333 12月 22 11:35 AC86U.nmconnection
-rw------- 1 root root 347 12月 23 13:37 zhixing_edu.nmconnection


zmrobo@SmartPi:/etc/network$ nmcli device status
DEVICE TYPE STATE CONNECTION
wlan0 wifi 已连接 AC86U
usb0 ethernet 未托管 --
lo loopback 未托管 --

zmrobo@SmartPi:/etc/network$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 36:14:08:34:6b:7f brd ff:ff:ff:ff:ff:ff
inet 10.1.1.1/24 brd 10.1.1.255 scope global usb0
valid_lft forever preferred_lft forever
inet6 fe80::3414:8ff:fe34:6b7f/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 9c:b8:b4:d7:c9:22 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.105/24 brd 192.168.50.255 scope global dynamic noprefixroute wlan0
valid_lft 86203sec preferred_lft 86203sec
inet6 fe80::f0fe:9ee0:da6b:890b/64 scope link noprefixroute
valid_lft forever preferred_lft forever

zmrobo@SmartPi:/etc/network$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.50.1
nameserver 127.0.0.53
search lan
nameserver 8.8.8.8
zmrobo@SmartPi:/etc/network$

 

 

 

这是个很好的问题!两台相同的设备却有不同的网络行为,说明问题不是网络本身,而是**设备个体差异**。让我帮你分析可能的原因:

可能的原因分析:

1. 硬件差异(最可能)

# 在两台设备上分别运行这些命令进行比较

# 查看无线网卡型号
lspci | grep -i network
lsusb | grep -i wireless
iw dev | grep "addr\|wiphy"

# 查看驱动版本
modinfo $(lsmod | grep -i wifi | head -1 | awk '{print $1}') | grep -i "version\|description"

# 查看固件版本
dmesg | grep -i "firmware\|wlan"

2. 无线网卡固件/驱动差异

# 检查无线网卡具体信息
sudo iw list

# 查看支持的频段和协议
sudo iw phy0 info

3. 系统配置差异

# 比较 NetworkManager 版本和配置
nmcli --version
cat /etc/NetworkManager/NetworkManager.conf

# 查看已安装的网络相关包
dpkg -l | grep -E "(network|wireless|wpa)"

# 查看系统启动的服务
systemctl list-unit-files | grep -E "(network|wifi|wpa)"

4. DHCP 客户端差异

# 检查 DHCP 客户端
which dhclient
which dhcpcd
ls -la /etc/dhcp/
cat /etc/dhcp/dhclient.conf 2>/dev/null

5. 时间差异(重要!)

DHCP 过程依赖系统时间:

# 查看系统时间
date
timedatectl status

# 查看时间同步状态
systemctl status systemd-timesyncd

诊断步骤:

第一步:在两台设备上收集信息

在能正常连接的设备上:

#!/bin/bash
# collect_good_device.sh
echo "=== 正常设备信息收集 ===" > /tmp/good_device_info.txt

echo "1. 系统信息:" >> /tmp/good_device_info.txt
uname -a >> /tmp/good_device_info.txt
echo "" >> /tmp/good_device_info.txt

echo "2. 无线网卡信息:" >> /tmp/good_device_info.txt
lspci | grep -i network >> /tmp/good_device_info.txt
lsusb | grep -i wireless >> /tmp/good_device_info.txt
iw dev >> /tmp/good_device_info.txt
echo "" >> /tmp/good_device_info.txt

echo "3. NetworkManager 配置:" >> /tmp/good_device_info.txt
nmcli --version >> /tmp/good_device_info.txt
nmcli -f ALL connection show "zhixing_edu" >> /tmp/good_device_info.txt 2>/dev/null || echo "无zhixing_edu配置" >> /tmp/good_device_info.txt
echo "" >> /tmp/good_device_info.txt

echo "4. DHCP 配置:" >> /tmp/good_device_info.txt
ls -la /etc/dhcp/ >> /tmp/good_device_info.txt
cat /etc/dhcp/dhclient.conf 2>/dev/null >> /tmp/good_device_info.txt || echo "无dhclient.conf" >> /tmp/good_device_info.txt
echo "" >> /tmp/good_device_info.txt

echo "5. 系统时间:" >> /tmp/good_device_info.txt
date >> /tmp/good_device_info.txt
timedatectl status >> /tmp/good_device_info.txt
echo "" >> /tmp/good_device_info.txt

echo "信息已保存到 /tmp/good_device_info.txt"

在有问题的设备上运行相同的脚本(改个名字)

mv collect_good_device.sh collect_bad_device.sh
# 然后修改输出文件名为 bad_device_info.txt

第二步:比较关键差异

# 在两台设备间传输文件并比较
diff -u /tmp/good_device_info.txt /tmp/bad_device_info.txt | grep -E "^[-+]" | grep -v "^---" | grep -v "^+++"

第三步:可能的特定原因

原因 A:MAC 地址相关

公司网络可能有 MAC 地址过滤或绑定:

# 查看两台设备的 MAC 地址
ip link show wlan0 | grep link/ether

# 如果不同,公司网络可能:
# 1. 只允许特定 MAC 地址
# 2. 对新 MAC 地址有延迟或额外验证

原因 B:DHCP 客户端行为差异

# 查看两台设备使用的 DHCP 客户端
ps aux | grep -E "(dhclient|dhcpcd)"

# 查看 DHCP 过程日志
sudo journalctl -u NetworkManager | grep -i "dhcp"

原因 C:无线信号或频段差异

# 查看信号强度和连接的频段
sudo iw dev wlan0 link
sudo iwlist wlan0 scan | grep -A5 "zhixing_edu"

# 一台可能连接 2.4GHz,另一台可能尝试 5GHz

原因 D:系统更新时间差异

# DHCP 需要合理的时间戳
# 如果一台设备时间偏差大,DHCP 可能失败
sudo date
sudo hwclock

最可能的原因排名:

1. MAC 地址首次连接延迟(可能性 40%)

  • 公司网络对新 MAC 地址有首次连接延迟
  • 第一台设备已经"学习"过,第二台是"新设备"
  • DHCP 服务器对新设备响应更慢或有额外检查

2. DHCP 客户端不同(可能性 30%)

  • 一台用 dhclient,另一台用 dhcpcd
  • 版本或配置参数不同

3. 无线驱动/固件差异(可能性 20%)

  • 虽然硬件相同,但固件版本可能不同
  • 驱动参数或优化不同

4. 时间同步问题(可能性 10%)

  • 一台时间准确,另一台时间偏差大

快速诊断脚本:

#!/bin/bash
# diagnose_difference.sh

echo "=== 诊断两台设备差异 ==="

echo "1. MAC 地址:"
ip link show wlan0 | grep link/ether

echo -e "\n2. 无线网卡驱动:"
modinfo $(lsmod | grep -E "(wlan|wireless)" | head -1 | awk '{print $1}') 2>/dev/null | grep -E "(version|filename)" || echo "未找到驱动信息"

echo -e "\n3. DHCP 客户端进程:"
ps aux | grep -E "(dhclient|dhcpcd)" | grep -v grep

echo -e "\n4. 系统时间:"
date
echo "时区: $(timedatectl show --property=Timezone --value)"

echo -e "\n5. NetworkManager 版本:"
nmcli --version

echo -e "\n6. 已安装的网络包:"
dpkg -l | grep -E "(network-manager|dhcp|wpasupplicant)" | awk '{print $2" "$3}'

echo -e "\n7. 无线连接详情:"
sudo iw dev wlan0 link 2>/dev/null || echo "未连接"

echo -e "\n8. 连接 zhixing_edu 的历史记录:"
sudo journalctl -u NetworkManager | grep -i "zhixing_edu" | tail -5

解决方案(针对问题设备):

方案1:模拟正常设备配置

# 从正常设备导出配置,导入到问题设备
# 在正常设备上:
nmcli connection export "zhixing_edu" > /tmp/zhixing_edu.nmconnection

# 复制到问题设备,然后:
sudo nmcli connection import type wifi file /tmp/zhixing_edu.nmconnection

方案2:强制使用相同的 DHCP 客户端

# 确保两台设备使用相同的 DHCP 客户端
sudo apt-get install dhcpcd5 -y

# 配置 NetworkManager 使用 dhcpcd
sudo tee /etc/NetworkManager/conf.d/dhcp.conf << 'EOF'
[main]
dhcp=dhcpcd
EOF

sudo systemctl restart NetworkManager

方案3:修复时间同步

# 确保时间准确
sudo timedatectl set-ntp true
sudo systemctl restart systemd-timesyncd
sleep 5
sudo timedatectl status

方案4:使用正常设备的 MAC 地址(临时测试)

# 获取正常设备的 MAC 地址(假设是 aa:bb:cc:dd:ee:ff)
# 在问题设备上临时修改 MAC
sudo ip link set wlan0 down
sudo ip link set wlan0 address aa:bb:cc:dd:ee:ff
sudo ip link set wlan0 up

# 测试连接
sudo nmcli connection up zhixing_edu

最重要的测试:

问题设备上运行这个测试,观察 DHCP 过程:

sudo systemctl stop NetworkManager
sudo ip link set wlan0 down
sudo ip link set wlan0 up

# 手动运行 wpa_supplicant
sudo wpa_supplicant -B -i wlan0 -c <(wpa_passphrase "zhixing_edu" "zhixing168")

# 手动运行 DHCP 并详细记录
sudo dhclient -v wlan0 2>&1 | tee /tmp/dhcp_debug.log

# 分析日志
grep -i "time\|offer\|ack\|fail\|error" /tmp/dhcp_debug.log

请先运行诊断脚本,告诉我两台设备在以下方面的差异:

  1. MAC 地址
  2. DHCP 客户端
  3. 系统时间
  4. NetworkManager 版本

这样我就能给出更精确的解决方案。

 

posted @ 2025-12-23 14:19  aiplus  阅读(19)  评论(0)    收藏  举报
悬浮按钮示例