Pin CAN interface names by udev; document device naming

mttcan and pcan both load at boot, so the PCAN adapter could take can0
and push the onboard controller to can1. A udev rule now names them
can_onboard (platform c310000.mttcan) and can_pcan (USB 0c72:000c),
both outside the canN pool so a transient canN can never collide.

Also records why the SIM7600 needs nothing more: ModemManager and NM
don't use ttyUSB numbers, and gpsd already uses a symlink.

can_onboard is verified live; can_pcan is checked against the driver
source only (adapter not plugged in).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mikkeli
2026-10-08 01:38:25 +09:00
parent 4742d4a5bb
commit 2d62d1a4f8
3 changed files with 72 additions and 1 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ type: reference
- The mainline kernel driver `peak_usb` is not compiled into the NVIDIA Tegra kernel (JetPack r36.4), so PEAK's proprietary driver is required.
- Must be built with `NET=NETDEV_SUPPORT` for standard SocketCAN tools (`candump`, `ip link`, etc.).
- The module lives at `/lib/modules/$(uname -r)/misc/pcan.ko` and is loaded via `modprobe pcan`.
- Jetson Orin Nano has built-in `can0` (exposed by GPIO pins), so any extra CAN interface should enumerate from `can1`; but this is only heuristic and should not be trusted.
- Jetson Orin Nano has a built-in CAN controller (exposed by GPIO pins). Kernel `canN` order is not stable, so both are pinned by udev: onboard → `can_onboard`, PCAN-USB → `can_pcan` ([device naming](impl/reports/DEVICE-NAMING.md)).
## Waveshare SIM7600G-H-M.2