Target MAC Address Management#
Thor platform MAC addresses are stored in BR-BCT and can be programmed by passing a customer-data JSON file to the flashing tools. This page covers MAC address assignment for the supported Thor board variants in this build, including FSI EQOS and CCPLEX Guest OS interfaces.
Warning
Each board variant has its own MAC address layout, and each physical board has its own unique MAC address range. Do not copy customer-data JSON from one board to another board.
Read the Base MAC from MCU Inforom#
The Base MAC for CVM value is stored in the board MCU Inforom. Before
creating the JSON file, read the board’s MAC address information from the sMCU
console and use Base MAC for CVM for Tegra MAC assignment.
At the sMCU console prompt, run:
NvShell> inforom print
In the SYS object output, use the value shown in Base MAC for CVM:
SYS:
Starting MAC Address: 3c:6d:66:11:df:7b
Total Number of MAC Addresses: 6
CVM Serial Number : 1582124610013
Base MAC for CVM : 3c:6d:66:12:30:f0
Total Number of MAC address for CVM: 0
Convert the MAC address to the JSON format by removing colons and prefixing the
value with 0x. For example, 3c:6d:66:12:30:f0 becomes
0x3c6d661230f0.
Customer-Data JSON Rules#
Use the following rules when creating the customer-data JSON:
Field |
Description |
|---|---|
|
Number of |
|
MAC entry in the format |
|
Number of MAC addresses reserved for that entry. |
|
Slot 0. For Thor boards, this slot is used for FSI EQOS when FSI EQOS is active. |
|
First CCPLEX Guest OS MAC address. |
For Thor board variants, when FSI EQOS is active, use the Base MAC for CVM
from the board Inforom as the first MAC address for FSI EQOS in macId0.
The CCPLEX Guest OS MAC addresses start at Base MAC for CVM + 1 in
macId1.
If FSI EQOS is unused on a side or Tegra, retain macId0 and use the dummy
local MAC address 0x0200414500f9 with count 1. In this case, the CCPLEX
Guest OS MAC addresses start at Base MAC for CVM in macId1.
The example counts in this page reserve the maximum configurable CCPLEX Guest OS
MAC addresses for each shown board configuration. If fewer CCPLEX Guest OS
interfaces are needed, use a smaller macId1 count while keeping each MAC
entry unique and preserving the required macId0 assignment.
After you create the JSON file for your board, pass it through
--customer-data during BSP image creation and again while flashing the
board. For more information, see Flashing with the Customer-Data JSON.
P3960 MAC Address Allocation#
The following examples show P3960 customer-data allocations for supported board variants.
P3960 SKU-10, Single Thor#
P3960 SKU-10 uses a default 12-MAC range.
Entry |
Assignment |
|---|---|
|
FSI EQOS MAC. Use |
|
First CCPLEX Guest OS MAC. Use |
P3960 SKU-10 example:
{
"customer-data-signed": {
"boardSerial": "223145",
"macInUseCount": 2,
"macId0": "mac0 0x3c6d661230f0 1",
"macId1": "mac1 0x3c6d661230f1 11"
}
}
P4145 Maarva TA MAC Address Assignment#
For P4145 Maarva, read the MAC address information from MCU Inforom with the same sMCU console command:
NvShell> inforom print
The following P4145 Maarva example uses 4c:bb:47:ac:b7:87 as the
Base MAC for CVM. The JSON examples in this section use the same base MAC
address, converted to 0x4cbb47acb787.
Info: Executing cmd: inforom, argc: 1, args: print
INFOROM status: ae0ff800 Okay
OAT:
Object type : OAT
Object version : 1
Object subversion : 0
Object size : 64
ROM size : 0x200
Object 1 Type : SYS
Object 1 Location : 0x40
SYS:
Object type : SYS
Object version : 6
Object subversion : 0
Object size : 100
System Build test date: 2025/01/01
Product Part Number : 699-64145-0000-TS1
BOM Major Rev : A0
System Serial number: 1584025617041
System Release Level: 00
SWID : A2
RWK : 0
Starting MAC Address: 4c:bb:47:ac:b7:85
Total Number of MAC Addresses: 8
Base MAC for CVM : 4c:bb:47:ac:b7:87
Total Number of MAC address for CVM: 0
INFOROM end of data
For P4145 Maarva TA/TB customer-data files, retain macId0 on both sides.
This is required even when FSI EQOS is not used on that side because MB2
expects the mac0 entry in slot 0. Use the dummy MAC address from the common
rule for the side where FSI EQOS is unused.
Board revision and side |
FSI EQOS allocation |
|
|
|---|---|---|---|
A00, 4145 A side |
FSI EQOS unused on this side. |
Dummy local MAC |
First CCPLEX Guest OS MAC is |
A00, 4145 B side |
FSI EQOS active on this side. |
FSI EQOS MAC is |
First CCPLEX Guest OS MAC is |
B00, 4145 A side |
FSI EQOS moves to A side. |
FSI EQOS MAC is |
First CCPLEX Guest OS MAC is |
B00, 4145 B side |
FSI EQOS unused on this side. |
Dummy local MAC |
First CCPLEX Guest OS MAC is |
A00, 4145 A side:
{
"customer-data-signed": {
"boardSerial": "223145",
"macInUseCount": 2,
"macId0": "mac0 0x0200414500f9 1",
"macId1": "mac1 0x4cbb47acb787 6"
}
}
A00, 4145 B side:
{
"customer-data-signed": {
"boardSerial": "223145",
"macInUseCount": 2,
"macId0": "mac0 0x4cbb47acb787 1",
"macId1": "mac1 0x4cbb47acb788 4"
}
}
B00, 4145 A side:
{
"customer-data-signed": {
"boardSerial": "223145",
"macInUseCount": 2,
"macId0": "mac0 0x4cbb47acb787 1",
"macId1": "mac1 0x4cbb47acb788 6"
}
}
B00, 4145 B side:
{
"customer-data-signed": {
"boardSerial": "223145",
"macInUseCount": 2,
"macId0": "mac0 0x0200414500f9 1",
"macId1": "mac1 0x4cbb47acb787 4"
}
}
Do not omit macId0 on the side where FSI EQOS is unused. Use the dummy
local MAC address only for that unused FSI EQOS slot.
Flashing with the Customer-Data JSON#
Save the selected JSON example as a customer-data file for the board variant and side that you are flashing.
For P4145 Maarva TA/TB, save the file as one of the following:
p4145-10-sw01-ta_customer_data.jsonfor the 4145 A side.p4145-10-sw01-tb_customer_data.jsonfor the 4145 B side.
Follow the standard flashing procedure in Flashing. For Thor-specific bootburn options, see Flash Steps for Thor SOC.
When using the customer-data JSON from this page, add
--customer-data <customer-data.json> to both commands:
The BSP image creation command.
The board flashing command.
For P3960 SKU-10, save the JSON file as p3960-sku10_customer_data.json.
The following example shows the complete command form:
sudo python3 ./create_bsp_images.py -b p3960-10-sw03 -D \
-P <bsp-output-dir> \
--board_config <bsp-output-dir>/tools/flashtools/board_configs/p3960-10-sw03.json \
--customer-data <path-to-json>/p3960-sku10_customer_data.json
For P4145 Maarva TA, use:
sudo python3 ./create_bsp_images.py -b p4145-10-sw01-ta -D \
-P <bsp-output-dir> \
--board_config <bsp-output-dir>/tools/flashtools/board_configs/p4145-10-sw01-ta.json \
--customer-data <path-to-json>/p4145-10-sw01-ta_customer_data.json
sudo python3 ./flash_bsp_images.py -b p4145-10-sw01-ta -D \
-P <bsp-output-dir> \
--board_config <bsp-output-dir>/tools/flashtools/board_configs/p4145-10-sw01-ta.json \
--customer-data <path-to-json>/p4145-10-sw01-ta_customer_data.json -R
For example, use --customer-data p4145-10-sw01-ta_customer_data.json when
flashing P4145 Maarva TA, and use
--customer-data p4145-10-sw01-tb_customer_data.json when flashing P4145
Maarva TB.
For P3960 boards, use --customer-data with the matching P3960 customer-data
JSON file.
Verify MAC Entries After Boot#
Verify the flashed MAC addresses through the chosen-node entries populated from customer-data.
After flashing and booting the board on Linux, verify that the expected MAC
entries are present under /proc/device-tree/chosen:
cd /proc/device-tree/chosen
ls nvidia,ether-mac*
Linux and QNX use the same underlying property names:
nvidia,ether-mac*.
The number of nvidia,ether-macN entries should match the total number of MAC
addresses reserved by the customer-data JSON. For example, a JSON file that
reserves 12 total MAC addresses should show nvidia,ether-mac0 through
nvidia,ether-mac11. A JSON file that reserves 23 total MAC addresses should
show nvidia,ether-mac0 through nvidia,ether-mac22.
After boot, ifconfig should also show the assigned MAC addresses on the
network interfaces that use the flashed MAC entries.
To print the values programmed for each entry, run:
for mac in /proc/device-tree/chosen/nvidia,ether-mac*; do
printf "%s: " "$(basename "$mac")"
tr -d '\0' < "$mac"
printf "\n"
done
Troubleshoot Missing or Incorrect MAC Entries#
If MAC addresses are not flashed or are flashed incorrectly, the expected CCPLEX Guest OS MAC entries might not be visible after boot. Use Verify MAC Entries After Boot to check the flashed MAC entries.
Use the following checks to identify common MAC flashing issues:
Symptom |
Possible cause |
Corrective action |
|---|---|---|
Expected |
The correct customer-data JSON was not passed with |
Flash the board again with the correct customer-data JSON. Verify the
|
MAC values do not match the board’s expected range. |
The JSON was copied from another board or used the wrong
|
Read |
If the post-boot chosen-node entries from Verify MAC Entries After Boot do not match the customer-data JSON, treat the flash as incorrect and reflash with the corrected JSON.