You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/hardware/04.pro/carriers/portenta-max-carrier/tutorials/mpcie-4g-modem/content.md
+37-4Lines changed: 37 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,7 +62,9 @@ The following image provides the position of the Power Jack on the Portenta Max
62
62
63
63

64
64
65
-
***Modems may get stuck on certain occasions, so it is recommended that power be managed through software to allow modem rebooting when necessary.***
65
+
***Modems can be challenging to work with, so it is helpful to understand the software components involved to troubleshoot potential issues effectively.***
66
+
67
+
Modems are complex devices, so it is recommended that the user knows each software component involved in order to troubleshoot potential issues.
66
68
67
69
## Mini PCI Express
68
70
@@ -320,7 +322,7 @@ The previous commands are used to set environment variables, which we will use t
***The `ov_carrier_max_pcie_mini` overlay is not required for USB modems such as the GNSS Global (EG25) and EMEA (EC200A-EU) variants of the Pro 4G Module.***
325
+
***__NOTE:__The `ov_carrier_max_pcie_mini` overlay is __not required for modems__such as the __GNSS Global (EG25)__ and __EMEA (EC200A-EU)__ variants of the Pro 4G Module, as these modems rely on the USB interface and not on the PCIe bus.***
324
326
325
327
Once the overlays are set, please reboot the Portenta X8 to ensure the configuration has been applied correctly.
326
328
@@ -371,7 +373,27 @@ These rules automatically manage the `ec200aeu` network interface and ensure the
371
373
372
374
#### For QMI Based Modems
373
375
374
-
For **QMI based modems**, modems that use *Qualcomm MSM Interface*, following steps can help configure the modem, which involves managing the **Raw IP mode** and using **qmicli** for network control.
376
+
**QMI-based modems** use the *Qualcomm MSM Interface (QMI)*, a messaging format for communication between software components in the modem and peripheral subsystems. QMI follows a client-server model, where clients interact with QMI services using either a **request/response** format or **unsolicited events** for system notifications.
377
+
378
+
To check if a modem supports QMI, use the following command:
379
+
380
+
```bash
381
+
qmicli -d /dev/cdc-wdm0 --dms-get-model
382
+
```
383
+
384
+
If the modem is QMI compatible, you can manage the **Raw IP mode** and control network connections using **qmicli**, which is an alternative to **ModemManager**. Before using **qmicli**, it is recommended to stop and disable the **ModemManager** service to avoid conflicts:
385
+
386
+
```bash
387
+
sudo systemctl stop ModemManager
388
+
```
389
+
390
+
```bash
391
+
sudo systemctl disable ModemManager
392
+
```
393
+
394
+
This allows **qmicli** to communicate directly with the QMI interface for modem operations.
395
+
396
+
***The **EC200A-EU** modem is not compatible with __QMI__. It requires raw AT commands over a USB serial interface. For more information, refer to the [Quectel EC200A-EU documentation](https://python.quectel.com/en/products/ec200a-eu).***
375
397
376
398
#### Raw IP Mode Setup for QMI Based Modems
377
399
@@ -415,7 +437,18 @@ udhcpc -q -f -n -i wwan0
415
437
416
438
### Modem Power Management
417
439
418
-
The modems might become unresponsive, so it is recommended that power can be controlled through software to allow modem rebooting when necessary. The **gpioset** command should include a jumper and a 20 second delay for proper initialization.
440
+
Modems can become unresponsive, so it is recommended that power can be controlled through software to allow rebooting when necessary. By default, this process is handled automatically by **ModemManager** using customized scripts such as:
441
+
442
+
-`/usr/sbin/modem_on.sh`
443
+
-`/usr/sbin/modem_off.sh`
444
+
445
+
These scripts contain the logic to manage modem power for different carrier boards and are used by **ModemManager** to distinguish between each board type. You can review these scripts by checking the **ModemManager** service configuration:
446
+
447
+
```bash
448
+
systemctl cat ModemManager
449
+
```
450
+
451
+
If you prefer to manage the modem manually, you can use these scripts directly, as they provide a simpler way to handle modem power. For cases where **ModemManager** is disabled, you can use the **gpioset** command to control the modem’s power and add a 20 second delay for proper initialization:
419
452
420
453
```bash
421
454
gpioset gpiochip5 5=1 #PCIE 3V3 BUCK EN (stm32h7 PE10)
Copy file name to clipboardExpand all lines: content/hardware/04.pro/carriers/portenta-mid-carrier/tutorials/user-manual/content.md
+25-15Lines changed: 25 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2162,12 +2162,14 @@ ip link set dev wwan0 up
2162
2162
2163
2163
This step ensures the modem functions properly in QMI mode.
2164
2164
2165
+
***The **EC200A-EU** modem is not compatible with __QMI__. It requires raw AT commands over a USB serial interface. For more information, refer to the [Quectel EC200A-EU documentation](https://python.quectel.com/en/products/ec200a-eu).***
2166
+
2165
2167
#### ModemManager and Power Management Service
2166
2168
2167
2169
The **ModemManager** service manages the power for the Pro 4G Module via a script. **Global (EG25)** and **EU (EC200A-EU)** modems are different and require different configurations:
2168
2170
2169
2171
-**Global EG25 Module**: This modem is supported directly by **NetworkManager**, which works alongside **ModemManager**.
2170
-
-**EU EC200A-EU Module**: This modem is **not officially supported** by **ModemManager**and creates a USB `eth0` connection. This can be remapped into an `ec200aeu` network device using an `udev`rule.
2172
+
-**EU EC200A-EU Module**: This modem is **not officially supported** by **ModemManager**. It is **not QMI-compatible**and requires raw AT commands over a USB serial interface. It connects as a USB device, creating an `ec200aeu` network interface managed by existing `udev`rules.
2171
2173
2172
2174
Power management is handled by **ModemManager** using the following script setup. Before starting **ModemManager**, the system runs a script to power on the modem, and another script is run after the service stops to power off the modem:
2173
2175
@@ -2189,7 +2191,7 @@ systemctl stop ModemManager
2189
2191
2190
2192
After stopping **ModemManager**, there will be a delay before the modem can be powered back on and detected by **mmcli**. The delay is around **20 seconds** for appropriate initialization.
2191
2193
2192
-
***Make sure the mini PCIe power configuration is configured as described in the [Mini PCIe Power Breakout Header](#mini-pcie-power-breakout-header-j9) section. The Portenta X8 requires the __PCIE Enable (GPIO5)__ pin to be connected to a __VCC (3V3)__ pin. Modems may get stuck on certain occasions, so it is recommended that power be managed through software to allow modem rebooting when necessary.***
2194
+
***Make sure the mini PCIe power configuration is configured as described in the [Mini PCIe Power Breakout Header](#mini-pcie-power-breakout-header-j9) section. The Portenta X8 requires the __PCIE Enable (GPIO5)__ pin to be connected to a __VCC (3V3)__ pin. Also, modems are complex devices, so it is recommended to understand the software components involved to troubleshoot issues effectively.***
2193
2195
2194
2196
#### Modem Configuration
2195
2197
@@ -2268,9 +2270,22 @@ In a Docker environment, it is often useful to disable **ModemManager** to avoid
2268
2270
sudo systemctl stop ModemManager
2269
2271
```
2270
2272
2271
-
For modem power management, the connection between the **PCIE Enable (GPIO5)** pin and **VCC (3V3)** pin is now required for a proper power setup. This bridge ensures proper hardware functionality when controlling the modem power. Moreover, you should manage power through software to allow the modem to be rebooted in case it becomes unresponsive.
2273
+
However, when **ModemManager** is active, it handles modem power automatically using customized scripts, such as:
2274
+
2275
+
-`/usr/sbin/modem_on.sh`
2276
+
-`/usr/sbin/modem_off.sh`
2277
+
2278
+
These scripts contain the logic to manage power across different carrier boards. They are used by **ModemManager** to control the modem. You can review these scripts within the **ModemManager** service configuration:
2279
+
2280
+
```bash
2281
+
systemctl cat ModemManager
2282
+
```
2283
+
2284
+
If **ModemManager** is disabled, you can manually use these scripts to manage modem power, as they provide a straightforward way to handle it without conflicts.
2285
+
2286
+
For modem power management, the connection between the **PCIE Enable (GPIO5)** pin and **VCC (3V3)** pin is required for a proper power setup. This bridge ensures stable hardware functionality when controlling modem power.
2272
2287
2273
-
Ensure that the Docker containerhas access to the GPIO device files by passing them into the container:
2288
+
If you prefer manual control inside the Docker container, ensure it has access to GPIO device files:
2274
2289
2275
2290
```bash
2276
2291
docker run --device /dev/gpiochip5 <docker-image>
@@ -2580,25 +2595,18 @@ nmcli c add type gsm ifname cdc-wdm0 con-name wwan0 apn hologram connection.auto
2580
2595
2581
2596
#### EMEA EC200A-EU Module
2582
2597
2583
-
The **EMEA (EC200A-EU)** module, unlike the EG25 module, is not officially supported by **ModemManager** and thus requires a different approach. After ensuring that the Pro 4G Module is properly mounted and recognized by the Portenta X8, you may find it presents as a USB Ethernet device (`eth0`). For appropriate configuration, you will need to remap it using an `udev`rule into an `ec200aeu` network device.
2598
+
The **EMEA (EC200A-EU)** module is not compatible with **QMI** and operates using raw AT commands over a USB serial interface. It is also **not officially supported by ModemManager**, so it requires a different configuration approach compared to the **EG25 module**. When properly mounted and recognized by the Portenta X8, the module presents as a USB Ethernet device named `ec200aeu`, managed by existing `udev`rules. For more details, plese check [this section](#emea-ec200a-eu-module)
2584
2599
2585
-
The **ModemManager** requires a small compatibility patch to work with the module and send configuration AT commands to the modem. Once patched, you can connect to the network using the following command for example:
2600
+
To establish a network connection, use **mmcli**with the following command:
If **ModemManager** is disabled or if you prefer an alternative method, you can use `qmicli` to identify the modem and interact with it. For instance, you can retrieve the manufacturer information by running:
If **ModemManager** is disabled or if you prefer an alternative, you will need to use serial communication with AT commands to manage the modem. For more information, refer to the [Quectel EC200A-EU documentation](https://python.quectel.com/en/products/ec200a-eu).
2596
2606
2597
2607
Power management for the **EC200A-EU module** may require manual intervention, particularly if **ModemManager** is disabled or when using Docker. Make sure the mini PCIe power configuration is configured as described in the [Mini PCIe Power Breakout Header](#mini-pcie-power-breakout-header-j9) section. The Portenta X8 requires the **PCIE Enable (GPIO5)** pin to be connected to a **VCC (3V3)** pin. This is a required power setup for proper system operation.
2598
2608
2599
-
***Sometimes the modem may become unresponsive, so it is recommended that you have a software based power control, which allows you to reboot the modem when necessary.***
2600
-
2601
-
You can create a custom script using the `gpiod` library to manage modem power via software. Ensure that the jumper connection mentioned previously is in place for this to work. The script can be used to power the modem and provide the required delay for proper initialization. A typical example is as follows:
2609
+
You can create a custom script using the `gpiod` library to manage modem power via software. Ensure that the jumper connection mentioned earlier is in place for proper functionality. The script can be used to power the modem and provide the required delay for proper initialization. A possible example is as follows:
2602
2610
2603
2611
```bash
2604
2612
gpioset gpiochip5 5=1 #PCIE 3V3 BUCK EN (stm32h7 PE10)
@@ -2612,6 +2620,8 @@ sleep 20
2612
2620
2613
2621
This ensures the modem powers up correctly and becomes available for network operations. The software based power control also helps you reboot the modem if it becomes unresponsive, improving overall reliability and preventing manual resets.
2614
2622
2623
+
***Modems can be challenging to work with, so it is recommended to understand the software components involved to troubleshoot issues effectively.***
2624
+
2615
2625
#### Docker Container Considerations
2616
2626
2617
2627
Disable ModemManager to prevent conflicts with tools like `qmicli` when managing either modem within a Docker container. This can be done by using the following command:
0 commit comments