This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SK-AM62P-LP: CAN Interface Not Visible After Enabling via Device Tree Overlay

Part Number: SK-AM62P-LP
Other Parts Discussed in Thread: AM62P

Tool/software:

Dear Expert,

I tried to enable CAN via a device tree overlay by following the Android 15 documentation:

software-dl.ti.com/.../Application_Notes_dtbo_support.html

I used the following commands:

=> env set adtbo_idx 9
=> saveenv
=> reset

After the device booted successfully, I could not find the CAN interface in the ip link show list.

am62p:/ # ip 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
2: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 7e:e0:7f:9f:22:00 brd ff:ff:ff:ff:ff:ff
3: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 32
link/ether ce:95:53:a0:98:d7 brd ff:ff:ff:ff:ff:ff
4: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 32
link/ether 02:3d:db:d9:3f:ed brd ff:ff:ff:ff:ff:ff
5: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
6: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/gre 0.0.0.0 brd 0.0.0.0
7: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
9: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
10: ip6_vti0@NONE: <NOARP> mtu 1364 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/tunnel6 :: brd ::
11: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
12: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/tunnel6 :: brd ::
13: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
14: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether c0:d6:0a:f9:6a:db brd ff:ff:ff:ff:ff:ff
15: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 2e:c7:a4:1c:83:00 brd ff:ff:ff:ff:ff:ff

Best Regards,

Bibin Robin

  • Hi,

    Could you please confirm whether you are using Linux or MCU+,RTOS, Bare Metal domain ?

  • i am using android 15

  • Hi,
    looking forward for your response.

    Regards,
    Bibin

  • Hi Varun,

    I wanted to follow up on my previous question posted a few days ago about Device Tree Overlay. I understand you may be busy, but your input would be really helpful for my project.

    Regards,

    Bibin

  • hi  .Could you please check ?

  • Hi  ,  

    these are the log mesage of dmesg -w

    130|console:/vendor_dlkm/lib/modules # dmesg -w
    [ 1167.467962] m_can: Unknown symbol alloc_candev_mqs (err -2)
    [ 1167.468035] m_can: Unknown symbol free_candev (err -2)
    [ 1167.468071] m_can: Unknown symbol can_rx_offload_add_manual (err -2)
    [ 1167.468117] m_can: Unknown symbol can_rx_offload_del (err -2)
    [ 1167.468144] m_can: Unknown symbol of_can_transceiver (err -2)
    [ 1167.468169] m_can: Protected symbol: irq_wake_thread (err -13)
    [ 1167.468193] m_can: Unknown symbol register_candev (err -2)
    [ 1167.468215] m_can: Unknown symbol unregister_candev (err -2)
    [ 1167.468287] m_can: Unknown symbol can_rx_offload_get_echo_skb_queue_timestamp (err -2)
    [ 1167.468304] m_can: Unknown symbol can_get_echo_skb (err -2)
    [ 1167.468319] m_can: Unknown symbol can_rx_offload_threaded_irq_finish (err -2)
    [ 1167.468337] m_can: Unknown symbol alloc_can_err_skb (err -2)
    [ 1167.468352] m_can: Unknown symbol can_rx_offload_queue_timestamp (err -2)
    [ 1167.468373] m_can: Unknown symbol alloc_can_skb (err -2)
    [ 1167.468542] m_can: Unknown symbol alloc_canfd_skb (err -2)
    [ 1167.468573] m_can: Unknown symbol can_fd_dlc2len (err -2)
    [ 1167.468634] m_can: Unknown symbol can_bus_off (err -2)
    [ 1167.468656] m_can: Unknown symbol can_free_echo_skb (err -2)
    [ 1167.468695] m_can: Unknown symbol open_candev (err -2)
    [ 1167.468711] m_can: Unknown symbol can_rx_offload_enable (err -2)
    [ 1167.468777] m_can: Unknown symbol close_candev (err -2)
    [ 1167.468799] m_can: Unknown symbol can_dropped_invalid_skb (err -2)
    [ 1167.468815] m_can: Unknown symbol can_skb_get_frame_len (err -2)
    [ 1167.468856] m_can: Unknown symbol can_fd_len2dlc (err -2)
    [ 1167.468880] m_can: Unknown symbol can_put_echo_skb (err -2)
    [ 1167.468915] m_can: Unknown symbol can_change_mtu (err -2)


    [ 1218.426865] m_can_platform: Unknown symbol m_can_class_allocate_dev (err -2)
    [ 1218.426910] m_can_platform: Unknown symbol m_can_class_get_clocks (err -2)
    [ 1218.426991] m_can_platform: Unknown symbol m_can_class_register (err -2)
    [ 1218.427012] m_can_platform: Unknown symbol m_can_class_free_dev (err -2)
    [ 1218.427027] m_can_platform: Unknown symbol m_can_class_unregister (err -2)
    [ 1218.427059] m_can_platform: Unknown symbol m_can_class_suspend (err -2)
    [ 1218.427075] m_can_platform: Unknown symbol m_can_class_resume (err -2)

    Regards,

    Bibin Robin

  • Hello,

    sorry for the delay,

    Just to confirm, given the timing of the error logs, you are trying to load the driver manually? The driver should load automatically with the device tree overlay.

    The errors indicate that the can driver is prevented from loading due to a gki symbol error.

    It will probably require patching and rebuilding the kernel to bypass the symbol error. The error will be fixed in the next android release.

    We will get back to you with more information.

  • Hi Maxime,

    yes these are the logs when i tried to load driver manually, but when i tried using DTBO I got errors like


    6.109745][ T168] ueventd: Failed to insmod '/vendor/lib/modules/can-dev.ko' with args '': Permission denied
    [ 6.119968][ T168] ueventd: LoadWithAliases was unable to load /vendor/lib/modules/can-dev.ko, tried: can_dev
    [ 6.130255][ T168] ueventd: LoadWithAliases was unable to load of:NcanT(null)Cbosch,m_can, tried: m_can_platform, of:NcanT(null)Cbosch,m_can

    6.190704][ T167] can_dev: exports protected symbol can_eth_ioctl_hwts
    [ 6.256785][ T167] ueventd: Failed to insmod '/vendor/lib/modules/can-dev.ko' with args '': Permission denied
    [ 6.266944][ T167] ueventd: LoadWithAliases was unable to load /vendor/lib/modules/can-dev.ko, tried: can_dev
    [ 6.266988][ T167] ueventd: LoadWithAliases was unable to load of:NcanT(null)Cbosch,m_can, tried: m_can_platform, of:NcanT(null)Cbosch,m_can

    Regards,

    Bibin

  • Hello, yes unfortunately a kernel rebuild is required to get the can drivers to load.

    Here is the patch: 

    diff --git a/android/abi_gki_aarch64_ti b/android/abi_gki_aarch64_ti
    index fc0e030a5832..c404a50b8ff4 100644
    --- a/android/abi_gki_aarch64_ti
    +++ b/android/abi_gki_aarch64_ti
    @@ -2,6 +2,11 @@
     # commonly used symbols
       add_timer
       __alloc_pages
    +  alloc_can_err_skb
    +  alloc_can_skb
    +  alloc_candev_mqs
    +  alloc_canfd_skb
    +  alloc_canxl_skb
       alloc_workqueue
       alt_cb_patch_nops
       __arch_copy_from_user
    @@ -13,6 +18,8 @@
       bpf_trace_run5
       cache_line_size
       call_rcu
    +  can_bus_off
    +  can_change_mtu
       __check_object_size
       clk_disable
       clk_enable
    @@ -416,23 +423,37 @@
       call_netdevice_notifiers
       call_switchdev_notifiers
       can_bus_off
    +  can_eth_ioctl_hwts
    +  can_ethtool_op_get_ts_info_hwts
       cancel_delayed_work
       cancel_delayed_work_sync
       cancel_work
       cancel_work_sync
       can_change_mtu
    +  can_change_state
       can_dropped_invalid_skb
       can_fd_dlc2len
       can_fd_len2dlc
       can_free_echo_skb
       can_get_echo_skb
    +  can_get_state_str
       can_put_echo_skb
    +  can_rx_offload_add_fifo
       can_rx_offload_add_manual
    +  can_rx_offload_add_timestamp
       can_rx_offload_del
       can_rx_offload_enable
    +  can_rx_offload_get_echo_skb_queue_tail
       can_rx_offload_get_echo_skb_queue_timestamp
    +  can_rx_offload_irq_finish
    +  can_rx_offload_irq_offload_fifo
    +  can_rx_offload_irq_offload_timestamp
    +  can_rx_offload_queue_tail
       can_rx_offload_queue_timestamp
       can_rx_offload_threaded_irq_finish
    +  can_rx_register
    +  can_rx_unregister
    +  can_skb_get_frame_len
       capable
       carveout_dma_heap_to_paddr
       cdc_parse_cdc_header
    @@ -451,6 +472,7 @@
       class_for_each_device
       class_register
       class_unregister
    +  close_candev
       __ClearPageMovable
       clk_bulk_disable
       clk_bulk_enable
    @@ -1256,6 +1278,7 @@
       irq_set_irqchip_state
       irq_set_irq_type
       irq_set_irq_wake
    +  irq_wake_thread
       jiffies_to_msecs
       jiffies_to_usecs
       kasprintf
    @@ -1930,6 +1953,7 @@
       rtnl_unlock
       rtnl_unregister
       rtnl_unregister_all
    +  safe_candev_priv
       scatterwalk_map_and_copy
       schedule_timeout_interruptible
       schedule_timeout_uninterruptible
    diff --git a/android/abi_gki_protected_exports_aarch64 b/android/abi_gki_protected_exports_aarch64
    index 02a37702f3a1..276de2356912 100644
    --- a/android/abi_gki_protected_exports_aarch64
    +++ b/android/abi_gki_protected_exports_aarch64
    @@ -16,11 +16,6 @@ __regmap_init_ram
     __regmap_init_raw_ram
     __traceiter_9p_fid_ref
     __tracepoint_9p_fid_ref
    -alloc_can_err_skb
    -alloc_can_skb
    -alloc_candev_mqs
    -alloc_canfd_skb
    -alloc_canxl_skb
     btbcm_check_bdaddr
     btbcm_finalize
     btbcm_initialize
    @@ -30,37 +25,9 @@ btbcm_set_bdaddr
     btbcm_setup_apple
     btbcm_setup_patchram
     btbcm_write_pcm_int_params
    -can_bus_off
    -can_change_mtu
    -can_change_state
    -can_dropped_invalid_skb
    -can_eth_ioctl_hwts
    -can_ethtool_op_get_ts_info_hwts
    -can_fd_dlc2len
    -can_fd_len2dlc
    -can_free_echo_skb
    -can_get_echo_skb
    -can_get_state_str
     can_proto_register
     can_proto_unregister
    -can_put_echo_skb
    -can_rx_offload_add_fifo
    -can_rx_offload_add_manual
    -can_rx_offload_add_timestamp
    -can_rx_offload_del
    -can_rx_offload_enable
    -can_rx_offload_get_echo_skb_queue_tail
    -can_rx_offload_get_echo_skb_queue_timestamp
    -can_rx_offload_irq_finish
    -can_rx_offload_irq_offload_fifo
    -can_rx_offload_irq_offload_timestamp
    -can_rx_offload_queue_tail
    -can_rx_offload_queue_timestamp
    -can_rx_offload_threaded_irq_finish
    -can_rx_register
    -can_rx_unregister
     can_send
    -can_skb_get_frame_len
     can_sock_destruct
     cdc_ncm_bind_common
     cdc_ncm_change_mtu
    @@ -73,10 +40,8 @@ cdc_ncm_rx_verify_nth32
     cdc_ncm_select_altsetting
     cdc_ncm_tx_fixup
     cdc_ncm_unbind
    -close_candev
     do_trace_9p_fid_get
     do_trace_9p_fid_put
    -free_candev
     generic_mii_ioctl
     h4_recv_buf
     hci_alloc_dev_priv
    @@ -249,8 +214,6 @@ nl802154_beaconing_done
     nl802154_scan_done
     nl802154_scan_event
     nl802154_scan_started
    -of_can_transceiver
    -open_candev
     p9_client_attach
     p9_client_begin_disconnect
     p9_client_cb
    @@ -317,10 +280,8 @@ qca_send_pre_shutdown_cmd
     qca_set_bdaddr
     qca_set_bdaddr_rome
     qca_uart_setup
    -register_candev
     register_pppox_proto
     rtl8152_get_version
    -safe_candev_priv
     slhc_compress
     slhc_free
     slhc_init
    @@ -331,7 +292,6 @@ tipc_dump_done
     tipc_dump_start
     tipc_nl_sk_walk
     tipc_sk_fill_sock_diag
    -unregister_candev
     unregister_pppox_proto
     usb_serial_claim_interface
     usb_serial_deregister_drivers
    

    You will need to rebuild the kernel and the android BSP to deploy it. Please follow the documentation: https://software-dl.ti.com/processor-sdk-android/esd/AM62PX/latest/docs/android/Foundational_Components_Kernel.html

    The patch applies in the "common" directory of the kernel root tree after the repo sync command.

    Please let me know if this worked.

    Thank you.

    Regards,

    Maxime