Date: 2025jun22
Platform: Raspberry Pi 5
Q. Raspberry Pi 5: force 4 wire ethernet (100BaseT)
A. When I simply connected a 4 wire ethernet cable between
2 Raspberry Pi 5s the "eth0" device wasn't created - ie the connection
wasn't recognized and they couldn't communicate.
I tried many settings but what finally worked was:
ethtool -s eth0 advertise 0x008
I added it to the /etc/rc.local file so its run whenever its rebooted.
Here are all the available choices from the manual:
advertise N
Sets the speed and duplex advertised by autonegotiation. The
argument is a hexadecimal value using one or a combination of
the following values:
0x001 10baseT Half
0x002 10baseT Full
0x100000000000000000000000 10baseT1L Full
0x8000000000000000000000000 10baseT1S Full
0x10000000000000000000000000 10baseT1S Half
0x20000000000000000000000000 10baseT1S_P2MP Half
0x40000000000000000000000000 10baseT1BRR Full
0x004 100baseT Half
0x008 100baseT Full
0x80000000000000000 100baseT1 Full
0x40000000000000000000000 100baseFX Half
0x80000000000000000000000 100baseFX Full
0x010 1000baseT Half (not supported by IEEE standards)
0x020 1000baseT Full
0x20000 1000baseKX Full
0x20000000000 1000baseX Full
0x100000000000000000 1000baseT1 Full
0x8000 2500baseX Full (not supported by IEEE standards)
0x800000000000 2500baseT Full
0x1000000000000 5000baseT Full
0x1000 10000baseT Full
0x40000 10000baseKX4 Full
0x80000 10000baseKR Full
0x100000 10000baseR_FEC
0x40000000000 10000baseCR Full
0x80000000000 10000baseSR Full
0x100000000000 10000baseLR Full
0x200000000000 10000baseLRM Full
0x400000000000 10000baseER Full
0x200000 20000baseMLD2 Full (not supported by IEEE standards)
0x400000 20000baseKR2 Full (not supported by IEEE standards)
0x80000000 25000baseCR Full
0x100000000 25000baseKR Full
0x200000000 25000baseSR Full
0x800000 40000baseKR4 Full
0x1000000 40000baseCR4 Full
0x2000000 40000baseSR4 Full
0x4000000 40000baseLR4 Full
0x400000000 50000baseCR2 Full
0x800000000 50000baseKR2 Full
0x10000000000 50000baseSR2 Full
0x10000000000000 50000baseKR Full
0x20000000000000 50000baseSR Full
0x40000000000000 50000baseCR Full
0x80000000000000 50000baseLR_ER_FR Full
0x100000000000000 50000baseDR Full
0x8000000 56000baseKR4 Full
0x10000000 56000baseCR4 Full
0x20000000 56000baseSR4 Full
0x40000000 56000baseLR4 Full
0x1000000000 100000baseKR4 Full
0x2000000000 100000baseSR4 Full
0x4000000000 100000baseCR4 Full
0x8000000000 100000baseLR4_ER4 Full
0x200000000000000 100000baseKR2 Full
0x400000000000000 100000baseSR2 Full
0x800000000000000 100000baseCR2 Full
0x1000000000000000 100000baseLR2_ER2_FR2 Full
0x2000000000000000 100000baseDR2 Full
0x8000000000000000000 100000baseKR Full
0x10000000000000000000 100000baseSR Full
0x20000000000000000000 100000baseLR_ER_FR Full
0x40000000000000000000 100000baseCR Full
0x80000000000000000000 100000baseDR Full
0x4000000000000000 200000baseKR4 Full
0x8000000000000000 200000baseSR4 Full
0x10000000000000000 200000baseLR4_ER4_FR4 Full
0x20000000000000000 200000baseDR4 Full
0x40000000000000000 200000baseCR4 Full
0x100000000000000000000 200000baseKR2 Full
0x200000000000000000000 200000baseSR2 Full
0x400000000000000000000 200000baseLR2_ER2_FR2 Full
0x800000000000000000000 200000baseDR2 Full
0x1000000000000000000000 200000baseCR2 Full
0x200000000000000000 400000baseKR8 Full
0x400000000000000000 400000baseSR8 Full
0x800000000000000000 400000baseLR8_ER8_FR8 Full
0x1000000000000000000 400000baseDR8 Full
0x2000000000000000000 400000baseCR8 Full
0x2000000000000000000000 400000baseKR4 Full
0x4000000000000000000000 400000baseSR4 Full
0x8000000000000000000000 400000baseLR4_ER4_FR4 Full
0x10000000000000000000000 400000baseDR4 Full
0x20000000000000000000000 400000baseCR4 Full
0x200000000000000000000000 800000baseCR8 Full
0x400000000000000000000000 800000baseKR8 Full
0x800000000000000000000000 800000baseDR8 Full
0x1000000000000000000000000 800000baseDR8_2 Full
0x2000000000000000000000000 800000baseSR8 Full
0x4000000000000000000000000 800000baseVR8 Full
Its nice that all these arguably obsolete modes are supported.