Skip to content

Framework 16 doesn't query Thunderbolt cable capabilities and falls back to 20Gbps #56

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
4 of 10 tasks
lsiudut opened this issue Mar 21, 2025 · 1 comment
Open
4 of 10 tasks
Labels
device-compatibility Laptop 16 AMD Ryzen 7040 Framework Laptop 16 (AMD Ryzen™ 7040 Series)

Comments

@lsiudut
Copy link

lsiudut commented Mar 21, 2025

Device Information

System Model or SKU

Please select one of the following

  • Framework Laptop 13 (11th Gen Intel® Core™)
  • Framework Laptop 13 (12th Gen Intel® Core™)
  • Framework Laptop 13 (13th Gen Intel® Core™)
  • Framework Laptop 13 (AMD Ryzen™ 7040 Series)
  • Framework Laptop 13 (Intel® Core™ Ultra Series 1)
  • Framework Laptop 16 (AMD Ryzen™ 7040 Series)

BIOS VERSION

03.05

DIY Edition information

Memory: Kingston KF556S40-32 (x2 -> 64GB)
Storage: WD_BLACK SN850X 2000GB

Port/Peripheral information

If you are experiencing an issue with a peripheral or an expansion card/port please fill out the following information:

  • port 1. AKiTiO Node Titan (but also LG 38WN95C)
  • port 4. AKiTiO Node Titan (but also LG 38WN95C)

Standalone Operation

Are you running your mainboard as a standalone device. Is standalone mode enabled in the BIOS?

  • Yes
  • No

Describe the bug

While connecting Thunderbolt capable device (either eGPU or monitor with Thunderbolt dock integrated) the device doesn't negotiate full 40Gbps. ThinkPad T14 has no issues and is my reference when comes to comparison of behavior.

I went through diagnostic with your support team, the result was motherboard replacement which didn't help. Since then I performed extended diagnostic:

  1. learned about available TBT registers and noticed, that cable is not recognized
# tbdump -d 1 -r 0 -a 2 -vv -N1 PORT_CS_18
0x00d2 0x00012f00 0b00000000 00000001 00101111 00000000 ../. PORT_CS_18     
  [00:07]        0x0 Cable USB4 Version
  [08:08]        0x1 Bonding Enabled (BE)
  [09:09]        0x1 TBT3-Compatible Mode (TCM)
  [10:10]        0x1 CLx Protocol Support (CPS)
  [11:11]        0x1 RS-FEC Enabled (Gen 2) (RE2)
  [12:12]        0x0 RS-FEC Enabled (Gen 3) (RE3)
  [13:13]        0x1 Router Detected (RD)
  [16:16]        0x1 Wake on Connect Status
  [17:17]        0x0 Wake on Disconnect Status
  [18:18]        0x0 Wake on USB4 Wake Status
  [19:19]        0x0 Wake on Inter-Domain Status
  [20:20]        0x0 Cable Gen 3 Support (CG3)
  [21:21]        0x0 Cable Gen 4 Support (CG4)
  [22:22]        0x0 Cable Asymmetric Support (CSA)
  [23:23]        0x0 Cable CLx Support (CSC)
  [24:24]        0x0 AsymmetricTransitionInProgress (TIP)
  1. Sniffed traffic on CC lines of USB cable and noticed, that TBT cable capabilities are never queried:
    ThinkPad T14:
269,1906826930.00,,Preamble,,(r3) SRC/UFP[2]: VDM,
270,1907035440.00,SYNC-1,SOP',,,
271,1907052230.00,SYNC-1,,,,
272,1907068570.00,SYNC-3,,,,
273,1907085350.00,SYNC-3,,,,
274,1907101700.00,0xF,H:258F,,,
275,1907118490.00,0x8,,,,
276,1907134840.00,0x5,,,,
277,1907151400.00,0x2,,,,
278,1907168190.00,0x3,[0]8087a043,[1] ACK Disc Mode  SVID:8087,,
279,1907184760.00,0x4,,,,
280,1907201100.00,0x0,,,,
281,1907217890.00,0xA,,,,
282,1907234450.00,0x7,,,,
283,1907250800.00,0x8,,,,
284,1907267590.00,0x0,,,,
285,1907283930.00,0x8,,,,
286,1907300720.00,0x1,[1]00030001,[2] VDO:00030001,,
287,1907317070.00,0x0,,,,
288,1907333850.00,0x0,,,,
289,1907350200.00,0x0,,,,
290,1907366990.00,0x3,,,,
291,1907383550.00,0x0,,,,
292,1907399900.00,0x0,,,,
293,1907416690.00,0x0,,,,

Framework doesn't do the above thus it can't be aware of the cable connected.

To be absolutely sure my cables supports the declared functionality I bought KM003C and checked them throughly.

Funnily enough, Framework managed to negotiate 40Gbps once, after few hours of being shut down. I never managed to reproduce it though (I also didn't have / know the tools to inspect registers to see what was different by then).

Also I opened a post on Framework Community Forum where I put up some details: https://community.frame.work/t/curious-thunderbolt-3-egpu-link-speed-case-linux/64027/17 . I followed @Mario_Limonciello advice and tried the latest kernel patch, but it didn't help.

I'm happy to deliver my CC traces if needed.

Steps To Reproduce

Steps to reproduce the behavior:

  1. Connect AKiTiO Node Titan (or monitor LG 38WN95C) to one of the USB4 capable ports of Framework 16
  2. Run boltctl to confirm that the negotiated throughput is not 40Gbps, but 20Gbps
  3. Additionally dump Thunderbolt PORT_CS_18 register to verify that cable capabilities were not discovered

Expected behavior

Cable recognized as TBT3/4 capable and full 40Gbps negotiated.

Screenshots

If applicable, add screenshots to help explain your problem.

Operating System (please complete the following information):

  • OS/Distribution: Arch Linux, but tried also on Fedora 41 and Ubuntu 24.10
  • Version: ditto
  • Linux Kernel Version: 6.13.7, tried also 6.13.7-zen1
@lsiudut
Copy link
Author

lsiudut commented Mar 21, 2025

Logic analyzer: DSLogic U3Pro32

Framework 16 dumped CC negotiation: Framework16.csv
ThinkPad T14 dumped CC negotiation: ThinkPadT14.csv

@kiram9 kiram9 added Laptop 16 AMD Ryzen 7040 Framework Laptop 16 (AMD Ryzen™ 7040 Series) device-compatibility labels Mar 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
device-compatibility Laptop 16 AMD Ryzen 7040 Framework Laptop 16 (AMD Ryzen™ 7040 Series)
Projects
None yet
Development

No branches or pull requests

2 participants