# How do I set full duplex mode?

## mattjgalloway

Hey guys.

I was wondering if anyone knew how to set full duplex mode on my NIC. I am using DHCP at my uni network and I tried:

ethtool -s eth0 duplex full

But it crashes my network card and I had to reset the PC to get it back working :-S.

Anything else I can do?!

----------

## NeddySeagoon

mattjgalloway,

What is your NIC and what is your network topology ?

Not all equipment can support full duplex mode. e.g. hubs by defintion cannot.

----------

## mattjgalloway

Hey,

The network is:

Me -> University Network

I have no idea what switches / hubs they are using but I do know that 10Base-T Full Duplex mode is supported as all windows users can set the full duplex mode.

My network card is the 1000 GigaBit one which comes with NForce 4 boards. It is a Marvell gigabit chipset which can run at 10/100/1000 but I need it to run at 10-FD and it's running at 10-HD.

Any ideas?

----------

## ohyeah1942

not all cards are suported by ethtool.   the stable version of ethtool in portage is 2.   There is a 3 version, which is masked.   You might try that, it could work better.

If that doesnt work.   I suggest looking at the documentation in /usr/src/linux/Documentation/Networking/blah blah blah.   Find the docs for your eth card and they will contain commands to pass to the kernel to set your card up in the proper mode.

Thats if your card has documentation.   

What card do you have?

----------

## ohyeah1942

actually.   According to the documentation.  There are 2 different modules you can use for that card.

1 is sk98lin.   The kernel documentation says it is problematic and has been deprecated do to problems with ethtool

2.  the other is skge and it supposed to have better ethtool support.   

Thats from a 2.6.12-gentoo-r10 kernel .   I have no idea what the first avaiable kernel is with both of those options.

----------

## chrbecke

You could also try mii-tool from sys-apps/net-tools.

----------

## mattjgalloway

mii-tool gives me an error output.

I am using vanilla kernel and so I don't have skge - but I might try a gentoo kernel with skge as a test. At the moment I am building sk98lin as a module to see if I can load it with certain parameters to force full duplex mode.

Cheers for the help, I'll post back with any findings

----------

## mattjgalloway

Ok so sk98lin as a module didn't work  :Sad: . It sets full duplex mode fine, it just doesn't connect to the hub then, which is very odd because I know I should be able to use full duplex!

I'll try my other NIC and see if that works.

----------

## MrUlterior

sk98lin is deprecated in favour of the skge driver which works better. 

Rebuild your kernel with skge built as a module, I've many of these cards working flawlessly at full duplex 1000mbit with it.

----------

## mattjgalloway

skge isn't in the vanilla kernel, but I am going to try a gentoo kernel with skge yes.

Is it right that it's not in the vanilla kernel? Will it ever be in it?

----------

## MrUlterior

```
# uname -a

Linux xenophobe 2.6.13.2-xeno-1 #1 Mon Oct 3 21:51:18 CEST 2005 i686 AMD Athlon(tm) XP 1800+ AuthenticAMD GNU/Linux

```

So, it's a vanilla kernel ...

```
# lsmod | egrep skge

skge                   36752  0
```

And it's got skge ...

```
# ethtool eth0

Settings for eth0:

        Supported ports: [ TP ]

        Supported link modes:   10baseT/Half 10baseT/Full

                                100baseT/Half 100baseT/Full

                                1000baseT/Half 1000baseT/Full

        Supports auto-negotiation: Yes

        Advertised link modes:  10baseT/Half 10baseT/Full

                                100baseT/Half 100baseT/Full

                                1000baseT/Half 1000baseT/Full

        Advertised auto-negotiation: Yes

        Speed: 1000Mb/s

        Duplex: Full

        Port: Twisted Pair

        PHYAD: 0

        Transceiver: internal

        Auto-negotiation: on

        Supports Wake-on: g

        Wake-on: d

        Current message level: 0x00000037 (55)

        Link detected: yes

```

That's running at gigabit & full-duplex, the command used to set this was:

```
ethtool -s eth0 speed 1000 duplex full
```

```
# zgrep -i skge /proc/config.gz

CONFIG_SKGE=m

```

And that's the option to build it as a module in your kernel config.

----------

## MrUlterior

Oh, yes and its a Marvell card  :Smile: 

```
# lspci | egrep -i marvell

0000:01:04.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)
```

----------

## mattjgalloway

Wooo!

Cheers!

I upgraded to 2.6.13.2 vanilla kernel and now I have it running in full duplex mode! Cheers for the advice there, worked a treat!

----------

