Skip to content

Commit 76326e8

Browse files
committed
WIP: NVIDIA Jetson flashing
Document how to enable NVIDIA Jetson to boot SUSE Linux. Signed-off-by: Andreas Färber <[email protected]>
1 parent 86c986e commit 76326e8

File tree

2 files changed

+165
-0
lines changed

2 files changed

+165
-0
lines changed

articles/nvidia-jetson.asm.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
</resources>-->
3939
<!-- Tasks -->
4040
<resources>
41+
<resource xml:id="_nvidia-jetson-firmware" href="../tasks/nvidia-jetson-firmware.xml">
42+
<description>Firmware</description>
43+
</resource>
4144
<resource xml:id="_nvidia-jetson-sidecar-kmp" href="../tasks/nvidia-jetson-kmp.xml">
4245
<description>KMP</description>
4346
</resource>
@@ -72,6 +75,11 @@
7275
<revdescription>
7376
<itemizedlist>
7477
<!-- Group by type of change (added/removed/changed)-->
78+
<listitem><para>Added sections:</para>
79+
<itemizedlist>
80+
<listitem><para>Added section on flashing</para></listitem>
81+
</itemizedlist>
82+
</listitem>
7583
<listitem><para>Changed sections:</para>
7684
<itemizedlist>
7785
<listitem><para>Updated section on KMP with more detailed uname -r output</para></listitem>
@@ -81,6 +89,17 @@
8189
</itemizedlist>
8290
</revdescription>
8391
</revision>
92+
<revision><date>2024-06-04</date>
93+
<revdescription>
94+
<itemizedlist>
95+
<listitem><para>Changed sections:</para>
96+
<itemizedlist>
97+
<listitem><para>Extended section on flashing with tip on board configs</para></listitem>
98+
</itemizedlist>
99+
</listitem>
100+
</itemizedlist>
101+
</revdescription>
102+
</revision>
84103
</revhistory>
85104
<!-- TODO: provide a listing of possible and validatable meta entry values. Maybe in our geekodoc repo? -->
86105
<!-- add author's e-mail -->
@@ -206,6 +225,7 @@
206225
<title>You are a very special concept now!</title>
207226
</merge>
208227
</module>-->
228+
<module resourceref="_nvidia-jetson-firmware" renderas="section"/>
209229
<module resourceref="_nvidia-jetson-sidecar-kmp" renderas="section"/>
210230
<module resourceref="_nvidia-jetson-sidecar-libs" renderas="section"/>
211231
<!--<module resourceref="_reference-example" renderas="section"/>

tasks/nvidia-jetson-firmware.xml

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!-- This file originates from the project https://github.com/openSUSE/doc-kit -->
3+
<!-- This file can be edited downstream. -->
4+
<!DOCTYPE topic
5+
[
6+
<!ENTITY % entities SYSTEM "../common/generic-entities.ent">
7+
%entities;
8+
]>
9+
<!-- refers to legacy doc: <add github link to legacy doc piece, if applicable> -->
10+
<!-- point back to this document with a similar comment added to your legacy doc piece -->
11+
<!-- refer to README.md for file and id naming conventions -->
12+
<!-- metadata is dealt with on the assembly level -->
13+
<topic xml:id="nvidia-jetson-firmware"
14+
role="task" xml:lang="en"
15+
xmlns="http://docbook.org/ns/docbook" version="5.2"
16+
xmlns:its="http://www.w3.org/2005/11/its"
17+
xmlns:xi="http://www.w3.org/2001/XInclude"
18+
xmlns:xlink="http://www.w3.org/1999/xlink"
19+
xmlns:trans="http://docbook.org/ns/transclusion">
20+
<info>
21+
<title>Preparing firmware for &nvidia; &jetson; platforms</title><!-- can be changed via merge
22+
in the assembly -->
23+
<!-- add author's e-mail -->
24+
<meta name="maintainer" content="[email protected]" its:translate="no"/>
25+
<abstract><!-- can be changed via merge in the assembly -->
26+
<para>
27+
UEFI system firmware allows &suse; Linux media and installations to boot.
28+
</para>
29+
</abstract>
30+
</info>
31+
<section xml:id="nvidia-jetson-firmware-introduction">
32+
<title>Introduction</title>
33+
<para>
34+
&suse; Linux installation media are formatted as UEFI Removable Media
35+
and require &armreg; EBBR compliant boot firmware on the system.
36+
</para>
37+
</section>
38+
<section xml:id="nvidia-jetson-firmware-requirements">
39+
<title>Requirements</title>
40+
<itemizedlist>
41+
<listitem>
42+
<para>
43+
&nvidiareg; &jetsonreg; &xavierreg;, &orinreg; or later System-on-Module or &nvidia; IGX &orin; based system
44+
</para>
45+
</listitem>
46+
<listitem>
47+
<para>
48+
Second system (e.g., notebook) with USB connection to your &nvidia; based system
49+
</para>
50+
</listitem>
51+
</itemizedlist>
52+
</section>
53+
<section xml:id="nvidia-jetson-firmware-flash">
54+
<title>Flashing the firmware</title>
55+
<para>
56+
Follow &nvidia; or OEM provided instructions for flashing your system.
57+
&suse; Linux installation will be easiest if boot firmware and operating system
58+
do not share the same storage device, i.e., SPI flash for firmware.
59+
</para>
60+
<procedure>
61+
<step>
62+
<para>
63+
Power on the &nvidia; system and enter Force Recovery Mode (RCM)
64+
according to its vendor instructions.
65+
</para>
66+
</step>
67+
<step>
68+
<para>
69+
Flash the boot firmware via USB from the secondary system:
70+
</para>
71+
<screen>&prompt.sudo;<command>./flash.sh <replaceable>target-board-config</replaceable> external</command></screen>
72+
<note>
73+
<para>
74+
The target board parameter depends on your system and your intended usage.
75+
</para>
76+
</note>
77+
</step>
78+
</procedure>
79+
<tip>
80+
<title>Finding the right config for your system</title>
81+
<para>
82+
Only some board config files have human-recognizable aliases.
83+
</para>
84+
<para>
85+
You can try resolving the aliases to the product codes for module and board and
86+
checking for any additional <literal>-qspi</literal> config files:
87+
</para>
88+
<screen>&prompt.user;<command>ls -l igx-orin*</command>
89+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 26 31. Mai 21:39 igx-orin-devkit.conf -> p3740-0002-p3701-0008.conf
90+
&prompt.user;<command>ls -1 p3740-0002-p3701-0008*</command>
91+
p3740-0002-p3701-0008.conf
92+
p3740-0002-p3701-0008<emphasis role="bold">-qspi</emphasis>.conf
93+
&prompt.user;<command>ls -l jetson-orin*</command>
94+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 29 4. Jun 15:37 jetson-orin-nano-devkit.conf -> p3768-0000-p3767-0000-a0.conf
95+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 34 4. Jun 15:38 jetson-orin-nano-devkit-nvme.conf -> p3768-0000-p3767-0000-a0-nvme.conf
96+
&prompt.user;<command>ls -1 p3768-0000-p3767-0000-a0*</command>
97+
p3768-0000-p3767-0000-a0.conf
98+
p3768-0000-p3767-0000-a0-maxn.conf
99+
p3768-0000-p3767-0000-a0-nvme.conf
100+
p3768-0000-p3767-0000-a0<emphasis role="bold">-qspi</emphasis>.conf
101+
&prompt.user;<command>ls -l jetson-agx-orin*</command>
102+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:37 jetson-agx-orin-devkit-as-jao-32gb.conf -> p3737-0000-p3701-0000-as-p3701-0004.conf
103+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:38 jetson-agx-orin-devkit-as-nano4gb.conf -> p3737-0000-p3701-0000-as-p3767-0004.conf
104+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:38 jetson-agx-orin-devkit-as-nano8gb.conf -> p3737-0000-p3701-0000-as-p3767-0003.conf
105+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:37 jetson-agx-orin-devkit-as-nx-16gb.conf -> p3737-0000-p3701-0000-as-p3767-0000.conf
106+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:37 jetson-agx-orin-devkit-as-nx-8gb.conf -> p3737-0000-p3701-0000-as-p3767-0001.conf
107+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 26 4. Jun 15:38 jetson-agx-orin-devkit.conf -> p3737-0000-p3701-0000.conf
108+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 26 4. Jun 15:37 jetson-agx-orin-devkit-industrial.conf -> p3737-0000-p3701-0008.conf
109+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 31 4. Jun 15:38 jetson-agx-orin-devkit-industrial-maxn.conf -> p3737-0000-p3701-0008-maxn.conf
110+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 31 4. Jun 15:37 jetson-agx-orin-devkit-industrial<emphasis role="bold">-qspi</emphasis>.conf -> p3737-0000-p3701-0008<emphasis role="bold">-qspi</emphasis>.conf
111+
lrwxrwxrwx 1 &exampleuser; &examplegroup; 31 4. Jun 15:37 jetson-agx-orin-devkit-maxn.conf -> p3737-0000-p3701-0000-maxn.conf
112+
&prompt.user;<command>ls -1 p3737-0000-p3701-0000*</command>
113+
p3737-0000-p3701-0000-as-p3701-0004.conf
114+
p3737-0000-p3701-0000-as-p3767-0000.conf
115+
p3737-0000-p3701-0000-as-p3767-0001.conf
116+
p3737-0000-p3701-0000-as-p3767-0003.conf
117+
p3737-0000-p3701-0000-as-p3767-0004.conf
118+
p3737-0000-p3701-0000.conf
119+
p3737-0000-p3701-0000.conf.common
120+
p3737-0000-p3701-0000-maxn.conf
121+
p3737-0000-p3701-0000<emphasis role="bold">-qspi</emphasis>.conf</screen>
122+
<!--
123+
&prompt.user;<command>ls -1 p3737-0000-p3701-0008*</command>
124+
p3737-0000-p3701-0008.conf
125+
p3737-0000-p3701-0008-maxn.conf
126+
p3737-0000-p3701-0008<emphasis role="bold">-qspi</emphasis>.conf
127+
-->
128+
</tip>
129+
</section>
130+
<section xml:id="nvidia-jetson-firmware-summary">
131+
<title>Summary</title>
132+
<para>
133+
You have updated the boot firmware and possibly changed its storage location.
134+
During system boot it should identify on serial console similar to:
135+
</para>
136+
<screen>Jetson System firmware version 36.3.0-gcid-35925539 date 2024-04-04T17:32:50+00:</screen>
137+
<!-- TODO update this -->
138+
</section>
139+
<section xml:id="nvidia-jetson-firmware-troubleshooting">
140+
<title>Troubleshooting</title>
141+
<para>
142+
Refer to &nvidia; documentation.
143+
</para>
144+
</section>
145+
</topic>

0 commit comments

Comments
 (0)