Write to an A1-rated Micro SD card failed
#11
I've recently spent a lot of time debugging this issue, but unfortunately there aren't too many interesting new findings.  Also, spending some time on the #pinebook channel and disussing this issue with other people made it clear what to try first.

Before doing anything else, I wanted to make sure that the kernel doesn't unnecessarily limit the power consumption of microSD cards in the PineBook Pro.  An external regulator, Powtech PT5108, provides power to microSD cards in the PineBook Pro, so the DesignWare MMC IP core is unable to know the max. current that can be supplied to microSD cards.  As a result, mainline kernel tells the cards to limit their power consumption and to operate in low-power mode by setting the XPC bit to zero, while the PT5108 is capable of delivering 500 mA.

A quick-and-dirty kernel patch made the actual current limit known to the MMC driver, as a hardcoded value, which is visible from the kernel messages below, generated by the patched kernel upon inserting a Kingston SDCS2/16GB A1-rated card:

Code:
[  103.714270] MMC DEBUG: voltage: 262144, max_current: 0 (calculated in sd_get_host_max_current())
[  103.714311] MMC DEBUG: max_current: 500 (forced in sd_get_host_max_current())
[  103.714323] MMC DEBUG: max_current: 500 (fetched in mmc_sd_get_cid())
[  103.835082] MMC DEBUG: voltage: 262144, max_current: 0 (calculated in sd_get_host_max_current())
[  103.835122] MMC DEBUG: max_current: 500 (forced in sd_get_host_max_current())
[  103.835134] MMC DEBUG: max_current: 500 (fetched in sd_set_current_limit())
[  103.835145] MMC DEBUG: current_limit: 1 (calculated in sd_set_current_limit())
[  103.837035] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[  104.312146] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 60
[  104.312225] mmc1: new ultra high speed SDR104 SDHC card at address 5048
[  104.314935] mmcblk1: mmc1:5048 SD16G 14.4 GiB
[  104.317123]  mmcblk1: p1 p2

The end result is that the patched kernel configures the microSD card to consume up to 400 mA (translated into a #define, one of the kernel messages above actually means "current_limit: SD_SET_CURRENT_LIMIT_400"), and to operate in normal/high-performance mode (XPC bit is set to one).

All this made no difference to the linear write speed or reliability of the Kingston SDCS2/16GB card in my ISO PineBook Pro.  Surprisingly, the SDCS2/16GB card works just fine in my first-batch ISO PineBook Pro, with or without the above-described kernel patch, while it refuses to work correctly in my ANSI PineBook Pro, while runinng the unpatched kernel.  I haven't tested it in my ANSI PineBook Pro with the patched kernel.

Next, I tested a Kingston SDCE/32GB A1-rated high-endurance microSD card in my ISO PineBook Pro, with the patched kernel.  Unfortunately, the SDCE/32GB still didn't work, and the patched kernel spitted out the following error messages upon inserting the SDCE/32GB card and attempting to write a few GBs of data to the card:

Code:
[   99.236629] MMC DEBUG: voltage: 262144, max_current: 0 (calculated in sd_get_host_max_current())
[   99.236669] MMC DEBUG: max_current: 500 (forced in sd_get_host_max_current())
[   99.236681] MMC DEBUG: max_current: 500 (fetched in mmc_sd_get_cid())
[   99.445953] MMC DEBUG: voltage: 262144, max_current: 0 (calculated in sd_get_host_max_current())
[   99.445994] MMC DEBUG: max_current: 500 (forced in sd_get_host_max_current())
[   99.446006] MMC DEBUG: max_current: 500 (fetched in sd_set_current_limit())
[   99.446017] MMC DEBUG: current_limit: 1 (calculated in sd_set_current_limit())
[   99.447867] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[   99.598273] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 81
[   99.598346] mmc1: new ultra high speed SDR104 SDHC card at address 5048
[   99.600322] mmcblk1: mmc1:5048 SDCHE 29.2 GiB
[   99.611676]  mmcblk1: p1 p2
[  193.624461] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 81
[  195.180212] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[  195.195882] MMC DEBUG: voltage: 262144, max_current: 0 (calculated in sd_get_host_max_current())
[  195.195924] MMC DEBUG: max_current: 500 (forced in sd_get_host_max_current())
[  195.195935] MMC DEBUG: max_current: 500 (fetched in mmc_sd_get_cid())
[  195.227335] MMC DEBUG: voltage: 262144, max_current: 0 (calculated in sd_get_host_max_current())
[  195.227374] MMC DEBUG: max_current: 500 (forced in sd_get_host_max_current())
[  195.227385] MMC DEBUG: max_current: 500 (fetched in sd_set_current_limit())
[  195.227396] MMC DEBUG: current_limit: 1 (calculated in sd_set_current_limit())
[  195.229056] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[  195.653890] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  195.855728] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  196.014459] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  196.203587] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  196.385105] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  196.546324] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 81
[  196.724347] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  197.185697] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  197.186673] blk_update_request: I/O error, dev mmcblk1, sector 304 op 0x1:(WRITE) flags 0x104000 phys_seg 218 prio class 0
[  197.186727] Buffer I/O error on dev mmcblk1, logical block 38, lost async page write
[  197.186777] Buffer I/O error on dev mmcblk1, logical block 39, lost async page write
[  197.186803] Buffer I/O error on dev mmcblk1, logical block 40, lost async page write
[  197.186827] Buffer I/O error on dev mmcblk1, logical block 41, lost async page write
[  197.186850] Buffer I/O error on dev mmcblk1, logical block 42, lost async page write
[  197.186874] Buffer I/O error on dev mmcblk1, logical block 43, lost async page write
[  197.186898] Buffer I/O error on dev mmcblk1, logical block 44, lost async page write
[  197.186921] Buffer I/O error on dev mmcblk1, logical block 45, lost async page write
[  197.186944] Buffer I/O error on dev mmcblk1, logical block 46, lost async page write
[  197.186967] Buffer I/O error on dev mmcblk1, logical block 47, lost async page write
[  197.354040] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  197.565596] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  197.724381] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  197.726631] blk_update_request: I/O error, dev mmcblk1, sector 16499 op 0x1:(WRITE) flags 0x104000 phys_seg 242 prio class 0
[  197.884193] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 82
[  198.045803] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  198.053914] blk_update_request: I/O error, dev mmcblk1, sector 63575 op 0x1:(WRITE) flags 0x104000 phys_seg 246 prio class 0
[  198.060211] blk_update_request: I/O error, dev mmcblk1, sector 67593 op 0x1:(WRITE) flags 0x104000 phys_seg 255 prio class 0
[  198.060908] blk_update_request: I/O error, dev mmcblk1, sector 65587 op 0x1:(WRITE) flags 0x104000 phys_seg 250 prio class 0
[  198.063872] blk_update_request: I/O error, dev mmcblk1, sector 73745 op 0x1:(WRITE) flags 0x104000 phys_seg 254 prio class 0
[  198.066786] blk_update_request: I/O error, dev mmcblk1, sector 78139 op 0x1:(WRITE) flags 0x104000 phys_seg 217 prio class 0
[  198.067360] blk_update_request: I/O error, dev mmcblk1, sector 75843 op 0x1:(WRITE) flags 0x104000 phys_seg 248 prio class 0
[  198.070046] blk_update_request: I/O error, dev mmcblk1, sector 69881 op 0x1:(WRITE) flags 0x104000 phys_seg 225 prio class 0
[  198.074526] blk_update_request: I/O error, dev mmcblk1, sector 86211 op 0x1:(WRITE) flags 0x104000 phys_seg 232 prio class 0
[  198.526315] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 79
[  198.683778] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  198.853444] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  199.003697] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  199.153939] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  199.303839] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 82
[  199.773862] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 81
[  200.024198] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  200.473608] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  200.624300] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 82
[  200.785108] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  200.824370] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[  200.842099] MMC DEBUG: voltage: 262144, max_current: 0 (calculated in sd_get_host_max_current())
[  200.842142] MMC DEBUG: max_current: 500 (forced in sd_get_host_max_current())
[  200.842153] MMC DEBUG: max_current: 500 (fetched in mmc_sd_get_cid())
[  200.871860] MMC DEBUG: voltage: 262144, max_current: 0 (calculated in sd_get_host_max_current())
[  200.871900] MMC DEBUG: max_current: 500 (forced in sd_get_host_max_current())
[  200.871912] MMC DEBUG: max_current: 500 (fetched in sd_set_current_limit())
[  200.871923] MMC DEBUG: current_limit: 1 (calculated in sd_set_current_limit())
[  200.873632] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[  201.023886] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 82
[  201.173949] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  201.346029] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  201.515732] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 83
[  201.675301] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 82
[  201.824261] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 82
[  201.983921] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 80
[  202.506540] mmc_host mmc1: Timeout sending command (cmd 0x200000 arg 0x0 status 0x80200000)
[  205.510728] dwmmc_rockchip fe320000.mmc: Card stuck in wrong state! card_busy_detect status: 0xc00
[  205.510756] mmcblk1: recovery failed!
[  205.511083] print_req_error: 35 callbacks suppressed
[  205.511089] blk_update_request: I/O error, dev mmcblk1, sector 176128 op 0x1:(WRITE) flags 0x104000 phys_seg 256 prio class 0
[  205.511105] buffer_io_error: 10370 callbacks suppressed
[  205.511108] Buffer I/O error on dev mmcblk1, logical block 22016, lost async page write
[  205.511135] Buffer I/O error on dev mmcblk1, logical block 22017, lost async page write
[  205.511143] Buffer I/O error on dev mmcblk1, logical block 22018, lost async page write
[  205.511151] Buffer I/O error on dev mmcblk1, logical block 22019, lost async page write
[  205.511158] Buffer I/O error on dev mmcblk1, logical block 22020, lost async page write
[  205.511166] Buffer I/O error on dev mmcblk1, logical block 22021, lost async page write
[  205.511173] Buffer I/O error on dev mmcblk1, logical block 22022, lost async page write
[  205.511180] Buffer I/O error on dev mmcblk1, logical block 22023, lost async page write
[  205.511188] Buffer I/O error on dev mmcblk1, logical block 22024, lost async page write
[  205.511196] Buffer I/O error on dev mmcblk1, logical block 22025, lost async page write
[  206.010902] dwmmc_rockchip fe320000.mmc: Busy; trying anyway

Despite the fact that setting the cards to operate without unnecessary power limits yielded no visible results, I might implement a kernel patch that properly supplies the current limit of the external regulator to the MMC driver using a Device Tree parameter, etc.  Anyway, that's the right way to configure the microSD cards, instead of unnecessarily forcing them to throttle their power consumption down.

During the testing using my ISO PineBook Pro, I've also somehow managed to get failed writes on the Kingston SDCS/16GB card, which is not A1-rated and is the only card that works correctly in my ANSI PineBook Pro.  So, there's the SDCS/16GB that always works in my ANSI PineBook Pro and occasionally fails in my ISO PineBook Pro, and there's the SDCS2/16GB that never works in my ANSI PineBook Pro and always works in my ISO PineBook Pro.  That's really weird. Sad

The weirdness I've experienced in the failed writes probably means that the root cause of this issue lies much deeper, causing pretty much random incompatibilities between different microSD cards and the MMC devices in PineBook Pros.  The same probably applies to the RockPro64 and, possibly, to some other SBCs.  Such random incompatibilities shouldn't be present at all, at least not in theory.

Another issue I've noticed is that UHS-I microSD cards don't work in the ultra high speed mode when a PineBook Pro is booted from such a microSD card.  Instead, they end up working in the high speed mode.  If the same PineBook Pro is booted from the eMMC module and the same microSD card is inserted later, the card is properly configured to work in the ultra high speed mode.  Here are the related kernel messages when a PineBook Pro is booted from a UHS-I microSD card:

Code:
[    1.811150] dwmmc_rockchip fe310000.mmc: IDMAC supports 32-bit address mode.
[    1.811177] dwmmc_rockchip fe310000.mmc: Using internal DMA controller.
[    1.811188] dwmmc_rockchip fe310000.mmc: Version ID is 270a
[    1.811241] dwmmc_rockchip fe310000.mmc: DW MMC controller at irq 35,32 bit host data width,256 deep fifo
[    1.811585] dwmmc_rockchip fe310000.mmc: allocated mmc-pwrseq
[    1.811595] mmc_host mmc0: card is non-removable.
[    1.811788] dwmmc_rockchip fe320000.mmc: IDMAC supports 32-bit address mode.
[    1.811815] dwmmc_rockchip fe320000.mmc: Using internal DMA controller.
[    1.811824] dwmmc_rockchip fe320000.mmc: Version ID is 270a
[    1.811887] dwmmc_rockchip fe320000.mmc: DW MMC controller at irq 36,32 bit host data width,256 deep fifo
[    1.812276] dwmmc_rockchip fe320000.mmc: Got CD GPIO
[    1.813114] mmc2: CQHCI version 5.10
[    1.825259] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    1.837350] mmc2: SDHCI controller on fe330000.mmc [fe330000.mmc] using ADMA
[    1.888719] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[    1.890432] dwmmc_rockchip fe320000.mmc: All phases bad!
[    1.890443] mmc1: tuning execution failed: -5
[    1.905759] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    1.915319] mmc2: Command Queue Engine enabled
[    1.915352] mmc2: new HS200 MMC card at address 0001
[    1.916050] mmcblk2: mmc2:0001 DA4128 116 GiB
[    1.916201] mmcblk2boot0: mmc2:0001 DA4128 partition 1 4.00 MiB
[    1.916338] mmcblk2boot1: mmc2:0001 DA4128 partition 2 4.00 MiB
[    1.916536] mmcblk2rpmb: mmc2:0001 DA4128 partition 3 16.0 MiB, chardev (236:0)
[    1.917387]  mmcblk2: p1 p2
[    1.938639] mmc_host mmc0: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    1.946331] mmc_host mmc1: Bus speed (slot 0) = 50000000Hz (slot req 50000000Hz, actual 50000000HZ div = 0)
[    1.946439] mmc1: new high speed SDHC card at address 5048
[    1.947409] mmcblk1: mmc1:5048 SD16G 14.4 GiB
[    1.950038]  mmcblk1: p1 p2
[    1.986894] mmc0: queuing unknown CIS tuple 0x80 (2 bytes)
[    1.988751] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
[    1.990367] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
[    1.993145] mmc0: queuing unknown CIS tuple 0x80 (7 bytes)
[    1.996537] mmc0: queuing unknown CIS tuple 0x81 (9 bytes)
[    2.056334] mmc_host mmc0: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[    2.892678] dwmmc_rockchip fe310000.mmc: Successfully tuned phase to 58
[    2.902936] mmc0: new ultra high speed SDR104 SDIO card at address 0001

This is probably just a driver issue.  However, for the sake of completeness, below are the relevant kernel messages produced when the same PineBook Pro is booted from the eMMC module, and the same UHS-I microSD card is inserted later:

Code:
[    1.526999] dwmmc_rockchip fe310000.mmc: IDMAC supports 32-bit address mode.
[    1.527031] dwmmc_rockchip fe310000.mmc: Using internal DMA controller.
[    1.527045] dwmmc_rockchip fe310000.mmc: Version ID is 270a
[    1.527080] dwmmc_rockchip fe320000.mmc: IDMAC supports 32-bit address mode.
[    1.527103] dwmmc_rockchip fe320000.mmc: Using internal DMA controller.
[    1.527104] dwmmc_rockchip fe310000.mmc: DW MMC controller at irq 31,32 bit host data width,256 deep fifo
[    1.527114] dwmmc_rockchip fe320000.mmc: Version ID is 270a
[    1.527152] dwmmc_rockchip fe320000.mmc: DW MMC controller at irq 32,32 bit host data width,256 deep fifo
[    1.527506] dwmmc_rockchip fe310000.mmc: allocated mmc-pwrseq
[    1.527519] mmc_host mmc0: card is non-removable.
[    1.527568] dwmmc_rockchip fe320000.mmc: Got CD GPIO
[    1.529304] mmc2: CQHCI version 5.10
[    1.541402] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    1.553846] mmc2: SDHCI controller on fe330000.mmc [fe330000.mmc] using ADMA
[    1.632659] mmc2: Command Queue Engine enabled
[    1.632686] mmc2: new HS200 MMC card at address 0001
[    1.633442] mmcblk2: mmc2:0001 DA4128 116 GiB
[    1.633667] mmcblk2boot0: mmc2:0001 DA4128 partition 1 4.00 MiB
[    1.633886] mmcblk2boot1: mmc2:0001 DA4128 partition 2 4.00 MiB
[    1.634133] mmcblk2rpmb: mmc2:0001 DA4128 partition 3 16.0 MiB, chardev (236:0)
[    1.635213]  mmcblk2: p1 p2
[    1.651473] mmc_host mmc0: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    1.698673] mmc0: queuing unknown CIS tuple 0x80 (2 bytes)
[    1.700325] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
[    1.702582] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
[    1.706226] mmc0: queuing unknown CIS tuple 0x80 (7 bytes)
[    1.709816] mmc0: queuing unknown CIS tuple 0x81 (9 bytes)
[    1.764339] mmc_host mmc0: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[    2.612109] dwmmc_rockchip fe310000.mmc: Successfully tuned phase to 54
[    2.614812] mmc0: new ultra high speed SDR104 SDIO card at address 0001

[ 1018.017762] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[ 1018.163791] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[ 1018.616252] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 60
[ 1018.616350] mmc1: new ultra high speed SDR104 SDHC card at address 5048
[ 1018.618608] mmcblk1: mmc1:5048 SD16G 14.4 GiB
[ 1018.621034]  mmcblk1: p1 p2

As a side note, forcing the MMC device to not operate in the ultra high speed mode, using the available Device Tree settings, makes the Kingston SDCS2/16GB card work just fine in my ANSI PineBook Pro, for example.  That just adds to the overall level of weirdness.
  Reply
#12
I tried 3 different SD cards I had laying around, all of them are A2:


1) ADATA "High Endurance" A2/V30/U3/XC1 64GB


Code:
[155877.964017] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[155878.361329] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 54
[155878.361389] mmc1: new ultra high speed SDR104 SDXC card at address 59b4
[155878.362737] mmcblk1: mmc1:59b4 SD    58.9 GiB


Code:
❯ sudo dd if=/dev/zero of=/dev/mmcblk1 status=progress iflag=fullblock oflag=direct bs=1M count=1024
1065353216 bytes (1.1 GB, 1016 MiB) copied, 35 s, 30.4 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 35.1562 s, 30.5 MB/s


2) ADATA  A2/V30/U3/XC1 64GB

Code:
[156291.925259] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[156292.603265] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[156292.993629] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 57
[156292.993695] mmc1: new ultra high speed SDR104 SDXC card at address 59b4
[156292.995673] mmcblk1: mmc1:59b4 SD    58.9 GiB


Code:
❯ sudo dd if=/dev/zero of=/dev/mmcblk1 status=progress iflag=fullblock oflag=direct bs=1M count=1024
1071644672 bytes (1.1 GB, 1022 MiB) copied, 34 s, 31.5 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 34.1163 s, 31.5 MB/s


3) SanDisk "Extreme" A2/V30/U3/XC1 256GB

Code:
[156491.253398] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[156491.518350] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[156491.913978] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 60
[156491.914041] mmc1: new ultra high speed SDR104 SDXC card at address aaaa
[156491.915355] mmcblk1: mmc1:aaaa SN256 238 GiB

Code:
❯ sudo dd if=/dev/zero of=/dev/mmcblk1 status=progress iflag=fullblock oflag=direct bs=1M count=1024
1071644672 bytes (1.1 GB, 1022 MiB) copied, 19 s, 56.4 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 19.0605 s, 56.3 MB/s


All of them completed without errors in dmesg. This is with the 5.13.5 kernel on postmarketOS (mainline kernel + a handful of patches from manjaro's kernel to fix some usb-c stuff, nothing more)


Edit:
I found an A1 SD card which worked without errors when dd'ing 1GB to it.

4) TeamGroup Pro A1/V30/U3/XC1 256GB:

Code:
[157288.317875] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[157288.433840] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[157288.706265] dwmmc_rockchip fe320000.mmc: Successfully tuned phase to 63
[157288.706331] mmc1: new ultra high speed SDR104 SDXC card at address 59b4
[157288.707862] mmcblk1: mmc1:59b4 SD    239 GiB

Code:
❯ sudo dd if=/dev/zero of=/dev/mmcblk1 status=progress iflag=fullblock oflag=direct bs=1M count=1024
1058013184 bytes (1.1 GB, 1009 MiB) copied, 30 s, 35.2 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 30.315 s, 35.4 MB/s
  Reply
#13
Thank you very much for testing these microSD cards out!  This just confirms that not all A1-rated cards refuse to work, but it also cannot lead to a conclusion that all A2-rated cards work fine.  Hmm, what a conclusion. Smile

As already noted on the #pinebook IRC channel, I'll create a kernel patch that exports as much data about an SD card as possible, and we'll revisit the testing with that utility under our belt.
  Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Both hinges completely failed phuzy 20 10,408 01-02-2024, 02:03 AM
Last Post: Uturn
  eMMC failed Dendrocalamus64 9 6,809 11-12-2021, 11:08 AM
Last Post: Dendrocalamus64
Question Disassembling PineBook Pro Docking Deck (due to disappeared microSD card) gritibaenz 4 4,293 04-02-2021, 06:45 PM
Last Post: tkudog
  microSD card stuck charlesnorris 7 7,823 11-19-2020, 05:11 AM
Last Post: KC9UDX
  NVME SPI Update not booting SD Card WZ9V 5 6,251 10-18-2020, 08:36 PM
Last Post: wdt
  Upgrade eMMC card - boot problems alpopa 0 2,239 09-16-2020, 12:31 PM
Last Post: alpopa
  PBP not booting screen blank after SD card boot Jakobp 10 13,478 08-18-2020, 08:56 PM
Last Post: trinapicot
  Privacy switches - cutting power to wifi card as400 1 2,731 08-10-2020, 09:48 AM
Last Post: belfastraven
  SD card slot stefan.schumacher 1 2,997 03-28-2020, 04:34 PM
Last Post: zaius
  USB-C HUB: sd card slots and USB ports not usable vfr400racer 2 4,029 12-15-2019, 03:50 AM
Last Post: vfr400racer

Forum Jump:


Users browsing this thread: 1 Guest(s)