我刚买了一个D-Link DIR-652无线路由器,现在我想使用 1 米 Cat 5e 以太网电缆连接 Shuttle XS25GT V2 计算机。Shuttle 运行 Ubuntu 12.10 并配有 JMC250 以太网卡。
当我插入网线时,Shuttle 检测不到连接,因此无法与网络通信。 的输出ethtool
与未插入网线时完全相同:
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
使用不同的网线(1m、3m、15m)时,情况没有改变。奇怪的是,当我使用同一根网线将另一台计算机与路由器连接时,一切正常,当我使用同一根网线将 Shuttle 连接到另一台路由器(不同型号)时,一切正常。
我发现关闭自动协商可以解决问题。运行后ethtool -s p33p1 autoneg off speed 100 duplex full
,输出如下:
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
但是,千兆以太网需要自动协商,因此这只能在降低速度的情况下工作。
我怀疑路由器的“绿色以太网”功能可能检测不到电缆的连接,因此无法打开以太网端口的电源。不过,似乎没有办法在路由器的配置菜单中禁用绿色以太网。
有人知道我该如何解决这个问题吗?我尝试手动告诉网卡使用 协商连接ethtool -r
,但没有任何效果。
答案1
我敢打赌,您的路由器正在等待听到连接到它的链接类型将以何种速度运行以打开端口,并且看到您的 Shuttle 正在等待听到它应该以何种速度运行,将继续等待,因为端口已关闭!
我还没有阅读手册,所以我无法告诉你如何去做,但看看你是否可以关闭你的 Shuttle 所连接的一个端口的绿色网络(并保持自动协商开启)并看看会发生什么。
另一个想法是让您的 Shuttle 以某种方式强制发出数据包(例如手动 ping 到 127.0.0.1)以在端口上呈现某种电活动。
浏览完 D-Link 的网站后,我发现绿色以太网似乎主要是营销手段。我之所以说主要是因为该技术具有节能潜力,但他们提到的一些功能已经在其他技术中使用。因此,从理论上讲,“关闭端口以节省能源”可能是一个好主意,但我认为它对其他一些设备的工作原理做出了一些错误的假设,并且弊大于利。
GL
答案2
这就是我目前发现的以及解决问题的方法。
首先,我在网上看到过很多关于同一问题的报告,这个例如。大多数人似乎已经通过升级 jme 驱动程序解决了这个问题。我发现了更新版本的 JME 驱动程序ftp://driver.jmicron.com.tw/Ethernet/Linux/和http://bbs.cooldavid.org/git/?p=jme.git;a=summary。Git 存储库中的最新驱动程序 (bp-1.0.8.9-noasd) 对我的问题没有任何改变。
JMicron 网站上的 bp-1.0.8.5 版本(奇怪的是,1.0.8.3 到 1.0.8.5 版本在 Git 存储库中不可用)提供了一种解决方法,使问题不那么烦人:它与 1.0.8.4 相同(甚至是同一天上传的),只是它添加了delay_time
模块参数,这会导致网卡在无法连接几秒钟后自动回落到 100 MBit/s(默认为 11)。这样,链接检测就可以正常工作,因此它节省了我手动运行的时间ethtool
,但连接只有 100 MBit/s。
我扔掉了 D-Link DIR-652 路由器,买了一个TP-Link TL-WDR3600而不是。这样,我最初遇到了完全相同的问题。然后我安装了DD-WRT固件,突然间,问题就消失了。