Ethernet cable test with raw TDR data reporting bug fix - testers needed

Ethernet cable testing support landed in the mainline kernel in 2020 prior to kernel version 5.10. The work was done by Andrew Lunn, who presented at the 2019 Linux Plumbers Conference - slides here: https://lpc.events/event/4/contributions/436/attachments/217/388/cable-diagnostics.pdf There is also a video of his presentation on YouTube.

If you have a cable which is not working at full speed (e.g. only at 100 Mbit instead of gigabit), or is not working at all, then this will tell you where the break is. In structured cabling ( device → patch cord → fixed cabling → patch cord → device) you can tell where the problem is (how many meters from the device where you run a test). Raw TDR (Time Domain Reflectometry) data allows more nuanced diagnosis of poor quality joins and cable damage etc.

Currently there is only support for [edit: full raw TDR data reporting on] Marvell Ethernet PHYs. At least the following should have one or more supported Ethernet ports I think:

  • Huawei AP5030DN (confirmed and I have one here)
  • MicroTik RB5009UG (confirmed)
  • Turis Omnia (confirmed)
  • Solidrun Mochabin
  • Clearfog Pro and Base
  • Buffalo LS421DE
  • Fortinet FortiGate 50E / 51E / 52E and FortiWiFi 50E-2R
  • Ctera C200 V2
  • D-Link DWR-118-A2
  • Shuttle OMNINAS KD22
  • [Edit:] Linksys WRT1900ACS

and probably some others too... It's difficult to work out which PHYs are present - often they're just mentioned in dts file comments, or in kernel message debug output.

[Edit: I'm keeping this post up to date with known status of various OpenWrt devices]

I only have access to a Huawei AP5030DN (BTW if someone would like a dedicated device for cable testing, then these are available for cheap - circa €12 locally).

It would be helpful if people could test:

ethtool --cable-test devname

... with both an active link on the port and also with no link (but with a cable present).

and:

ethtool --cable-test-tdr devname

In particular please check for truncated output on the TDR test and any: Timeout while waiting for cable test to finish messages in the kernel logs.

See this github issue for a patch for the Timeout message and also how to debug timings:

n.b. @fbl has kindly tested this already on a MikroTik RB5009UPr+S+IN but still saw a timeout, so if the unchanged patch times out, then you could try increasing the number of retrys in the patch from 100 to something huge like 10000.

Thanks!

5 Likes

Since May 2020, also some BCM PHYs have ECD (Enhanced Cable Diagnostics) enabled. That PHY seems to be used on the RPI, so some other users here might have HW capable of testing. I mentioned this in the other Forum in Sept/2021:

Further down somebody successfully tested on Linksys WRT1900ACS:

2 Likes

Thanks - it looks like only the Marvell PHYs support raw tdr data reception. On many of those there is a bug where the status registers are read continuously, and a Timeout occurrs before data is actually ready (hence the patch - which Andrew Lunn advised on).

Searching through the latest Linux kernel net-next git tree rg -C 20 \\.cable_test_start shows that basic (i.e. not raw TDR data) cable test support seems to be implemented for these PHYs:

  • Qualcomm Atheros AR8031/AR8033 AR8032, AR8035, AR9331, QCA9561, QCA8072, QCA8075, QCA8081
  • NXP TJA1102, NXP C45 TJA1103, NXP C45 TJA1120
  • TI DP83TD510E
  • Microchip LAN87xx T1, LAN937x T1, LAN887x T1, (Micrel) KSZ8851 and KSZ886X Switch, KSZ9131, LAN8841, INDY Gigabit Quad PHY, Micrel KSZ9031, KSZ8081, KSZ8091
  • ADIN1200, ADIN1300
  • Broadcom BCM54140
3 Likes

@RuralRoots If you still have the WRT1900ACS available, would you mind retesting? Do you get messages like:

Timeout while waiting for cable test to finish

when running running ethtool --cable-test-tdr devname ?

Oh, Okay, I was not aware, that there are several "levels/variants/brandings" of support for Cable testing. So, ECD ("basic"?) < VCT < TDR ?

Edit: GPT seems to suggest a plausible looking table:

Feature ECD VCT TDR
Definition General electrical diagnostics Virtual testing of cable faults Time-based reflection analysis
Scope High-level checks Physical layer faults Precise fault location
Technology Electrical property analysis Embedded algorithms Signal reflection and timing
Precision Moderate Good High
Tools Simple testers or switches Ethernet switches with VCT Specialized TDR testers

Together, these technologies provide a comprehensive approach to Ethernet cable testing, from basic diagnostics to pinpointing exact issues.

Edit2: So:

  • ECD: "Your cable has a short/cross at Pair X"
  • VCT: "Your cable has a short/cross at Pair X, that's why you only get 100MBit"
  • TDR: "Short/Cross at X, hence 100MBit, 5.5 meters from my end"
    ?

Can ethtool use the different levels of support, or only, if the device supports "full" (TDR)?

On a WRT3200ACM running 23.05.5, I get:

root@router:~# ethtool --cable-test eth0
Command requires kernel netlink support which is not enabled in this ethtool binary

Did you do opkg remove ethtool ; opkg install ethtool-full first?

Please try:
opkg update && opkg remove ethtool && opkg install ethtool-full

1 Like

I do not think that GPT got the details right:

root@turris:~# ethtool --cable-test eth2
Cable test started for device eth2.
Cable test completed for device eth2.
Pair A code Open Circuit
Pair B code Open Circuit
Pair C code Open Circuit
Pair D code Open Circuit
Pair A, fault length: 16.80m
Pair B, fault length: 16.80m
Pair C, fault length: 16.80m
Pair D, fault length: 16.80m

this was wit a nominally 15m ethernet cable in the port that was not connected to anything at the far end... the only way to estimate these 16.8 meters would be IMHO to run a TDR probe...
I would guess the difference is that --cable-test-tdr will actually show more of the actual (processed) TDR data, while --cable-test just reports the final results...

This was on a turris omnia, with kernel 5.15...

1 Like

I don't think I'd put too much trust into that table.

As far as I know all of the PHYs will be carrying out TDR (there's no way to tell "open at 5 metres" otherwise). Only the Marvell PHYs offer an (implemented) API to access the raw TDR data. The others are post-processing TDR according to internal algorithms to derive "open at 5 metres".

Access to the raw TDR data is often helpful to spot marginal or damaged cables and bad connections etc.

1 Like

Thank you both for the clarifications. I was thinking, that --cable-test could report 'ECD' (basic) data from all the PHYs in the list above (Does that really include most of ath79? at the top), while --cable-test-tdr could report more info, but only from some Marvells and devices having the same PHY as the RPI4?

But I haven't been able to confirm any of that: My RPI4 run *bian, and the APs/Switches I can play around with a.t.m are only some ath79, MT7621, and RTL8x. I'll hopefully get around to building some new master snapshots this weekend.

No.

Latest test - lan1 populated/lan2 un-populated

cable-test

root@WRT1900ACS-AP:~# ethtool --cable-test lan1

Cable test completed for device lan1.
Pair A code OK
Pair B code OK
Pair C code OK
Pair D code OK

root@WRT1900ACS-AP:~# ethtool --cable-test lan2
Cable test started for device lan2.
Cable test completed for device lan2.
Pair A code Open Circuit
Pair B code Open Circuit
Pair C code Open Circuit
Pair D code Open Circuit
Pair A, fault length: 8.80m
Pair B, fault length: 10.40m
Pair C, fault length: 8.80m
Pair D, fault length: 8.80m

cable-test-tdr

ot@WRT1900ACS-AP:~# ethtool --cable-test-tdr lan1
Cable test TDR started for device lan1.
Cable test TDR completed for device lan1.
TDR Pulse 1000mV
Step configuration: 0.80-149.73 meters in 0.80m steps
Pair A Amplitude 0
Pair B Amplitude -117
Pair C Amplitude -7
Pair D Amplitude 664
Pair A Amplitude -15
Pair B Amplitude -117
Pair C Amplitude 0
Pair D Amplitude 609
Pair A Amplitude -7
Pair B Amplitude 0
Pair C Amplitude 0
Pair D Amplitude 476
Pair A Amplitude -7
Pair B Amplitude -7
Pair C Amplitude -7
Pair D Amplitude -78
Pair A Amplitude -7
Pair B Amplitude -7
Pair C Amplitude -7
Pair D Amplitude -54
Pair A Amplitude -7
Pair B Amplitude -7
Pair C Amplitude -7
Pair D Amplitude -23
Pair A Amplitude -7
Pair B Amplitude -7
Pair C Amplitude -7
Pair D Amplitude -15
Pair A Amplitude -7
Pair B Amplitude -7
Pair C Amplitude -7
Pair D Amplitude -7
Pair A Amplitude -7
Pair B Amplitude -7
Pair C Amplitude -7
Pair D Amplitude -15
Pair A Amplitude -7
Pair B Amplitude -7
Pair C Amplitude -7
Pair D Amplitude -15
Pair A Amplitude -7
Pair B Amplitude -7
Pair C Amplitude -7
Pair D Amplitude -15
Pair A Amplitude -7
Pair B Amplitude -7
Pair C Amplitude -7
Pair D Amplitude -15
Pair A Amplitude -23
Pair B Amplitude -132
Pair C Amplitude -23
Pair D Amplitude 593
Pair A Amplitude -23
Pair B Amplitude -132
Pair C Amplitude -15
Pair D Amplitude 570
Pair A Amplitude -23
Pair B Amplitude -54
Pair C Amplitude -15
Pair D Amplitude 46
Pair A Amplitude -23
Pair B Amplitude -23
Pair C Amplitude -23
Pair D Amplitude -117
Pair A Amplitude -23
Pair B Amplitude -23
Pair C Amplitude -23
Pair D Amplitude -93
Pair A Amplitude -23
Pair B Amplitude -15
Pair C Amplitude -23
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -15
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -46
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39
Pair A Amplitude -15
Pair B Amplitude -7
Pair C Amplitude -15
Pair D Amplitude -39

2 Likes

Thanks for testing, that's good to know. As far as I know the WRT1900ACS is the only OpenWrt device which doesn't hit the Timeout on TDR test (with unpatched kernel) [edit: more working devices since - list below has been updated].

We have:

TDR works without patch:

  • Linksys WRT1900ACS
  • Linksys WRT3200ACM (OpenWrt 23.05.5)
  • Fortinet FG-50E (23.05.5) [probably 51E / 52E and FortiWiFi 50E-2R are fine too]

TDR doesn't work on unpatched kernel (works with patch):

  • Huawei AP5030DN

TDR doesn't work on unpatched kernel (unknown with patch):

  • MikroTek RB5009UG
  • Turis Omnia

Untested:

  • Solidrun Mochabin
  • Clearfog Pro and Base
  • Buffalo LS421DE
  • Ctera C200 V2
  • D-Link DWR-118-A2
  • Shuttle OMNINAS KD22
1 Like

That doesn't guarantee you don't have a compatible PHY.

Some SoCs and switch chips have integrated PHYs, and some don't.

The mac to PHY interface is standardised (SGMII or RMII), so you can (in theory) pair any mac with any PHY.

The Huawei AP5030DN is an ath79, but one of the PHYs (GE1 port) is a Marvell 88E1512.

SFP modules (also known as GBIC modules) are effectively are replaceable PHYs and pretty much just speak SGMII, so you could in theory implement cable testing on a particular SFP or SFP+ module too.

1 Like

It's working now:

root@router:~# ethtool --cable-test wan
Cable test started for device wan.
Cable test completed for device wan.
Pair A code OK
Pair B code OK
Pair C code OK
Pair D code OK

root@router:~# ethtool --cable-test lan1
Cable test started for device lan1.
Cable test completed for device lan1.
Pair A code OK
Pair B code OK
Pair C code Open Circuit
Pair D code Open Circuit
Pair C, fault length: 2.40m
Pair D, fault length: 2.40m

root@router:~# ethtool --cable-test lan2
Cable test started for device lan2.
Cable test completed for device lan2.
Pair A code OK
Pair B code OK
Pair C code OK
Pair D code OK
1 Like

What was up with lan1? just a two pair cable or truly a problem at around 2.4 meters?

Good question... It's a CAT-5e cable, but it's connected to an ethernet-over-powerline adapter, with a 100mbps interface.

I will do more tests with all the ports and different cables, to see what happens.

1 Like

Ah, that fits perfectly with the reported data... pairs A and B actually carry the fast-ethernet signals and pairs C and D basically hang open at the PLC adapter. Interesting question, how long is the cable from the router to the PLC adapter? (I believe the measurement only reports with a quantisation of 0.8 meters...)

Cable is inside a conduit and hard to pull out and back in, but 2.40m seems reasonable.

2 Likes

Does the ethtool --cable-test-tdr devname test give full data?

i.e. Without a Timeout while waiting for cable test to finish getting printed to the kernels logs which are viewable with dmesg?