EC25 mini pcie is not detected on Verdin am62

Device Information:

  • Board: Verdin AM62 Dual 1GB Wi-Fi / Bluetooth IT
  • Carrier Board: Yavia Carrier Board V1.0A
  • Operating System: TorizonCore
  • OS version: 6.5.0-devel-20231216+build.459

I am currently facing an issue integrating the Quectel EC25 Mini PCIe module. As far as I understand it should show up as a USB device however, running the following commands before and after insertion of the module have same results. I already tried using older OS versions as well as multiple EC25 modules, AM62 boards, and carrier boards.

root@verdin-am62-15133452:/# lspci -v
root@verdin-am62-15133452:/# lsusb
Bus 001 Device 002: ID 0424:2514 Microchip Technology, Inc. (formerly SMSC) USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
torizon@verdin-am62:~$ mmcli -S
successfully requested to scan devices
torizon@verdin-am62:~$ mmcli -L
No modems were found
torizon@verdin-am62:~$ sudo dmesg | grep usb
[    0.060861] usbcore: registered new interface driver usbfs
[    0.060897] usbcore: registered new interface driver hub
[    0.060926] usbcore: registered new device driver usb
[    0.979121] usbcore: registered new interface driver usb-storage
[    0.979225] usbcore: registered new interface driver usbserial_generic
[    0.979246] usbserial: USB Serial support registered for generic
[    0.986173] usbcore: registered new interface driver usbhid
[    0.986178] usbhid: USB HID core driver
[    0.990596] usbcore: registered new interface driver snd-usb-audio
[    2.355349] usb usb2: USB disconnect, device number 1
[    2.435010] usb 1-1: new high-speed USB device number 2 using xhci-hcd

Expected outcome
The EC25 module is detected and usable as a 4G modem.

Numerous mini PCIe modems, based on one of the Quectel EC25 modules, are available on the market. Could you please provide a link to the datasheet for the specific module you used in your testing?

Hello @alex.tx,

We are using EC25EUGA-MINIPCIE provided by Quectel.
Here’s a digikey link for the module that we are using

Unfortunately, the datasheets you provided do not include details for the EC25EUGA-MINIPCIE. I was able to find only the EC25-EU Mini PCIe and EC25-EUX Mini PCIe. Moreover, more importantly, there are no details about the electrical connections related to the mini PCIe connector.
Were you able to successfully use this modem with any other system?

Unfortunately, I’m not able to publicly share more documentation, but perhaps you’ll be able to find them here:

I think Quectel_EC25_Mini_PCIe_Hardware_Design_V2.6 document under Hardware design might be what you are looking for.

Currently I only have access to AM62 based systems and I was unable to use this module neither with Yavia carrier board nor with custom carrier board. (I tried multiple EC25 modules with different AM62s and carrier boards)

It’s possible. However, I unfortunately don’t have the credentials to access this document. To proceed with resolving your issue, I need to confirm whether your modem is operational. Please test it with another system.
Additionally, I need to be provided with all relevant documents.

We received another batch of Quectel EC25-E modems from different supplier and we have tested 5 different modules with Yavia carrier board and our own custom carrier board. The results are same - none of the modules are detected. So, at the moment we are pretty confident that the issue is not caused by faulty modem. Baska will contact about the documentation.

Could you please collect and share the outputs of the ‘dmesg ’ and ‘lsusb ’ commands (as text) in both scenarios: when the EC25 modem is installed and when it is not installed?

Hello @alex.tx,

Here are the outputs of the commands. I ran those for both yavia carrier board and our internally designed carrier board which is largely based on mallow carrier board.

dmesg_custom_with_module.txt (35.2 KB)
dmesg_custom_without_module.txt (34.8 KB)
dmesg_yavia_with_module.txt (34.3 KB)
dmesg_yavia_without_module.txt (34.9 KB)
lsusb_custom_with_module.txt (234 Bytes)
lsusb_custom_without_module.txt (234 Bytes)
lsusb_yavia_with_module.txt (151 Bytes)
lsusb_yavia_without_module.txt (151 Bytes)

Hello @baska ,

Thanks for sending all the files.

It seems like that some files were duplicated, namely:

lsusb_custom_with_module.txt (234 Bytes)
lsusb_custom_without_module.txt (234 Bytes)

and

lsusb_yavia_with_module.txt (151 Bytes)
lsusb_yavia_without_module.txt (151 Bytes)

Seems to be exact copies.

While having a look I noticed a message that seems to be unrelated to the issue here but definitely is something to check on your side:

In the log dmesg_custom_with_module.txt (35.2 KB)

pinctrl-single f4000.pinctrl: pin PIN9 already requested by 2b300000.serial; cannot claim for 20110000.spi

It seems like PIN9 is requested more than once. Maybe some other errors snuck into the device tree.

Can you maybe share your device tree? Maybe there is something else there that stops you from succeeding.

Best Regards
Kevin

Hello @kevin.tx,

I can confirm that the duplicated files are correct, and the lsusb command I ran before and after inserting an EC25 module had exactly the same output.

While there may be some errors in my device tree, I don’t believe they are the cause of this issue. The Verdin AM62 module I used on the Yavia board was fresh out of the box with a newly flashed nightly build of Torizon OS, and it has not undergone any modifications, including running containers.

I’m not sure if this information is helpful, but I recently observed that when the 4G module is inserted into the Yavia carrier board, the D9 LED starts blinking. According to the Yavia datasheet, this LED should indicate when the mPCIe device has enabled the WLAN LED signal.

Here are all the applied device tree overlays and a corresponding YAML build file.

tcbuild.yaml (1.6 KB)
verdin-am62_device_charge_overlay.dts (570 Bytes)
verdin-am62_mcasp_pins_gpio_overlay.dts (1.3 KB)
verdin-am62_pin_names_overlay.dts (2.0 KB)
verdin-am62_uart_pins_gpio_overlay.dts (1.7 KB)

Hi @baska !

Did you already take a look at this other thread here in Toradex Community regarding the same device?

Maybe this thread (and the references therein) can help you.

Please let us know :slight_smile:

Best regards,


EDIT: @drew.tx found the USB Driver Document from Quectel referenced in the related thread: Quectel_WCDMA & LTE_Linux_USB_Driver_User_Guide_V1.8 | Quectel

Hi @baska

We are going to try to get one of the units to replicate your setup here. Just want to reconfirm that this Digikey link (on their US store) is the exact device you are using.

Drew

Hi,

I can confirm that this is the exact device we bought from Digikey.

Paul

Hi,

I am using an EC-21 module which i have connected to the USB port (USBH_P Pin 139 to Pin 38 of modem , USBH_N Pin 141 to Pin 36 of modem)

When i power up the EC-21 module then it appears as

usb 1-1: new high-speed USB device number 2 using ci_hdrc
usb 1-1: New USB device found, idVendor=2c7c, idProduct=0121, bcdDevice= 3.18
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1: Product: Android
usb 1-1: Manufacturer: Android
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver option
usbserial: USB Serial support registered for GSM modem (1-port)
option 1-1:1.0: GSM modem (1-port) converter detected
usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
option 1-1:1.1: GSM modem (1-port) converter detected
usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
option 1-1:1.2: GSM modem (1-port) converter detected
usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
option 1-1:1.3: GSM modem (1-port) converter detected
usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3

Device tree settings

imx6ull-colibri.dtsi

/* Colibri USBH */
&usbotg2 {
dr_mode = “host”;
};

imx6ull-colibri-eval-v3.dtsi

&usdhc1 {
vmmc-supply = <&reg_3v3>;
status = “okay”;
};

Hi @adrian

Thanks for the details. I’ll take a look.

Drew

Hello

@henrique.tx I have reviewed the thread you mentioned. However, according to the information in the document you provided, modifying the file [KERNEL]/drivers/usb/serial/options.c should be sufficient to recognize the module. I want to highlight that these modifications are already present in the latest kernel sources provided by Toradex. Nevertheless, the device does not even show up anywhere in the logs.

Additionally, I should mention that my experience with Yocto is limited. If there’s a way to attempt these modifications using the TorizonCore Builder tool, I would be more than happy to explore that option. Your guidance on this front would be greatly appreciated.

@adrian
Did you have to make any modifications to the kernel as described in the Quectel usb driver guide?

Quectel_WCDMA & LTE_Linux_USB_Driver_User_Guide_V1.8 | Quectel

No i made no changes to the Kernel just the device tree.

Once the module is on and the serial ports appear, I then use

/sys/class/tty/ttyUSB2’

to communicate with the module to send AT commands.

Once you know you have a GSM connection then you can request a PPP connection via Linux.

Once the PPP connection is established, then you can do any socket communication.

We managed to get the Quectel EC25 miniPCIe card working. There were several hardware problems that come from the fact that the EC25 miniPCIe card is not with standard miniPCIe pinout.
EC25 pinout
Our carrier board was designed based on Verdin Development Board and to get it working we have removed some components so that it is compliable with EC25 module.


We disconnected I2C because the EC25 module injected on to the bus lot of noise that caused failure in I2C commands and probably also lead to some booting issues.
Here is pictures of the noise on the SCL and SDA lines with different time windows:


The EC25 module uses I2C only for control of a separate audio codec and its SCL and SDA lines are in 1.8V power domain.
EC25 i2c
Pins 24, 44 and 46 are disconnected just in case because they are marked as RESERVED on the module pinout.
R251 is removed from the module reset line because we were unable to control the Verdin MCU_GPIO0_0 pin and it is always 0 and thus keeping the EC25 module in reset.
After this last change the EC25 module was automatically recognized on the USB bus with no extra drivers needed.

Additionally ttyUSB0, ttyUSB1, ttyUSB2 and ttyUSB3 appeared in the /dev/ folder.
After inserting SIM card and connecting an antenna we ran the commands specified in Quectel_UMTS_LTE_5G_Linux_USB_Driver_User_Guide_V3.1.pdf chapter 4.4.
ec25 conf
After that we could see wwan0 in ifconfig and were able to send a ping out
So no kernel building is needed.

1 Like

Excellent news. Thanks for the detailed writeup. Maybe that will be useful for others.

Drew