没有不值得去解决的问题,也没有不值得去学习的技术!

ThinkPad T570 Fails to Detect External Display via Type-C to VGA on Ubuntu: A Complete Troubleshooting Log from BIOS and UCSI to Thunderbolt

Figure 1: Thunderbolt 3 configuration in the ThinkPad T570 BIOS. Wake by Thunderbolt 3 is enabled, and Security Level is set to User Authorization.

作者:

Recently, I have been dealing with an issue where my ThinkPad T570 fails to connect to an external display properly.

My original external display was an older monitor that primarily used a VGA port. Previously, I connected it by running the ThinkPad T570’s HDMI port through an HDMI-to-VGA adapter to the monitor.

A few days ago, the external monitor started experiencing black screens and failing to recover properly. To reduce my reliance on the old HDMI-to-VGA adapter, I bought a Type-C-to-VGA cable, hoping to connect the external display directly to the T570’s USB-C port.

The new cable arrived on July 30, 2026.

I thought it would just be a matter of swapping the cable and continuing to use dual screens. However, Ubuntu did not detect the external display at all.

This troubleshooting process started with display detection and went all the way down to the Linux DRM, USB Type-C, UCSI, BIOS, and Thunderbolt Controller. Although I did not restore Type-C video output in the end, I essentially confirmed that this is no longer an ordinary Ubuntu dual-screen configuration issue.

1. After connecting the new Type-C-to-VGA cable, Ubuntu does not detect the external display at all

First, I ran:

Bash
xrandr --query

The output only showed the laptop’s internal eDP-1 screen at a 1920×1080 resolution; the connected external monitor was nowhere to be seen.

Since the current Ubuntu session uses Wayland, the information reported by xrandr does not necessarily represent the underlying physical display interfaces completely. Therefore, I proceeded to check the Linux DRM layer directly:

Bash
echo "$XDG_SESSION_TYPE"

for f in /sys/class/drm/card*-*/status; do
    [ -f "$f" ] || continue
    printf "%-45s " "$f"
    cat "$f"
done

The output confirmed that the current session is indeed Wayland, and while the internal screen eDP-1 is connected, DP-1, DP-2, HDMI-A-1, and HDMI-A-2 are all disconnected.

This step was crucial because it showed that the problem was not that “Ubuntu has detected the external display but simply hasn’t enabled the extended desktop.”

In reality, the Linux DRM layer had not detected any connected external display at all.

2. Further inspection of USB-C: The port exists, but the partner device does not appear

Next, I checked the Linux Type-C subsystem:

Bash
ls -la /sys/class/typec/

The system showed port0, indicating that Ubuntu had recognized the T570’s USB-C port itself.

However, even with the Type-C-to-VGA adapter plugged in, port0-partner never appeared in the system.

The Linux Type-C subsystem creates a corresponding partner object upon detecting a connected peer device. Therefore, this behavior meant the problem occurred earlier than the question of “how to extend the display”: the Type-C connection itself was not being fully established by the system.

This was also not because the T570’s USB-C port inherently cannot output video. Lenovo’s official documentation explicitly states that the ThinkPad T570’s USB-C port is Thunderbolt 3 compatible and supports power delivery, data transfer, and video output. (Lenovo Support)

3. Attempting to verify the port with Type-C headphones

To further determine whether the USB-C port was completely dead, I found a pair of Type-C headphones for testing.

After plugging them in, lsusb did not show any new USB audio devices, and PipeWire did not show any new audio output devices.

When checking the Type-C objects again, there was still only port0 and no port0-partner.

However, this test cannot serve as definitive proof, because some Type-C headphones use analog audio mode, and the laptop’s USB-C port might not support this mode.

Therefore, I did not conclude that the USB-C port was broken based solely on the headphone test. Instead, I continued checking the system’s Type-C driver layer.

4. UCSI and Type-C drivers are actually functioning normally

After checking the driver used by USBC000:00, I confirmed that it was correctly bound to ucsi_acpi.

Additionally, relevant modules such as ucsi_acpi, typec_ucsi, typec, thunderbolt, and intel_wmi_thunderbolt were all loaded.

This meant that it was not a case of Ubuntu failing to load the USB-C/UCSI drivers at all.

Further inspection of the boot logs revealed no obvious UCSI initialization failures. The system knew the machine had a USB-C port, but after plugging in the Type-C-to-VGA adapter, it still did not generate a normal partner or a DisplayPort Alt Mode connection state.

At this point, the question had gradually shifted from:

“Why doesn’t Ubuntu display the second screen?”

to:

“Why isn’t the USB-C connection itself properly established after plugging in the Type-C-to-VGA adapter?”

5. Discovering during troubleshooting that the BIOS was still from 2017

While continuing to check the machine’s firmware, I found that this T570 was still running BIOS version 1.23, released on July 6, 2017.

The machine has been in use for many years, but the BIOS had essentially never been updated.

Then I ran:

Bash
fwupdmgr get-updates

LVFS recognized my ThinkPad T570 and offered the 1.54 update for the System Firmware.

More notably, the LVFS update release notes included records of fixes specifically addressing Thunderbolt device recognition issues.

Considering that I was currently troubleshooting a USB-C / Thunderbolt related issue, I decided to update the BIOS to a newer version first.

6. Upgrading the BIOS from 1.23 to 1.54 via fwupd

I used fwupd to directly update the T570’s System Firmware:

Bash
sudo fwupdmgr update a4b2dfcb17ef7a2525210f83e29447d55681b12b

On the first attempt, a GnuTLS handshake failed error occurred during the firmware download phase.

Since it had not yet entered the actual BIOS flashing stage, this caused no harm. After running the command again, the firmware was successfully downloaded and installed to the staging area.

The system then prompted for a reboot to complete the update.

When fwupdmgr attempted an automatic reboot, it was blocked by a systemd inhibitor, so I ultimately performed a normal system reboot:

Bash
sudo reboot

During the reboot, the computer entered Lenovo’s firmware upgrade process.

The upgrade completed successfully.

After booting back into Ubuntu and checking, the BIOS had been upgraded from 1.23 to 1.54, and the release date was now July 14, 2023.

This upgrade was a bonus in itself. Even setting aside the external display issue, an old computer still stuck on a 2017 BIOS genuinely needed an update.

Unfortunately, after the BIOS update was complete, I reconnected the Type-C-to-VGA adapter, but the external display was still not recognized.

7. Checking Thunderbolt settings in the BIOS

Since the problem persisted after the BIOS upgrade, I re-entered the ThinkPad Setup to check the Thunderbolt 3 settings under Config.

Figure 1: Thunderbolt 3 configuration in the ThinkPad T570 BIOS. Wake by Thunderbolt 3 is enabled, and Security Level is set to User Authorization.
Figure 1: Thunderbolt 3 configuration in the ThinkPad T570 BIOS. Wake by Thunderbolt 3 is enabled, and Security Level is set to User Authorization.

Currently, Wake by Thunderbolt 3 is Enabled, and Security Level is User Authorization.

Under Support in Pre Boot Environment, both Thunderbolt device and USB device are Disabled.

However, these two settings control whether the respective devices are supported before the operating system boots. They do not adequately explain why hot-plugging the Type-C-to-VGA adapter after entering Ubuntu resulted in absolutely no connection events.

Therefore, I did not arbitrarily change these Thunderbolt security settings just for testing.

8. No obvious abnormalities found in Display and USB settings either

Next, I checked Config → Display.

Figure 2: By default, Boot Display Device is set to ThinkPad LCD. Notably, the BIOS itself offers USB Type-C as a boot display device option.
Figure 2: By default, Boot Display Device is set to ThinkPad LCD. Notably, the BIOS itself offers USB Type-C as a boot display device option.

The current Boot Display Device is ThinkPad LCD, Shared Display Priority is Display on dock, and the total video memory is 256MB.

There is a highly notable piece of information here:

The Boot Display Device option itself allows selecting USB Type-C.

This means the T570’s BIOS inherently knows that this machine can output display signals via USB-C, which aligns with Lenovo’s official documentation stating that “USB-C supports video output.” (Lenovo Support)

I also checked the USB settings.

Figure 3: USB UEFI BIOS Support and Always On USB are both in the Enabled state.
Figure 3: USB UEFI BIOS Support and Always On USB are both in the Enabled state.

USB UEFI BIOS Support and Always On USB were both enabled, and I found no issue with USB functionality being disabled globally.

9. Forcing the BIOS to output via USB Type-C directly

To confirm whether the issue was actually caused by Ubuntu, I later conducted a rather critical test.

In Config → Display, I changed the Boot Display Device from ThinkPad LCD to USB Type-C.

Figure 4: Changing Boot Display Device to USB Type-C, then saving the BIOS settings to let the computer attempt to output the boot screen via Type-C before Ubuntu starts.
Figure 4: Changing Boot Display Device to USB Type-C, then saving the BIOS settings to let the computer attempt to output the boot screen via Type-C before Ubuntu starts.

During the test, I kept the Type-C-to-VGA adapter and external monitor connected, saved the BIOS settings, and restarted.

The result was:

The external display still had absolutely no response.

At this point, Ubuntu, GNOME, and Wayland had not yet taken over the display system. If Type-C video output could function normally at the firmware stage, theoretically I should have seen the Lenovo boot logo, or at least the external monitor should have detected a video signal.

In reality, there was no change at all.

Therefore, this test further reduced the likelihood that Ubuntu, Wayland, or GNOME display settings were the root cause.

After completing the test, I restored the Boot Display Device back to ThinkPad LCD.

10. The Thunderbolt Controller does not appear in the system

Next, I continued checking Thunderbolt:

Bash
boltctl domains -v

ls -la /sys/bus/thunderbolt/devices/

lspci -nnk | grep -A4 -Ei 'Thunderbolt|USB controller'

The result was rather abnormal.

boltctl did not list any Thunderbolt domain, /sys/bus/thunderbolt/devices/ was empty, and lspci only showed the Intel Sunrise Point-LP USB 3.0 xHCI Controller; there was no Thunderbolt Controller to be seen.

However, this step still did not allow me to declare the controller dead outright.

The Thunderbolt Controller might be powered down for energy saving when no devices are connected, so simply not seeing it in lspci was not enough to reach a final conclusion.

Still, Lenovo had indeed published a Critical-level Thunderbolt software and firmware update bulletin for a batch of ThinkPads, explicitly listing symptoms such as USB-C ports not working, the Thunderbolt Controller being invisible to the operating system, USB-C/Thunderbolt docks failing to be recognized, and HDMI output being unavailable. Lenovo also noted that these symptoms could appear only after a period of normal use. (Lenovo Support)

This significantly overlapped with some of the symptoms exhibited by my current machine.

11. Using boltctl to force power on Thunderbolt

To rule out the scenario where “the controller simply hasn’t started due to power saving,” I also checked boltctl’s power functionality.

The system indicated support for force power.

So, I conducted the last critical software test:

Bash
boltctl power --timeout 20 &
power_pid=$!

sleep 3

boltctl power --query
boltctl domains -v
ls -la /sys/bus/thunderbolt/devices/
lspci -nnk | grep -A4 -Ei 'Thunderbolt|USB controller'

wait "$power_pid"

This time, boltctl explicitly acquired the power guard, and the power state changed to on during the test.

In other words, the force power operation itself executed successfully.

However, during this forced power-on period, boltctl domains still did not show any Thunderbolt domain, the Thunderbolt sysfs directory remained empty, and the Thunderbolt Controller still did not appear in lspci.

At this point, the explanation that “the controller is invisible normally just because of power saving” was becoming increasingly difficult to reconcile with the observed behavior.

12. Why I started suspecting the T570’s Thunderbolt / USB-C subsystem

Lenovo does indeed provide a standalone Thunderbolt Firmware Update Utility for ThinkPad T570 models 20H9, 20HA, 20JW, and 20JX.

The version currently listed on the official page is 17.0.0.18-N1VTH09W, released on August 18, 2021, and Lenovo classifies the update level as Critical. (Lenovo Support)

An important distinction needs to be made here:

The BIOS 1.54 updated via fwupd today is not the same thing as the Thunderbolt Controller’s own NVM firmware.

Therefore, the fact that Type-C video output was still not restored after successfully upgrading the BIOS from 1.23 to 1.54 does not prove that there is no issue at the Thunderbolt firmware layer.

Combining the symptoms observed during troubleshooting, I am more inclined to believe that there is an underlying abnormality in the T570’s USB-C / Thunderbolt subsystem itself.

However, I will not write off the conclusion as “the Thunderbolt chip is damaged” just yet.

It is currently impossible to further distinguish whether this is a Thunderbolt NVM firmware anomaly, a controller failure, a motherboard circuit abnormality, or some other lower-level issue.

13. What has been ruled out so far

The entire troubleshooting process seems long, but it has actually ruled out quite a few initially highly suspected areas.

First, it is not that Ubuntu failed to enable extended display, because the DRM layer did not detect the external display device at all.

Second, it is not purely a Wayland or xrandr issue, because the USB-C connection did not even produce a port0-partner.

The UCSI and Type-C drivers were also loaded normally.

No obvious disabling of Thunderbolt, USB, or display output was found in the BIOS.

The BIOS was successfully upgraded from the 2017 version 1.23 to 1.54, but the fault persists.

Even setting the BIOS Boot Display Device directly to USB Type-C and testing before Ubuntu started, the external display still had no response.

Finally, after successfully using boltctl to force a Thunderbolt power-on request, the controller still was not enumerated.

Therefore, it is already very difficult to view this as an ordinary software configuration problem.

14. Why I decided to temporarily stop troubleshooting

It is not that continuing the investigation has no direction at all.

Lenovo’s official Thunderbolt troubleshooting guide recommends installing the corresponding Thunderbolt driver and firmware; and a dedicated Critical Thunderbolt Firmware Update Utility does exist for the T570. The Lenovo official page currently provides a Windows 10 64-bit tool. (Lenovo Support)

Theoretically, I could set up a Windows environment and then try whether the official Thunderbolt firmware tool can enumerate the Controller and determine if the NVM can still be updated normally.

The problem is that what I originally wanted to solve was very simple:

I just wanted to use dual screens normally again.

If achieving this goal requires continuing to set up a Windows environment, dealing with Thunderbolt NVM firmware, or even further diagnosing motherboard hardware, then the time cost has already begun to significantly outweigh the requirement itself.

I had already spent a long time troubleshooting the original external monitor black screen issue a few days ago, and today I continued investigating all the way from the Type-C-to-VGA adapter to the Thunderbolt Controller.

So, I ultimately decided to cut my losses in time.

15. Ultimately leaning towards buying a new HDMI external display

I am currently more inclined to buy a new monitor with native HDMI support to use as the external display.

Going forward, I will directly use the T570’s HDMI port to connect to the monitor via a standard HDMI cable.

That is:

ThinkPad T570 HDMI → HDMI cable → New external display HDMI.

This simultaneously eliminates two types of extra conversion chains.

The first is the USB-C → DisplayPort Alt Mode → VGA chain attempted this time.

The second is the HDMI → VGA adapter → VGA chain I used previously.

For a new external display, my current requirements are actually not complex: native HDMI support, 1920×1080, and 60Hz would be enough to satisfy my daily dual-screen usage.

It would of course be better if it also offered digital interfaces like DisplayPort, but there is no need to specifically pursue USB-C video input for this T570.

This way, it will be a pure digital video link, eliminating the need to rely on VGA analog signals and additional protocol conversions.

16. The biggest takeaway from this troubleshooting

Although I did not fix the Type-C-to-VGA issue in the end, today’s troubleshooting was not without gain.

First, this ThinkPad T570 had been running BIOS 1.23 left over from 2017, and it has now been successfully upgraded to BIOS 1.54.

Second, and more importantly, it has been confirmed that the current inability to use the external display via Type-C-to-VGA is not a simple Ubuntu dual-screen configuration error.

From DRM, Type-C/UCSI, and BIOS boot display output, all the way to Thunderbolt forced power-on, the troubleshooting results increasingly point to a lower-level USB-C / Thunderbolt link abnormality.

Therefore, temporarily stopping the troubleshooting is not because I have completely run out of leads, but because the time required to continue repairing this old device link has become too much.

The real goal is simply to use dual screens stably.

With that goal in mind, switching to a native HDMI external display and using a direct HDMI digital connection is probably the simplest, most worry-free, and most practical solution right now.

需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理