Colibri T30 on eval board - how to config for CAN

Hi,
I am having trouble configuring the CAN bus working on the Colibri T30 on the evaluation board (V3.2B). I’ve built and installed the angstrom-lxde-image on the board.

ip link doesn’t show the can0 device, so the MCP2515 driver seem not to be installed:

root@colibri-t30:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    link/ether be:31:69:c2:78:cd brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:14:2d:29:00:ac brd ff:ff:ff:ff:ff:ff
4: ip6tnl0: <NOARP> mtu 1452 qdisc noop state DOWN mode DEFAULT group default 
    link/tunnel6 :: brd ::
7: rndis0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 8a:9f:04:ed:57:e3 brd ff:ff:ff:ff:ff:ff

root@colibri-t30:~# zcat /proc/config.gz | grep CONFIG_CAN
# CONFIG_CAN is not set
root@colibri-t30:~# 

The documentation suggests adding these definitions:

CONFIG_CAN=y
CONFIG_CAN_RAW=y
CONFIG_CAN_BCM=y
CONFIG_CAN_DEV=y
CONFIG_CAN_MCP251X=y

Where is the place to add these definitions ?

What exact hardware (module and carrier board) and software versions of things are you talking about?

Those definitions would need to be added to its kernel configuration arch/arm/configs/colibri_t30_defconfig. And then you would need re-building the kernel as explained in the following article on our developer website:

Thanks for the quick reply.

The hardware is a Colibri T30 on a Colibri Evaluation Board (V3.2B) and the OS is OpenEmbedded (Angstrom v2017.12 - Kernel, Colibri-T30_LXDE-Image 2.8b6).

I am already able to compile my own kernel with some custom layer, all derived from the toradex LXDE image (toradex branch LinuxImageV2.8). But I am unable to find a way in the yocto framework to modify/append the necessary flags to the defconfig from within my own layer. Of course, I could just edit the mentioned defconfig or the toradex layer, but this is not very portable.

Ah, OK. So you do have CAN working already if manually compiled, right?

Then, you may want to have a look at the following recipe you may adopt as a bbappend in your own layer:

http://git.toradex.com/cgit/meta-toradex-tegra.git/tree/recipes-kernel/linux/linux-toradex_git.bb?h=rocko#n21

Makes sense?

Yes it makes sense, although I was hoping of a “more elegant” approach. Thanks again.

What “more elegant way” are you looking for?