i.MX6 with NVME drive?

Has anyone successfully got an NVME PCIe SSD to work with the Apalis i.MX6? I have a 4 lane 1TB SSD - it sees the device, but I’m not seeing drivers for it. Do they exist? Can the SOM interface with an NVME drive?

The Linux NVMe driver is natively included in the kernel since version 3.3. However we have not tried this.
When you said “it sees the device” what exactly do you mean?
Can you share dmesg output related to your SSD?

This is in the Torizon linux distribution, I for got to mention. My software engineer says it;s not in there, not loaded. dmseg shows nothing. not present in the kernel or as a loadable module.

Yes your engineer appears to be right.

Excerpt from the Torizon kernel config:

# NVME Support
# CONFIG_BLK_DEV_NVME is not set
# CONFIG_NVME_FC is not set
# end of NVME Support

I’ll bring this up with the Torizon team and discuss about having the NVME drivers enabled at base in Torizon.

In the mean time, you could add the relevant kernel configs to the Torizon build/kernel which should add the drivers to the system.

Thanks @jeremias.tx - can you point me to a reference to adding the configs? Thanks!


To edit the configs on torizon you’ll need to first obtain the base config. Unlike our usual BSP the configs for Torizon are not found in the Kernel source itself. You can obtain a copy of the config however from a device running torizon with zcat /proc/config.gz > config.txt.

You can then copy the config.txt to our kernel source on a development PC. Then to edit the config and build the kernel the instructions are more or less the same for Torizon as described here: https://developer.toradex.com/knowledge-base/build-u-boot-and-linux-kernel-from-source-code

Only difference is that the torizon kernel branch is toradex_4.20.y.

Once you have built the kernel you can then transfer the binary to the device at location /boot/ostree/torizon-{some checksum}/vmlinuz, then reboot.

Best Regards,