I'm trying to configure a PC Engines box to run an OpenEmbedded build with one or more network interfaces with auto-negotiation turned off, and I seem to be missing something in my .link file. At boot time, I get these messages:

Dec 26 23:20:07 rl-000db948364a systemd[1]: Started udev Kernel Device Manager.
Dec 26 23:20:07 rl-000db948364a systemd-udevd[231]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
Dec 26 23:20:07 rl-000db948364a systemd-udevd[244]: link_config: Cannot set device settings for eth2 : Invalid argument
Dec 26 23:20:07 rl-000db948364a systemd-udevd[244]: Could not set speed or duplex of eth2 to 100 Mbps (full): Invalid argument
Dec 26 23:20:07 rl-000db948364a systemd-udevd[232]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.

My .link file for the network interface looks like this:



I thought perhaps that AutoNegotiation needed some other value, like off or disabled, but those don't seem to change anything, nor does 0. Using something I expect to fail, like vrai, gives me an error message about the illegality of the word when I use udevadm test-builtin.... Running udevadm info... shows that my .link file was used, and I am able to set wake-on-lan to values supported by the interface.

If, after boot-up, I set the duplex and speed with ethtool, it works just fine.

I'm dealing with an Intel Corp. I211 device.

Does anyone have a suggestion as to what else I might try? Thanks!


After exhausting all other options, I looked into the systemd-udevd source code, and there is a bug in systemd through at least v236 which prevents it from setting duplex or speed from the contents of .link files. I've submitted a patch to the developers, but it hasn't been accepted yet for the v237 milestone.

This is an esoteric problem that won't affect most people, but if you're building your systemd from source and absolutely, positively want to fix it yourself, the changes are found in the Github pull request.

  • It looks like this may have been merged for v237 but I don't actually see an explicit note in the changelog for this. Do you happen to know for sure if this made it into v237 (and therefore into Ubuntu 18.04?) – nezroy May 11 '18 at 16:33
  • 3
    It is. I received my one line of fame in the release notes. – ichabod May 12 '18 at 17:46
  • This helped me a lot! But be careful when using v237 - there is another bug which prevents this approach - So i guess you should at least use v239 - see issue 8889 – Odysseus Aug 4 '20 at 7:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.