Android custom rom for a colibri imx7

I built an android custom rom for a colibri imx7 and i am trying to read from serial port but it’s not able to create a usb node for any usb device i connect to it

When I put a hardware to it in its USB port like ftdi it knows what it is but it doesn’t Create any USB node for it in dev/tty
I tried to add some modules like ftdio_sio.ko and usberial.ko

But it was never compatible whenever I do insmod

Hi, I’m the Toradex AI Assistant. I’m in early beta, and I would appreciate your feedback.
The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


Hello,

For the issue you’re encountering with the Colibri iMX7 not creating a USB node for connected USB devices, it’s important to ensure that the Android kernel you’re using has the necessary USB serial drivers enabled. The fact that the device recognizes the FTDI hardware but does not create a /dev/ttyUSB* node suggests that the kernel might not have the appropriate driver support compiled in.

Here are some steps you can take to troubleshoot and potentially resolve the issue:

  1. Check Kernel Configuration: Ensure that your kernel configuration includes support for USB serial devices. This typically involves enabling the CONFIG_USB_SERIAL option along with the specific driver for your device, such as CONFIG_USB_SERIAL_FTDI_SIO for FTDI devices. You can check the current configuration by examining the .config file in your kernel source directory or by using the zcat /proc/config.gz command if your running kernel supports it.

  2. Recompile the Kernel: If the necessary options are not enabled, you will need to reconfigure and recompile your kernel. Use make menuconfig or another configuration tool to enable the required USB serial options under the USB support and USB Serial Converter support menus. After making the changes, recompile the kernel and deploy it to your device.

  3. Verify Module Compatibility: If you’re attempting to insert modules with insmod, ensure that they are compatible with your kernel version. Kernel modules must be compiled against the headers of the kernel they are intended to run on. If there’s a version mismatch, the module will not load properly. It’s generally recommended to enable the drivers directly in the kernel configuration and compile them into the kernel or as loadable modules during the kernel build process.

  4. Check dmesg Output: After connecting the USB device, check the output of dmesg for any messages related to the USB subsystem. This can provide clues about whether the device is being detected and if there are any errors loading the driver.

  5. Udev Rules: Ensure that udev rules are not interfering with the creation of device nodes. You can create custom udev rules in /etc/udev/rules.d/ to specify the device node creation behavior for specific devices.

  6. Android Permissions: Since you’re working with Android, ensure that the Android USB host API permissions are correctly set to allow your application to access the USB device. This typically involves adding the appropriate <uses-feature> and <uses-permission> declarations in your

Please, also check if these links can help you solve your problem:

USB 2.0 High Speed (480Mbps) | Toradex Developer Center.

The problem is when I put menuconfig the kernel that appears is x_86 I forget the configuration that I built my kernel for I tried so many menuconfig and tried to generate .ko files and use insmod method but still not Working

I deleted the whole kernel source code kernel and trying to rebuild a new can you tell me how to configure the kernel in the right way this time I don’t want to make the same mistakes

Hello @aymen,

We do not directly provide an Android BSP for the Colibri iMX7.
However, our partner Kynetics does.
Are you building your image from a Kynetics BSP?

Best Regards,
Bruno

cross compiling, as well cross menuconfig needs ARCH=arm, like make menuconfig ARCH=arm. Without it make choses host architecture and you can’t choose iMX7 or other ARM target CPU.
Additionally, perhaps menuconfig doesn’t need it, but real cross build make targets need CROSS_COMPILE=. Using Ubuntu apt install’ed toolchain, it could be CROSS_COMPILE=arm-linux-gnueabihf- for iMX7.