M5Paper SD Card Issues



  • @veryalien what size SD card did you use? I have a 32gb that failed and the 16gb that I have floating around seems to be toast.



  • @kevindtimm Up to 16GB should work. I don't know why there is a relatively low SD card limit in the M5Stack hardware (all models). It might be a limit with the ESP32 itself, but I don't know.
    My SD card is a 16GB SanDisk Ultra. It was a random selection from my 16GB cards.



  • @veryalien I have an amazon order of 5 new 16gb cards coming tomorrow. Crossing my fingers.



  • I haven't had any problems with SD cards in the M5Paper, I have been using Sandisk Ultra cards 8-16gb. I think the max sd size for esp32 should be 32gb, make sure to format to fat32, and make sure the font or jpg file are in the root of the device. Perhaps it is also possible to use larger exfat formatted cards as stated in this forum post https://www.esp32.com/viewtopic.php?t=14492 I haven't tried this myself.



  • I still wait my M5Paper, so I can't confirm my experience on it.

    But, I have no problems with Samsung 128GB Evo uSD on Odroid-Go(other esp32 devboard) using example from esp-idf sdk.

    Maybe 16-32Gb limits only in Arduino library?



  • @lukasmaximus I'd like to know why all the M5Stack cores (and the Atom TF card) show 16GB as the maximum SD card size. The ATOM GPS Development Kit doesn't show any details for the TF/SD max card size at all, probably 16GB!
    I did some research on the net, and I think cards formatted to FAT32 at least up to 32GB 'should' be ok.
    I vaguely remember a m5stack post about one of the camera boards where there was a table of compatible and incompatible sd cards. I didn't really understand why some of them worked or didn't work, perhaps transfer speed for video data?
    Actually it was here on the here and that's not an ESP32.
    Perhaps 16GB is listed as the 'maximum' as this will definately work? Anything above that might have some issues, so 16GB should be the safe option.
    Depending on the hardware in the cores, it might be an issue with the SPI SD card slot controller, I'm not sure.
    I've 'successfully' tested a 64GB card before, reformatted to FAT32 and not exfat.
    (I also used 64GB cards formatted like that for a couple of my raspberry pi boards.)
    But I've never tried storing more than a few gigabytes on any system anyway. Even if you were logging data like crazy for a long time, what would you really do with it all?
    FAT32 isn't limited to 32GB, it'll work up to 2TB with single files max. 4GB. Exfat is the factory default above 32GB because it's more suited to larger capacity cards and the SD card controller has to understand exfat format (I think?).
    Can anyone else confirm any of the above as working and good information?
    Sorry if any of it turns out to be rubbish!



  • @veryalien I received my 16gb cards yesterday and they worked :)
    It's rather odd that I have to restart the test app after each insertion/removal to get it to work but they do work.
    Note too that you have to use the CS value (of 4) for SD.begin() to work, too bad this isn't documented in the examples (see SD_Test.ino in arduino IDE)

    Things are better now, but I can say that 16gb is a ridiculously low value for storage on a 2020 device :(

    Now I have to figure out how to implement the home automation bit -> it sure would be nice to connect to my alexa skills and go from there.



  • @kevindtimm I'm glad you've got the SD card working.
    You actually have all the low-level.M5Paper hardware information closer than you think. On the back of all cores there's a colourful sticker. It's not just a pretty diagram. It's got just about all of the hardware details that you might need. If you look carefully at the list of pins for the SD card you'll find CS on pin 4!



  • @veryalien I saw all that information on the back but, when I couldn't get the card to read, I wasn't sure how much of it I could believe. Now that the card works I see how to use that info.



  • @veryalien @kevindtimm I'm fairly certain the issues you were facing with SD cards are simply caused by the higher capacity.

    Officially, the ESP32 supports SD/SDHC/SDXC cards, however there are numerous reports about SDXC cards often not working properly. As pretty much all high-capacity (32GB and above) cards you can buy today are SDXC, I'm thinking this is the issue at the core. My M5Paper works perfectly with a number of SDHC cards I have lying around, but haven't tested with a larger card yet.

    The M5Paper factory test sample is also limited to FAT/FAT32 file systems. It has nothing to do with the SD controller - that is purely just a block device controller, and has no idea about the file system on the storage device. It literally just gives block level access to the storage.

    In theory, these MCUs have no actual hardware limitations on the size of SD cards they can read. However, again, the only supported file system for SD cards by default is FAT/FAT32, which does impose a file system limit - 32GB. Most operating systems will in fact by default format your SD cards above 16GB (some above 8GB) to exFAT, and many cards come formatted exFAT from the factory.

    On the other hand, you've managed to get your M5Paper working properly, which is good :)



  • @fonix232 I've now 'successfully' used a 128GB SD Card (SanDisk Ultra) formatted as FAT32 with the M5Paper.
    I haven't tried writing files using the M5Paper, but I can read text files and jpg files using the factorytest without any problems.

    0_1611255703227_IMG_20210121_200122.jpg



  • Hi guys

    I've found that the SD card only seems to be read when it already is inserted when M5Paper is booted / reseted. Or in other words, if M5Paper already is running when I insert the SD card it is not read and going to the Factory Test Test screen returns an SD card failed. On the other hand when the SD card has been recognised and I remove it and then go to the Factory Test Test screen the SD card still passes the test.

    Which leads me to my question. In the M5Paper schematic the SD card detect line is connected to GPIO34 and I already verified that reading GPIO34 actually reflects whether an SD card has been inserted or not. Has anyone already tried to use this information?

    Thanks
    Felix