Dell TB16

来自 ArchWiki

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 上的帖子

  1. TB 控制器的 NVM 更新可以通过 Linux 刷写(使用标准 nvm_nonactive nvm_authenticate sysfs 接口)
  2. 无法安装 ASMedia、Synaptics 等固件 - 所以您最好从 Windows 刷写所有固件。
  3. 您需要所有最新的更新,docker 固件更新程序才能看到 TB16。

确保您拥有最新的

  1. BIOS 固件
  2. Windows 更新
  3. Dell 更新
  4. Thunderbolt NVM 固件(适用于您设备上的 Thunberbolt 控制器) - 应包含在 Windows 和 Dell 更新中
  5. 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

外部链接