Configuración en modo 10 half duplex de una tarjeta de red, ¿cómo hacer que lo recuerde al reiniciar?

Hola. Mi problema es el siguiente:

Hoy me cambiaron el modem de acceso de Telecable y, por algún extraño motivo, debe espeficiarse en la configuración de la tarjeta de red que se va a usar en modo 10 half duplex. Digo extraño porque con el modem anterior no había que hacer nada especial (lo de usar esa configuración me lo dijeron los de Telecable, que no es el primer caso en que ocurre).

Desgraciadamente sólo sabían cómo configurarlo en güindous, así que para hacerlo en Linux me tuve que buscar la vida.


Tras una investigación encontré que debía configurar la interfaz ethernet mediante:

ethtool -s eth0 speed 10 duplex half autoneg off

Una vez hecho eso, creo una nueva conexión mediante el centro de control de Mandrake y todos contentos, funciona el acceso a internet.

El problema llega a la hora de reiniciar, ya que no consigue arrancar la interfaz de red. Utilizando un ethtool eth0 puede verse que está configurada a la vieja usanza, 100 y full duplex.

Investigando por /etc y Google encontré que se puede especificar la configuración en el archivo /etc/sysconfig/network-scripts/ifcfg-eth0. Así que añadí la siguiente línea:

ETHTOOL_OPTS="speed 10 duplex half autoneg off"

Reinicié lleno de ilusión... pero nada :(


¿Alguien podría echarme una mano? ¿Qué se me escapa? Muchas gracias.

Opciones de visualización de comentarios

Seleccione la forma que desee de mostrar los comentarios y haga clic en «Guardar opciones» para activar los cambios.

# 3893: usa mii-tool

Tienes la herramienta mii-tool que te permite ver las caracteristicas de tus dispositivos eth asi como manipularlos al gusto.
ejemplo:

# mii-tool 
# eth0: negotiated 100baseTx-FD, link ok



Si queremos ver las capacidades de el dispositivo, aplicamos el flag -v

# mii-tool -v 
eth0: negotiated 100baseTx-FD, link ok
  product info: vendor 00:00:00, model 0 rev 0
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control



Como vemos la tarjeta soporta FD y HD, asi que, si quremos cambiar a HD usamos:

#mii-tool --force 100baseTx-HD eth0



Comprobamos que el cambio es efectivo.

# mii-tool 
# eth0: 100 Mbit, half duplex, link ok



Ahora bien, no se aun como especificar esto en el fichero ifcfg-eth0, pero puedes añadir la orden al final del rc.local para que sea efectivo hasta que encuentres la manera.

Mira el man de mii-tool y google para ver como sacar partido a la herramienta.
Espero que te sirva.

Gravatar de pacho

# 3900: Como dice morghot

Yo también lo lanzo en el rc.local.

Saludos

Mozilla1.7.5
Blobwars

# 3982: Pues habrá que tirar de rc.local

Hola. Gracias por vuestras respuestas.

mii-tool sabía que existía, pero no me había dado por mirarla ya que con ethtool conseguía configurarlo adecuadamente. No obstante, ya le echaré un ojo más a fondo, a ver si se lleva mejor con la configuración de los scripts de arranque que ethtool.

Sobre lo de rc.local tenía pensado hacer algo así, aunque antes quería saber si había alguna forma más "limpia" (por llamarlo de alguna manera, creo que se entiende ;) ). Pero bueno, hasta que tenga más tiempo, así se quedará :)

Lo dicho, muchas gracias.

# 4041: Al final encontré la forma...

...si bien no sé yo cómo de correcta será ;)

Oteando por los scripts y experimentando un poco, me encontré que aunque añadiese lo de ETHTOOL_OPTS al archivo ifcfg-eth0, no ejecutaba ethtool.

El problema es que ese comando lo ejecuta sólo si la interfaz es esclava (o algo así...) y si la configuración no es dinámica. En mi caso, no es esclava (eso revelaron mis experimentos, admito que no sé a qué se refiere ;) ) y la configuración sí es dinámica, por lo que no se llegaba a ejecutar nunca.

Así que lo que hice fue añadir:


if [ -n "$ETHTOOL_OPTS" ] ; then

/usr/sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS

fi


donde empieza la configuración dinámica. Y ahora sí funciona :)

Ya digo que esta solución igual es una guarrada mayor que la de rc.local... pero bueno, sé que funciona. Si alguien puede iluminarme al respecto le estaría muy agradecido ;)

Una cosa curiosa es que la llamada que tiene en los scripts en los dos sitios que hace la llamada es:

/sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS

cuando realmente debería ser:

/usr/sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS

Realmente no sé por qué es esto... porque si fuese un bug de verdad debería estar más que arreglado (el fallo es gordo creo yo), ¿no?