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-mid-carrier/tutorials/user-manual/content.md
+93-25Lines changed: 93 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -653,12 +653,12 @@ The Mini PCIe slot of the Portenta Mid Carrier has a dedicated breakout pin to c
653
653
| 5 | NC || NC ||
654
654
| 6 | GND | Ground |||
655
655
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**.
657
657
658
658
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:
659
659
660
660
-**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
662
662
663
663
***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.***
664
664
@@ -2008,7 +2008,7 @@ It is available in two variants, **EMEA** and **Global (covering the US)**. This
2008
2008
2009
2009

2010
2010
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 Ω**.***
2012
2012
2013
2013
#### Setting Up Via Out-Of-The-Box Experience
2014
2014
@@ -2193,9 +2193,9 @@ systemctl stop ModemManager
2193
2193
2194
2194
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.
2195
2195
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.
2197
2197
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.
2199
2199
2200
2200
To adjust for modem initialization, an extended delay of **20 seconds** is required for the modem to power up properly.
2201
2201
@@ -2211,39 +2211,71 @@ nmcli c add type gsm ifname cdc-wdm0 con-name wwan0 apn hologram connection.auto
2211
2211
2212
2212
This command establishes a GSM connection on the `cdc-wdm0` interface and automatically connects to the `hologram` APN.
2213
2213
2214
-
#### EU EC200A-EU Module
2214
+
#### Zero Interface Ban Implementation for Global EG25 Module
2215
2215
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.
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):
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:
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.
2223
2253
2224
2254
#### Docker Environment and Power Management
2225
2255
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**:
2227
2257
2228
2258
```bash
2229
-
systemctl stop ModemManager
2259
+
sudo systemctl stop ModemManager
2230
2260
```
2231
2261
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:
2233
2265
2234
2266
```bash
2235
2267
docker run --device /dev/gpiochip5 <docker-image>
2236
2268
```
2237
2269
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:
2239
2271
2240
2272
```bash
2241
2273
gpioset gpiochip5 5=1
2242
2274
```
2243
2275
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.***
2245
2277
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:
2247
2279
2248
2280
```bash
2249
2281
sleep 20
@@ -2275,6 +2307,8 @@ udhcpc -q -f -n -i wwan0
2275
2307
2276
2308

2277
2309
2310
+
### Module Network Performance Test
2311
+
2278
2312
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:
2279
2313
2280
2314
```bash
@@ -2445,13 +2479,15 @@ AT commands, also known as Hayes commands, are instructions used to control mode
2445
2479
2446
2480
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.
2447
2481
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
+
2448
2484
### Using Linux
2449
2485
2450
2486
This subsection provides instructions on using **ModemManager**, **mmcli**, and **qmicli** to send AT commands to your Cat.4 modem with the Portenta X8.
2451
2487
2452
2488
#### EG25 (Global) Module
2453
2489
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.
2455
2491
2456
2492
You can verify the connection using the following command:
2457
2493
@@ -2461,7 +2497,7 @@ lsusb
2461
2497
2462
2498
***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.***
2463
2499
2464
-
If ModemManager is enabled, you can identify the modem with:
2500
+
If **ModemManager** is enabled, you can identify the modem with:
2465
2501
2466
2502
```bash
2467
2503
mmcli -L
@@ -2521,34 +2557,40 @@ To configure the EG25 module with NetworkManager, you can use the following comm
2521
2557
nmcli c add type gsm ifname cdc-wdm0 con-name wwan0 apn hologram connection.autoconnect yes
2522
2558
```
2523
2559
2524
-
#### EC200A-EU (EU) Module
2560
+
#### EMEA EC200A-EU Module
2525
2561
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.
2527
2563
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:
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:
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:
2541
2581
2542
2582
```bash
2543
-
gpiod set-value <gpio-pin> 1
2583
+
gpioset gpiochip5 5=1 #PCIE 3V3 BUCK EN (stm32h7 PE10)
2544
2584
```
2545
2585
2546
-
Followed by:
2586
+
After powering on the modem, allow **20 seconds** for the modem to initialize properly:
2547
2587
2548
2588
```bash
2549
2589
sleep 20
2550
2590
```
2551
2591
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
+
2552
2594
#### Docker Container Considerations
2553
2595
2554
2596
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
2557
2599
sudo systemctl stop ModemManager
2558
2600
```
2559
2601
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.
2561
2603
2562
2604
To send AT commands, use `qmicli` within the Docker container. For example, you might use following command to interact with the modem:
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:
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:
0 commit comments