I recently purchased a TP-Link TX401 network adapter, which is based on the Marvell AQC-107 controller.
This card works flawlessly under Windows 10.
When booting into Manjaro however it seems to be visible via terminal as enp2s0 (but not in the KDE GUI), but is unable to establish a link.
Here is the ethtool output:
ethtool enp2s0
Settings for enp2s0:
Supported ports: [ TP ]
Supported link modes: 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Unknown! (255)
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
MDI-X: Unknown
netlink error: Operation not permitted
Current message level: 0x00000005 (5)
drv link
Link detected: no
Looking online it seems that there may be a firmware update which fixes this in Linux, but the information is not exactly official and i don’t feel like bricking a CAD$150 network card.
Does anyone have experience getting these to work?
In the future, when providing code/output, please copy-paste that output in-between 3 backticks ``` at the beginning and end of the code/text so that the output looks like this:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
instead of like this:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.`
(as that makes both our lives much easier)
No need to do anything right now as I’m an editor here on this site and have fixed it for you already. However, in the future I might not see your post so review my edits by pushing the orange pencil above the post I just fixed.
I have no experience with this particular card, but do have tons of experience with high-speed cards.
That it works under Windows, but not under Linux doesn’t mean anything: the Windows network driver model is completely different from the Linux one.
nmcli is preferred over ethtool nowadays as it has more options, but as you seem to be an old fart just like meyou’re an experienced user and have installed ethtool already, please do the following:
Boot Windows and see on the switch side to which speed/duplex Windows sets the card
Cold boot into Manjaro
Remove auto-negotiation
Set the speed / duplex to the same values as Windows used using ethtool
If that doesn’t do the trick, or my assumption you being an experienced user is wrong, please shout out!
Thank you for taking the time to respond. Unfortunately, it neither did the trick, nor am I an experienced user. I’ve been moving over to Linux slowly over the last 4 months or so. At this point it’s my daily driver, but my knowledge base is still pretty limited.
I was able to update the firmware on the card to the latest version, 3.1.121. That in combination with forcing the link speed to the autonegotiated speed in windows resulted in the following:
[rsbonini@MERCURY ~]$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 90:2b:34:dd:40:a4 brd ff:ff:ff:ff:ff:ff
3: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether d8:07:b6:8e:5b:f7 brd ff:ff:ff:ff:ff:ff
[rsbonini@MERCURY ~]$ sudo ethtool -s enp2s0 speed 5000 duplex full autoneg off
[rsbonini@MERCURY ~]$ ethtool enp2s0
Settings for enp2s0:
Supported ports: [ TP ]
Supported link modes: 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 5000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 5000Mb/s
Duplex: Full
Auto-negotiation: off
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
MDI-X: Unknown
netlink error: Operation not permitted
Current message level: 0x00000005 (5)
drv link
Link detected: yes
While the link deteced status is now “yes” the link drops in and out constantly. I also tried setting the speed to 1000 and got the same result. There is a linux driver available from MArvell, but it requires building a kernel module which I’ve not ever done before. Seems the next thing to try when I have some time.
Please provide an inxi --admin --verbosity=7 --filter --no-host --width
Using ethtool, keep auto-negotiation off.
Start with 100Mbps, half duplex and work upwards to 100Mbps FD, 1000Mbps HD, … until the problem starts. Then go down one notch and leave it at that speed.
Do an ip address to check whether you got an IP address for every speed.
When I tried to manually set the link speed, I was unable to use any half-duplex modes as I got “Operation not permitted” message. I’m guessing they’re unsupported.
The problem started right from 100Mbps FD, with the link coming in and out. I checked and did get an ip address with this intermittent connection.
Hi! Based on your hardware configuration, I would guess it is a PCH/Motherboard limitation/driver problem.
To verify: Which PCI-e socket is used for the TP-Link card? If it’s one of the PCH switched sockets, could you test it by swapping it to one of the direct CPU driven sockets?
1 x PCI Express x16 slot, running at x16 (PCIEX16)
* For optimum performance, if only one PCI Express graphics card is to be installed, be sure to install it in the PCIEX16 slot.
1 x PCI Express x16 slot, running at x8 (PCIEX8)
* The PCIEX8 slot shares bandwidth with the PCIEX16 slot. When the PCIEX8 slot is populated, the PCIEX16 slot will operate at up to x8 mode.
1 x PCI Express x16 slot, running at x4 (PCIEX4)
* The PCIEX4 slot shares bandwidth with the PCIEX1_1/2/3 slots. The PCIEX1_1/2/3 slots slots will become unavailable when a PCIe x4 expansion card is installed.
3 x PCI Express x1 slots
(PCIEX4 and PCIEX1 slots conform to PCI Express 2.0 standard.)
1 x PCI slots
If it’s not possible to switch cards around, to be continued.
Edit: What speeds can you actual reach under Windows? Due to bandwith and actual throughput of PCI-e 2.0 and or PCi-e 3.0
@Fabby, Thanks for your suggestions. It took me a while to get around to this as I had to drag the machine from it’s home in the office down to the basement where the switch is located. Long story short it was indeed a cable problem. When connected directly to the switch everything linked up at 10Gb immediately, no problem.
I hadn’t bothered trying this because I was getting 5Gb connectivity in windows (which still seems odd to me). Serves me right for dismissing a possibility without actually testing.
Anyway, the actual problem was that a cat5e connector had been used at one end of the cable run. Surprised one connector would make such a difference. But, replaced it with a cat6 rated connector and everything worked immediately thereafter. Iperf tests are hitting about 8.5gbps with all default network settings.
@Seabass, just for completeness, the card is in the 3.0 x8 slot which splits the x16 bus with the GPU slot.
Thanks all for your help, you can consider this one closed.
No you very probably weren’t hitting that speed in Windows either¹ so I’ve marked this answer as the solution to your question as it is by far the best answer you’ll get.
However, if you disagree with my choice, please feel free to take any other answer as the solution to your question or even remove the solution altogether: You are in control! (If you disagree with my choice, just send me a personal message and explain why I shouldn’t have done this or or if you agree)
Note 1: DM me if you want the dirty details
P.S. In the future, please don’t forget to come back and click the 3 dots below the answer to mark a solution like this below the answer that helped you most:
so that the next person that has the exact same problem you just had will benefit from your post as well as your question will now be in the “solved” status.