Disable power rail os ethernet and wifi

We are using Dahlia board, imx8m, and torizonCore 5.15.148-6.6.0-devel+git.23a8e831749d
For power consumption optimizations we want to disable power rais for ethernet and wifi.
We’ve followed the SOM manual setting and resetting gpio2 and gpio3 but the power consumption of the SOM remains the same. And if I connect a ethernet cable I can still connect to the SOM, meaning that the power for the eth phy was not turned off.
I’m I missing any step to shutdown power of wifi and eth?

Hi, I’m the Toradex AI Assistant. I’m in early beta, and I would appreciate your feedback.
The Toradex Support team will follow up with you shortly!


I understand you’re trying to reduce power consumption by disabling power rails for Ethernet and WiFi on a Dahlia board with an iMX8M module running TorizonCore.

For managing power rails specifically for Ethernet and WiFi, it’s crucial to ensure that you’re manipulating the correct GPIOs that control these functionalities. On the Dahlia carrier board, the control of power rails for Ethernet and WiFi might not be directly achievable through simple GPIO toggling, depending on the design and how power management is implemented for these peripherals.

  1. Ethernet: Typically, the Ethernet PHY power is managed through a specific GPIO that controls the power or enable signal to the PHY. You need to ensure that this GPIO is correctly identified and that your software is correctly toggling it. Additionally, some Ethernet PHYs may have multiple power domains or require specific sequences to fully power down.

  2. WiFi: For WiFi, the power management could be more complex, involving not just a power rail but also potentially a reset line or a specific control interface (like SDIO or PCIe, depending on how the WiFi module is connected). Disabling the WiFi module might require interacting with the driver to properly shut down the module before cutting the power.

Given the information provided, here are some steps and considerations:

  • Verify GPIO Assignment: Double-check the Dahlia carrier board documentation and schematics to ensure you’re targeting the correct GPIOs for controlling Ethernet and WiFi power. The GPIO numbers in the software might not directly correspond to the physical pin numbers.

  • Driver Interaction: For both Ethernet and WiFi, ensure that any active drivers are properly shut down before attempting to cut power. For Ethernet, this might involve bringing down the network interface. For WiFi, this could involve unloading the driver or using specific commands to deactivate the module.

  • Power Management Integration: Some SoCs and modules integrate power management features that might require specific commands or sequences to effectively manage power states. Consult the iMX8M reference manual for any such features.

  • Check for Additional Dependencies: Some components might share power rails or have dependencies on other power domains. Ensure that disabling power for Ethernet and WiFi does not affect other components that you intend to keep active.

If after following these considerations you still face issues, it might be necessary to delve deeper into the specific implementation of power management on the Dahlia board and the iMX8M module. This could involve reviewing the board’s schematics, consulting detailed documentation for the iMX8M SoC regarding power management capabilities, and potentially reviewing the source

Please, also check if these links can help you solve your problem:

Network on Toradex Computer on Modules | Toradex Developer Center.

How did you like my response?

:+1: :-1:

Please do not confuse the Verdin module’s GPIO_<x> notation with the iMX8MM’s GPIO<controller>_IO<gpio> notation. Refer to this article for details.
The Verdin GPIO_2 corresponds to iMX8MM GPIO5.IO[5], and GPIO_3 corresponds to iMX8MM GPIO5.IO[26]. Neither of these controls any power rails; they are directly an exclusively routed to SODIMM pins 208 and 210.

Please manipulate the GPIO3.IO[25] to disable WiFi/BT power and GPIO2.IO[20] to control Eth power. Please refer to this article for details

Hello @peterz,

As @alex.tx said, the GPIO on this table refers to the banks and pins on the SoC, not the GPIO numbering on the device.

Just so I understand the intended use a bit better, do you want to be able to toggle the power to these interfaces at runtime, or do you want to permanently disable them?

It is only possible to disable the Ethernet power supply, as disabling the WiFi power supply would require the firmware to be reloaded.
For this reason, the pin used to toggle the WiFi power supply is not connected on the Verdin iMX8MM.
To reduce the power consumption of the WiFi module, we recommend setting it to stand-by mode, which has a very low power consumption.

To toggle the Ethernet power supply, you need to customize the device tree of the Verdin iMX8MM so that the regulator-ethphy is not configured to be always on, as it currently is.
With this configuration changed, you should be able to set the state of this regulator to idle, by using the regulator driver interface, which is available on the /sys/bus/platform/devices/regulator-ethphy/regulator/regulator* path.

Best Regards,

Hello @bruno.tx ,
Thanks for the explanation
We were trying to disable the power rails according to the documentation but we cannot toggle the pins because they are being used by the driver probably.

root@verdin-imx8mm-14756354:/var/rootdirs/home/torizon# echo 89 > /sys/class/gpio/export
sh: echo: write error: Device or resource busy

I will explain our use case for better understanding. We need a low-power device, and we need to disable all the unused peripherals. In this case ethernet and wifi. Because we don’t know the disable consumption want to check what we can gain by disabling the power rails. Can you give us a power usage of these 2 modules? If the consumption are very small we can ignore it, otherwise, we need to remove power completely.

  • Wifi can be disabled permanently or at boot time.
  • Ethernet we need to have the option to enable and disable, because we will use it from time to time.

When we enter in suspend mode, we will disable both.

From what I understod, we can change the state by editing the device tree for reg_ethphy: regulator-ethphy to this right?

	/* Non PMIC On-module Supplies */
	reg_ethphy: regulator-ethphy {
		compatible = "regulator-fixed";
		gpio = <&gpio2 20 GPIO_ACTIVE_HIGH>; /* PMIC_EN_ETH */
		off-on-delay = <500000>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_reg_eth>;
		regulator-max-microvolt = <3300000>;
		regulator-min-microvolt = <3300000>;
		regulator-name = "On-module +V3.3_ETH";
		startup-delay-us = <200000>;

Hello @peterz,

Thanks for the clarification on your use case.

That is expected, as you correctly stated the driver uses these pins.

While we don’t have the exact power consumption of the Ethernet phy or the WiFi module, you can see that the idle power consumption of the WiFi module is very low, by comparing the power consumption numbers we provide for the 0055 Verdin iMX8M Mini Quad 2GB WB IT and the 0059 Verdin iMX8M Mini Quad 2GB IT.

For the Ethernet phy, there is no great direct comparison, so it would be the best to test if toggling its power would be needed in your product.

Yes, this change should allow you to change the status of this regulator at runtime, using the driver interface (not the GPIO pin directly).

Best Regards,

Hello @bruno.tx ,

Thanks for the detailed explanation, we will try to implement this and give you feedback.