==NVIDIA SDK Manager== You can get NVIDIA SDK Manager from URL below (need a development account): https://developer.nvidia.com/nvsdk-manager For the version of kernel source, JetPack 4.4.1 is needed. ==Build Kernel== Extract kernel source package, then:
source env.sh
./nvbuild.sh
==Deploy Kernel== Copy the files below to the running system of Jetson Xavier NX board:
deploy/Image
deploy/tegra194-p3668-all-p3509-0000.dtb
deploy/modules.tar.gz
On the system of the board:
cp Image /boot/
cp tegra194-p3668-all-p3509-0000.dtb /boot/
cp tegra194-p3668-all-p3509-0000.dtb /boot/dtb/kernel_tegra194-p3668-all-p3509-0000.dtb
cp modules.tar.gz /boot/
tar -xf modules.tar.gz -C /
Run 40-pin IO configuration tool:
sudo /opt/nvidia/jetson-io/jetson-io.py
Configure 40-pin expansion header -> Select aud_mclk, i2s5 -> Back -> Save and reboot to reconfigure pins. If aud_mclk and i2s5 is already selected, toggle any unused pinmux like pwm1 to force the tool re-create device tree files. ==Configure ALSA Mixer== Only need to run the commands below once:
sudo -s

amixer -c jetsonxaviernxa sset 'ADMAIF1 Mux' 'I2S5'
amixer -c jetsonxaviernxa sset 'I2S5 Mux' 'ADMAIF1'

amixer -c jetsonxaviernxa cset name="x HP Playback Switch" on
amixer -c jetsonxaviernxa cset name="x HPO MIX DAC1 Switch" on
amixer -c jetsonxaviernxa cset name="x Stereo DAC MIXL DAC L1 Switch" on
amixer -c jetsonxaviernxa cset name="x Stereo DAC MIXR DAC R1 Switch" on
amixer -c jetsonxaviernxa cset name="x DAC MIXL INF1 Switch" on
amixer -c jetsonxaviernxa cset name="x DAC MIXR INF1 Switch" on
amixer -c jetsonxaviernxa cset name="x DAC MIXL Stereo ADC Switch" off
amixer -c jetsonxaviernxa cset name="x DAC MIXR Stereo ADC Switch" off

amixer -c jetsonxaviernxa cset name="x ADC Capture Switch" on
amixer -c jetsonxaviernxa cset name="x Stereo1 ADC MIXL ADC1 Switch" on
amixer -c jetsonxaviernxa cset name="x Stereo1 ADC MIXR ADC1 Switch" on

amixer -c jetsonxaviernxa sset 'I2S5 BCLK Ratio' 256
amixer -c jetsonxaviernxa sset 'I2S5 Channels' 2
amixer -c jetsonxaviernxa sset 'I2S5 Sample Rate' 44100
amixer -c jetsonxaviernxa sset 'I2S5 codec bit format' 16
amixer -c jetsonxaviernxa sset 'I2S5 codec frame mode' 'dsp-a'
amixer -c jetsonxaviernxa sset 'I2S5 input bit format' 16
amixer -c jetsonxaviernxa sset 'ADMAIF1 Channels' 2

amixer -c jetsonxaviernxa cset name="x RECMIXL INL1 Switch" on
amixer -c jetsonxaviernxa cset name="x RECMIXR INR1 Switch" on
amixer -c jetsonxaviernxa cset name="x RECMIXL BST1 Switch" on
amixer -c jetsonxaviernxa cset name="x RECMIXR BST1 Switch" on

alsactl store
==Dump eMMC== Need JetPack package from NVIDIA Jetson SDK. Set board to recovery mode, use commands below on PC (use JetPack 4.5.1 as example):
cd JetPack_4.5.1_Linux_JETSON_XAVIER_NX/Linux_for_Tegra
sudo ./flash.sh -r -k APP -G system2.img jetson-xavier-nx-devkit-emmc mmcblk0p1
sudo mv -v system2.img bootloader/system.img
sudo mv -v system2.img.raw bootloader/system.img.raw
==Restore eMMC== Need JetPack package from NVIDIA Jetson SDK. Set board to recovery mode, use commands below on PC (use JetPack 4.5.1 as example):
cd JetPack_4.5.1_Linux_JETSON_XAVIER_NX/Linux_for_Tegra
sudo ./flash.sh -r jetson-xavier-nx-devkit-emmc mmcblk0p1
==Overlay rootfs== Warning: The operations below may break your OS on eMMC, backup your eMMC first! Edit /etc/initramfs-tools/initramfs.conf as root, check MODULES=most section, and change it to MODULES=dep. Then run command:
sudo update-initramfs -u
Install overlayroot:
sudo apt-get install overlayroot
Edit /boot/extlinux/extlinux.conf as root, check ''INITRD /boot/initrd'', and change it to ''INITRD /boot/initrd.img-4.9.201-tegra''. Edit /etc/overlayroot.conf as root, check ''overlayroot=""'', change it to line below (add one if no such pattern exists):
overlayroot="tmpfs:swap=1,recurse=0"
Reboot to apply changes. If you want to go into writable rootfs temporary, you can use command below:
sudo overlayroot-chroot
If you want to remove overlayroot, just go into writable rootfs with ''overlayroot-chroot'', and edit /etc/overlayroot.conf, set variable overlayroot to overlayroot="" then reboot.