The can-isotp.ko module is a CAN protocol implementation inside the
Linux network layer that requires the system to load the can.ko core module. The can.ko module provides the network layer infrastructure for all
in-kernel CAN protocol implementations, like can_raw.ko, can_bcm.ko, and
can-gw.ko. If it’s working correctly, you should see this output in response to
the following command:

sudo insmod ./can-isotp.ko
[830053.374734] can: controller area network core (rev 20120528 abi 9)
[830053.374746] NET: Registered protocol family 29
[830053.376897] can: netlink gateway (rev 20130117) max_hops=1

When can.ko is not loaded, you get the following:
# sudo insmod ./can-isotp.ko
insmod: ERROR: could not insert module ./can-isotp.ko: Unknown symbol in
module

If you’ve forgotten to attach your CAN device or load the CAN kernel
module, this is the strange error message you’ll see. If you were to enter

dmesg for more information, you’d see a series of missing symbols referenced
in the error messages.
$ dmesg
[830760.460054] can_isotp: Unknown symbol can_rx_unregister (err 0)
[830760.460134] can_isotp: Unknown symbol can_proto_register (err 0)
[830760.460186] can_isotp: Unknown symbol can_send (err 0)
[830760.460220] can_isotp: Unknown symbol can_ioctl (err 0)
[830760.460311] can_isotp: Unknown symbol can_proto_unregister (err 0)
[830760.460345] can_isotp: Unknown symbol can_rx_register (err 0)

The dmesg output shows a lot of Unknown symbol messages, especially
around can_x methods. (Ignore the (err 0) messages.) These messages tell
us that the _isotop module can’t find methods related to standard CAN
functions. These messages indicate that you need to load the can.ko module. Once loaded, everything should work fine.

OCSALY