gs_usb USB-CAN kernel driver from vendored source and installs it for the running kernel. Needed on NVIDIA Jetson / ZED Box machines, whose L4T (tegra) kernels ship without any USB-CAN drivers — the Axol Hub enumerates on USB but no can* network interfaces ever appear.
weak-updates symlink back to that kernel’s in-tree module is recognized as native too. An older or unverifiable driver is replaced conservatively; an attached 16d0:117e CANable also requires its less-common alias, while an unattached one never causes a replacement.
can.setup runs this check automatically, so you normally never need to invoke it directly.The vendored driver is the upstream 5.15
gs_usb with two backports the Axol Hub requires — per-channel dev_id (to tell the left/right arms apart) and bulk endpoint discovery from the USB descriptor (the Hub firmware uses EP1 IN/EP1 OUT, while the stock 5.15 driver hardcodes OUT 2) — plus robustness fixes for the receive path: RX URBs are re-anchored on resubmit so closing an interface really stops them (in the stock driver their buffers were freed while still in flight, and the next open parsed the first frames from freed memory — a kernel panic on the single-channel wheel/chest adapter), and frames naming a channel the adapter does not have, runt transfers, or frames for a closed channel are dropped instead of dereferencing NULL or detaching the device. See almond_axol/cli/can/gs_usb/README.md for the full list. The module is installed under /lib/modules/$(uname -r)/updates/ and loads automatically on boot. Requires kernel headers and build-essential; both ship with JetPack.The installed backport is built for the exact running kernel release. A normal reboot into that same kernel needs no action. After a JetPack/L4T or other kernel update changes
uname -r, run axol can.driver (or axol can.setup, which calls it) once under the new kernel to rebuild and install the matching module.On a signature-enforcing/Secure Boot host, an unsigned backport is rejected before the active module is changed. Sign it with an enrolled key or use a compatible native kernel. A previously installed, trusted and signed Almond backport from before version markers were added is retained only when its selected/loaded source identity, install path, and complete Almond USB-ID fingerprint all match; arbitrary external modules are not trusted by location alone. If installation or loading fails after a change begins, the previous module and load configuration are restored.
