Thales' cellular IoT products business is now part of Telit Cinterion, find out more.

You are here

Telit Cinterion IoT Developer Community

MV31/MV32: Linux Kernel Driver SW +source code

Tutorial, August 15, 2022 - 10:01am, 2165 views

MV31/MV32 Tutorial: Linux Driver SW

Since Linux Kernel v5.13.x, the kernel OS driver has adapted the driver SW + source code for our MV31/MV32 5G modules

  • For USB variant: product VID/PID included in /drivers/usb/serial/option.c

========================================

option.c - drivers/usb/serial/option.c - Linux source code (v4.19.249) - Bootlin

https://elixir.bootlin.com/linux/v5.19-rc4/source/drivers/usb/serial/option.c

#define CINTERION_PRODUCT_MV31_MBIM             0x00b3

#define CINTERION_PRODUCT_MV31_RMNET            0x00b7

#define CINTERION_PRODUCT_MV31_2_MBIM           0x00b8

#define CINTERION_PRODUCT_MV31_2_RMNET          0x00b9

#define CINTERION_PRODUCT_MV32_WA               0x00f1

#define CINTERION_PRODUCT_MV32_WB               0x00f2

=========================================================

  • For PCIe variant/mode: product VID/PID included in MHI Driver SW in /drivers/bus/mhi/host/pci_generic.c

https://docs.kernel.org/mhi/mhi.html

https://www.linaro.org/blog/mhi-bus-support-gets-added-to-the-linux-kernel/

https://www.linaro.org/blog/upstreaming-support-for-qualcomm-pcie-modems/

 Kernel Patch since 2021-03-16

[PATCH] Add MHI bus support and driver for 5G module

https://lore.kernel.org/netdev/YFMTEr5yGU0owYoM@unreal/T/

/drivers/bus/mhi/host/pci_generic.c

 static const struct pci_device_id mhi_pci_id_table[] = {
     /* MV31-W (Cinterion) */
     { PCI_DEVICE(0x1269, 0x00b3),
         .driver_data = (kernel_ulong_t) &mhi_mv31_info },
    /* MV31-2-W (Cinterion), based on new baseline */
    { PCI_DEVICE(0x1269, 0x00b4),
        .driver_data = (kernel_ulong_t) &mhi_mv31_info },
     /* MV32-WA (Cinterion) */
     { PCI_DEVICE(0x1269, 0x00ba),
         .driver_data = (kernel_ulong_t) &mhi_mv32_info },
    /* MV32-WB (Cinterion) */
     { PCI_DEVICE(0x1269, 0x00bb),
         .driver_data = (kernel_ulong_t) &mhi_mv32_info },

==================================================

On both the USB/PCIe variants, we recommend to use the MBIM (Mobile Broadband Interface Model) data/control interfaces on Linux Kernel for 5G data transmissions:

https://www.kernelconfig.io/config_usb_net_cdc_mbim?q=&kernelversion=4.9.251&arch=x86

 

Author

wemei's picture
wemei