How to change SD Card Voltage in U-Boot

Hi There,

I received new delivery of Apalis T30 1 GB V1.1B.
I need to downgrade the Angström distributin from V2.8 to V2.3.
I do this process with a prepared Micro SD Card and a seriel connection to a Terminal program.
In the past it was working fine without any problems. In the past it was Apalis T30 1 GB V1.1A and also V1.0
Now on V1.1 B I receive the message “Card did not response to Voltage select.”
After some investigation I saw that in newest version the Voltage of the Micro SD Connector (Ixora X10) can be set between V1.8V and 3.3V
Unfortunately I can’t find any U boot Command to change.
Is there any U_Boot command to change?
I don’t wanna order any new Mirco SD Card with V1.8 voltage supply.

Kind regards

Felix

I’m not aware that U-Boot would have an issue with any of this. It should just default to 3.3 volts which any SD card needs to support. Could you please indicate what exact software versions of things you are talking about? Please also include any textual logs preferably of the known good and bad case. Output of the mmc info command may help as well.

I found the problem.
The problem was an old type of the used SD Card.
I changed to a newer UHS-I Card and the problem was solved. I found some advice under eMMC (Linux) and the new Micron eMMCs.
But I’m still not able to downgrade from V2.8 to V2.3Beta5
Maybe you know an solution for that.

I got the following message on U-Boot

Apalis T30 #  12.08.2020 09:59:53.040 [TX] - run update
 12.08.2020 09:59:53.055 [RX] - run update
switch to partitions #1, OK
mmc0(part 1) is current device

MMC read: dev # 0, block # 2047, count 1 ... 1 blocks read: OK
MMC read: dev # 0, block # 4095, count 1 ... 1 blocks read: OK
MMC read: dev # 0, block # 8191, count 1 ... MMC: block number 0x2000 exceeds max(0x1000)
0 blocks read: ERROR
MMC read: dev # 0, block # 16383, count 1 ... MMC: block number 0x4000 exceeds max(0x1000)
0 blocks read: ERROR
MMC read: dev # 0, block # 32767, count 1 ... MMC: block number 0x8000 exceeds max(0x1000)
0 blocks read: ERROR
MMC read: dev # 0, block # 65535, count 1 ... MMC: block number 0x10000 exceeds max(0x1000)
0 blocks read: ERROR
MMC read: dev # 0, block # 131071, count 1 ... MMC: block number 0x20000 exceeds max(0x1000)
0 blocks read: ERROR
byte at 0x81000000 (0x0) != byte at 0x82000008 (0x1)
Total of 0 byte(s) were the same
switch to partitions #1, OK
mmc0(part 1) is current device
MMC read: dev # 0, block # 9, count 1 ... CACHE: Misaligned operation at range [81fffff8, 820001f8]
1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device
mmc - MMC sub system

Usage:
mmc info - display info of the current MMC device
mmc read addr blk# cnt
mmc write addr blk# cnt
mmc erase blk# cnt
mmc rescan
mmc part - lists available partition on current mmc device
mmc dev [dev] [part] - show or set current mmc device [partition]
mmc list - lists available devices
mmc hwpartition [args...] - does hardware partitioning
  arguments (sizes in 512-byte blocks):
    [user [enh start cnt] [wrrel {on|off}]] - sets user data area attributes<CR><LF>
    [gp1|gp2|gp3|gp4 cnt [enh] [wrrel {on|off}]] - general purpose partition<CR><LF>
    [check|set|complete] - mode, complete set partitioning completed<CR><LF>
  WARNING: Partitioning is a write-once setting once it is set to complete.
  Power cycling is required to initialize partitions after set to complete.
mmc bootbus dev boot_bus_width reset_boot_bus_width boot_mode
 - Set the BOOT_BUS_WIDTH field of the specified device
mmc bootpart-resize   
 - Change sizes of boot and RPMB partitions of specified device
mmc partconf dev boot_ack boot_partition partition_access
 - Change the bits of the PARTITION_CONFIG field of the specified device
mmc rst-function dev value
 - Change the RST_n_FUNCTION field of the specified device
   WARNING: This is a write-once field and 0 / 1 / 2 are the only valid values.
mmc setdsr  - set DSR register value

switch to partitions #0, OK
mmc0(part 0) is current device

MMC read: dev # 0, block # 32768, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> fadecc87 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device

MMC read: dev # 0, block # 36864, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> 13bbff68 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device

MMC read: dev # 0, block # 163840, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device

MMC read: dev # 0, block # 204800, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device

MMC read: dev # 0, block # 205824, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device

MMC read: dev # 0, block # 212992, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device

MMC read: dev # 0, block # 215040, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device

MMC read: dev # 0, block # 221184, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device

MMC read: dev # 0, block # 225280, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
reading apalis_t30/apalis_t30.img
** Unable to read file apalis_t30/apalis_t30.img **
reading apalis_t30/mbr.bin
** Unable to read file apalis_t30/mbr.bin **
reading apalis_t30/boot.vfat
** Unable to read file apalis_t30/boot.vfat **
reading apalis_t30/zImage
** Unable to read file apalis_t30/zImage **
reading apalis_t30/tegra30-apalis-eval.dtb
** Unable to read file apalis_t30/tegra30-apalis-eval.dtb **
reading apalis_t30/root.ext3-100
** Unable to read file apalis_t30/root.ext3-100 **
switch to partitions #0, OK
mmc0(part 0) is current device

MMC write: dev # 0, block # 40960, count 0 ... 0 blocks written: OK
resetting ...

U-Boot SPL 2016.11-2.8.6+g83a53c1c0c (Apr 01 2019 - 14:51:57)
Trying to boot from RAM


U-Boot 2016.11-2.8.6+g83a53c1c0c (Apr 01 2019 - 14:51:57 +0000)

SoC: tegra30
Reset cause: SW_MAIN
DRAM:  1 GiB
MMC:   Tegra SD/MMC: 0, Tegra SD/MMC: 1, Tegra SD/MMC: 2

hi @Felix

Why do you need to downgrade to Bsp 2.3? There is no need for this.

Best regards,
Jaski

Hi,
yes there is a need.
We have a special FreeRDP Program. This Program is only runnig in V2.3b5 Image .
It’s not running under V2.8
Kind regards
Felix

HI @Felix

According to the PCN you need at least Bsp 2.4b1 and newer to support the new eMMC Flash placed on the version 1.1B of the SoM.

Further I would recommend you to reset the module in recovery mode and use your Bsp 2.4x image to load U-Boot to RAM and then install your image as explained here.

Best regards,
Jaski

Hi Jaski,

I set into recovery Mode and also follow this video.,

In the video they type ./update.sh
At this point I reciev a message that I have to choose -b; -d; -f; -h;-o; -r; -s; -v
The command ./update.sh -d what in my opinion is the right choice response with
Apalis T30 rootfs detected
sudo: .tegrarcm kann nicht ausgeführt werden: Datei oder Verzeichnis nich gefunden.

Do you have any advise to solve.
kind regards Felix

Hi @Felix

Which image did you use?
Could you extract this image with sudo rights to a folder of your choice and then open this folder in a terminal and run the command: update.sh -d?

Thanks and best regards,
Jaski

Hi Jaski,

yes that is what I did. I extract exatly that image and do the command ./update.sh -d
Also the Ixora Carrier Board V1.1A with Apalis T30 1GB V1.1B is connected via USB Cable.
Also is set into RCM Mode
No sucsess

In the meantime I prepare SD Card with V2.8.7 Image. Prepare SD card and Update the Apalis is fine with V2.8.7 Image
That was for me a doublecheck if I doing right.

With V2.4 Image I receive the message “Program awk not available. Aborting”
So I’m not able to prepare a SD Card with V2.4 with V2.8.7 no problem

Maybe you can let me no how to solve to Program awk issue

kind regards

hi @Felix

Maybe you can let me no how to solve to Program awk issue

You just need to install awk package for your Linux Distribution.

Best regards,
Jaski

Hi Jaski,

the downgrade to V2.4 works fine.
Unfortunately the downgrade from V2.4 to V2.3 failed.
Maybe you have an idea.

Apalis T30 #  13.08.2020 08:21:10.913 [TX] - run update
 13.08.2020 08:21:10.926 [RX] - run update
switch to partitions #1, OK
mmc0(part 1) is current device

MMC read: dev # 0, block # 2047, count 1 ... 1 blocks read: OK
MMC read: dev # 0, block # 4095, count 1 ... 1 blocks read: OK
MMC read: dev # 0, block # 8191, count 1 ... MMC: block number 0x2000 exceeds max(0x1000)
0 blocks read: ERROR
MMC read: dev # 0, block # 16383, count 1 ... MMC: block number 0x4000 exceeds max(0x1000)
0 blocks read: ERROR
MMC read: dev # 0, block # 32767, count 1 ... MMC: block number 0x8000 exceeds max(0x1000)
0 blocks read: ERROR
MMC read: dev # 0, block # 65535, count 1 ... MMC: block number 0x10000 exceeds max(0x1000)
0 blocks read: ERROR
MMC read: dev # 0, block # 131071, count 1 ... MMC: block number 0x20000 exceeds max(0x1000)
0 blocks read: ERROR
byte at 0x81000000 (0x0) != byte at 0x82000008 (0x1)
Total of 0 byte(s) were the same
switch to partitions #1, OK
mmc0(part 1) is current device
MMC read: dev # 0, block # 9, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device
mmc - MMC sub system
Usage:
mmc info - display info of the current MMC device
mmc read addr blk# cnt
mmc write addr blk# cnt
mmc erase blk# cnt
mmc rescan
mmc part - lists available partition on current mmc device
mmc dev [dev] [part] - show or set current mmc device [partition]
mmc list - lists available devices
mmc hwpartition [args...] - does hardware partitioning
  arguments (sizes in 512-byte blocks):
    [user [enh start cnt] [wrrel {on|off}]] - sets user data area attributes<CR><LF>
    [gp1|gp2|gp3|gp4 cnt [enh] [wrrel {on|off}]] - general purpose partition<CR><LF>
    [check|set|complete] - mode, complete set partitioning completed<CR><LF>
  WARNING: Partitioning is a write-once setting once it is set to complete.
  Power cycling is required to initialize partitions after set to complete.
mmc setdsr  - set DSR register value

switch to partitions #0, OK
mmc0(part 0) is current device
MMC read: dev # 0, block # 32768, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device
MMC read: dev # 0, block # 36864, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device
MMC read: dev # 0, block # 163840, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> ff41d912 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device
MMC read: dev # 0, block # 204800, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> 7ee1fa43 != 94305232 ** ERROR **
 13.08.2020 08:21:11.695 [TX] - A
 13.08.2020 08:21:11.750 [RX] - switch to partitions #0, OK
mmc0(part 0) is current device
MMC read: dev # 0, block # 205824, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> 8fd90b99 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device
MMC read: dev # 0, block # 212992, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> 5076a4c0 != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device
MMC read: dev # 0, block # 215040, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> 6088b69e != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device
MMC read: dev # 0, block # 221184, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> 8fcedefa != 94305232 ** ERROR **
switch to partitions #0, OK
mmc0(part 0) is current device
MMC read: dev # 0, block # 225280, count 1 ... 1 blocks read: OK
crc32 for 82000008 ... 8200000a ==> 95186191 != 94305232 ** ERROR **
reading apalis_t30/apalis_t30.img
** Unable to read file apalis_t30/apalis_t30.img **
reading apalis_t30/mbr.bin
** Unable to read file apalis_t30/mbr.bin **
reading apalis_t30/boot.vfat
** Unable to read file apalis_t30/boot.vfat **
reading apalis_t30/zImage
** Unable to read file apalis_t30/zImage **
reading apalis_t30/tegra30-apalis-eval.dtb
** Unable to read file apalis_t30/tegra30-apalis-eval.dtb **
reading apalis_t30/root.ext3-100
** Unable to read file apalis_t30/root.ext3-100 **
switch to partitions #0, OK
mmc0(part 0) is current device
MMC write: dev # 0, block # 40960, count 0 ... 0 blocks written: OK
resetting ...

Hi Felix

Perfect that downgrade to Bsp 2.4 worked. Regarding 2.3 as already stated this won’t be possible, since the new eMMC Flash placed on the version 1.1B of the SoM is supported only starting for Bsp 2.4b1.

Best regards,
Jaski

Dear Jaski,

I found a solution.
It is possible to do a downgrade from V2.8.7 direct to V2.3Beta 5.
Important: Use Micro SDHC-Card (UHS-I). Older cards causes the the Problem. “Card did not response to Voltage select.” on Apalis T30 1GB Module due to Micron eMMC.
Prepare the card as know: Flashing Methods in U-Boot
and Toradex Colibri T20 flashing Linux and Win CE - Demo Video

Important:
In V2.3Beta5 Image the file “flash_blk.img” is missing. Copy these file from V2.4 Image. “flash_blk.img” files from other Images does not work.

After that you can follow here:

Kind regards
Felix

Hi Felix

Perfect that the issue is solved. Thanks for your Input.

Best regards,
Jaski