Network Card Order Change on Nvidia Jetson Orin Nano Dev Board
Issue Overview
Users of the Nvidia Jetson Orin Nano Dev Board have reported issues regarding the order in which network interfaces are assigned upon booting. Specifically, when the board is powered on with a USB network card plugged in, the USB network card is assigned as eth0
, while the onboard Ethernet interface appears as eth1
. Conversely, if the USB network card is not connected during boot, the onboard Ethernet interface is assigned as eth0
. The problem arises when users want to maintain a consistent interface naming convention, preferring the onboard Ethernet to always be eth0
. This issue has been consistently observed by multiple users, indicating a potential configuration problem within the udev rules or network interface enumeration process.
Possible Causes
- Udev Configuration: The default behavior of udev assigns network interfaces based on enumeration order, which can lead to inconsistent naming. Without specific rules, devices are named according to their connection order.
- MAC Address Assignment: Udev may use MAC addresses for naming interfaces when specific rules are defined. If no rules exist, the first detected device gets the lowest number.
- Driver Issues: Potential conflicts or bugs in the drivers managing network interfaces could lead to unexpected behavior during device initialization.
- User Configuration Errors: Users may not have correctly modified udev rules or may lack necessary permissions to apply changes.
- Environmental Factors: Power supply inconsistencies or hardware faults could affect how devices are recognized during boot.
Troubleshooting Steps, Solutions & Fixes
-
Check Current Interface Assignments:
- Use the command:
ip link show
- This will display current network interfaces and their assigned names.
- Use the command:
-
Modify Udev Rules:
- Create a new udev rule to set persistent names based on MAC addresses. This ensures that specific devices are always assigned the same name.
- Create a file in
/etc/udev/rules.d/
(e.g.,70-persistent-net.rules
) and add entries like:SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="<USB_MAC_ADDRESS>", NAME="eth0" SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="<ETH_MAC_ADDRESS>", NAME="eth1"
- Replace
<USB_MAC_ADDRESS>
and<ETH_MAC_ADDRESS>
with actual MAC addresses of your devices.
-
Reload Udev Rules:
- After modifying udev rules, reload them with:
sudo udevadm control --reload-rules sudo udevadm trigger
- After modifying udev rules, reload them with:
-
Reboot the System:
- Reboot the Jetson Orin Nano to apply changes:
sudo reboot
- Reboot the Jetson Orin Nano to apply changes:
-
Testing Changes:
- After rebooting, run
ip link show
again to confirm that interfaces are assigned as expected.
- After rebooting, run
-
Check Logs for Errors:
- Review system logs for any errors related to network interface initialization:
dmesg | grep eth
- Review system logs for any errors related to network interface initialization:
-
Driver Updates:
- Ensure that all drivers are up-to-date by running:
sudo apt update sudo apt upgrade
- Ensure that all drivers are up-to-date by running:
-
Consult Documentation and Community Forums:
- For further assistance or unresolved issues, refer to Nvidia’s developer forums or documentation related to udev and network configuration.
-
Best Practices for Future Prevention:
- Always ensure that any USB devices are connected before powering on if consistent naming is critical.
- Regularly check for updates from Nvidia regarding driver support and bug fixes.
By following these steps, users should be able to resolve issues with network card enumeration on their Nvidia Jetson Orin Nano Dev Board effectively.