Dell TB16
Dell 的 TB16 是一款流行的 Thunderbolt 坞站,具有供电、以太网、USB、音频、HDMI、DisplayPort、mini-DP 和 VGA 接口。当配置正确并使用最新的固件时,它通常在 Linux 中运行良好,但在某些笔记本电脑上的效果优于其他笔记本电脑。如果您正在市场上寻找新的坞站,则最好购买 Dell 的较新 WD19 系列,该系列获得了更积极的评价,并且没有 TB16 报告的各种问题。另请参阅 Dell 关于其 官方 TB16 Ubuntu 支持及其局限性的说明。
配置
Thunderbolt 安全性
您应该
- 在 BIOS 中禁用 Thunderbolt 安全性(推荐)
- 使用 boltctl 临时授权或永久注册坞站 和 线缆。
Thunderbolt 安全性“有效”,但可能导致随机不稳定,尤其是在恢复时系统冻结,以及 USB HID 设备(鼠标、键盘)行为异常。建议在启用此功能之前,确保您的系统完全稳定。
Dell Type-C 坞站配置
TB16 通常与 Dell 笔记本电脑一起使用,Dell 笔记本电脑具有特殊的 BIOS 选项,可能会导致稳定性问题。您应该禁用以下选项
- Dell Type-C 坞站配置
- 始终允许 Dell 坞站(取消选中此项)
固件更新
Dell 的 TB16 支持:驱动程序 页面为 Windows 提供的固件更新包括无法在 Linux 中更新的固件,例如修复了大量 USB 不稳定问题的 ASMedia USB 主机控制器固件和 Synaptics 控制器 (DisplayPort)。
总结一下 jasondclinton 在 reddit 上的帖子
- TB 控制器的 NVM 更新可以通过 Linux 刷写(使用标准 nvm_nonactive nvm_authenticate sysfs 接口)
- 无法安装 ASMedia、Synaptics 等固件 - 所以您最好从 Windows 刷写所有固件。
- 您需要所有最新的更新,docker 固件更新程序才能看到 TB16。
确保您拥有最新的
- BIOS 固件
- Windows 更新
- Dell 更新
- Thunderbolt NVM 固件(适用于您设备上的 Thunberbolt 控制器) - 应包含在 Windows 和 Dell 更新中
- TB16 固件更新程序,来自上面的驱动程序页面。
即使在使用固件更新程序后,仍然有来自同一 Dell 支持页面的其他固件,这些固件取代了固件更新程序中包含的版本,应在之后下载并安装,例如 ASMedia 驱动程序/固件。如有疑问,请安装页面上的所有更新。
jasondclinton 还指出,官方 NVM 更新通常远远落后于 Intel 的最新版本(例如,TB16 的 1.0.0 固件包括 NVM 16,而 Intel 在撰写本文时已经发布了 NVM 33)。目前尚不清楚是否有简单的方法可以独立更新这些固件。
故障排除
总线问题
诸如 USB 总线(和所有连接的设备)在插拔设备时发生故障等问题,可以通过遵循上述所有说明(特别是禁用 Thunderbolt 安全性、“Dell Type-C 坞站配置选项”和固件更新)来改进。仔细阅读固件更新部分:并非所有更新都可以通过 Linux 进行。
某些设备在坞站中的行为与直接在笔记本电脑的 USB 端口上不同,例如,Microsoft 的键盘接收器会不规律地进入睡眠状态,或卡住重复某个键。对此不直观的修复方法是禁用 Thunderbolt 安全性(请参阅上面关于此的注释)。
禁用 PCIE 电源管理
USB 总线故障问题也可以通过在 TLP 配置中禁用 PCIE 电源管理来缓解。创建一个 /etc/tlp.d/01-tb16.conf
文件,其中包含以下行
# lspci -nnd 1b21:1142 # 3f:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller [1b21:1142] RUNTIME_PM_BLACKLIST="3f:00.0"
验证您是否使用了正确的序列号,使用 lspci
,如注释中所示。
以 root 身份运行 tlp start
以重新加载配置。
解绑和重绑
您可以使用此脚本从总线故障中恢复,而无需重启。对于与 TB16 兼容性不佳的笔记本电脑非常有用,尤其是在从挂起恢复后
#!/bin/sh # 0b:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller [1b21:1142] SERIAL=$(lspci -Dd "1b21:1142" | awk '{ print $1 }') DRIVER="/sys/bus/pci/drivers/xhci_hcd" echo -n $SERIAL | sudo tee $DRIVER/unbind sleep 4 echo -n $SERIAL | sudo tee $DRIVER/bind
使用 Nvidia 驱动启动时黑屏
如果在使用 Nvidia 驱动程序时,您在连接坞站和 3 个外部显示器的情况下启动时遇到黑屏,则很可能是机器正在尝试使用 3 个外部显示器加上笔记本电脑的内部显示器。这可以通过在 ~/.xinitrc
或显示管理器的自定义 xstart 脚本中写入一个块来解决,例如 SDDM 的默认 KDE。该文件是 /usr/share/sddm/scripts/Xsetup
/usr/share/sddm/scripts/Xsetup
xrandr --setprovideroutputsource modesetting NVIDIA-0 internaldisp="<name of laptop display>" if [ `xrandr | grep " connected " | wc -l` -gt 3 ]; then xdisplays=`xrandr | grep " connected " | awk '{print $1}'` for xdisplay in $xdisplays; do if [[ "$xdisplay" == "$internaldisp"* ]]; then xrandr --output $xdisplay --off else xrandr --output $xdisplay --auto fi done else xrandr --auto fi