INTERFACE is not shown as an identifier here:
root@bpi-r2:~# udevadm info -a -p /sys/class/net/mt6625_0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/platform/180f0000.wifi/net/mt6625_0':
KERNEL=="mt6625_0"
SUBSYSTEM=="net"
DRIVER==""
ATTR{dev_id}=="0x0"
ATTR{carrier_changes}=="0"
ATTR{name_assign_type}=="2"
ATTR{addr_assign_type}=="0"
ATTR{type}=="1"
ATTR{carrier_down_count}=="0"
ATTR{mtu}=="1500"
ATTR{addr_len}=="6"
ATTR{iflink}=="9"
ATTR{gro_flush_timeout}=="0"
ATTR{operstate}=="down"
ATTR{proto_down}=="0"
ATTR{carrier_up_count}=="0"
ATTR{link_mode}=="0"
ATTR{netdev_group}=="0"
ATTR{address}=="00:08:22:00:d2:fb"
ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
ATTR{tx_queue_len}=="1000"
ATTR{flags}=="0x1002"
ATTR{dev_port}=="0"
ATTR{ifalias}==""
ATTR{ifindex}=="9"
looking at parent device '/devices/platform/180f0000.wifi':
KERNELS=="180f0000.wifi"
SUBSYSTEMS=="platform"
DRIVERS=="mt-wifi"
ATTRS{driver_override}=="(null)"
looking at parent device '/devices/platform':
KERNELS=="platform"
SUBSYSTEMS==""
DRIVERS==""
but can be seen in my post above when running udevadm test /sys/class/net/mt6625_0
Trying ACTION=="add", SUBSYSTEM=="net", INTERFACE=="mt6625_0", RUN+="/sbin/ip link set dev %k address ba:de:af:fe:13:37"
as udev rule does not seem to work:
root@bpi-r2:~# udevadm test /sys/class/net/mt6625_0
Rules contain 24576 bytes tokens (2048 * 12 bytes), 12673 bytes strings
1791 strings (22294 bytes), 1177 de-duplicated (10236 bytes), 615 trie nodes used
Using default interface naming scheme 'v240'.
Config file /lib/systemd/network/99-default.link applies to device mt6625_0
link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
DEVPATH=/devices/platform/180f0000.wifi/net/mt6625_0
DEVTYPE=wlan
INTERFACE=mt6625_0
IFINDEX=9
ACTION=add
SUBSYSTEM=net
ID_NET_NAMING_SCHEME=v240
ID_NET_NAME_MAC=wlx00082200d2fb
ID_OUI_FROM_DATABASE=InPro Comm
ID_PATH=platform-180f0000.wifi
ID_PATH_TAG=platform-180f0000_wifi
ID_NET_DRIVER=mt-wifi
ID_NET_LINK_FILE=/lib/systemd/network/99-default.link
TAGS=:systemd:
SYSTEMD_ALIAS=/sys/subsystem/net/devices/mt6625_0
USEC_INITIALIZED=26304977
run: 'bridge-network-interface'
run: 'ifupdown-hotplug'
run: '/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/mt6625_0 --prefix=/net/ipv4/neigh/mt6625_0 --prefix=/net/ipv6/conf/mt6625_0 --prefix=/net/ipv6/neigh/mt6625_0'
Unload module index
The command to set the mac does not appear.
I tried with a different mac instead: ACTION=="add", SUBSYSTEM=="net", KERNEL=="mt6625_0", RUN+="/sbin/ip link set dev %k address ba:de:af:fe:13:37"
(this should be valid, it is not a multicast address and it is a local-only mac address)
This does verify again with udevadm test
, but does not set the mac.
Changing the mac addresses of the other ports does work just fine:
ACTION=="add", SUBSYSTEM=="net", KERNELS=="1b100000.ethernet", RUN+="/sbin/ip link set dev %k address ba:de:af:fe:ff:ff"
ACTION=="add", SUBSYSTEM=="net", KERNEL=="lan0", RUN+="/sbin/ip link set dev %k address ba:de:af:fe:00:00"
ACTION=="add", SUBSYSTEM=="net", KERNEL=="lan1", RUN+="/sbin/ip link set dev %k address ba:de:af:fe:00:01"
This gives every adapter connected to eth0 the address ba:de:af:fe:ff:ff
and lan0 ba:de:af:fe:00:00
as well as lan1 ba:de:af:fe:00:01
:
root@bpi-r2:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1504 qdisc pfifo_fast state UP group default qlen 1000
link/ether ba:de:af:fe:ff:ff brd ff:ff:ff:ff:ff:ff
inet6 fe80::b8de:afff:fefe:ffff/64 scope link
valid_lft forever preferred_lft forever
3: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
4: wan@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether ba:de:af:fe:ff:ff brd ff:ff:ff:ff:ff:ff
5: lan0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ba:de:af:fe:00:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.178.170/24 brd 192.168.178.255 scope global dynamic lan0
valid_lft 863054sec preferred_lft 863054sec
inet6 2001:16b8:a0f:6700:b8de:afff:fefe:0/64 scope global dynamic mngtmpaddr
valid_lft 6824sec preferred_lft 3224sec
inet6 fe80::b8de:afff:fefe:0/64 scope link
valid_lft forever preferred_lft forever
6: lan1@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether ba:de:af:fe:00:01 brd ff:ff:ff:ff:ff:ff
7: lan2@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether ba:de:af:fe:ff:ff brd ff:ff:ff:ff:ff:ff
8: lan3@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether ba:de:af:fe:ff:ff brd ff:ff:ff:ff:ff:ff
9: mt6625_0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:08:22:00:d2:fb brd ff:ff:ff:ff:ff:ff
I feel like the issue must lie deeper, but the only info I get is
root@bpi-r2:~# ip link set mt6625_0 address ba:de:af:fe:13:37
RTNETLINK answers: Operation not supported
I do not know where to go from here.