J722SXH01EVM: Enable SocketCAN ISO-TP for UDS over CAN-FD

Part Number: J722SXH01EVM

Hi Team,

We are enabling a minimal UDS-over CAN-FD Diagnostic PoC on TDA4VEN EVM.  The current kernel configuration shows ISOTP not set. How to enable this?

Best Regards

  • Adding more details,

    The current kernel configuration reports:
    # CONFIG_CAN_ISOTP is not set
    We would like to use Linux SocketCAN ISO-TP for a UDS server running on the A53.

    We are using SDK version 11.02.01.03, kernel: Linux j722s-evm 6.12.57-ti-01381-g98bbe0d37952-dirty. MCAN interfaces available are mcu_mcan0, mcu_mcan1 and main_mcan0

    Could you confirm:
    1. Whether ISO-TP is supported and validated with the TDA4EN SDK kernel and MCAN driver.
    2. The recommended procedure to enable CONFIG_CAN_ISOTP=m.Whether rebuilding only the kernel/module is sufficient.
    3. Which kernel image, modules and device-tree artifacts must be deployed.
    4. Whether there are known CAN-FD or ISO-TP limitations on this SDK release.
    5. Whether TI instead recommends running CanTp/diagnostics on an R5F core for production applications.
    6. Please also provide any applicable example, configuration fragment or patch.

    PFB logs from EVM:

    root@j722s-evm:/opt/vision_apps# cat /etc/os-release
    ID=arago
    NAME="Arago"
    VERSION="2025.01"
    VERSION_ID=2025.01
    PRETTY_NAME="Arago 2025.01"
    CPE_NAME="cpe:/o:openembedded:arago:2025.01"
    root@j722s-evm:/opt/vision_apps# ip -details link show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0 allmulti 0 minmtu 0 maxmtu 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 524280 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536
    2: mcu_mcan0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
    link/can promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
    can state STOPPED (berr-counter tx 0 rx 0) restart-ms 0
    m_can: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp_inc 1
    m_can: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..32 dbrp_inc 1
    clock 20000000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536 parentbus platform parentdev 4e08000.can
    3: mcu_mcan1: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
    link/can promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
    can state STOPPED (berr-counter tx 0 rx 0) restart-ms 0
    m_can: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp_inc 1
    m_can: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..32 dbrp_inc 1
    clock 20000000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536 parentbus platform parentdev 4e18000.can
    4: main_mcan0: <NOARP,UP,LOWER_UP,ECHO> mtu 72 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
    link/can promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
    can <LOOPBACK,FD> state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0
    bitrate 500000 sample-point 0.875
    tq 12 prop-seg 69 phase-seg1 70 phase-seg2 20 sjw 10 brp 1
    m_can: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp_inc 1
    dbitrate 2000000 dsample-point 0.750
    dtq 12 dprop-seg 14 dphase-seg1 15 dphase-seg2 10 dsjw 5 dbrp 1
    m_can: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..32 dbrp_inc 1
    clock 80000000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536 parentbus platform parentdev 20701000.can
    5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 70:ff:76:1d:ec:e3 brd ff:ff:ff:ff:ff:ff promiscuity 0 allmulti 0 minmtu 60 maxmtu 1522 addrgenmode none numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536 parentbus rpmsg parentdev virtio3.ti.ethfw.ethdevice.-1.34
    root@j722s-evm:/opt/vision_apps# zcat /proc/config.gz | grep -E 'CONFIG_CAN|CONFIG_CAN_ISOTP'
    CONFIG_CAN=m
    CONFIG_CAN_RAW=m
    CONFIG_CAN_BCM=m
    CONFIG_CAN_GW=m
    # CONFIG_CAN_J1939 is not set
    # CONFIG_CAN_ISOTP is not set
    CONFIG_CAN_DEV=m
    # CONFIG_CAN_VCAN is not set
    # CONFIG_CAN_VXCAN is not set
    CONFIG_CAN_NETLINK=y
    CONFIG_CAN_CALC_BITTIMING=y
    CONFIG_CAN_RX_OFFLOAD=y
    # CONFIG_CAN_CAN327 is not set
    # CONFIG_CAN_FLEXCAN is not set
    # CONFIG_CAN_GRCAN is not set
    # CONFIG_CAN_KVASER_PCIEFD is not set
    # CONFIG_CAN_SLCAN is not set
    # CONFIG_CAN_XILINXCAN is not set
    # CONFIG_CAN_C_CAN is not set
    # CONFIG_CAN_CC770 is not set
    # CONFIG_CAN_CTUCANFD_PCI is not set
    # CONFIG_CAN_CTUCANFD_PLATFORM is not set
    # CONFIG_CAN_ESD_402_PCI is not set
    # CONFIG_CAN_IFI_CANFD is not set
    CONFIG_CAN_M_CAN=m
    # CONFIG_CAN_M_CAN_PCI is not set
    CONFIG_CAN_M_CAN_PLATFORM=m
    # CONFIG_CAN_M_CAN_TCAN4X5X is not set
    # CONFIG_CAN_PEAK_PCIEFD is not set
    # CONFIG_CAN_SJA1000 is not set
    # CONFIG_CAN_SOFTING is not set
    # CONFIG_CAN_HI311X is not set
    # CONFIG_CAN_MCP251X is not set
    CONFIG_CAN_MCP251XFD=m
    # CONFIG_CAN_MCP251XFD_SANITY is not set
    # CONFIG_CAN_8DEV_USB is not set
    # CONFIG_CAN_EMS_USB is not set
    # CONFIG_CAN_ESD_USB is not set
    # CONFIG_CAN_ETAS_ES58X is not set
    # CONFIG_CAN_F81604 is not set
    # CONFIG_CAN_GS_USB is not set
    # CONFIG_CAN_KVASER_USB is not set
    # CONFIG_CAN_MCBA_USB is not set
    # CONFIG_CAN_PEAK_USB is not set
    # CONFIG_CAN_UCAN is not set
    # CONFIG_CAN_DEBUG_DEVICES is not set
    root@j722s-evm:/opt/vision_apps# ethtool -i mcu_mcan0 2>/dev/null
    driver: m_can_platform
    version: 6.12.57-ti-01381-g98bbe0d37952-
    firmware-version:
    expansion-rom-version:
    bus-info: 4e08000.can
    supports-statistics: no
    supports-test: no
    supports-eeprom-access: no
    supports-register-dump: no
    supports-priv-flags: no
    root@j722s-evm:/opt/vision_apps#


    Best Regards,

    Reshma

  • Hi Reshma,

    No, we have not validated ISO-TP support in our Linux SDK. However, it should be supported in kernel. The kernel driver comes from upstream Linux, since the J722S/TDA4VEN uses the Bosch CAN controllers which uses the Bosch kernel drivers, and upstream kernel has support for ISOTP. Should just be a configuration change to enable.

    No known limitations for CAN for the particular SDK release. But please let us know if you encounter an issue while using MCAN. There is a FAQ that I update as issues become known, or when common issues are reported for custom board bringup:  RE: [FAQ] TDA4VEN-Q1/AM6x/TDA4x/DRA8x: How to enable, troubleshoot, and debug MCAN, CAN-FD interface not working in Linux  

    Regards,

    Takuma