Mini PCIe not recognizing LTE modem

I am trying to connect an LTE modem via the mini PCIe port on the board, compiling Linux 4.9 with AOSP (Android 9).

lspci does not list any devices, and dmesg doesn’t show that anything has been found, while showing that PCIe host is enabled.

The modem is Huawei ME906E which is connected via a mini PCIe to M.2 connector.
I’ve also tried connecting Quectel EC25-E (forgive me for not linking, new users are limited to 2 links), which I know works (runs on my RPi) directly to the mini PCIe port and get the same result – nothing listed in lspci and no mention in dmesg.

I wonder if there is any gotcha that I am missing, or if there are some sources that I could modify for debugging or for integration.

Any help would be appreciated :slight_smile:

My best guess is that you need to enable a kernel driver for the Huawei ME906E.

In order for me to get the nvme working in the m.2 slot I had to compile the kernel with the nvme drivers and would expect the same for your modem.

Research what linux drivers are available for the modem and try to use one of those. I doubt you will find a driver specifically for android but you might.

@BigCountry907 I’ve been fiddling with the kernel configuration for long hours now stretching a couple of days. From what I understand, this module is supposed to register as a USB hub/controller and then expose 4 ttyUSBs from which I can send AT commands.

The drivers for this modem seem to be within qcserial and/or usb-serial, however enabling them didn’t yield.

I am now trying to debug this by installing Ubuntu with your build tool – I’d like to thank you for that.

I suppose a question that I would have, is, if say the driver is missing, shouldn’t lspci at least show that the module is there but missing a driver?

Hi Ben,

Yes, the lspci should show you the pci devices connected on the PCI bus (you will see just a simplified list of PCI IDs or Vendor IDS if the pciutils is not present on the kernel; otherwise, you will see the name of the vendor and/or the textual description of the device).
In the case of hte Hikey970, you should at least see the ethernet controller being listed by the lspci because it is also attached to the pci bus (on the pcb itself and via a pcie switch).
The fact that you say you don’t see anything on the lspci output seems to indicate that either you have a physical problem with the pci switc/bus or your kernel/device tree is not correct.

Ensure the presence of the ethernet controller and its functionality.

Kind regards

The ethernet controller is listed, present and functional in all of my tests, but not the LTE modem. From what I’ve understood so far, mini PCIe has 2 USB pins. I believe that my modem uses these USB pins in order to create its /dev/ttyUSB*s and provide its network interface. So maybe it shouldn’t show as a PCI device, but as a USB device instead.

lsusb did not list it in all of my builds/tests either, and no /dev/ttyUSB* were ever present.