How-to
For platform unique device like mttcan on Jetson Orin Nano
meta@meta-desktop:/etc/udev/rules.d$ sudo udevadm info /sys/class/net/can0
P: /devices/platform/bus@0/c310000.mttcan/net/can0
L: 0
E: DEVPATH=/devices/platform/bus@0/c310000.mttcan/net/can0
E: INTERFACE=can0
E: IFINDEX=2
E: SUBSYSTEM=net
E: USEC_INITIALIZED=10728608
E: ID_MM_CANDIDATE=1
E: ID_PATH=platform-c310000.mttcan
E: ID_PATH_TAG=platform-c310000_mttcan
E: ID_NET_DRIVER=mttcan
E: ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
E: ID_NET_NAME=can0
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/can0
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:
So the core idea is, find what’s unique
and immutable
for this device, and then set its name
Here the mttcan’s DEVPATH is unique and immutable, so we can use this as a handle to change its name.
Modify /etc/udev/rules.d/01-nvcan.rules
DEVPATH=="/devices/platform/bus@0/c310000.mttcan/net/*", NAME="can_mttcan"
And then reload it by reboot, since it is a platform probed
device, not something like usb ch340 device which can take effect immediately.
After reboot we can see by running ip addr
, can0
is now renamed to can_mttcan
meta@meta-desktop:/etc/udev/rules.d$ 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: can_mttcan: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
link/can
3: enP8p1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 48:b0:2d:d8:c9:5e brd ff:ff:ff:ff:ff:ff
5: l4tbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 3e:c7:e7:79:f3:87 brd ff:ff:ff:ff:ff:ff
inet 192.168.55.1/24 brd 192.168.55.255 scope global l4tbr0
valid_lft forever preferred_lft forever
inet6 fe80::1/128 scope link noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::3cc7:e7ff:fe79:f387/64 scope link
valid_lft forever preferred_lft forever
6: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master l4tbr0 state UP group default qlen 1000
link/ether 86:1b:04:83:56:29 brd ff:ff:ff:ff:ff:ff
inet6 fe80::841b:4ff:fe83:5629/64 scope link
valid_lft forever preferred_lft forever
7: usb1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master l4tbr0 state UP group default qlen 1000
link/ether 86:1b:04:83:56:2b brd ff:ff:ff:ff:ff:ff
inet6 fe80::841b:4ff:fe83:562b/64 scope link
valid_lft forever preferred_lft forever
8: enxba144d3cc73b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether ba:14:4d:3c:c7:3b brd ff:ff:ff:ff:ff:ff
inet 172.20.10.6/28 brd 172.20.10.15 scope global dynamic noprefixroute enxba144d3cc73b
valid_lft 85907sec preferred_lft 85907sec
inet6 2409:8929:d29:93ae:bf1b:9b91:aab4:9339/64 scope global temporary dynamic
valid_lft 602677sec preferred_lft 83862sec
inet6 2409:8929:d29:93ae:b6bb:8f67:c24c:c90d/64 scope global mngtmpaddr noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::29e8:54a5:700d:59dd/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Leave a Reply