Apalis T30 Recovery

Hi,

I need to recover an Apalis T30 module which doesn’t boot into u-boot.

When connected to an Ixora carrier board, I have the terminal connected to the debug port however I see no output in my terminal nor does it accept commands.

I’ve shorted the required pins on the Apalis T30 and it has successfully started in USB recovery mode however I’m unsure as to what to do next in order to flash the Linux image + u-boot back onto the module.

Kind regards,
Kevin

Please refer the Flashing Embedded Linux to Tegra Modules article.

Unfortunately I get no u-boot output whatsoever and the commands “run setupdate” and “run update” have no effect at all. I looked at the suggestions in the “Flashing from Scratch” section - I also followed the “Txx Recovery Mode” article but this also doesn’t help as the console doesn’t work.

Once in recovery mode, did you execute the update script as explained here? Once u-boot is downloaded to RAM, opening the serial debug console port should put the user at u-boot prompt from where one can execute the update commands if the SD card is prepared.

First check whether your module is actually in recovery mode. Connected by USB device cable to your Linux workstation it should show up in lsusb as follows:

[user@host ~]$ lsusb | grep -i nvidia
Bus 002 Device 022: ID 0955:7130 NVidia Corp.

Then on that same Linux workstation you would go ahead and extract our regular BSP demo image package with root credentials e.g. as follows:

[user@host ~]$ sudo tar xjvf Apalis_T30_LinuxImageV2.6_20160826.tar.bz2

Now with that in place you would execute our update.sh script with the -d aka debug parameter as follows:

[user@host ~]$ cd Apalis_T30_LinuxImageV2.6/
[user@host Apalis_T30_LinuxImageV2.6]$ ./update.sh -d
Apalis T30 rootfs detected
bct file: ../apalis-t30_bin/Apalis_T30_2GB_800Mhz.bct
booloader file: ../apalis-t30_bin/u-boot-dtb-tegra.bin
load addr 0x80108000
entry addr 0x80108000
device id: 0x7130
uid:  0x015d4b3375381209
RCM version: 3.1
downloading miniloader to target at address 0x4000a000 (128916 bytes)...
miniloader downloaded successfully
Chip UID:                0x0000000000000000015d4b3375381209
Chip ID:                 0x30
Chip ID Major Version:   0x1
Chip ID Minor Version:   0x3
Chip SKU:                0xb1 (t30)
Boot ROM Version:        0x1
Boot Device:             0x2 (EMMC)
Operating Mode:          0x3 (developer mode)
Device Config Strap:     0x0
Device Config Fuse:      0x0
SDRAM Config Strap:      0x0
sending file: ../apalis-t30_bin/Apalis_T30_2GB_800Mhz.bct
- 6128/6128 bytes sent
../apalis-t30_bin/Apalis_T30_2GB_800Mhz.bct sent successfully
sending file: ../apalis-t30_bin/u-boot-dtb-tegra.bin
/ 473622/473622 bytes sent
../apalis-t30_bin/u-boot-dtb-tegra.bin sent successfully

The serial debug console connected to X22 on Ixora should now show you the following:

U-Boot SPL 2015.04 (Jun 28 2016 - 13:19:53)


U-Boot 2015.04 (Jun 28 2016 - 13:19:53)

TEGRA30
DRAM:  2 GiB
MMC:   Tegra SD/MMC: 0, Tegra SD/MMC: 1, Tegra SD/MMC: 2
tegra-pcie: PCI regions:
tegra-pcie:   I/O: 0x2000000-0x2010000
tegra-pcie:   non-prefetchable memory: 0x20000000-0x30000000
tegra-pcie:   prefetchable memory: 0x30000000-0x40000000
tegra-pcie: 4x1, 1x2 configuration
tegra-pcie: probing port 2, using 1 lanes
In:    serial
Out:   lcd
Err:   lcd
Model: Toradex Apalis T30 2GB V1.1A, Serial# 02680493
USB recovery mode, disabled autoboot
Net:   e1000: no NVM
e1000#0
Apalis T30 #

And you may go ahead and update as usual e.g. from a previously prepared SD card as follows:

Apalis T30 # run setupdate
MMC: no card present
** Bad device mmc 1 **
reading flash_blk.img
710 bytes read in 12 ms (57.6 KiB/s)
## Executing script at 80408000
reading apalis_t30/flash_blk.img
4029 bytes read in 19 ms (207 KiB/s)
## Executing script at 80408000
enter "run update" to update the entire module
Apalis T30 # run update
...

First check whether your module is actually in recovery mode. Connected by USB device cable to your Linux workstation it should show up in lsusb as follows:

[user@host ~]$ lsusb | grep -i nvidia
Bus 002 Device 022: ID 0955:7130 NVidia Corp.

Then on that same Linux workstation you would go ahead and extract our regular BSP demo image package with root credentials e.g. as follows:

[user@host ~]$ sudo tar xjvf Apalis_T30_LinuxImageV2.6_20160826.tar.bz2

Now with that in place you would execute our update.sh script with the -d aka debug parameter as follows:

[user@host ~]$ cd Apalis_T30_LinuxImageV2.6/
[user@host Apalis_T30_LinuxImageV2.6]$ ./update.sh -d
Apalis T30 rootfs detected
bct file: ../apalis-t30_bin/Apalis_T30_2GB_800Mhz.bct
booloader file: ../apalis-t30_bin/u-boot-dtb-tegra.bin
load addr 0x80108000
entry addr 0x80108000
device id: 0x7130
uid:  0x015d4b3375381209
RCM version: 3.1
downloading miniloader to target at address 0x4000a000 (128916 bytes)...
miniloader downloaded successfully
Chip UID:                0x0000000000000000015d4b3375381209
Chip ID:                 0x30
Chip ID Major Version:   0x1
Chip ID Minor Version:   0x3
Chip SKU:                0xb1 (t30)
Boot ROM Version:        0x1
Boot Device:             0x2 (EMMC)
Operating Mode:          0x3 (developer mode)
Device Config Strap:     0x0
Device Config Fuse:      0x0
SDRAM Config Strap:      0x0
sending file: ../apalis-t30_bin/Apalis_T30_2GB_800Mhz.bct
- 6128/6128 bytes sent
../apalis-t30_bin/Apalis_T30_2GB_800Mhz.bct sent successfully
sending file: ../apalis-t30_bin/u-boot-dtb-tegra.bin
/ 473622/473622 bytes sent
../apalis-t30_bin/u-boot-dtb-tegra.bin sent successfully

The serial debug console connected to X22 on Ixora should now show you the following:

U-Boot SPL 2015.04 (Jun 28 2016 - 13:19:53)


U-Boot 2015.04 (Jun 28 2016 - 13:19:53)

TEGRA30
DRAM:  2 GiB
MMC:   Tegra SD/MMC: 0, Tegra SD/MMC: 1, Tegra SD/MMC: 2
tegra-pcie: PCI regions:
tegra-pcie:   I/O: 0x2000000-0x2010000
tegra-pcie:   non-prefetchable memory: 0x20000000-0x30000000
tegra-pcie:   prefetchable memory: 0x30000000-0x40000000
tegra-pcie: 4x1, 1x2 configuration
tegra-pcie: probing port 2, using 1 lanes
In:    serial
Out:   lcd
Err:   lcd
Model: Toradex Apalis T30 2GB V1.1A, Serial# 02680493
USB recovery mode, disabled autoboot
Net:   e1000: no NVM
e1000#0
Apalis T30 #

And you may go ahead and update as usual e.g. from a previously prepared SD card as follows:

Apalis T30 # run setupdate
MMC: no card present
** Bad device mmc 1 **
reading flash_blk.img
710 bytes read in 12 ms (57.6 KiB/s)
## Executing script at 80408000
reading apalis_t30/flash_blk.img
4029 bytes read in 19 ms (207 KiB/s)
## Executing script at 80408000
enter "run update" to update the entire module
Apalis T30 # run update
...

Thanks for this answer, it is helpful. However, I have an Apalis T30 in an Ixora carrier board and I cannot even get into recovery mode. As far as I understand, I have to remove the jumper from JP2 and then short 2 pins on the Apalis T30 when powering on. Is there anything else to take into account? Thank you.

Thanks for this answer, it is helpful.

You are very welcome.

However, I have an Apalis T30 in an Ixora carrier board and I cannot even get into recovery mode. As far as I understand, I have to remove the jumper from JP2

Yes, as if JP2 is connected the shared USBO1 is always in host rather than client mode required for recovery.

and then short 2 pins on the Apalis T30 when powering on.

Yes, just as explained in the Apalis T30 data sheet in section 6 “Recovery Mode” on page 57.

Is there anything else to take into account?

No, that is it. The process is also detailed in the following article on our developer website.