Skip to content

Commit 3b2996a

Browse files
committed
Documentation content several update
1 parent acc2156 commit 3b2996a

File tree

2 files changed

+62
-19
lines changed
  • content/hardware/04.pro/carriers
    • portenta-max-carrier/tutorials/mpcie-4g-modem
    • portenta-mid-carrier/tutorials/user-manual

2 files changed

+62
-19
lines changed

content/hardware/04.pro/carriers/portenta-max-carrier/tutorials/mpcie-4g-modem/content.md

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ The following image provides the position of the Power Jack on the Portenta Max
6262

6363
![Portenta Max Carrier Power Jack](assets/portentaMAXcarrier_power_distro.png)
6464

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.
6668

6769
## Mini PCI Express
6870

@@ -320,7 +322,7 @@ The previous commands are used to set environment variables, which we will use t
320322
fw_setenv overlays 'ov_som_lbee5kl1dx ov_som_x8h7 ov_carrier_enuc_bq24195 ov_carrier_max_usbfs ov_carrier_max_sdc ov_carrier_max_cs42l52'
321323
```
322324

323-
***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.***
324326

325327
Once the overlays are set, please reboot the Portenta X8 to ensure the configuration has been applied correctly.
326328

@@ -371,7 +373,27 @@ These rules automatically manage the `ec200aeu` network interface and ensure the
371373

372374
#### For QMI Based Modems
373375

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).***
375397

376398
#### Raw IP Mode Setup for QMI Based Modems
377399

@@ -415,7 +437,18 @@ udhcpc -q -f -n -i wwan0
415437

416438
### Modem Power Management
417439

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:
419452

420453
```bash
421454
gpioset gpiochip5 5=1 #PCIE 3V3 BUCK EN (stm32h7 PE10)

content/hardware/04.pro/carriers/portenta-mid-carrier/tutorials/user-manual/content.md

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2162,12 +2162,14 @@ ip link set dev wwan0 up
21622162

21632163
This step ensures the modem functions properly in QMI mode.
21642164

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+
21652167
#### ModemManager and Power Management Service
21662168

21672169
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:
21682170

21692171
- **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.
21712173

21722174
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:
21732175

@@ -2189,7 +2191,7 @@ systemctl stop ModemManager
21892191

21902192
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.
21912193

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.***
21932195

21942196
#### Modem Configuration
21952197

@@ -2268,9 +2270,22 @@ In a Docker environment, it is often useful to disable **ModemManager** to avoid
22682270
sudo systemctl stop ModemManager
22692271
```
22702272

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.
22722287

2273-
Ensure that the Docker container has 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:
22742289

22752290
```bash
22762291
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
25802595

25812596
#### EMEA EC200A-EU Module
25822597

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)
25842599

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:
25862601

25872602
```bash
25882603
mmcli -m 0 --simple-connect='apn=iot.1nce.net,ip-type=ipv4v6'
25892604
```
2590-
2591-
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:
2592-
2593-
```bash
2594-
sudo qmicli -d /dev/cdc-wdm0 --dms-get-manufacturer
2595-
```
2605+
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).
25962606

25972607
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.
25982608

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:
26022610

26032611
```bash
26042612
gpioset gpiochip5 5=1 #PCIE 3V3 BUCK EN (stm32h7 PE10)
@@ -2612,6 +2620,8 @@ sleep 20
26122620

26132621
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.
26142622

2623+
***Modems can be challenging to work with, so it is recommended to understand the software components involved to troubleshoot issues effectively.***
2624+
26152625
#### Docker Container Considerations
26162626

26172627
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

Comments
 (0)