HP Thunderbolt G4扩展坞以太网在Ubuntu 22.04.5 LTS下无法工作,原修复命令失效
问题描述
我目前用的是Elitebook 840 G10笔记本,搭载Ubuntu 22.04.5 LTS系统(内核版本6.8.0-45-generic),外接了HP Thunderbolt G4扩展坞。之前一切运行正常,但最近扩展坞的以太网端口突然罢工了——这种情况已经出现过好几次。
之前遇到类似问题时,我通过执行以下两条命令就能恢复以太网功能:
echo 1 > /sys/bus/pci/devices/0000\:2b\:00.0/remove echo 1 > /sys/bus/pci/rescan
但这次执行命令后,以太网还是没恢复,查看dmesg输出时发现了BAR空间分配失败的错误:
[ 1083.974094] pci 0000:2b:00.0: [8086:5502] type 00 class 0x020000 PCIe Endpoint
[ 1083.974148] pci 0000:2b:00.0: BAR 0 [mem 0x00000000-0x000fffff]
[ 1083.974206] pci 0000:2b:00.0: BAR 3 [mem 0x00000000-0x00003fff]
[ 1083.974547] pci 0000:2b:00.0: PME# supported from D0 D3hot D3cold
[ 1083.974973] pci 0000:2b:00.0: Adding to iommu group 23
[ 1083.975453] pci 0000:2b:00.0: BAR 0 [mem size 0x00100000]: can't assign; no space
[ 1083.975458] pci 0000:2b:00.0: BAR 0 [mem size 0x00100000]: failed to assign
可能的解决方案
针对BAR空间分配失败的问题,你可以尝试以下几种方法:
1. 重启Thunderbolt控制器
有时候Thunderbolt控制器的状态异常会导致资源分配问题,你可以通过以下步骤重置:
- 先断开扩展坞与笔记本的连接
- 在终端执行命令重置Thunderbolt服务:
sudo systemctl restart bolt.service - 等待片刻后重新连接扩展坞,检查以太网是否恢复
2. 调整内核启动参数
BAR空间分配失败可能是因为PCIe资源预留不足,你可以尝试添加内核启动参数来调整:
- 编辑GRUB配置文件:
sudo nano /etc/default/grub - 找到
GRUB_CMDLINE_LINUX_DEFAULT行,添加pci=realloc参数,修改后类似:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=realloc" - 保存文件并更新GRUB:
sudo update-grub - 重启系统后测试以太网功能
3. 更新固件与驱动
- 检查笔记本和扩展坞的固件更新:可以通过
fwupd工具扫描并安装官方固件更新(先确保已安装:sudo apt install fwupd,然后执行sudo fwupdmgr update) - 尝试升级到更新的内核版本,比如Ubuntu官方的主线内核,新版本内核可能修复了PCIe资源分配的相关bug
4. 重新绑定Thunderbolt设备
如果上述方法无效,可以尝试更彻底的Thunderbolt设备绑定操作:
- 先查看Thunderbolt设备的路径:
lspci | grep Thunderbolt - 找到对应的设备ID后,执行解绑再绑定操作(替换下面的设备路径为你实际的路径):
echo 0000:2b:00.0 | sudo tee /sys/bus/pci/drivers/thunderbolt/unbind echo 0000:2b:00.0 | sudo tee /sys/bus/pci/drivers/thunderbolt/bind
总结
BAR空间分配失败通常和PCIe资源管理或Thunderbolt控制器状态有关,优先尝试重置Thunderbolt服务和调整内核参数,这些操作相对简单且见效快。如果问题持续,固件和内核升级是值得尝试的方向。
备注:内容来源于stack exchange,提问作者David G




