Reduce my NX power consumption

Hello,

I have flashed linux kernel version 4.9 (L4T 32.4.4) Ubuntu 18.04 , in my Jetson NX SOM module carrier board.

I observed that , my board power consumption is more (not remember the exact value) , My requirement is to just enable UART functionality and to disable rest of the modules.WILL THIS REDUCE THE POWER CONSUMPTION.

  1. How can i reduce the power consumption of my NX and NANO board.
  2. How to disable all the other modules , except UART.

hello vinay2010singh,

please refer to Supported Modes and Power Efficiency for the default clock configuration on Jetson Xavier NX.
please also share what’s your expectation of the total power consumption.
thanks

Hello

As per the document It supports three optimized power budgets, such as 10 watts, 15 watts, and 30 watts.And The default mode is 10W (mode ID 5).

How can i further reduce the power consumption, as i have told that my requirement is only UART (console) should work.

How can i implement it.

hello vinay2010singh,

you can have Kernel Customization to disable those unused functions.
please also see [12.3 UART] chapter from Jetson Xavier NX Product Design Guide for reference.
thanks

Hello @JerryChang

I have already gone through the [Kernel Customization] document, But i did not get the way out.

How should i disable all the the unused functions except UART.

Please help me out with example.

hello vinay2010singh,

you can disable the drivers.
it’s Makefile of each kernel driver to parse the configuration to build *.so (or, *.ko)
please refer to kernel configuration file to have customization,
i.e. $L4T_Sources/r32.6.1/Linux_for_Tegra/source/public/kernel/kernel-4.9/arch/arm64/configs/tegra_defconfig
thanks

Hello @JerryChang

I tried to disable the drivers by using “n” e.g. CONFIG_VIDEO_IMX318=n in tegra_defconfig file.

But i am facing these errors
#######################################
$ make ARCH=arm64 O=kernel_out tegra_defconfig
#######################################
make[1]: Entering directory ‘/home/admin/Vinay/VKSINGH_GIT/abc/kernel/Linux_for_Tegra/source/public/kernel/kernel-4.9/kernel_out’
HOSTCC scripts/basic/fixdep
GEN ./Makefile
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
warning: (DRM_RADEON && DRM_AMDGPU && DRM_NOUVEAU && DRM_I915 && DRM_GMA500 && DRM_SHMOBILE && DRM_TILCDC && DRM_FSL_DCU && TEGRA_DC && DRM_PARADE_PS8622 && FB_BACKLIGHT && FB_ARMCLCD && FB_MX3 && USB_APPLEDISPLAY && FB_OLPC_DCON && ACPI_CMPC && SAMSUNG_Q10) selects BACKLIGHT_CLASS_DEVICE which has unmet direct dependencies (HAS_IOMEM && BACKLIGHT_LCD_SUPPORT)
warning: (TEGRA_GRHOST_SYNC) selects SYNC which has unmet direct dependencies (STAGING)
warning: (DRM_RADEON && DRM_AMDGPU && DRM_NOUVEAU && DRM_I915 && DRM_GMA500 && DRM_SHMOBILE && DRM_TILCDC && DRM_FSL_DCU && TEGRA_DC && DRM_PARADE_PS8622 && FB_BACKLIGHT && FB_ARMCLCD && FB_MX3 && USB_APPLEDISPLAY && FB_OLPC_DCON && ACPI_CMPC && SAMSUNG_Q10) selects BACKLIGHT_CLASS_DEVICE which has unmet direct dependencies (HAS_IOMEM && BACKLIGHT_LCD_SUPPORT)
warning: (TEGRA_GRHOST_SYNC) selects SYNC which has unmet direct dependencies (STAGING)

configuration written to .config

make[1]: Leaving directory

#################################
$make ARCH=arm64 O=kernel_build -j4
#################################
CC kernel/auditsc.o
…/drivers/base/dma-coherent.c:973:12: error: ‘shrink_thread’ defined but not used [-Werror=unused-function]
static int shrink_thread(void *arg)
^~~~~~~~~~~~~
…/drivers/base/dma-coherent.c:280:12: error: ‘declare_coherent_heap’ defined but not used [-Werror=unused-function]
static int declare_coherent_heap(struct device *dev, phys_addr_t base,
^~~~~~~~~~~~~~~~~~~~~
…/drivers/base/dma-coherent.c:96:13: error: ‘dma_debugfs_init’ defined but not used [-Werror=unused-function]
static void dma_debugfs_init(struct device *dev, struct heap_info *heap)
^~~~~~~~~~~~~~~~
CC fs/ntfs/unistr.o
CC fs/proc/task_mmu.o
…/fs/pstore/inode.c: In function ‘pstore_unlink’:
…/fs/pstore/inode.c:178:6: warning: unused variable ‘err’ [-Wunused-variable]
int err;
^~~
CC fs/nfs/nfs2xdr.o
CC fs/pstore/platform.o
CC fs/ntfs/upcase.o

there’s defined but not used failures, you should dig into the sources and revise them accordingly.

Hello ,

I eliminated the error , but still target (reduction in power comsumption) is not achieved.

Please help me with some other ways ,To get reduction in power consumption.As i have told that , my only requirement is not only UART must work perfectly fine.

hello vinay2010singh,

it’s 10W for the minimum power consumption by default on Jetson Xavier NX according to Supported Modes and Power Efficiency.
please share what’s your expectation of power consumption.
you should have a try to have some customization to disable unused functions, disable unused regulators…etc

Hello @JerryChang

I have commented (#) here many functions from $L4T_Sources/r32.6.1/Linux_for_Tegra/source/public/kernel/kernel-4.9/arch/arm64/configs/tegra_defconfig

CONFIG_ATH6KL_DEBUG=y
CONFIG_AR5523=m
CONFIG_WIL6210=m

CONFIG_WIL6210_TRACING is not set

#CONFIG_ATH10K=m
#CONFIG_ATH10K_PCI=m
#CONFIG_ATH10K_AHB=y
#CONFIG_ATH10K_DEBUGFS=y
#CONFIG_WCN36XX=m
#CONFIG_WCN36XX_DEBUGFS=y
#CONFIG_ATMEL=m
#CONFIG_AT76C50X_USB=m
#CONFIG_B43=m
#CONFIG_B43_SDIO=y
#CONFIG_B43LEGACY=m
#CONFIG_IWLWIFI=m
#CONFIG_IWLDVM=m
#CONFIG_IWLMVM=m
#CONFIG_IWLWIFI_DEBUGFS=y

CONFIG_IWLWIFI_DEVICE_TRACING is not set

#CONFIG_HERMES=m
#CONFIG_P54_COMMON=m
#CONFIG_P54_USB=m
#CONFIG_P54_PCI=m
#CONFIG_MWIFIEX=m
#CONFIG_MWIFIEX_SDIO=m
#CONFIG_MWIFIEX_PCIE=m
#CONFIG_MWIFIEX_USB=m
#CONFIG_MWL8K=m
#CONFIG_MT7601U=m
#CONFIG_RT2X00=m
#CONFIG_RT2800PCI=m
#CONFIG_RT2500USB=m
#CONFIG_RT73USB=m
#CONFIG_RT2800USB=m
#CONFIG_RT2800USB_RT3573=y
#CONFIG_RT2800USB_RT53XX=y
#CONFIG_RT2800USB_RT55XX=y
#CONFIG_RT2800USB_UNKNOWN=y
#CONFIG_RT2X00_LIB_DEBUGFS=y
#CONFIG_RTL8187=m
#CONFIG_RTL8192CE=m
#CONFIG_RTL8192SE=m
#CONFIG_RTL8192DE=m
#CONFIG_RTL8723AE=m
#CONFIG_RTL8723BE=m
#CONFIG_RTL8188EE=m
#CONFIG_RTL8192EE=m
#CONFIG_RTL8192CU=m
#CONFIG_RTL8XXXU=m
#CONFIG_RTL8XXXU_UNTESTED=y
#CONFIG_RSI_91X=m
#CONFIG_CW1200=m
#CONFIG_CW1200_WLAN_SDIO=m
#CONFIG_WL1251=m
#CONFIG_WL1251_SDIO=m
#CONFIG_WL12XX=m
#CONFIG_WL18XX=m
#CONFIG_WLCORE_SDIO=m
#CONFIG_USB_ZD1201=m
#CONFIG_ZD1211RW=m

CONFIG_NETFILTER=y
CONFIG_NETFILTER_NETLINK_ACCT=m
#CONFIG_NF_CONNTRACK=m
#CONFIG_NF_CONNTRACK_EVENTS=y
#CONFIG_NF_CT_PROTO_DCCP=m
#CONFIG_NF_CT_PROTO_SCTP=m
#CONFIG_NF_CT_PROTO_UDPLITE=m
#CONFIG_NF_CONNTRACK_AMANDA=m
#CONFIG_NF_CONNTRACK_FTP=m
#CONFIG_NF_CONNTRACK_H323=m
#CONFIG_NF_CONNTRACK_IRC=m
#CONFIG_NF_CONNTRACK_NETBIOS_NS=m
#CONFIG_NF_CONNTRACK_PPTP=m
#CONFIG_NF_CONNTRACK_SANE=m
#CONFIG_NF_CONNTRACK_SIP=m
#CONFIG_NF_CONNTRACK_TFTP=m
#CONFIG_NF_CT_NETLINK=m
#CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
#CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
#CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
#CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
#CONFIG_NETFILTER_XT_TARGET_LOG=m
#CONFIG_NETFILTER_XT_TARGET_MARK=m
#CONFIG_NETFILTER_XT_TARGET_NFLOG=m
#CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
#CONFIG_NETFILTER_XT_TARGET_TPROXY=m
#CONFIG_NETFILTER_XT_TARGET_TRACE=m
#CONFIG_NETFILTER_XT_TARGET_TCPMSS=m

#CONFIG_NF_CONNTRACK_FTP=m
#CONFIG_NF_CONNTRACK_H323=m
#CONFIG_NF_CONNTRACK_IRC=m
#CONFIG_NF_CONNTRACK_NETBIOS_NS=m
#CONFIG_NF_CONNTRACK_PPTP=m
#CONFIG_NF_CONNTRACK_SANE=m
#CONFIG_NF_CONNTRACK_SIP=m
#CONFIG_NF_CONNTRACK_TFTP=m
#CONFIG_NF_CT_NETLINK=m
#CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
#CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
#CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
#CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
#CONFIG_NETFILTER_XT_TARGET_LOG=m
#CONFIG_NETFILTER_XT_TARGET_MARK=m
#CONFIG_NETFILTER_XT_TARGET_NFLOG=m
#CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
#CONFIG_NETFILTER_XT_TARGET_TPROXY=m
#CONFIG_NETFILTER_XT_TARGET_TRACE=m
#CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
#CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
#CONFIG_NETFILTER_XT_MATCH_COMMENT=m
#CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
#CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
#CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
#CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
#CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
#CONFIG_NETFILTER_XT_MATCH_HELPER=m
#CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
#CONFIG_NETFILTER_XT_MATCH_IPVS=m
#CONFIG_NETFILTER_XT_MATCH_LENGTH=m
#CONFIG_NETFILTER_XT_MATCH_LIMIT=m
#CONFIG_NETFILTER_XT_MATCH_MAC=m
#CONFIG_NETFILTER_XT_MATCH_MARK=m
#CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
#CONFIG_NETFILTER_XT_MATCH_OWNER=m
#CONFIG_NETFILTER_XT_MATCH_POLICY=m
#CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
#CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
#CONFIG_NETFILTER_XT_MATCH_QUOTA=m
#CONFIG_NETFILTER_XT_MATCH_QUOTA2=m
#CONFIG_NETFILTER_XT_MATCH_RECENT=m
#CONFIG_NETFILTER_XT_MATCH_SOCKET=m
#CONFIG_NETFILTER_XT_MATCH_STATE=m
#CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
#CONFIG_NETFILTER_XT_MATCH_STRING=m
#CONFIG_NETFILTER_XT_MATCH_TIME=m
#CONFIG_NETFILTER_XT_MATCH_U32=m
CONFIG_IP_VS=m

Observation
Yes SD card image (sd-blob_nx.img) , file size is reduced from 6.56gb to 6.28gb ,But power consumption still remians the same.

Could you please tell me which more funtions (my requirement is to only make UART + CONSOLE work properly , other can be disabled) and regulators i can disable . So that comsumption can be reduced.

hello vinay2010singh,

had you try to configure those clock rates, such as CPU, GPU, Video Codec…etc.
you should aware this is truly depends-on your product design, all software side can achieve is reduce clock rates and disable those unused peripherals.

please check Jetson Xavier NX Product Design Guide, you need to have schematic review to further reduce power consumption.
thanks