<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://54.204.126.50/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vedant</id>
	<title>Humanoid Robots Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://54.204.126.50/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vedant"/>
	<link rel="alternate" type="text/html" href="http://54.204.126.50/w/Special:Contributions/Vedant"/>
	<updated>2026-04-06T03:27:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1832</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1832"/>
		<updated>2024-08-30T19:56:36Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Flashing the Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: &amp;lt;code&amp;gt;https://developer.nvidia.com/sdk-manager&amp;lt;/code&amp;gt;&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Downloading the Toolchain ===&lt;br /&gt;
# Download the Toolchain binaries located in &amp;lt;code&amp;gt;https://developer.nvidia.com/embedded/jetson-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
# From there, &amp;lt;code&amp;gt;mkdir $HOME/l4t-gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd $HOME/l4t-gcc&amp;lt;/code&amp;gt; and extract the installed toolchain into this newly created directory using the &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;br /&gt;
&lt;br /&gt;
== Customizing Kernel ==&lt;br /&gt;
# Within &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, enter the &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt; eventually navigate to the &amp;lt;code&amp;gt;kernel-jammy-src&amp;lt;/code&amp;gt; folder and run &amp;lt;code&amp;gt;make menuconfig ARCH=arm64&amp;lt;/code&amp;gt;. This will bring up a UI with configurable drivers and peripherals. Select desired configurations and save.&lt;br /&gt;
# The configurations can be found within a &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file located within the same directory. Copy the contents and locate the &amp;lt;code&amp;gt;defconfig&amp;lt;/code&amp;gt; file in &amp;lt;code&amp;gt;./arch/arm64/configs/&amp;lt;/code&amp;gt;, overwriting it with the copied contents.&lt;br /&gt;
&lt;br /&gt;
== Building Custom Kernel and Installing Modules ==&lt;br /&gt;
# Navigate back out to &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE=&amp;lt;toolchain-path&amp;gt;/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. If installation was done correctly as per the pre-requisites section, the command &amp;lt;code&amp;gt;export CROSS_COMPILE=$HOME/l4t-gcc/aarch64--glibc--stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt; should work.   &lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64_PATH=&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64=/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. (Potentially deprecated)&lt;br /&gt;
# Inside the sources, directory, make an output directory for built kernel files using &amp;lt;code&amp;gt;mkdir kernel_out&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Build the modules using the command &amp;lt;code&amp;gt;./nvbuild.sh -o kernel_out&amp;lt;/code&amp;gt;. This will compile the drivers and device trees for the new kernel.&lt;br /&gt;
# Navigate out from the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Use the &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; to overwrite &amp;lt;code&amp;gt;./rootfs/usr/lib/modules/5.15.136-tegra/updates/nvgpu.ko&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;./source/kernel_out/nvgpu/drivers/gpu/nvgpu/nvgpu.ko&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Repeat the previous step to replace &amp;lt;code&amp;gt;Linux_for_Tegra/kernel/dtb/&amp;lt;/code&amp;gt; with &amp;lt;/code&amp;gt;source/kernel_out/kernel/kernel-jammy-src/arch/arm64/boot/dts/nvidia&amp;lt;/code&amp;gt;. Ensure that instead of overwriting the directory, only the files are copied over.&lt;br /&gt;
# Overwrite the Image file in &amp;lt;code&amp;gt;./kernel&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;./source/kernel_out/kernel/kernel-jammy-src/arch/arm64/boot/Image&lt;br /&gt;
&amp;lt;/code&amp;gt;.&lt;br /&gt;
# To specify the installation path for the compiled modules, use the command &amp;lt;code&amp;gt;export INSTALL_MOD_PATH=$HOME/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/&amp;lt;/code&amp;gt;. &lt;br /&gt;
# Install modules using the command &amp;lt;code&amp;gt;./nvbuild -i&amp;lt;/code&amp;gt;. The Jetson is now ready to be flashed.&lt;br /&gt;
&lt;br /&gt;
== Flashing the Kernel ==&lt;br /&gt;
Ensure that the target Jetson is connected to the host device and is in recovery mode. Navigate to the &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; directory and run &amp;lt;code&amp;gt;sudo ./nvsdkmanager_flash.sh&amp;lt;/code&amp;gt;. When prompted, disconnect the Jetson from host device and allow it to boot. Congratulations, you have successfully flashed your Jetson with custom firmware.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1831</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1831"/>
		<updated>2024-08-30T19:56:24Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Flashing the Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: &amp;lt;code&amp;gt;https://developer.nvidia.com/sdk-manager&amp;lt;/code&amp;gt;&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Downloading the Toolchain ===&lt;br /&gt;
# Download the Toolchain binaries located in &amp;lt;code&amp;gt;https://developer.nvidia.com/embedded/jetson-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
# From there, &amp;lt;code&amp;gt;mkdir $HOME/l4t-gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd $HOME/l4t-gcc&amp;lt;/code&amp;gt; and extract the installed toolchain into this newly created directory using the &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;br /&gt;
&lt;br /&gt;
== Customizing Kernel ==&lt;br /&gt;
# Within &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, enter the &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt; eventually navigate to the &amp;lt;code&amp;gt;kernel-jammy-src&amp;lt;/code&amp;gt; folder and run &amp;lt;code&amp;gt;make menuconfig ARCH=arm64&amp;lt;/code&amp;gt;. This will bring up a UI with configurable drivers and peripherals. Select desired configurations and save.&lt;br /&gt;
# The configurations can be found within a &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file located within the same directory. Copy the contents and locate the &amp;lt;code&amp;gt;defconfig&amp;lt;/code&amp;gt; file in &amp;lt;code&amp;gt;./arch/arm64/configs/&amp;lt;/code&amp;gt;, overwriting it with the copied contents.&lt;br /&gt;
&lt;br /&gt;
== Building Custom Kernel and Installing Modules ==&lt;br /&gt;
# Navigate back out to &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE=&amp;lt;toolchain-path&amp;gt;/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. If installation was done correctly as per the pre-requisites section, the command &amp;lt;code&amp;gt;export CROSS_COMPILE=$HOME/l4t-gcc/aarch64--glibc--stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt; should work.   &lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64_PATH=&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64=/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. (Potentially deprecated)&lt;br /&gt;
# Inside the sources, directory, make an output directory for built kernel files using &amp;lt;code&amp;gt;mkdir kernel_out&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Build the modules using the command &amp;lt;code&amp;gt;./nvbuild.sh -o kernel_out&amp;lt;/code&amp;gt;. This will compile the drivers and device trees for the new kernel.&lt;br /&gt;
# Navigate out from the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Use the &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; to overwrite &amp;lt;code&amp;gt;./rootfs/usr/lib/modules/5.15.136-tegra/updates/nvgpu.ko&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;./source/kernel_out/nvgpu/drivers/gpu/nvgpu/nvgpu.ko&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Repeat the previous step to replace &amp;lt;code&amp;gt;Linux_for_Tegra/kernel/dtb/&amp;lt;/code&amp;gt; with &amp;lt;/code&amp;gt;source/kernel_out/kernel/kernel-jammy-src/arch/arm64/boot/dts/nvidia&amp;lt;/code&amp;gt;. Ensure that instead of overwriting the directory, only the files are copied over.&lt;br /&gt;
# Overwrite the Image file in &amp;lt;code&amp;gt;./kernel&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;./source/kernel_out/kernel/kernel-jammy-src/arch/arm64/boot/Image&lt;br /&gt;
&amp;lt;/code&amp;gt;.&lt;br /&gt;
# To specify the installation path for the compiled modules, use the command &amp;lt;code&amp;gt;export INSTALL_MOD_PATH=$HOME/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/&amp;lt;/code&amp;gt;. &lt;br /&gt;
# Install modules using the command &amp;lt;code&amp;gt;./nvbuild -i&amp;lt;/code&amp;gt;. The Jetson is now ready to be flashed.&lt;br /&gt;
&lt;br /&gt;
== Flashing the Kernel ==&lt;br /&gt;
    Ensure that the target Jetson is connected to the host device and is in recovery mode. Navigate to the &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; directory and run &amp;lt;code&amp;gt;sudo ./nvsdkmanager_flash.sh&amp;lt;/code&amp;gt;. When prompted, disconnect the Jetson from host device and allow it to boot. Congratulations, you have successfully flashed your Jetson with custom firmware.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1830</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1830"/>
		<updated>2024-08-30T19:55:57Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Building Custom Kernel and Installing Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: &amp;lt;code&amp;gt;https://developer.nvidia.com/sdk-manager&amp;lt;/code&amp;gt;&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Downloading the Toolchain ===&lt;br /&gt;
# Download the Toolchain binaries located in &amp;lt;code&amp;gt;https://developer.nvidia.com/embedded/jetson-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
# From there, &amp;lt;code&amp;gt;mkdir $HOME/l4t-gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd $HOME/l4t-gcc&amp;lt;/code&amp;gt; and extract the installed toolchain into this newly created directory using the &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;br /&gt;
&lt;br /&gt;
== Customizing Kernel ==&lt;br /&gt;
# Within &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, enter the &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt; eventually navigate to the &amp;lt;code&amp;gt;kernel-jammy-src&amp;lt;/code&amp;gt; folder and run &amp;lt;code&amp;gt;make menuconfig ARCH=arm64&amp;lt;/code&amp;gt;. This will bring up a UI with configurable drivers and peripherals. Select desired configurations and save.&lt;br /&gt;
# The configurations can be found within a &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file located within the same directory. Copy the contents and locate the &amp;lt;code&amp;gt;defconfig&amp;lt;/code&amp;gt; file in &amp;lt;code&amp;gt;./arch/arm64/configs/&amp;lt;/code&amp;gt;, overwriting it with the copied contents.&lt;br /&gt;
&lt;br /&gt;
== Building Custom Kernel and Installing Modules ==&lt;br /&gt;
# Navigate back out to &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE=&amp;lt;toolchain-path&amp;gt;/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. If installation was done correctly as per the pre-requisites section, the command &amp;lt;code&amp;gt;export CROSS_COMPILE=$HOME/l4t-gcc/aarch64--glibc--stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt; should work.   &lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64_PATH=&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64=/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. (Potentially deprecated)&lt;br /&gt;
# Inside the sources, directory, make an output directory for built kernel files using &amp;lt;code&amp;gt;mkdir kernel_out&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Build the modules using the command &amp;lt;code&amp;gt;./nvbuild.sh -o kernel_out&amp;lt;/code&amp;gt;. This will compile the drivers and device trees for the new kernel.&lt;br /&gt;
# Navigate out from the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Use the &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; to overwrite &amp;lt;code&amp;gt;./rootfs/usr/lib/modules/5.15.136-tegra/updates/nvgpu.ko&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;./source/kernel_out/nvgpu/drivers/gpu/nvgpu/nvgpu.ko&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Repeat the previous step to replace &amp;lt;code&amp;gt;Linux_for_Tegra/kernel/dtb/&amp;lt;/code&amp;gt; with &amp;lt;/code&amp;gt;source/kernel_out/kernel/kernel-jammy-src/arch/arm64/boot/dts/nvidia&amp;lt;/code&amp;gt;. Ensure that instead of overwriting the directory, only the files are copied over.&lt;br /&gt;
# Overwrite the Image file in &amp;lt;code&amp;gt;./kernel&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;./source/kernel_out/kernel/kernel-jammy-src/arch/arm64/boot/Image&lt;br /&gt;
&amp;lt;/code&amp;gt;.&lt;br /&gt;
# To specify the installation path for the compiled modules, use the command &amp;lt;code&amp;gt;export INSTALL_MOD_PATH=$HOME/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/&amp;lt;/code&amp;gt;. &lt;br /&gt;
# Install modules using the command &amp;lt;code&amp;gt;./nvbuild -i&amp;lt;/code&amp;gt;. The Jetson is now ready to be flashed.&lt;br /&gt;
&lt;br /&gt;
== Flashing the Kernel ==&lt;br /&gt;
Ensure that the target Jetson is connected to the host device and is in recovery mode. Navigate to the &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; directory and run &amp;lt;code&amp;gt;sudo ./nvsdkmanager_flash.sh&amp;lt;/code&amp;gt;. When prompted, disconnect the Jetson from host device and allow it to boot. Congratulations, you have successfully flashed your Jetson with custom firmware.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1829</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1829"/>
		<updated>2024-08-30T19:54:28Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: &amp;lt;code&amp;gt;https://developer.nvidia.com/sdk-manager&amp;lt;/code&amp;gt;&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Downloading the Toolchain ===&lt;br /&gt;
# Download the Toolchain binaries located in &amp;lt;code&amp;gt;https://developer.nvidia.com/embedded/jetson-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
# From there, &amp;lt;code&amp;gt;mkdir $HOME/l4t-gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd $HOME/l4t-gcc&amp;lt;/code&amp;gt; and extract the installed toolchain into this newly created directory using the &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;br /&gt;
&lt;br /&gt;
== Customizing Kernel ==&lt;br /&gt;
# Within &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, enter the &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt; eventually navigate to the &amp;lt;code&amp;gt;kernel-jammy-src&amp;lt;/code&amp;gt; folder and run &amp;lt;code&amp;gt;make menuconfig ARCH=arm64&amp;lt;/code&amp;gt;. This will bring up a UI with configurable drivers and peripherals. Select desired configurations and save.&lt;br /&gt;
# The configurations can be found within a &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file located within the same directory. Copy the contents and locate the &amp;lt;code&amp;gt;defconfig&amp;lt;/code&amp;gt; file in &amp;lt;code&amp;gt;./arch/arm64/configs/&amp;lt;/code&amp;gt;, overwriting it with the copied contents.&lt;br /&gt;
&lt;br /&gt;
== Building Custom Kernel and Installing Modules ==&lt;br /&gt;
# Navigate back out to &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE=&amp;lt;toolchain-path&amp;gt;/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. If installation was done correctly as per the pre-requisites section, the command &amp;lt;code&amp;gt;export CROSS_COMPILE=$HOME/l4t-gcc/aarch64--glibc--stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt; should work.   &lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64_PATH=&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64=/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. (Potentially deprecated)&lt;br /&gt;
# Inside the sources, directory, make an output directory for built kernel files using &amp;lt;code&amp;gt;mkdir kernel_out&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Build the modules using the command &amp;lt;code&amp;gt;./nvbuild.sh -o kernel_out&amp;lt;/code&amp;gt;. This will compile the drivers and device trees for the new kernel.&lt;br /&gt;
# Navigate out from the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Use the &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; to overwrite &amp;lt;code&amp;gt;./rootfs/usr/lib/modules/5.15.136-tegra/updates/nvgpu.ko&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;./source/kernel_out/nvgpu/drivers/gpu/nvgpu/nvgpu.ko&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Repeat the previous step to replace &amp;lt;code&amp;gt;Linux_for_Tegra/kernel/dtb/&amp;lt;/code&amp;gt; with &amp;lt;/code&amp;gt;source/kernel_out/kernel/kernel-jammy-src/arch/arm64/boot/dts/nvidia&amp;lt;/code&amp;gt;. Ensure that instead of overwriting the directory, only the files are copied over.&lt;br /&gt;
# Overwrite the Image in &amp;lt;code&amp;gt;./kernel&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;./source/kernel_out/kernel/kernel-jammy-src/arch/arm64/boot/Image&lt;br /&gt;
&amp;lt;/code&amp;gt;.&lt;br /&gt;
# To specify the installation path for the compiled modules, use the command &amp;lt;code&amp;gt;export INSTALL_MOD_PATH=$HOME/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/&amp;lt;/code&amp;gt;. &lt;br /&gt;
# Install modules using the command &amp;lt;code&amp;gt;./nvbuild -i&amp;lt;/code&amp;gt;. The Jetson is now ready to be flashed.&lt;br /&gt;
&lt;br /&gt;
== Flashing the Kernel ==&lt;br /&gt;
Ensure that the target Jetson is connected to the host device and is in recovery mode. Navigate to the &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; directory and run &amp;lt;code&amp;gt;sudo ./nvsdkmanager_flash.sh&amp;lt;/code&amp;gt;. When prompted, disconnect the Jetson from host device and allow it to boot. Congratulations, you have successfully flashed your Jetson with custom firmware.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1828</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1828"/>
		<updated>2024-08-30T19:42:22Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: &amp;lt;code&amp;gt;https://developer.nvidia.com/sdk-manager&amp;lt;/code&amp;gt;&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Downloading the Toolchain ===&lt;br /&gt;
# Download the Toolchain binaries located in &amp;lt;code&amp;gt;https://developer.nvidia.com/embedded/jetson-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
# From there, &amp;lt;code&amp;gt;mkdir $HOME/l4t-gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd $HOME/l4t-gcc&amp;lt;/code&amp;gt; and extract the installed toolchain into this newly created directory using the &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;br /&gt;
&lt;br /&gt;
== Customizing Kernel ==&lt;br /&gt;
# Within &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, enter the &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt; eventually navigate to the &amp;lt;code&amp;gt;kernel-jammy-src&amp;lt;/code&amp;gt; folder and run &amp;lt;code&amp;gt;make menuconfig ARCH=arm64&amp;lt;/code&amp;gt;. This will bring up a UI with configurable drivers and peripherals. Select desired configurations and save.&lt;br /&gt;
# The configurations can be found within a &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file located within the same directory. Copy the contents and locate the &amp;lt;code&amp;gt;defconfig&amp;lt;/code&amp;gt; file in &amp;lt;code&amp;gt;./arch/arm64/configs/&amp;lt;/code&amp;gt;, overwriting it with the copied contents.&lt;br /&gt;
&lt;br /&gt;
== Building Custom Kernel and Installing Modules ==&lt;br /&gt;
# Navigate back out to &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE=&amp;lt;toolchain-path&amp;gt;/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. If installation was done correctly as per the pre-requisites section, the command &amp;lt;code&amp;gt;export CROSS_COMPILE=$HOME/l4t-gcc/aarch64--glibc--stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt; should work.   &lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64_PATH=&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64=/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. (Potentially deprecated)&lt;br /&gt;
# Inside the sources, directory, make an output directory for built kernel files using &amp;lt;code&amp;gt;mkdir kernel_out&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Build the modules using the command &amp;lt;code&amp;gt;./nvbuild.sh -o kernel_out&amp;lt;/code&amp;gt;. This will compile the drivers and device trees for the new kernel.&lt;br /&gt;
# Navigate out from the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Use the &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; to overwrite &amp;lt;code&amp;gt;./rootfs/usr/lib/modules/5.15.136-tegra/updates/nvgpu.ko&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;./source/kernel_out/nvgpu/drivers/gpu/nvgpu/nvgpu.ko&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Repeat the previous step to replace &amp;lt;code&amp;gt;Linux_for_Tegra/kernel/dtb/&amp;lt;/code&amp;gt; with&lt;br /&gt;
# To specify the installation path for the compiled modules, use the command &amp;lt;code&amp;gt;export INSTALL_MOD_PATH=$HOME/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/&amp;lt;/code&amp;gt;. &lt;br /&gt;
# Install modules using the command &amp;lt;code&amp;gt;./nvbuild -i&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Flashing the Kernel ==&lt;br /&gt;
# Ensure that&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1827</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1827"/>
		<updated>2024-08-29T23:04:43Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: https://developer.nvidia.com/sdk-manager&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Downloading the Toolchain ===&lt;br /&gt;
# Download the Toolchain binaries located in &amp;lt;code&amp;gt;https://developer.nvidia.com/embedded/jetson-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
# From there, &amp;lt;code&amp;gt;mkdir $HOME/l4t-gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd $HOME/l4t-gcc&amp;lt;/code&amp;gt; and extract the installed toolchain into this newly created directory using the &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;br /&gt;
&lt;br /&gt;
== Customizing Kernel ==&lt;br /&gt;
# Within &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, enter the &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt; eventually navigate to the &amp;lt;code&amp;gt;kernel-jammy-src&amp;lt;/code&amp;gt; folder and run &amp;lt;code&amp;gt;make menuconfig ARCH=arm64&amp;lt;/code&amp;gt;. This will bring up a UI with configurable drivers and peripherals. Select desired configurations and save.&lt;br /&gt;
# The configurations can be found within a &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file located within the same directory. Copy the contents and locate the &amp;lt;code&amp;gt;defconfig&amp;lt;/code&amp;gt; file in &amp;lt;code&amp;gt;./arch/arm64/configs/&amp;lt;/code&amp;gt;, overwriting it with the copied contents.&lt;br /&gt;
&lt;br /&gt;
== Building Custom Kernel and Installing Modules ==&lt;br /&gt;
# Navigate back out to &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE=&amp;lt;toolchain-path&amp;gt;/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. If installation was done correctly as per the pre-requisites section, the command &amp;lt;code&amp;gt;export CROSS_COMPILE=$HOME/l4t-gcc/aarch64--glibc--stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt; should work.   &lt;br /&gt;
# Define the Cross-compilation toolchain with the commands &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64_PATH=&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;export CROSS_COMPILE_AARCH64=/bin/aarch64-buildroot-linux-gnu-&amp;lt;/code&amp;gt;. (Potentially deprecated)&lt;br /&gt;
# Inside the sources, directory, make an output directory for built kernel files using &amp;lt;code&amp;gt;mkdir kernel_out&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Build the modules using the command &amp;lt;code&amp;gt;./nvbuild.sh -o kernel_out&amp;lt;/code&amp;gt;.&lt;br /&gt;
#&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1826</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1826"/>
		<updated>2024-08-29T22:42:52Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: https://developer.nvidia.com/sdk-manager&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Downloading the Toolchain ===&lt;br /&gt;
# Download the Toolchain binaries located in &amp;lt;code&amp;gt;https://developer.nvidia.com/embedded/jetson-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
# From there, &amp;lt;code&amp;gt;mkdir $HOME/l4t-gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd $HOME/l4t-gcc&amp;lt;/code&amp;gt; and extract the installed toolchain into this newly created directory using the &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;br /&gt;
&lt;br /&gt;
== Customizing Kernel ==&lt;br /&gt;
# Within &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, enter the &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt; eventually navigate to the &amp;lt;code&amp;gt;kernel-jammy-src&amp;lt;/code&amp;gt; folder and run &amp;lt;code&amp;gt;make menuconfig ARCH=arm64&amp;lt;/code&amp;gt;. This will bring up a UI with configurable drivers and peripherals. Select desired configurations and save.&lt;br /&gt;
# The configurations can be found within a &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file located within the same directory. Copy the contents and locate the &amp;lt;code&amp;gt;defconfig&amp;lt;/code&amp;gt; file in &amp;lt;code&amp;gt;./arch/arm64/configs/&amp;lt;/code&amp;gt;, overwriting it with the copied contents.&lt;br /&gt;
&lt;br /&gt;
#&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1823</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1823"/>
		<updated>2024-08-28T18:45:54Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: https://developer.nvidia.com/sdk-manager&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Downloading the Toolchain ===&lt;br /&gt;
# Download the Toolchain binaries located in &amp;lt;code&amp;gt;https://developer.nvidia.com/embedded/jetson-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
# From there, &amp;lt;code&amp;gt;mkdir $HOME/l4t-gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd $HOME/l4t-gcc&amp;lt;/code&amp;gt; and extract the installed toolchain into this newly created directory using the &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;br /&gt;
&lt;br /&gt;
== Customizing Kernel ==&lt;br /&gt;
# Within &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, enter the&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1822</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1822"/>
		<updated>2024-08-28T06:49:30Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Downloading the Toolchain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: https://developer.nvidia.com/sdk-manager&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Downloading the Toolchain ===&lt;br /&gt;
# Download the Toolchain binaries located in &amp;lt;code&amp;gt;https://developer.nvidia.com/embedded/jetson-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
# From there, &amp;lt;code&amp;gt;mkdir $HOME/l4t-gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd $HOME/l4t-gcc&amp;lt;/code&amp;gt; and extract the installed toolchain into this newly created directory using the &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1821</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1821"/>
		<updated>2024-08-28T06:44:43Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Flashing Custom Firmware (For Jetson 36.3) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: https://developer.nvidia.com/sdk-manager&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
== Pre-requisites == &lt;br /&gt;
# Please install required packages with the command &amp;lt;code&amp;gt;sudo apt install build-essential bc &amp;amp;&amp;amp; sudo apt install build-essential bc&amp;lt;/code&amp;gt;.&lt;br /&gt;
== Downloading the Toolchain == &lt;br /&gt;
&lt;br /&gt;
== Downloading the Kernel ==&lt;br /&gt;
# Follow steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release tag of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the sources for the respective Jetson version as necessary. To find the release tag of future iterations of the Jetson firmware, please refer to its respective release notes.&lt;br /&gt;
# Once sources have been synced, the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; directory should now be populated with the required files.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1820</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1820"/>
		<updated>2024-08-28T06:29:58Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Flashing Standard Firmware =&lt;br /&gt;
== SDKManager ==&lt;br /&gt;
SDKManager is available only on Linux, and can be installed here: https://developer.nvidia.com/sdk-manager&lt;br /&gt;
# Start up the SDKManager&lt;br /&gt;
# Put the Jetson into recovery mode. For the AGX, this can be done by pressing the recovery button while powering on the device. For the Nano and NX, however, a jumper will be required. &lt;br /&gt;
# Connect the Target Jetson to the host device and ensure that the target device is recognized.&lt;br /&gt;
# Follow the instructions on the application, choosing configurations as necessary.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Flashing Custom Firmware (For Jetson 36.3) =&lt;br /&gt;
# Repeat Steps 1 to 3 as mentioned in Flashing Standard Firmware.&lt;br /&gt;
# Proceed to the second step of the SDKManager, where the respective individual dependencies and Jetson Images are listed and are to be installed. Proceed with the installation.&lt;br /&gt;
# When prompted to actually flash the Jetson, opt to skip. This will install the &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; folder on your home directory, in which the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kernel,&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;bootloader&amp;lt;/code&amp;gt; are located.&lt;br /&gt;
# Navigate to &amp;lt;code&amp;gt;nvidia&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; through its subdirectories, until &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt; is reached.&lt;br /&gt;
# Inside &amp;lt;code&amp;gt;Linux for Tegra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;sources&amp;lt;/code&amp;gt; folder. It should be unpopulated with the exception of some bash scripts. Run the &amp;lt;code&amp;gt;source_sync.sh&amp;lt;/code&amp;gt; script and when asked to specify the release of the downloadable sources, enter &amp;lt;code&amp;gt;jetson_36.3&amp;lt;/code&amp;gt;. This will install the&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1541</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1541"/>
		<updated>2024-06-19T18:50:45Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Developing Custom Firmware = &lt;br /&gt;
== For the Jetson Orin Nano ==&lt;br /&gt;
&lt;br /&gt;
= Flashing = &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
- Current Design constraints:&lt;br /&gt;
   - Based off of the availability of parts in JLCPCB. Possibility of parts not being found or existing. &lt;br /&gt;
   - &lt;br /&gt;
&lt;br /&gt;
- Flashing is done with the flash.sh script through the following command&lt;br /&gt;
 $ sudo ./flash.sh &amp;lt;board&amp;gt; &amp;lt;rootdev&amp;gt;&lt;br /&gt;
 where board is the actual board (Jetson-Nano-XX, etc.)&lt;br /&gt;
rootdev determines what type of device is being flahed. Use mmcblk0pc1 to flash a local storage device (eMMC or SD card)&lt;br /&gt;
- TO begin flashing, put the device into force recovery mode and then press reset. &lt;br /&gt;
- Run the flash script using the previous command specified.&lt;br /&gt;
&lt;br /&gt;
Flash using a convenient script: &lt;br /&gt;
- To avoid having to specify the rootdev and the board configurations, can use the custom flashing script:&lt;br /&gt;
  - &lt;br /&gt;
&lt;br /&gt;
Using GPIO Pins to program protocol:&lt;br /&gt;
- you can use the rasberry pi libraries to interface with the pins, configuring them to whatever layout that is needed.&lt;br /&gt;
   - Example: it is possible to direclty interface with the i2c system in the nano by using the linux terminal itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current Game Plan:&lt;br /&gt;
- mess around with the programming of the GPIO pins: Figure out if there are ways to choose access teh data that the GPIO pins are Or Receiving.&lt;br /&gt;
Test if it is possible to reconfigure the pins on the jetson on the firmware side&lt;br /&gt;
&lt;br /&gt;
Build Time: &lt;br /&gt;
- On a single Nvidia Nano, it takes about 45 mins - 1 hour to complete the build. The build is encrypted through RSA. The source is still accessible and every time changes are made to the source files and want ot be reflected, the build files have to be remade. Current goal (Figure out if there's a way to make specific build files to decrease development time).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
- General requirements to build Linux kernel still apply: e.g. `build-essentials`, `bc`, `libssl-dev`, etc&lt;br /&gt;
- Need to install `libssl-dev (depends on whether the certain packages are included when running the script)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current Approaches to Flashing:&lt;br /&gt;
- Decompile an existing DTB file into DTS, make appropriate changes then recompile back.&lt;br /&gt;
- Take a flash image that already exists and flash back onto the jetson:&lt;br /&gt;
 - Caveats: Ensure that the current Jetson is running on Jetpack 5+. If not, you will need to flash 5 on it before flashing it to six. There are instructions online that deal with this setup.&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1521</id>
		<title>Jetson: MCP2515</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1521"/>
		<updated>2024-06-13T21:00:41Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Can access the Jetson Expansion Header Tool through the command &amp;lt;code&amp;gt;sudo /opt/nvidia/jetson-io/jetson-io.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Color Convention:&lt;br /&gt;
* Red: 3.3V (Pin 1)&lt;br /&gt;
* Black: Gnd (Pin 39)&lt;br /&gt;
* Green: CS &lt;br /&gt;
* Orange: MISO (Pin 21)&lt;br /&gt;
* Blue: MOSI (Pin 19)&lt;br /&gt;
* Yellow: SCK (Pin 23)&lt;br /&gt;
* Purple: Interrupt &lt;br /&gt;
&lt;br /&gt;
Configurations for Interrupt and CS Pins:&lt;br /&gt;
* Interrupt: (Pin 16) + (Pin 32)&lt;br /&gt;
* CS: (Pin 12) + (Pin 38)&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1520</id>
		<title>Jetson: MCP2515</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1520"/>
		<updated>2024-06-13T20:58:59Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Can access the Jetson Expansion Header Tool through &amp;lt;code&amp;gt;/opt/nvidia/jetson-io/jetson-io.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Color Convention:&lt;br /&gt;
* Red: 3.3V (Pin 1)&lt;br /&gt;
* Black: Gnd (Pin 39)&lt;br /&gt;
* Green: CS &lt;br /&gt;
* Orange: MISO (Pin 21)&lt;br /&gt;
* Blue: MOSI (Pin 19)&lt;br /&gt;
* Yellow: SCK (Pin 23)&lt;br /&gt;
* Purple: Interrupt &lt;br /&gt;
&lt;br /&gt;
Configurations for Interrupt and CS Pins:&lt;br /&gt;
* Interrupt: (Pin 16) + (Pin 32)&lt;br /&gt;
* CS: (Pin 12) + (Pin 38)&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1519</id>
		<title>Jetson: MCP2515</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1519"/>
		<updated>2024-06-13T20:56:28Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Can access the Jetson Expansion Header Tool through &amp;lt;code&amp;gt;/opt/nvidia/jetson-io/jetson-io.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Color Convention:&lt;br /&gt;
* Red: 3.3V (Pin 1)&lt;br /&gt;
* Black: Gnd (Pin 39)&lt;br /&gt;
* Green: CS &lt;br /&gt;
* Orange: MISO (Pin 21)&lt;br /&gt;
* Blue: MOSI (Pin 19)&lt;br /&gt;
* Yellow: SCK (Pin 23)&lt;br /&gt;
* Purple: Interrupt &lt;br /&gt;
&lt;br /&gt;
Configurations for Interrupt and CS Pins:&lt;br /&gt;
* Interrupt2: (Pin 16)&lt;br /&gt;
* CS2: (Pin 12)&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1518</id>
		<title>Jetson: MCP2515</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1518"/>
		<updated>2024-06-13T20:53:48Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Can access the Jetson Expansion Header Tool through &amp;lt;code&amp;gt;/opt/nvidia/jetson-io/jetson-io.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Color Convention:&lt;br /&gt;
* Red: 3.3V (Pin 1)&lt;br /&gt;
* Black: Gnd (Pin 39)&lt;br /&gt;
* Green: CS (Pin 12)&lt;br /&gt;
* Orange: MISO (Pin 21)&lt;br /&gt;
* Blue: MOSI (Pin 19)&lt;br /&gt;
* Yellow: SCK (Pin 23)&lt;br /&gt;
* Purple: Interrupt (Pin 16)&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1517</id>
		<title>Jetson: MCP2515</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1517"/>
		<updated>2024-06-13T20:53:20Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Can access the Jetson Expansion Header Tool through &amp;lt;code&amp;gt;/opt/nvidia/jetson-io/jetson-io.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Color Convention:&lt;br /&gt;
Red: 3.3V (Pin 1)&lt;br /&gt;
Black: Gnd (Pin 39)&lt;br /&gt;
Green: CS (Pin 12)&lt;br /&gt;
Orange: MISO (Pin 21)&lt;br /&gt;
Blue: MOSI (Pin 19)&lt;br /&gt;
Yellow: SCK (Pin 23)&lt;br /&gt;
Purple: Interrupt (Pin 16)&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1516</id>
		<title>Jetson: MCP2515</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Jetson:_MCP2515&amp;diff=1516"/>
		<updated>2024-06-13T20:39:03Z</updated>

		<summary type="html">&lt;p&gt;Vedant: Created page with &amp;quot;=== Configuration ===  * Can access the Jetson Expansion Header Tool through &amp;lt;code&amp;gt;/opt/nvidia/jetson-io/jetson-io.py&amp;lt;/code&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Can access the Jetson Expansion Header Tool through &amp;lt;code&amp;gt;/opt/nvidia/jetson-io/jetson-io.py&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1431</id>
		<title>Nvidia Jetson: Flashing Custom Firmware</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Nvidia_Jetson:_Flashing_Custom_Firmware&amp;diff=1431"/>
		<updated>2024-06-04T00:33:26Z</updated>

		<summary type="html">&lt;p&gt;Vedant: Created page with &amp;quot;= Developing Custom Firmware =  == For the Jetson Orin Nano ==   = Flashing =  =    Notes: - Current Design constraints:    - Based off of the availability of parts in JLCPCB....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Developing Custom Firmware = &lt;br /&gt;
== For the Jetson Orin Nano == &lt;br /&gt;
&lt;br /&gt;
= Flashing = &lt;br /&gt;
= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
- Current Design constraints:&lt;br /&gt;
   - Based off of the availability of parts in JLCPCB. Possibility of parts not being found or existing. &lt;br /&gt;
   - &lt;br /&gt;
&lt;br /&gt;
- Flashing is done with the flash.sh script through the following command&lt;br /&gt;
 $ sudo ./flash.sh &amp;lt;board&amp;gt; &amp;lt;rootdev&amp;gt;&lt;br /&gt;
 where board is the actual board (Jetson-Nano-XX, etc.)&lt;br /&gt;
rootdev determines what type of device is being flahed. Use mmcblk0pc1 to flash a local storage device (eMMC or SD card)&lt;br /&gt;
- TO begin flashing, put the device into force recovery mode and then press reset. &lt;br /&gt;
- Run the flash script using the previous command specified.&lt;br /&gt;
&lt;br /&gt;
Flash using a convenient script: &lt;br /&gt;
- To avoid having to specify the rootdev andthe board configurations, can use the custom flashing script:&lt;br /&gt;
  - &lt;br /&gt;
&lt;br /&gt;
Using GPIO Pins to program protocol:&lt;br /&gt;
- you can use the rasberry pi libraries to interface with the pins, configuring them to whatever layout that is needed.&lt;br /&gt;
   - Example: it is possible to direclty interface with the i2c system in the nano by using the&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1330</id>
		<title>Wireless Modules</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1330"/>
		<updated>2024-05-28T08:52:50Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Justification = &lt;br /&gt;
Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs capable. This would allow for mobility, ease of communication, reduced clutter, and scalability. Could potentially &lt;br /&gt;
&lt;br /&gt;
= Current Methods of Integration = &lt;br /&gt;
&lt;br /&gt;
= ESP32 Built-In =&lt;br /&gt;
== Connections == &lt;br /&gt;
=== UART Communication ===&lt;br /&gt;
* Hook up UART_TX and UART_RX to STM32.&lt;br /&gt;
&lt;br /&gt;
=== I2C Communication ===&lt;br /&gt;
=== SPI Communication ===&lt;br /&gt;
== Firmware ==&lt;br /&gt;
== Examples == &lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-C3-MINI-1-N4/13877574 ESP32-C3-MINI-1-N4]&lt;br /&gt;
 * ESP32 Chip adjusted specifically for the sole purpose of wireless communication.&lt;br /&gt;
 * Interfaced with using UART&lt;br /&gt;
 *&lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-WROOM-32-N4/8544298 ESP32-WROOM-32]&lt;br /&gt;
* uses UART To both receive and send data to other modules&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
 Allows for convenient, easy to mount access to wireless communication. &lt;br /&gt;
 Easy to interface with, using UART in order to communicate data.&lt;br /&gt;
&lt;br /&gt;
=== Cons ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bluetooth Modules = &lt;br /&gt;
== Component Selection == &lt;br /&gt;
=== HC_05/HC_06 ===&lt;br /&gt;
=== CYM4343W ===&lt;br /&gt;
  Contains both Bluetooth as well as Wifi protocols&lt;br /&gt;
  Uses UART for Bluetooth &lt;br /&gt;
  Uses SDIO for wifi communication&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
* Simple implementation with supported Code&lt;br /&gt;
=== Cons ===&lt;br /&gt;
* Separate PCB Board interfaced with/ Not modular.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
Look into the specific components of the Bluetooth modules to find ICS that can be easily used and interfaced with.&lt;br /&gt;
Figure out how to interface with ESP32 software using STM32, how to send specific commands, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Interfacing with Other Boards = &lt;br /&gt;
== Network Setup ==&lt;br /&gt;
=== Access Point ===&lt;br /&gt;
 Set up one device as the master. Intended purpose of the CANdaddy. Host signal and allow other devices to connect using SSID and password. In the case of the ESP32, this is done through built in libraries that allow for  &lt;br /&gt;
== Communication Protocol ==&lt;br /&gt;
== Data Exchange ==&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1329</id>
		<title>Wireless Modules</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1329"/>
		<updated>2024-05-28T08:36:23Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Justification = &lt;br /&gt;
Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs capable. This would allow for mobility, ease of communication, reduced clutter, and scalability.&lt;br /&gt;
&lt;br /&gt;
= Current Methods of Integration = &lt;br /&gt;
&lt;br /&gt;
= ESP32 Built-In =&lt;br /&gt;
== Connections == &lt;br /&gt;
=== UART Communication ===&lt;br /&gt;
* Hook up&lt;br /&gt;
&lt;br /&gt;
=== I2C Communication ===&lt;br /&gt;
=== SPI Communication ===&lt;br /&gt;
== Firmware ==&lt;br /&gt;
== Examples == &lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-C3-MINI-1-N4/13877574 ESP32-C3-MINI-1-N4]&lt;br /&gt;
 * ESP32 Chip adjusted specifically for the sole purpose of wireless communication.&lt;br /&gt;
 * Interfaced with using UART&lt;br /&gt;
 *&lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-WROOM-32-N4/8544298 ESP32-WROOM-32]&lt;br /&gt;
* uses UART To both receive and send data to other modules&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
 Allows for convenient, easy to mount access to wireless communication. &lt;br /&gt;
 Easy to interface with, using UART in order to communicate data.&lt;br /&gt;
&lt;br /&gt;
=== Cons ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bluetooth Modules = &lt;br /&gt;
== Component Selection == &lt;br /&gt;
=== HC_05/HC_06 ===&lt;br /&gt;
=== CYM4343W ===&lt;br /&gt;
  Contains both Bluetooth as well as Wifi protocols&lt;br /&gt;
  Uses UART for Bluetooth &lt;br /&gt;
  Uses SDIO for wifi communication&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
* Simple implementation with supported Code&lt;br /&gt;
=== Cons ===&lt;br /&gt;
* Separate PCB Board interfaced with/ Not modular.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
Look into the specific components of the Bluetooth modules to find ICS that can be easily used and interfaced with.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1328</id>
		<title>Wireless Modules</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1328"/>
		<updated>2024-05-28T08:34:54Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* UART Communication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Justification = &lt;br /&gt;
Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs capable. This would allow for mobility, ease of communication, reduced clutter, and scalability.&lt;br /&gt;
&lt;br /&gt;
= Current Methods of Integration = &lt;br /&gt;
&lt;br /&gt;
= ESP32 Built-In =&lt;br /&gt;
== Connections == &lt;br /&gt;
=== UART Communication ===&lt;br /&gt;
* Hook up&lt;br /&gt;
&lt;br /&gt;
=== I2C Communication ===&lt;br /&gt;
=== SPI Communication ===&lt;br /&gt;
== Firmware ==&lt;br /&gt;
== Examples == &lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-C3-MINI-1-N4/13877574 ESP32-C3-MINI-1-N4]&lt;br /&gt;
 * ESP32 Chip adjusted specifically for the sole purpose of wireless communication.&lt;br /&gt;
 * Interfaced with using UART&lt;br /&gt;
 * &lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
 Allows for convenient, easy to mount access to wireless communication. &lt;br /&gt;
 Easy to interface with, using UART in order to communicate data.&lt;br /&gt;
&lt;br /&gt;
=== Cons ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bluetooth Modules = &lt;br /&gt;
== Component Selection == &lt;br /&gt;
=== HC_05/HC_06 ===&lt;br /&gt;
=== CYM4343W ===&lt;br /&gt;
  Contains both Bluetooth as well as Wifi protocols&lt;br /&gt;
  Uses UART for Bluetooth &lt;br /&gt;
  Uses SDIO for wifi communication&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
* Simple implementation with supported Code&lt;br /&gt;
=== Cons ===&lt;br /&gt;
* Separate PCB Board interfaced with/ Not modular.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
Look into the specific components of the Bluetooth modules to find ICS that can be easily used and interfaced with.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1327</id>
		<title>Wireless Modules</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1327"/>
		<updated>2024-05-28T08:32:55Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Justification = &lt;br /&gt;
Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs capable. This would allow for mobility, ease of communication, reduced clutter, and scalability.&lt;br /&gt;
&lt;br /&gt;
= Current Methods of Integration = &lt;br /&gt;
&lt;br /&gt;
= ESP32 Built-In =&lt;br /&gt;
== Connections == &lt;br /&gt;
=== UART Communication ===&lt;br /&gt;
* Hook up &lt;br /&gt;
=== I2C Communication ===&lt;br /&gt;
=== SPI Communication ===&lt;br /&gt;
== Firmware ==&lt;br /&gt;
== Examples == &lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-C3-MINI-1-N4/13877574 ESP32-C3-MINI-1-N4]&lt;br /&gt;
 * ESP32 Chip adjusted specifically for the sole purpose of wireless communication.&lt;br /&gt;
 * Interfaced with using UART&lt;br /&gt;
 * &lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
 Allows for convenient, easy to mount access to wireless communication. &lt;br /&gt;
 Easy to interface with, using UART in order to communicate data.&lt;br /&gt;
&lt;br /&gt;
=== Cons ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bluetooth Modules = &lt;br /&gt;
== Component Selection == &lt;br /&gt;
=== HC_05/HC_06 ===&lt;br /&gt;
=== CYM4343W ===&lt;br /&gt;
  Contains both Bluetooth as well as Wifi protocols&lt;br /&gt;
  Uses UART for Bluetooth &lt;br /&gt;
  Uses SDIO for wifi communication&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
* Simple implementation with supported Code&lt;br /&gt;
=== Cons ===&lt;br /&gt;
* Separate PCB Board interfaced with/ Not modular.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
Look into the specific components of the Bluetooth modules to find ICS that can be easily used and interfaced with.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1326</id>
		<title>Wireless Modules</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1326"/>
		<updated>2024-05-28T08:32:46Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Pros and Cons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Justification = &lt;br /&gt;
Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs capable. This would allow for mobility, ease of communication, reduced clutter, and scalability.&lt;br /&gt;
&lt;br /&gt;
= Current Methods of Integration = &lt;br /&gt;
&lt;br /&gt;
= ESP32 Built-In =&lt;br /&gt;
== Connections == &lt;br /&gt;
=== UART Communication ===&lt;br /&gt;
* Hook up &lt;br /&gt;
=== I2C Communication ===&lt;br /&gt;
=== SPI Communication ===&lt;br /&gt;
== Firmware ==&lt;br /&gt;
== Examples == &lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-C3-MINI-1-N4/13877574 ESP32-C3-MINI-1-N4]&lt;br /&gt;
 * ESP32 Chip adjusted specifically for the sole purpose of wireless communication.&lt;br /&gt;
 * Interfaced with using UART&lt;br /&gt;
 * &lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
 Allows for convenient, easy to mount access to wireless communication. &lt;br /&gt;
 Easy to interface with, using UART in order to communicate data.&lt;br /&gt;
&lt;br /&gt;
=== Cons ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bluetooth Modules = &lt;br /&gt;
== Component Selection == &lt;br /&gt;
=== HC_05/HC_06 ===&lt;br /&gt;
=== CYM4343W ===&lt;br /&gt;
  Contains both Bluetooth as well as Wifi protocols&lt;br /&gt;
  Uses UART for Bluetooth &lt;br /&gt;
  Uses SDIO for wifi communication&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
* Simple implementation with supported Code&lt;br /&gt;
=== Cons ===&lt;br /&gt;
* Separate PCB Board interfaced with/ Not modular.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
Look into the specific components of the Bluetooth modules to find ICS that can be easily used and interfaced with.&lt;br /&gt;
&lt;br /&gt;
=&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1325</id>
		<title>Wireless Modules</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1325"/>
		<updated>2024-05-28T08:32:33Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Pros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Justification = &lt;br /&gt;
Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs capable. This would allow for mobility, ease of communication, reduced clutter, and scalability.&lt;br /&gt;
&lt;br /&gt;
= Current Methods of Integration = &lt;br /&gt;
&lt;br /&gt;
= ESP32 Built-In =&lt;br /&gt;
== Connections == &lt;br /&gt;
=== UART Communication ===&lt;br /&gt;
* Hook up &lt;br /&gt;
=== I2C Communication ===&lt;br /&gt;
=== SPI Communication ===&lt;br /&gt;
== Firmware ==&lt;br /&gt;
== Examples == &lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-C3-MINI-1-N4/13877574 ESP32-C3-MINI-1-N4]&lt;br /&gt;
 * ESP32 Chip adjusted specifically for the sole purpose of wireless communication.&lt;br /&gt;
 * Interfaced with using UART&lt;br /&gt;
 * &lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
 Allows for convenient, easy to mount access to wireless communication. &lt;br /&gt;
 Easy to interface with, using UART in order to communicate data.&lt;br /&gt;
&lt;br /&gt;
=== Cons ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bluetooth Modules = &lt;br /&gt;
== Component Selection == &lt;br /&gt;
=== HC_05/HC_06 ===&lt;br /&gt;
=== CYM4343W ===&lt;br /&gt;
  Contains both Bluetooth as well as Wifi protocols&lt;br /&gt;
  Uses UART for Bluetooth &lt;br /&gt;
  Uses SDIO for wifi communication&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
* Simple implementation with supported Code&lt;br /&gt;
=== Cons ===&lt;br /&gt;
* Separate PCB Board interfaced with&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
Look into the specific components of the Bluetooth modules to find ICS that can be easily used and interfaced with.&lt;br /&gt;
&lt;br /&gt;
=&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1324</id>
		<title>Wireless Modules</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1324"/>
		<updated>2024-05-28T08:31:13Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* CYM4343W */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Justification = &lt;br /&gt;
Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs capable. This would allow for mobility, ease of communication, reduced clutter, and scalability.&lt;br /&gt;
&lt;br /&gt;
= Current Methods of Integration = &lt;br /&gt;
&lt;br /&gt;
= ESP32 Built-In =&lt;br /&gt;
== Connections == &lt;br /&gt;
=== UART Communication ===&lt;br /&gt;
* Hook up &lt;br /&gt;
=== I2C Communication ===&lt;br /&gt;
=== SPI Communication ===&lt;br /&gt;
== Firmware ==&lt;br /&gt;
== Examples == &lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-C3-MINI-1-N4/13877574 ESP32-C3-MINI-1-N4]&lt;br /&gt;
 * ESP32 Chip adjusted specifically for the sole purpose of wireless communication.&lt;br /&gt;
 * Interfaced with using UART&lt;br /&gt;
 * &lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
=== Cons ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bluetooth Modules = &lt;br /&gt;
== Component Selection == &lt;br /&gt;
=== HC_05/HC_06 ===&lt;br /&gt;
=== CYM4343W ===&lt;br /&gt;
  Contains both Bluetooth as well as Wifi protocols&lt;br /&gt;
  Uses UART for Bluetooth &lt;br /&gt;
  Uses SDIO for wifi communication&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
* Simple implementation with supported Code&lt;br /&gt;
=== Cons ===&lt;br /&gt;
* Separate PCB Board interfaced with&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
Look into the specific components of the Bluetooth modules to find ICS that can be easily used and interfaced with.&lt;br /&gt;
&lt;br /&gt;
=&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1323</id>
		<title>Wireless Modules</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1323"/>
		<updated>2024-05-28T08:30:55Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* ESP32 Built-In */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Justification = &lt;br /&gt;
Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs capable. This would allow for mobility, ease of communication, reduced clutter, and scalability.&lt;br /&gt;
&lt;br /&gt;
= Current Methods of Integration = &lt;br /&gt;
&lt;br /&gt;
= ESP32 Built-In =&lt;br /&gt;
== Connections == &lt;br /&gt;
=== UART Communication ===&lt;br /&gt;
* Hook up &lt;br /&gt;
=== I2C Communication ===&lt;br /&gt;
=== SPI Communication ===&lt;br /&gt;
== Firmware ==&lt;br /&gt;
== Examples == &lt;br /&gt;
[https://www.digikey.com/en/products/detail/espressif-systems/ESP32-C3-MINI-1-N4/13877574 ESP32-C3-MINI-1-N4]&lt;br /&gt;
 * ESP32 Chip adjusted specifically for the sole purpose of wireless communication.&lt;br /&gt;
 * Interfaced with using UART&lt;br /&gt;
 * &lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
=== Cons ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bluetooth Modules = &lt;br /&gt;
== Component Selection == &lt;br /&gt;
=== HC_05/HC_06 ===&lt;br /&gt;
=== CYM4343W ===&lt;br /&gt;
 * Contains both Bluetooth as well as Wifi protocols&lt;br /&gt;
 * Uses UART for Bluetooth &lt;br /&gt;
 * Uses SDIO for wifi communication&lt;br /&gt;
&lt;br /&gt;
== Pros and Cons ==&lt;br /&gt;
=== Pros ===&lt;br /&gt;
* Simple implementation with supported Code&lt;br /&gt;
=== Cons ===&lt;br /&gt;
* Separate PCB Board interfaced with&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
Look into the specific components of the Bluetooth modules to find ICS that can be easily used and interfaced with.&lt;br /&gt;
&lt;br /&gt;
=&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1322</id>
		<title>Wireless Modules</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=Wireless_Modules&amp;diff=1322"/>
		<updated>2024-05-28T07:45:02Z</updated>

		<summary type="html">&lt;p&gt;Vedant: Created page with &amp;quot;= Justification =  Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs ca...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Justification = &lt;br /&gt;
Robust, wireless communication between multiple PCB boards decreased design constraints and wiring, allowing for much more modular and adjustable designs capable. This would allow for mobility, ease of communication, reduced clutter, and scalability.&lt;br /&gt;
&lt;br /&gt;
= Current Methods of Integration = &lt;br /&gt;
&lt;br /&gt;
== ESP32 Built-In == &lt;br /&gt;
By connecting&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1321</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1321"/>
		<updated>2024-05-28T07:38:08Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Features = &lt;br /&gt;
# USB-C + Battery compatibility&lt;br /&gt;
# Able &lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
= Central Components =&lt;br /&gt;
&lt;br /&gt;
== MCU == &lt;br /&gt;
=== STM32 ===&lt;br /&gt;
&lt;br /&gt;
Used:&lt;br /&gt;
&lt;br /&gt;
STM32F407VET6&lt;br /&gt;
Justification: 512 kB of flash memory, unit price at $3, powerful enough to run heavy programs  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buttons + Debouncer ==&lt;br /&gt;
&lt;br /&gt;
* Button Debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
== LCD ==&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
== Battery Charger ==&lt;br /&gt;
&lt;br /&gt;
== CAN Communication ==&lt;br /&gt;
=== MCP2515 === &lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
= Design = &lt;br /&gt;
== Schematic ==&lt;br /&gt;
== Layout ==&lt;br /&gt;
== Final Form Factor ==&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;br /&gt;
&lt;br /&gt;
== Github Repository ==&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1320</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1320"/>
		<updated>2024-05-28T07:36:41Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Battery Charger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Features = &lt;br /&gt;
# USB-C + Battery compatibility&lt;br /&gt;
# Able &lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
= Central Components =&lt;br /&gt;
&lt;br /&gt;
== MCU == &lt;br /&gt;
=== STM32 ===&lt;br /&gt;
&lt;br /&gt;
Used:&lt;br /&gt;
&lt;br /&gt;
STM32F407VET6&lt;br /&gt;
Justification: 512 kB of flash memory, unit price at $3, powerful enough to run heavy programs  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buttons + Debouncer ==&lt;br /&gt;
&lt;br /&gt;
* Button Debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
== LCD ==&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
== Battery Charger ==&lt;br /&gt;
&lt;br /&gt;
== CAN Communication ==&lt;br /&gt;
=== MCP2515 === &lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
= Design = &lt;br /&gt;
== Schematic ==&lt;br /&gt;
== Layout ==&lt;br /&gt;
== Final Form Factor ==&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1319</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1319"/>
		<updated>2024-05-28T07:36:29Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* MCP 2515 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Features = &lt;br /&gt;
# USB-C + Battery compatibility&lt;br /&gt;
# Able &lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
= Central Components =&lt;br /&gt;
&lt;br /&gt;
== MCU == &lt;br /&gt;
=== STM32 ===&lt;br /&gt;
&lt;br /&gt;
Used:&lt;br /&gt;
&lt;br /&gt;
STM32F407VET6&lt;br /&gt;
Justification: 512 kB of flash memory, unit price at $3, powerful enough to run heavy programs  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buttons + Debouncer ==&lt;br /&gt;
&lt;br /&gt;
* Button Debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
== LCD ==&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
== Battery Charger ==&lt;br /&gt;
&lt;br /&gt;
=== MCP 2515 ===&lt;br /&gt;
&lt;br /&gt;
== CAN Communication ==&lt;br /&gt;
=== MCP2515 === &lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
= Design = &lt;br /&gt;
== Schematic ==&lt;br /&gt;
== Layout ==&lt;br /&gt;
== Final Form Factor ==&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1318</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1318"/>
		<updated>2024-05-28T07:36:18Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* CAN Communication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Features = &lt;br /&gt;
# USB-C + Battery compatibility&lt;br /&gt;
# Able &lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
= Central Components =&lt;br /&gt;
&lt;br /&gt;
== MCU == &lt;br /&gt;
=== STM32 ===&lt;br /&gt;
&lt;br /&gt;
Used:&lt;br /&gt;
&lt;br /&gt;
STM32F407VET6&lt;br /&gt;
Justification: 512 kB of flash memory, unit price at $3, powerful enough to run heavy programs  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buttons + Debouncer ==&lt;br /&gt;
&lt;br /&gt;
* Button Debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
== LCD ==&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
== Battery Charger ==&lt;br /&gt;
&lt;br /&gt;
=== MCP 2515 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CAN Communication ==&lt;br /&gt;
=== MCP2515 === &lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
= Design = &lt;br /&gt;
== Schematic ==&lt;br /&gt;
== Layout ==&lt;br /&gt;
== Final Form Factor ==&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1317</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1317"/>
		<updated>2024-05-28T07:35:47Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Features = &lt;br /&gt;
# USB-C + Battery compatibility&lt;br /&gt;
# Able &lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
= Central Components =&lt;br /&gt;
&lt;br /&gt;
== MCU == &lt;br /&gt;
=== STM32 ===&lt;br /&gt;
&lt;br /&gt;
Used:&lt;br /&gt;
&lt;br /&gt;
STM32F407VET6&lt;br /&gt;
Justification: 512 kB of flash memory, unit price at $3, powerful enough to run heavy programs  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buttons + Debouncer ==&lt;br /&gt;
&lt;br /&gt;
* Button Debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
== LCD ==&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
== Battery Charger ==&lt;br /&gt;
&lt;br /&gt;
=== MCP 2515 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CAN Communication ==&lt;br /&gt;
=== MCP2515 === &lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Design = &lt;br /&gt;
== Schematic ==&lt;br /&gt;
== Layout ==&lt;br /&gt;
== Final Form Factor ==&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1316</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1316"/>
		<updated>2024-05-28T07:34:54Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Features = &lt;br /&gt;
# USB-C + Battery compatibility&lt;br /&gt;
# Able &lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
= Central Components =&lt;br /&gt;
&lt;br /&gt;
== MCU == &lt;br /&gt;
=== STM32 ===&lt;br /&gt;
&lt;br /&gt;
Used:&lt;br /&gt;
&lt;br /&gt;
STM32F407VET6&lt;br /&gt;
Justification: 512 kB of flash memory, unit price at $3, powerful enough to run heavy programs  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buttons + Debouncer ==&lt;br /&gt;
&lt;br /&gt;
* Button Debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
== LCD ==&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
== Battery Charger ==&lt;br /&gt;
&lt;br /&gt;
=== MCP 2515 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CAN Communication ==&lt;br /&gt;
=== MCP2515 === &lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1315</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1315"/>
		<updated>2024-05-28T07:34:24Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Features = &lt;br /&gt;
# USB-C + Battery compatibility&lt;br /&gt;
# Able &lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
= Central Components =&lt;br /&gt;
&lt;br /&gt;
== MCU == &lt;br /&gt;
= STM32 =&lt;br /&gt;
&lt;br /&gt;
Used:&lt;br /&gt;
&lt;br /&gt;
STM32F407VET6&lt;br /&gt;
Justification: 512 kB of flash memory, unit price at $3, powerful enough to run heavy programs  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Buttons + Debouncer ==&lt;br /&gt;
&lt;br /&gt;
* Button Debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
== LCD ==&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
== Battery Charger ==&lt;br /&gt;
&lt;br /&gt;
=== MCP 2515 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CAN Communication ==&lt;br /&gt;
=== MCP2515 === &lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1314</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1314"/>
		<updated>2024-05-28T07:28:51Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== MCU ===&lt;br /&gt;
&lt;br /&gt;
* STM32&lt;br /&gt;
** Programming mode button (boot / reset)&lt;br /&gt;
Used:&lt;br /&gt;
&lt;br /&gt;
STM32F407VET6&lt;br /&gt;
Justification: 512 kB of flash memory, unit price at $3, powerful enough to run heavy programs  &lt;br /&gt;
&lt;br /&gt;
=== USB ===&lt;br /&gt;
&lt;br /&gt;
* adsfasdfasdf&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
* Button debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
=== LCD ===&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
=== Battery Charger ===&lt;br /&gt;
&lt;br /&gt;
=== MCP 2515 ===&lt;br /&gt;
&lt;br /&gt;
=== Github access ===&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
=== Questions ===&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1313</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1313"/>
		<updated>2024-05-28T01:24:25Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== MCU ===&lt;br /&gt;
&lt;br /&gt;
* STM32&lt;br /&gt;
** Programming mode button (boot / reset)&lt;br /&gt;
&lt;br /&gt;
=== USB ===&lt;br /&gt;
&lt;br /&gt;
* adsfasdfasdf&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
* Button debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
=== LCD ===&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
=== Battery Charger ===&lt;br /&gt;
&lt;br /&gt;
=== MCP 2515 ===&lt;br /&gt;
&lt;br /&gt;
=== Github access ===&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
=== Questions ===&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1312</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1312"/>
		<updated>2024-05-28T01:17:04Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* PCF2518 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== MCU ===&lt;br /&gt;
&lt;br /&gt;
* STM32&lt;br /&gt;
** Programming mode button (boot / reset)&lt;br /&gt;
&lt;br /&gt;
=== USB ===&lt;br /&gt;
&lt;br /&gt;
* adsfasdfasdf&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
* Button debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
=== LCD ===&lt;br /&gt;
&lt;br /&gt;
=== PCF2518 ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
=== Battery Charger ===&lt;br /&gt;
&lt;br /&gt;
=== MCP 2515 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
=== Questions ===&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1311</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1311"/>
		<updated>2024-05-28T01:16:11Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== MCU ===&lt;br /&gt;
&lt;br /&gt;
* STM32&lt;br /&gt;
** Programming mode button (boot / reset)&lt;br /&gt;
&lt;br /&gt;
=== USB ===&lt;br /&gt;
&lt;br /&gt;
* adsfasdfasdf&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
* Button debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
=== LCD ===&lt;br /&gt;
&lt;br /&gt;
== PCF2518 ==&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
=== Battery Charger ===&lt;br /&gt;
&lt;br /&gt;
=== MCP 2515 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
=== Questions ===&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
** Pros if successful: &lt;br /&gt;
*** Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
** Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1301</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1301"/>
		<updated>2024-05-27T01:13:29Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== MCU ===&lt;br /&gt;
&lt;br /&gt;
* STM32&lt;br /&gt;
** Programming mode button (boot / reset)&lt;br /&gt;
&lt;br /&gt;
=== USB ===&lt;br /&gt;
&lt;br /&gt;
* adsfasdfasdf&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
* Button debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
=== LCD ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;br /&gt;
&lt;br /&gt;
=== Questions ===&lt;br /&gt;
&lt;br /&gt;
# How does the switching regulator mechanism work?&lt;br /&gt;
# Do digital logic levels depend on source voltage? For example, let's say that a 3.3V powered device is sending signals to a 5V power device. From my understanding of the datasheet, a direct connection between the signals should not be allowed. However, why is this? What are the internal mechanisms of the pins that make it so that the logic levels need to be based off of the source voltage?&lt;br /&gt;
# I understand that there is a way to both use the battery as a source as well as to charge it using the USB. However, wouldn't this mean not being able to put a diode within the circuit directing current in one direction? Isn't this a hazard, destroying the circuit the moment a bit of noise comes through?&lt;br /&gt;
# Power Ground in the context of a switching regulator for our circuit to amplify 3.7 V battery to 5 V source. Do we just connect Power Ground to Battery Ground?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Need to figure out the interface for the SPI lines using MCP2515&lt;br /&gt;
 * Pros if successful: &lt;br /&gt;
    * Reduces amount of wiring for STM32, requires just one SPI bus with a bunch of easily programmable chip selects&lt;br /&gt;
* Cons: Need to understand the interface for the MCP2515. Need to confirm how interrupts and timing works.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1247</id>
		<title>CAN Daddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1247"/>
		<updated>2024-05-24T23:40:55Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Design Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design Requirements ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Means bullet point&lt;br /&gt;
&lt;br /&gt;
= * n means a header of some kind. Need to wrap it.&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1246</id>
		<title>CAN Daddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1246"/>
		<updated>2024-05-24T23:40:22Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Design Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design Requirements ==&lt;br /&gt;
&lt;br /&gt;
*Hello there&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1245</id>
		<title>CAN Daddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1245"/>
		<updated>2024-05-24T23:40:13Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Design Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design Requirements ==&lt;br /&gt;
&lt;br /&gt;
*Hello there&lt;br /&gt;
asdf&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1244</id>
		<title>CAN Daddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1244"/>
		<updated>2024-05-24T23:40:05Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* Design Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design Requirements ==&lt;br /&gt;
&lt;br /&gt;
*Hello there*&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1243</id>
		<title>CAN Daddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1243"/>
		<updated>2024-05-24T23:39:53Z</updated>

		<summary type="html">&lt;p&gt;Vedant: /* CAN Daddy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design Requirements ==&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1242</id>
		<title>CAN Daddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=CAN_Daddy&amp;diff=1242"/>
		<updated>2024-05-24T23:39:45Z</updated>

		<summary type="html">&lt;p&gt;Vedant: Created page with &amp;quot;=== CAN Daddy ===   == Design Requirements ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== CAN Daddy === &lt;br /&gt;
&lt;br /&gt;
== Design Requirements ==&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1018</id>
		<title>K-Scale CANdaddy</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=K-Scale_CANdaddy&amp;diff=1018"/>
		<updated>2024-05-14T20:18:03Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== MCU ===&lt;br /&gt;
&lt;br /&gt;
* STM32&lt;br /&gt;
** Programming mode button (boot / reset)&lt;br /&gt;
&lt;br /&gt;
=== USB ===&lt;br /&gt;
&lt;br /&gt;
* adsfasdfasdf&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
* Button debouncer&lt;br /&gt;
** TODO: Add the IC name&lt;br /&gt;
&lt;br /&gt;
=== LCD ===&lt;br /&gt;
&lt;br /&gt;
* How do we connect I2C chip to the LCD screen?&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
* How to get supply-side VCC without having it on the bus (from supply-side GND)?&lt;br /&gt;
* What do we do if supply-side GND is missing?&lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
&lt;br /&gt;
* Load sharing between USB and battery&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=User:Vedant&amp;diff=967</id>
		<title>User:Vedant</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=User:Vedant&amp;diff=967"/>
		<updated>2024-05-09T10:47:11Z</updated>

		<summary type="html">&lt;p&gt;Vedant: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox person&lt;br /&gt;
| name = Vedant Jhawar&lt;br /&gt;
| organization = [[K-Scale Labs]]&lt;br /&gt;
| title = Technical Intern&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: K-Scale Employees]]&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
	<entry>
		<id>http://54.204.126.50/index.php?title=User:Vedant&amp;diff=966</id>
		<title>User:Vedant</title>
		<link rel="alternate" type="text/html" href="http://54.204.126.50/index.php?title=User:Vedant&amp;diff=966"/>
		<updated>2024-05-09T10:46:06Z</updated>

		<summary type="html">&lt;p&gt;Vedant: Created page with &amp;quot;{| class=&amp;quot;wikitable&amp;quot; |- ! Vedant Jhawar !! |- | Name || Vedant Jhawar |- | Organization || K-Scale Labs |- | Title || Technical Intern |- |}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Vedant Jhawar !!&lt;br /&gt;
|-&lt;br /&gt;
| Name || Vedant Jhawar&lt;br /&gt;
|-&lt;br /&gt;
| Organization || K-Scale Labs&lt;br /&gt;
|-&lt;br /&gt;
| Title || Technical Intern&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vedant</name></author>
		
	</entry>
</feed>