I have a 32GB SD card that isn’t “bad” or dead. I can mount it on my desktop. I formatted it as MS-DOS (FAT32) because that was the format of an 8GB card I have that works fine in two different OpenMV cameras. But the 32GB card never mounts on either camera. Any ideas what the problem might be? I don’t have another 8GB lying around, so I can’t tell if the problem is that MicroPython or OpenMV refuses to work with a card larger than a certain size (perhaps due to some address spacing issue?!)
I read this page (3. Hardware Setup — MicroPython 1.15 documentation) which says SDHC up to 32GB should work. The card is 32GB and has SDHC written on it. It’s class 10 if that matters.
It could be many things. It’s not the card size. Either the card has a difficult to talk to I/O layer and our driver just fails to get block access working or the file system is slightly weird.
Question, I’ve seen it take a while to mount the card on windows when the card is heavily corrupted.
Can you freshly format it?
I’m on Mac, not Windows, but if you’re asking if I can mount the drive on my Mac, yes, it comes up just fine. What about the class 10 status of the card? Do you know that class 10 cards work or do you recommend a different class perhaps? What class 32GB cards do you have at your disposal for testing?
Thanks. Maybe I’ll buy a few cheap ones off eBay and see what works. I’m about to do some testing, but I’m curious how much video recording footage will fit on a given card.
Do you know that class 10 cards work or do you recommend a different class perhaps? What class 32GB cards do you have at your disposal for testing?
Class 10 is not the fastest, UHS/U3 is the fastest. I use Samsung EVO/U3 32GB and 64GB and they both work fine. Try formatting the card with exFAT.
I tried reformatting it as exFAT and it still didn’t work in either camera (M7/H7). I’ll buy another card, but At 32GB, they aren’t so cheap that I want to buy hoards of them in a random search for something that works. I don’t mind that they might or might not work. I just wish it was clear what should work and what specifically shouldn’t work. There doesn’t appear to be any really strict clarity on technology compatibility here. For example, the docs are crystal clear that nothing above 32GB will work because apparently all cards above 32GB are SDXC and that isn’t supported on OpenMV (or MicroPython), only SDHC is will work (according to the docs), but your own comment above says you’ve used a 64GB card, so where does that leave me? Is the issue that some 64GB cards are SDHC and therefore compatible with OpenMV, or is the issue that your particular 64GB card is SDXC, as the docs state all 64GB cards must be, but that OpenMV actually does work with SDXC cards after all, contrary to the docs’ claim that SDXC won’t work and that SDHC is required?
Meanwhile, I’ve speculated as to whether the card’s speed class is the problem, but the response is…fuzzy. You pointed out that you have used faster cards, but you didn’t just say “Yeah, class 10 is definitively physically incompatible so you can’t use that”. It all seems…fuzzy, so I’m kinda shooting in the dark here, buying new equipment at random just sorta kinda “hoping” something will work. It would be nice if there were specific specs on what file system formats do and don’t work and what physical media technologies do and don’t work. Then it would just be known and could be documented accurately.
Anyway, I’m really not trying to complain or criticize, even though I come across that way (duh, sorry). And I’m certainly not complaining that any given technology isn’t supported (for example, I’m not complaining that 64GB isn’t supported or that SDXC isn’t supported or that class 10 isn’t supported; I’ll happily use whatever versions and formats and styles and kinds are officially compatible). I just wish it was all more technically precise what is actually compatible and what isn’t, so that I could go get the right equipment and know I have a compatible set of hardware put together.
Anyway, all your hard work, including time on the forums, is appreciated. kwagyeman tried to coax me into contributing to the codebase a year ago, but since I’m on a Mac and he admitted that building OpenMV or MicroPython is easier on Linux, I couldn’t really help out in that regard and became a mere user instead of a contributor. I wish I could do more for the project. But maybe helping to nail down these specifics in the forums is helpful…a little bit.
For example, the docs are crystal clear that nothing above 32GB
The docs are wrong/outdated, higher capacity SD cards have been supported for years.
but the response is…fuzzy
I use > Samsung EVO/U3 32GB and 64GB > and they both work fine.
My reply can’t be more specific.
EDIT: I see you want me to tell you why that specific card isn’t working ? I have no idea why, as I was trying to say speed class probably has nothing to do with it as the cards I’ve recommended are actually faster. Note that even though these cards support UHS they’re not actually used in UHS mode (which requires lower voltage levels and level shifting). As for the capacity, I’ve tested Samsung EVO cards up 128GB. Here’s a link to the card I use day to day:
I will update the docs to say SXDC are supported now.
Note for video recording we do not have a video fifo onboard. While we can write 25 MB/s to the SD Card the SD Card will still randomly start erasing when you are writing to it and it’s allowed to block for up to 500 ms per the SD Card spec. To be able to write smooth video one needs to support a massive video fifo that can handle 1 second or so of video frames.
Sorry. I didn’t mean to be challenging. It was just trying to nail down the things that weren’t clear to me yet. Thanks to both of you for all the information. I’ll try some other cards and see how it goes.