- **Both** interfaces get names outside the kernel's `canN` pool. Renaming only the PCAN and pinning the onboard controller to `can0` would race:
if `pcan` registers first, it briefly holds `can0` and the onboard rename collides.
- Underscores rather than hyphens: systemd escapes `-` in device unit names (`sys-subsystem-net-devices-can\x2dpcan.device`).
- The file must sort before `80-net-setup-link.rules`, which only assigns a name when `NAME` is still empty.
- PCAN matching relies on the netdev's sysfs parent being the USB interface. In PEAK 9.2.0, `pcan_netdev.c` calls `SET_NETDEV_DEV(ndev, pcandev_to_dev(pdev))`,
and for USB devices that returns `&usb_intf->dev`, so `ATTRS{idVendor}` matches.
- PEAK's own `assign=` module parameter (`peak`, `devid`, `pcanX:canY`) can only produce `canN` names, so it doesn't avoid the race.
- **More than one PCAN-USB:** both would match `can_pcan`, and the second rename would fail. Give each adapter a device ID (PEAK tools: `pcan-settings`),
Usage: `sudo ip link set can_pcan up type can bitrate 500000 && candump can_pcan`.
Generic detection still works: `ip -d link show type can` lists both regardless of name.
## SIM7600: why no further rules are needed
- ModemManager identifies the modem by USB ID and probes each port, which gives it the `(at)`, `(gps)`, `(qmi)` and `(net)` roles. It never relies on a `ttyUSB` number.
- NetworkManager binds the `povo` GSM connection to the ModemManager modem object (`ifname '*'`), not to a device node.
- gpsd is the only consumer of a raw port, and it uses the `/dev/sim7600-gps` udev symlink
-`ttyUSB2` is mentioned in the [SIM7600 report](SIM7600-SETUP.md) only for manual AT sessions. `ls -l /dev/serial/by-id/` shows the stable path
(`...-if02-port0`) if numbering ever shifts.
## Affected references
- [PCAN setup report](PCAN-SETUP.md): its `can0`/`can1` examples are from before this change.
-`halogen-workstation-roadmap` phase 17 lists "presence of `can0`" as a CAN heuristic. That heuristic is now false on this host; `ip -d link show type can` still works.