Remapping serial ports in 14.04 using udev rules not working?

So I have a udev rules file to remap the serial ports as they are not in the order required. The rules work fine on SLES11 SP1 but do not seem to do anything on 14.04.

SUBSYSTEM=="platform", DRIVERS=="serial8250", KERNELS=="serial8250", KERNEL=="ttyS2", NAME="ttyS10"
SUBSYSTEM=="platform", DRIVERS=="serial8250", KERNELS=="serial8250", KERNEL=="ttyS3", NAME="ttyS11"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{id}=="PNP0501", KERNEL=="ttyS4", NAME="ttyS12"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{id}=="PNP0501", KERNEL=="ttyS5", NAME="ttyS13"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{subsystem_vendor}=="0x1415", KERNEL=="ttyS6", NAME="ttyS2"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{subsystem_vendor}=="0x1415", KERNEL=="ttyS7", NAME="ttyS3"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{subsystem_vendor}=="0x1415", KERNEL=="ttyS8", NAME="ttyS4"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{subsystem_vendor}=="0x1415", KERNEL=="ttyS9", NAME="ttyS5"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{subsystem_vendor}=="0x1415", KERNEL=="ttyS10", NAME="ttyS6"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{subsystem_vendor}=="0x1415", KERNEL=="ttyS11", NAME="ttyS7"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{subsystem_vendor}=="0x1415", KERNEL=="ttyS12", NAME="ttyS8"
SUBSYSTEM=="tty", DRIVERS=="serial", ATTRS{subsystem_vendor}=="0x1415", KERNEL=="ttyS13", NAME="ttyS9"

I have tried using setserial a swell but with no progress.


Solution 1:

udevhas been changed, it supports NAME only for network interfaces nothing more.

  • From the release note, SLES11 SP1 is Version 11.1.1.10 (2012-04-17), so it should be same as Ubuntu 12.04.

       NAME
           Match the name of the node or network interface. It can be used
           once the NAME key has been set in one of the preceding rules.
       ...
    
       NAME
           What a network interface should be named.
    
           Also, as a temporary workaround, this is what a device node should
           be named; usually the kernel provides the defined node name or
           creates and removes the node before udev even receives any event.
           Changing the node name from the kernel's default creates
           inconsistencies and is not supported. If the kernel and NAME
           specify different names, an error is logged. udev is only expected
           to handle device node permissions and to create additional
           symlinks, not to change kernel-provided device node names. Instead
           of renaming a device node, SYMLINK should be used. However, symlink
           names must never conflict with device node names, as that would
           result in unpredictable behavior.
    
  • Where in Ubuntu 14.04

       NAME
           Match the name of a network interface. It can be used once the NAME
           key has been set in one of the preceding rules.
       ...
       NAME
           The name to use for a network interface. The name of a device node
           cannot be changed by udev, only additional symlinks can be created.
    

Note, the 1st NAME is for condition match and 2nd NAME is for action. You can compare both man pages at manpages.ubuntu.com

For complete answer, you should look for creating new symlinks instead using SYMLINK udev action.