Skip to content

Commit 70147a7

Browse files
committed
Pro 4G Module content major update
1 parent 4a61ccb commit 70147a7

File tree

1 file changed

+93
-25
lines changed
  • content/hardware/04.pro/carriers/portenta-mid-carrier/tutorials/user-manual

1 file changed

+93
-25
lines changed

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

Lines changed: 93 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -653,12 +653,12 @@ The Mini PCIe slot of the Portenta Mid Carrier has a dedicated breakout pin to c
653653
| 5 | NC | | NC | |
654654
| 6 | GND | Ground | | |
655655

656-
To accommodate the power requirements and ensure reliable connectivity, jumper cables with appropriate electrical standards, such as ASTM B 258 standard, should be used to support a current of up to 2A. **Jumper cables with a cross-sectional area of 0.82 mm² to 1.3 mm² (approximately equivalent to AWG 18-16) should support 2.0 A of current**.
656+
To accommodate the power requirements and ensure reliable connectivity, jumper cables with appropriate electrical standards, such as ASTM B 258 standard, should be used to support a current of up to 2.0 A. **Jumper cables with a cross-sectional area of 0.82 mm² to 1.3 mm² (approximately equivalent to AWG 18-16) should support 2.0 A of current**.
657657

658658
This precaution is necessary to prevent wire overheating and ensure reliable power transmission for the connected Mini PCIe-compatible module, such as Cat.4 modems. A minimum requirement to set the mini PCIe interface with the Portenta Mid Carrier consists of:
659659

660660
- **3V3 PCIE** pin connected to **3V3 BUCK** pin
661-
- Properly inserted mini PCIe module, e.g., Pro 4G GNSS Module Global / Pro 4G EMEA Module
661+
- Properly inserted mini PCIe module, e.g., Pro 4G GNSS Module Global (EG25) / Pro 4G EMEA (EC200A-EU) Module
662662

663663
***Please use a 5.0 V external power source when using an Arduino Pro 4G Module (EMEA / GNSS Global) or any other mPCIe modules due to their high power consumption. This is important for maintaining a stable power supply to the Portenta SOM and the carrier, particularly for extended periods of use.***
664664

@@ -2008,7 +2008,7 @@ It is available in two variants, **EMEA** and **Global (covering the US)**. This
20082008

20092009
![Arduino Pro 4G GNSS Module Global / Module EMEA](assets/portentaQuectel_overview.gif)
20102010

2011-
***Make sure to attach external antennas to the Pro 4G Module to work correctly with wireless signals. There are three external antenna connectors: a main antenna connector, an Rx-diversity antenna connector, and a GNSS antenna connector. The impedance of the antenna connectors is 50 Ω.***
2011+
***Make sure to attach external antennas to the Pro 4G Module to work correctly with wireless signals. There are three external antenna connectors: a main antenna connector, an Rx-diversity antenna connector, and a GNSS antenna connector. The impedance of the antenna connectors is **50 Ω**.***
20122012

20132013
#### Setting Up Via Out-Of-The-Box Experience
20142014

@@ -2193,9 +2193,9 @@ systemctl stop ModemManager
21932193

21942194
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.
21952195

2196-
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 mandatory power setup for proper system operation.
2196+
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.
21972197

2198-
The modems may get stuck during operation, so managing power through software is recommended to allow modem rebooting when necessary. This method also helps to handle modem failures in case it happens.
2198+
Modems may get stuck on certain occasions, so managing power through software is recommended to allow modem rebooting when necessary. This method also helps handle modem failures in case they happen.
21992199

22002200
To adjust for modem initialization, an extended delay of **20 seconds** is required for the modem to power up properly.
22012201

@@ -2211,39 +2211,71 @@ nmcli c add type gsm ifname cdc-wdm0 con-name wwan0 apn hologram connection.auto
22112211

22122212
This command establishes a GSM connection on the `cdc-wdm0` interface and automatically connects to the `hologram` APN.
22132213

2214-
#### EU EC200A-EU Module
2214+
#### Zero Interface Ban Implementation for Global EG25 Module
22152215

2216-
The **EU EC200A-EU Module** is not directly supported by **ModemManager** out of the box and requires a compatibility patch. Once the patch is applied, you can connect to the network using:
2216+
For the **Global EG25 Module**, it is important to consider a zero interface ban to prevent network conflicts. The zero interface (`cdc-wdm0` or similar) is often created automatically and can lead to connectivity issues. To avoid this, we can tell the system to ignore this interface when managing the modem.
2217+
2218+
To implement a zero interface ban, you can create a custom `udev` rule that prevents the system from using this interface. The following steps show how to create this rule.
2219+
2220+
Create a new `udev` rule in `/etc/udev/rules.d/` to ignore the zero interface.
2221+
2222+
```bash
2223+
sudo nano /etc/udev/rules.d/99-ban-zero-interface.rules
2224+
```
2225+
2226+
In the rule file, write the following line to ignore the `cdc-wdm0` interface (Change `cdc-wdm0` to the corresponding interface if the name differs in your case):
2227+
2228+
```bash
2229+
SUBSYSTEM=="net", ACTION=="add", KERNEL=="cdc-wdm0", ATTR{authorized}="0"
2230+
```
2231+
2232+
This tells the system to disable the interface automatically. Then, reload the `udev` rules with the following commands:
2233+
2234+
```bash
2235+
sudo udevadm control --reload-rules
2236+
```
2237+
2238+
```bash
2239+
sudo udevadm trigger
2240+
```
2241+
2242+
This will prevent the **Global EG25 Module** from using the zero interface (`cdc-wdm0`) and ensure the system uses the correct network interface for establishing connections.
2243+
2244+
#### EMEA EC200A-EU Module
2245+
2246+
The **EMEA (EC200A-EU) Module** is not directly supported by **ModemManager** out of the box and requires a compatibility patch. Once the patch is applied, you can connect to the network using:
22172247

22182248
```bash
22192249
mmcli -m 0 --simple-connect='apn=iot.1nce.net,ip-type=ipv4v6'
22202250
```
22212251

2222-
The modem will create a USB `eth0` interface that will be remapped into `ec200aeu` by an udev rule.
2252+
The modem will create a USB `eth0` interface that will be remapped into `ec200aeu` by an **udev** rule.
22232253

22242254
#### Docker Environment and Power Management
22252255

2226-
In a Docker environment, it may be helpful to disable **ModemManager** to avoid conflicts and instead control the modem using **qmicli**. You can disable **ModemManager** with the following command:
2256+
In a Docker environment, it is often useful to disable **ModemManager** to avoid conflicts and instead control the modem using **qmicli**:
22272257

22282258
```bash
2229-
systemctl stop ModemManager
2259+
sudo systemctl stop ModemManager
22302260
```
22312261

2232-
For modem power management, ensure that the Docker container has access to the GPIO device files by passing them into the container:
2262+
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.
2263+
2264+
Ensure that the Docker container has access to the GPIO device files by passing them into the container:
22332265

22342266
```bash
22352267
docker run --device /dev/gpiochip5 <docker-image>
22362268
```
22372269

2238-
Inside the container, an **entrypoint.sh** script can control the modem's power via GPIO. To enable the 3.3V Buck Converter, the following command can be added to the script:
2270+
Inside the container, an **entrypoint.sh** script can control the modem's power via GPIO, having the 3.3V Buck Converter line connected to **PCIE Enable (GPIO5)** pin, the following command can be added to the script:
22392271

22402272
```bash
22412273
gpioset gpiochip5 5=1
22422274
```
22432275

2244-
***It is mandatory to have **PCIE Enable (GPIO5)** pin connected to the **VCC (3V3)** pin to enable the 3.3V Buck Converter.***
2276+
***It is required to have **PCIE Enable (GPIO5)** pin connected to the **VCC (3V3)** pin to secure power supply line.***
22452277

2246-
This will enable the power to the modem, and add a delay for modem initialization:
2278+
This will enable the power to the modem and add a delay for modem initialization:
22472279

22482280
```bash
22492281
sleep 20
@@ -2275,6 +2307,8 @@ udhcpc -q -f -n -i wwan0
22752307

22762308
![Pro 4G Module - Dynamic IP Configuration](assets/portentaMIDcarrier_mpcie_dynamic.png)
22772309

2310+
### Module Network Performance Test
2311+
22782312
A speed test can be performed to test the speed and performance of the connection. It involves downloading the `speedtest-cli` script, converting it to an executable, and running it inside a Docker container:
22792313

22802314
```bash
@@ -2445,13 +2479,15 @@ AT commands, also known as Hayes commands, are instructions used to control mode
24452479

24462480
This section explains how to use AT commands to interact with the Cat.4 modem, specifically addressing the differences between the **EG25 (Global)** and **EC200A-EU (EU)** modules. These instructions will guide you through setting up your environment, sending AT commands, and managing your modem effectively.
24472481

2482+
***Before continuing, it is very important to have read all the [__Cat.4 Modem Cellular Connectivity__](#cat4-modem-cellular-connectivity) section. If you have not read it yet, please go through the section for a better understanding of the requirements and basic setup to use different variants of the Pro 4G Module.***
2483+
24482484
### Using Linux
24492485

24502486
This subsection provides instructions on using **ModemManager**, **mmcli**, and **qmicli** to send AT commands to your Cat.4 modem with the Portenta X8.
24512487

24522488
#### EG25 (Global) Module
24532489

2454-
For the EG25 module, which is generally supported directly by NetworkManager, ModemManager handles most of the modem's operations. Begin by ensuring that the Pro 4G Module is properly mounted on the Portenta Mid Carrier and recognized by the Portenta X8.
2490+
For the **GNSS Global (EG25)** module, which is generally supported directly by **NetworkManager**, **ModemManager** handles most of the modem's operations. Begin by ensuring that the Pro 4G Module is properly mounted on the Portenta Mid Carrier and recognized by the Portenta X8.
24552491

24562492
You can verify the connection using the following command:
24572493

@@ -2461,7 +2497,7 @@ lsusb
24612497

24622498
***Please set up the Pro 4G Module referring to [this section](#using-linux-4). Otherwise, the __ModemManager__ service may not be recognized or working as intended.***
24632499

2464-
If ModemManager is enabled, you can identify the modem with:
2500+
If **ModemManager** is enabled, you can identify the modem with:
24652501

24662502
```bash
24672503
mmcli -L
@@ -2521,34 +2557,40 @@ To configure the EG25 module with NetworkManager, you can use the following comm
25212557
nmcli c add type gsm ifname cdc-wdm0 con-name wwan0 apn hologram connection.autoconnect yes
25222558
```
25232559

2524-
#### EC200A-EU (EU) Module
2560+
#### EMEA EC200A-EU Module
25252561

2526-
The EC200A-EU module, unlike the EG25, 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.
2562+
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.
25272563

2528-
The ModemManager requires a small compatibility patch for it to work with the module and to send configuration AT commands to the modem. Once patched, you can connect to the network using the following command for example:
2564+
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:
25292565

25302566
```bash
25312567
mmcli -m 0 --simple-connect='apn=iot.1nce.net,ip-type=ipv4v6'
25322568
```
25332569

2534-
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:
2570+
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:
25352571

25362572
```bash
25372573
sudo qmicli -d /dev/cdc-wdm0 --dms-get-manufacturer
25382574
```
25392575

2540-
Power management for the *EC200A-EU module* may require manual intervention, especially if **ModemManager** is disabled. You can power on the modem using a custom script that leverages the `gpiod` library. The script would include commands to set the GPIO pin high and then wait around 20 seconds for the modem to become available, for example:
2576+
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.
2577+
2578+
Additionally, 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.
2579+
2580+
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:
25412581

25422582
```bash
2543-
gpiod set-value <gpio-pin> 1
2583+
gpioset gpiochip5 5=1 #PCIE 3V3 BUCK EN (stm32h7 PE10)
25442584
```
25452585

2546-
Followed by:
2586+
After powering on the modem, allow **20 seconds** for the modem to initialize properly:
25472587

25482588
```bash
25492589
sleep 20
25502590
```
25512591

2592+
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.
2593+
25522594
#### Docker Container Considerations
25532595

25542596
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:
@@ -2557,15 +2599,41 @@ Disable ModemManager to prevent conflicts with tools like `qmicli` when managing
25572599
sudo systemctl stop ModemManager
25582600
```
25592601

2560-
Inside the container, you will need to manage the modem’s power state manually. Use an `entrypoint.sh` script that includes commands to power on the modem with `gpiod`, followed by a short delay to allow the modem to initialize.
2602+
Inside the container, you will need to manage the modem’s power as explained in this [**EC200A-EU**](#emea-ec200a-eu-module-1) section.
25612603

25622604
To send AT commands, use `qmicli` within the Docker container. For example, you might use following command to interact with the modem:
25632605

25642606
```bash
25652607
sudo qmicli -d /dev/cdc-wdm0 --dms-get-manufacturer
25662608
```
25672609

2568-
If you are using the EG25 module, NetworkManager can manage the connection outside the container. For the EC200A-EU module, however, you will need to handle the connection using `qmicli` or similar tools within the container.
2610+
If you are using the **GNSS Global (EG25)** module, **NetworkManager** can manage the connection outside the container. For the **EMEA (EC200A-EU)** module, however, you will need to handle the connection using `qmicli` or similar tools within the container.
2611+
2612+
For example, to retrieve the modem’s manufacturer information:
2613+
2614+
```bash
2615+
sudo qmicli -d /dev/cdc-wdm0 --dms-get-manufacturer
2616+
```
2617+
2618+
To send AT commands, you can use `qmicli` directly. For example, to send the `ATI` command to retrieve basic information about the modem, you can use:
2619+
2620+
```bash
2621+
sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --dms-get-revision
2622+
```
2623+
2624+
Or if you want to send custom AT commands, such as `ATI`, you can use the following:
2625+
2626+
```bash
2627+
sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --dms-set-test-mode --dms-set-raw-at-command="ATI"
2628+
```
2629+
2630+
If **ModemManager** is disabled and you want to directly send AT commands to the **EC200A-EU** module using `qmicli`, an example command for sending AT commands is as follows:
2631+
2632+
```bash
2633+
sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --dms-set-raw-at-command="AT+CGMI"
2634+
```
2635+
2636+
This command sends the `AT+CGMI` command, which retrieves the manufacturer information from the modem.
25692637

25702638
### Using Arduino
25712639

0 commit comments

Comments
 (0)