- **Driver:** `mttcan` (built into NVIDIA Tegra kernel)
- **Module:** `can_dev`
- **Clock:** 50 MHz
- **Status:** Always present, currently DOWN
## USB CAN Adapter — Initial Detection
### Problem
The PCAN-USB adapter was physically connected and detected by the USB subsystem:
```
Bus 001 Device 005: ID 0c72:000c PEAK System PCAN-USB
```
But no CAN interface appeared. The mainline kernel driver `peak_usb` (which supports this device since kernel v3.4) was **not compiled into this NVIDIA Tegra kernel**.
### Investigation
1. Checked for the `peak_usb` module — not present
2. Checked kernel config (`/boot/config-$(uname -r)`) — not available (NVIDIA kernel)
3. Checked for kernel headers — none matched the `5.15.148-tegra` kernel
4. The NVIDIA Tegra kernel from JetPack r36.4 (`repo.download.nvidia.com/jetson/t234`) uses a custom versioning scheme and does not include PEAK's mainline drivers
## Solution — Build PEAK's Proprietary Driver
### Why PEAK's driver instead of mainline?
PEAK's mainline `peak_usb` driver would be the preferred approach (SocketCAN netdev, auto-loading, no rebuild needed on kernel updates). However, the NVIDIA Tegra kernel does not include it. PEAK's proprietary driver package can be built against any kernel that has headers available.
The PEAK driver defaults to **chardev** mode (character devices like `/dev/pcanusb32`). For standard SocketCAN tools (`candump`, `ip link`, etc.), we need **netdev** mode:
```bash
cd /tmp/peak-linux-driver-9.2.0/driver
sudo make clean
sudo make NET=NETDEV_SUPPORT all
```
Key output confirming netdev build:
```
CC [M] /tmp/peak-linux-driver-9.2.0/driver/src/pcan_netdev.o
- **Kernel headers:** Located at `/lib/modules/5.15.148-tegra/build`
- **Driver version:** PEAK Linux Driver 9.2.0
## Important Notes
1.**Out-of-tree module:** This driver is built from PEAK's source against the running kernel. It will **not survive a kernel update** — you must rebuild after any kernel upgrade.
2.**Netdev vs chardev:** The PEAK driver defaults to chardev mode. For SocketCAN tools, you must build with `NET=NETDEV_SUPPORT`. The chardev mode creates `/dev/pcan*` devices and requires PEAK's proprietary API.
3.**Blacklisting:** The PEAK installer (`make install`) blacklists the mainline `peak_*` drivers in `/etc/modprobe.d/blacklist-peak.conf`. Since the mainline drivers aren't available on this kernel anyway, this is harmless.
4.**Bitrate:** The default CAN bitrate is 500 kbps. Adjust as needed for your car's bus (common values: 500000, 250000, 1000000).
5.**Read-only use:** For reading car CAN traffic without transmitting, you only need to bring the interface up. No special configuration is needed.
## Cleanup
Source files left at `/tmp/peak-linux-driver-9.2.0/` and `/tmp/pcan-driver.tar.gz`. Can be removed after verifying everything works.