Plugged-in network cable is not detected (possibly related to green ethernet?)

1

I have just purchased a D-Link DIR-652 wireless router, and now I want to connect a Shuttle XS25GT V2 computer using a 1 metre Cat 5e ethernet cable. The Shuttle runs Ubuntu 12.10 and has a JMC250 Ethernet card.

When I plug the network cable in, the Shuttle does not detect the connection and can thus not communicate with the network. The output of ethtool is exactly the same as if no network cable was plugged in:

root@shuttle:~# ethtool p33p1
Settings for p33p1:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Speed: 10Mb/s
        Duplex: Half
        Port: MII
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pg
        Wake-on: g
        Current message level: 0x000020c6 (8390)
                               probe link rx_err tx_err hw
        Link detected: no

This does not change using a different network cable (1m, 3m, 15m). Strangely, when I connect a different computer with the router using the same network cable, everything works fine, and when I connect the Shuttle to a different router (of a different model) using the same network cable, it also works.

I have discovered that turning auto-negotiation off fixes the problem. After running ethtool -s p33p1 autoneg off speed 100 duplex full, this is the output:

root@shuttle:~# ethtool p33p1
Settings for p33p1:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: pg
        Wake-on: g
        Current message level: 0x000020c6 (8390)
                               probe link rx_err tx_err hw
        Link detected: yes

However, Gigabit ethernet requires auto-negotiation, so this will only work with reduced speed.

I suspect that the “Green Ethernet” functionality of the router might not detect the connection of the cable and thus not turn on the power of the ethernet port. There seems to be no way to disable Green Ethernet in the config menu of the router, though.

Does anyone have an idea how I could fix this problem? I tried to manually tell the network card to negotiate a connection using ethtool -r, but that did not do anything.

linux
ethernet
gigabit-ethernet
asked on Super User Jan 15, 2013 by cdauth • edited Jan 27, 2013 by cdauth

2 Answers

1

I'm willing to bet that your router is waiting to hear what kind of link whatever is connected to it is going to run at to turn the port on, and seeing that your Shuttle is waiting to hear what speed it's supposed to run at will keep waiting because the port is turned off!

I haven't read the manual yet so I can't tell you how to do it, but see if you can turn off the Green Networking for the one port your Shuttle is connected to (and leave the auto-negotiation on) and see what happens.

The other thought is to get your Shuttle to force a data packet out somehow (manual ping to 127.0.0.1 for example) to present some sort of electrical activity on the port.

After reading through D-Link's website, Green Ethernet seems to be mostly marketing. I do say mostly because there is potential to save energy, but some of the features they mention are already used in other pieces of technology. So, perhaps the "turning off the port to save energy" is a good idea in theory, but I think it makes some bad assumptions about how some other devices work and is more of a pain than practical.

GL

answered on Super User Jan 15, 2013 by Paul
0

This is what I’ve found out and how I have solved the issue for now.

First of all, I have come accross numerous reports of the same issue on the internet, this one for instance. Most people seem to have solved the issue by upgrading the jme driver. I have found newer versions of the JME driver on ftp://driver.jmicron.com.tw/Ethernet/Linux/ and http://bbs.cooldavid.org/git/?p=jme.git;a=summary. The newest driver from the Git repository (bp-1.0.8.9-noasd) does not change anything about my problem.

Version bp-1.0.8.5 from the JMicron website (strangely, versions 1.0.8.3 to 1.0.8.5 are not available in the Git repository) provides a workaround for the issue that makes it a bit less annoying: It is the same as 1.0.8.4 (it was even uploaded the same day), except that it adds the delay_time module parameter, which causes the network card to automatically fall back to 100 MBit/s after it cannot connect for several seconds (by default 11). With this, link detection works, so it saves me running ethtool manually, but of the connection is only 100 MBit/s.

I got rid of the D-Link DIR-652 router and bought a TP-Link TL-WDR3600 instead. With that, I initially had exactly the same problem. Then I installed the DD-WRT firmware, and suddenly, the issue vanished.

answered on Super User Jan 27, 2013 by cdauth

User contributions licensed under CC BY-SA 3.0