2382540_en-US

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2382540_en-US

2382540_en-US

CAN Interface Availability and Integration in AAOS 15 on i.MX8QM-MEK

Hello NXP Support Team,

We are currently evaluating the i.MX8QM-MEK platform for an Automotive Android (AAOS) proof-of-concept that includes:

  • Dual touch displays
  • CAN communication interface
  • Vehicle signal visualization through the AAOS framework

We have successfully built and flashed AAOS 15 (15.0.0_2.1.0) on the i.MX8QM-MEK board and are now working on CAN integration.

 

Build target : mek_8q_car-nxp_stable-userdebug

Our objective is to receive CAN messages from the vehicle network and map these signals to AAOS vehicle properties through the Vehicle HAL (VHAL) and Car Property Manager framework.

However, we are facing the following issues:

  1. The CAN interface (e.g., can0) is not available on the target system.
  2. The CAN network interface does not appear in ifconfig -a or ip link show.
  3. We would like to understand the recommended approach for integrating CAN signals into AAOS 15 on the i.MX8QM-MEK platform.

From our investigation, we understand that the CAN transceiver control signals (such as CAN01_EN and CAN01_STB_B) are controlled through an I/O expander connected to the M4 subsystem via the M41_I2C0_1V8_SCL and M41_I2C0_1V8_SDA interfaces.

Could you please help clarify the following:

  • Is CAN functionality officially supported in AAOS 15 (15.0.0_2.1.0) for the i.MX8QM-MEK?
  • Are there any additional device tree configurations, kernel configurations, firmware requirements, or M4 firmware dependencies required to enable the CAN interfaces?
  • Does the I/O expander need to be configured by M4 firmware before the CAN controller becomes available in Linux/Android?
  • Are there any reference documents, application notes, or sample implementations available for integrating CAN signals with VHAL/Car Property Manager in AAOS?

Please find the relevant debug information attached below.

mek_8q:/ # ifconfig -a
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope: Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

dummy0 Link encap:Ethernet HWaddr da:0a:64:88:22:0b
inet6 addr: fe80::d80a:64ff:fe88:220b/64 Scope: Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:700

ifb0 Link encap:Ethernet HWaddr b2:9d:fa:9a:d4:6b
BROADCAST NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:32
RX bytes:0 TX bytes:0

ifb1 Link encap:Ethernet HWaddr 3e:8d:51:4e:e0:8b
BROADCAST NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:32
RX bytes:0 TX bytes:0

tunl0 Link encap:UNSPEC
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

gre0 Link encap:UNSPEC
NOARP MTU:1476 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

gretap0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
BROADCAST MULTICAST MTU:1462 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

erspan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
BROADCAST MULTICAST MTU:1450 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

ip_vti0 Link encap:UNSPEC
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

ip6_vti0 Link encap:UNSPEC
NOARP MTU:1364 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

ip6tnl0 Link encap:UNSPEC
NOARP MTU:1452 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

ip6gre0 Link encap:UNSPEC
NOARP MTU:1448 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0

eth0 Link encap:Ethernet HWaddr 00:04:9f:05:ed:db Driver fec
inet addr:10.16.102.48 Bcast:10.16.102.255 Mask:255.255.255.0
inet6 addr: fe80::260d:6a5f:7a04:afdd/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:301803 errors:0 dropped:73390 overruns:0 frame:0
TX packets:241 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:52500562 TX bytes:25613

mek_8q:/ # dmesg | grep i2c
[ 0.062877] /bus@5b000000/usb@5b110000/usb@5b120000: Fixed dependency cycle(s) with /bus@5a000000/i2c@5a800000/tcpc@51
[ 0.063545] /bus@5b000000/usb@5b110000/usb@5b120000: Fixed dependency cycle(s) with /bus@5a000000/i2c@5a800000/tcpc@51
[ 0.075349] /bus@56240000/i2c@56247000/lvds-to-hdmi-bridge@4c: Fixed dependency cycle(s) with /bus@56240000/ldb1-display-controller/lvds-channel@0
[ 0.075382] /bus@56240000/ldb1-display-controller/lvds-channel@0: Fixed dependency cycle(s) with /bus@56240000/i2c@56247000/lvds-to-hdmi-bridge@4c
[ 0.076099] /bus@56240000/i2c@56247000/lvds-to-hdmi-bridge@4c: Fixed dependency cycle(s) with /bus@56240000/ldb1-display-controller/lvds-channel@0
[ 0.076180] /bus@56240000/ldb1-display-controller/lvds-channel@0: Fixed dependency cycle(s) with /bus@56240000/i2c@56247000/lvds-to-hdmi-bridge@4c
[ 0.076927] /bus@56220000/i2c@56226000/adv7535@3d: Fixed dependency cycle(s) with /bus@56220000/dsi_host@56228000
[ 0.076980] /bus@56220000/dsi_host@56228000: Fixed dependency cycle(s) with /bus@56220000/i2c@56226000/adv7535@3d
[ 0.077923] /bus@56220000/i2c@56226000/adv7535@3d: Fixed dependency cycle(s) with /bus@56220000/dsi_host@56228000
[ 0.078188] /bus@56220000/i2c@56226000/adv7535@3d: Fixed dependency cycle(s) with /bus@56220000/dsi_host@56228000
[ 0.078294] /bus@56220000/dsi_host@56228000: Fixed dependency cycle(s) with /bus@56220000/i2c@56226000/adv7535@3d
[ 0.079093] /bus@57220000/i2c@57226000/adv7535@3d: Fixed dependency cycle(s) with /bus@57220000/dsi_host@57228000
[ 0.079148] /bus@57220000/dsi_host@57228000: Fixed dependency cycle(s) with /bus@57220000/i2c@57226000/adv7535@3d
[ 0.080033] /bus@57220000/i2c@57226000/adv7535@3d: Fixed dependency cycle(s) with /bus@57220000/dsi_host@57228000
[ 0.080278] /bus@57220000/i2c@57226000/adv7535@3d: Fixed dependency cycle(s) with /bus@57220000/dsi_host@57228000
[ 0.080331] /bus@57220000/dsi_host@57228000: Fixed dependency cycle(s) with /bus@57220000/i2c@57226000/adv7535@3d
[ 0.080618] /bus@5a000000/i2c@5a800000/tcpc@51/connector: Fixed dependency cycle(s) with /cbtl04gp
[ 0.080674] /cbtl04gp: Fixed dependency cycle(s) with /bus@5a000000/i2c@5a800000/tcpc@51/connector
[ 4.329499] imx-lpi2c 5a800000.i2c: use pio mode
[ 4.335299] /bus@5b000000/usb@5b110000/usb@5b120000: Fixed dependency cycle(s) with /bus@5a000000/i2c@5a800000/tcpc@51
[ 4.346831] /bus@5a000000/i2c@5a800000/tcpc@51: Fixed dependency cycle(s) with /bus@5b000000/usb@5b110000/usb@5b120000
[ 4.358306] /bus@5a000000/i2c@5a800000/tcpc@51/connector: Fixed dependency cycle(s) with /cbtl04gp
[ 4.369504] i2c i2c-2: of_i2c: modalias failure on /bus@5a000000/i2c@5a800000/fxos8700@1e
[ 4.378432] i2c i2c-2: Failed to create I2C device for /bus@5a000000/i2c@5a800000/fxos8700@1e
[ 4.387694] i2c i2c-2: LPI2C adapter registered
[ 4.393761] imx-lpi2c 5a810000.i2c: use pio mode
[ 4.399176] i2c i2c-3: using pinctrl states for GPIO recovery
[ 4.415470] i2c i2c-3: using generic GPIOs for recovery
[ 4.421623] i2c i2c-3: LPI2C adapter registered
[ 4.427928] imx-lpi2c 56247000.i2c: use pio mode
[ 4.433503] /bus@56240000/ldb1-display-controller/lvds-channel@0: Fixed dependency cycle(s) with /bus@56240000/i2c@56247000/lvds-to-hdmi-bridge@4c
[ 4.447437] /bus@56240000/i2c@56247000/lvds-to-hdmi-bridge@4c: Fixed dependency cycle(s) with /bus@56240000/ldb1-display-controller/lvds-channel@0
[ 4.461316] i2c i2c-4: LPI2C adapter registered
[ 4.467791] imx-lpi2c 56226000.i2c: use pio mode
[ 4.473320] /bus@56220000/dsi_host@56228000: Fixed dependency cycle(s) with /bus@56220000/i2c@56226000/adv7535@3d
[ 4.484383] /bus@56220000/i2c@56226000/adv7535@3d: Fixed dependency cycle(s) with /bus@56220000/dsi_host@56228000
[ 4.495461] i2c i2c-5: LPI2C adapter registered
[ 4.501796] imx-lpi2c 57226000.i2c: use pio mode
[ 4.507337] /bus@57220000/dsi_host@57228000: Fixed dependency cycle(s) with /bus@57220000/i2c@57226000/adv7535@3d
[ 4.518372] /bus@57220000/i2c@57226000/adv7535@3d: Fixed dependency cycle(s) with /bus@57220000/dsi_host@57228000
[ 4.529441] i2c i2c-6: LPI2C adapter registered
[ 4.538112] i2c i2c-2: Added multiplexed i2c bus 7
[ 4.543745] i2c i2c-2: Added multiplexed i2c bus 8
[ 4.549248] i2c-mux-gpio i2cmux: 2 port mux on 5a800000.i2c adapter
[ 4.586228] i2c i2c-2: supply vdd not found, using dummy regulator
[ 4.593252] i2c i2c-2: supply vddio not found, using dummy regulator
[ 4.651657] st-accel-i2c 2-0019: supply vdd not found, using dummy regulator
[ 4.659540] st-accel-i2c 2-0019: supply vddio not found, using dummy regulator
[ 4.674354] st-accel-i2c 2-0019: probe with driver st-accel-i2c failed with error -5
[ 4.684848] st-magn-i2c 8-001e: supply vdd not found, using dummy regulator
[ 4.692677] st-magn-i2c 8-001e: supply vddio not found, using dummy regulator
[ 4.708084] st-magn-i2c 8-001e: mounting matrix not found: using identity...
[ 4.720647] st-gyro-i2c 2-0069: supply vdd not found, using dummy regulator
[ 4.728469] st-gyro-i2c 2-0069: supply vddio not found, using dummy regulator
[ 4.743163] st-gyro-i2c 2-0069: probe with driver st-gyro-i2c failed with error -5
[ 4.861147] virtio_rpmsg_bus virtio1: creating channel rpmsg-i2c-channel addr 0x2
[ 4.876919] i2c-rpmsg virtio1.rpmsg-i2c-channel.-1.2: new channel: 0x400 -> 0x2!
[ 4.901196] imx_rpmsg_i2c i2c-rpbus-1: add I2C adapter i2c-rpmsg-adapter successfully
[ 5.007981] /bus@5a000000/i2c@5a800000/tcpc@51: Fixed dependency cycle(s) with /bus@5b000000/usb@5b110000/usb@5b120000
[ 5.024985] /bus@5b000000/usb@5b110000/usb@5b120000: Fixed dependency cycle(s) with /bus@5a000000/i2c@5a800000/tcpc@51
[ 16.457456] imx-lpi2c 57247000.i2c: use pio mode
[ 16.463779] i2c i2c-9: LPI2C adapter registered
[ 16.470664] /bus@57240000/ldb2-display-controller/lvds-channel@0: Fixed dependency cycle(s) with /bus@57240000/i2c@57247000/lvds-to-hdmi-bridge@4c
[ 17.057471] /bus@58000000/i2c@58226000/max9286_csi0@6a: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@0/c1
[ 17.083749] /bus@58000000/i2c@58226000/max9286_csi0@6a: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@1/c2
[ 17.112012] /bus@58000000/i2c@58226000/max9286_csi0@6a: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@2/c3
[ 17.126760] /bus@58000000/i2c@58226000/max9286_csi0@6a: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@3/c4
[ 17.141567] /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@3/camera@54: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286a
[ 17.156682] /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@2/camera@53: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286a
[ 17.171754] /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@1/camera@52: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286a
[ 17.186407] /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@0/camera@51: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286a
[ 17.204964] imx-lpi2c 58226000.i2c: use pio mode
[ 17.211086] /bus@58000000/i2c@58226000/max9286_csi0@6a: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@0/c1
[ 17.225631] /bus@58000000/i2c@58226000/max9286_csi0@6a: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@1/c2
[ 17.240271] /bus@58000000/i2c@58226000/max9286_csi0@6a: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@2/c3
[ 17.254871] /bus@58000000/i2c@58226000/max9286_csi0@6a: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@3/c4
[ 17.269824] /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@3/camera@54: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286a
[ 17.284422] /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@2/camera@53: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286a
[ 17.299030] /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@1/camera@52: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286a
[ 17.314057] /bus@58000000/i2c@58226000/max9286_csi0@6a/i2c-mux/i2c@0/camera@51: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286a
[ 17.328911] i2c i2c-10: LPI2C adapter registered
[ 17.349901] /bus@58000000/i2c@58226000/max9286_csi0@6a: Fixed dependency cycle(s) with /bus@58000000/csi@58227000
[ 17.361147] /bus@58000000/csi@58227000: Fixed dependency cycle(s) with /bus@58000000/i2c@58226000/max9286_csi0@6a
mek_8q:/ #
mek_8q:/ #
mek_8q:/ # dmesg | grep -i can
[ 6.341664] init: Init cannot set 'ro.boot.boot_devices' to 'bus@5b000000/5b010000.mmc': Read-only property was already set
[ 6.650631] apexd-bootstrap: Scanning /odm/apex for pre-installed ApexFiles
[ 6.665082] apexd-bootstrap: Scanning /vendor/apex for pre-installed ApexFiles
[ 6.734597] apexd-bootstrap: Scanning /product/apex for pre-installed ApexFiles
[ 7.762352] can: controller area network core
[ 7.767572] NET: Registered PF_CAN protocol family
[ 7.778629] can: broadcast manager protocol
[ 7.789732] CAN device driver interface
[ 7.798655] can: netlink gateway - max_hops=1
[ 7.809873] can: raw protocol
[ 8.206633] vdc: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vold
[ 8.306877] vdc: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vold
[ 9.537245] slcan: serial line CAN interface driver
[ 9.765447] vcan: Virtual CAN interface driver
[ 9.871087] vdc: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vold
[ 10.127065] apexd: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vold
[ 10.140039] apexd: Scanning /odm/apex for pre-installed ApexFiles
[ 10.165055] apexd: Scanning /vendor/apex for pre-installed ApexFiles
[ 10.190899] Hot alarm is canceled. GPU3D clock will return to 64/64
[ 12.094764] vdc: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vold
[ 12.980708] apexd-snapshotde: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vold
[ 14.174685] update_verifier: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: android.hat
[ 27.936501] platform fec2_nvcc: deferred probe pending: reg-fixed-voltage: can't get GPIO


mek_8q:/ # ls /sys/bus/i2c/devices/
1-0048 2-0020 2-0069 4-004c 7-001e i2c-1 i2c-3 i2c-6 i2c-9
10-006a 2-0044 3-001a 5-003d 8-001e i2c-10 i2c-4 i2c-7
2-0019 2-0051 4-0033 6-003d 9-004c i2c-2 i2c-5 i2c-8





Androidi.MX 8 Family | i.MX 8QuadMax (8QM) | 8QuadPlusRe: CAN Interface Availability and Integration in AAOS 15 on i.MX8QM-MEK

Hello,

You'll need to add FLEXCAN to the kernel you may refer to the Android User's Guide chapter 9 Generic Kernel Image (GKI) Development

https://www.nxp.com/docs/en/user-guide/UG10176.pdf

Also, please note that if you want to make use of them on the A-core you'll need to move the resource to that core in the SCFW.

The same would go for the testing, as you can add canutils:
https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/All-Boards-FlexCAN/ta-p/1103092


Best regards/Saludos,
Aldo.

Tags (1)
No ratings
Version history
Last update:
‎06-18-2026 02:31 AM
Updated by: