Rio 2 SD Card?

Hello everyone.
I remember seeing a lot of wonderful discussion in the Rio2 announcement thread about SD Cards, but as we received our new shiny Rio this morning (Thank you Andymark for your usual prompt and excellent service), we are left wondering…

…what cards we should buy for the new Rio, and where should we acquire them?

The previous thread is long and in it, there are many different discussions, so I thought it may be neat to tease this question out. If it is too redundant, moderators, please close this.

Anyway, does anyone have any thoughts about which reliable cards we should get, and where we could acquire them?

3 Likes

I’m going to do my best to summarize a few things. There isn’t one right answer here.

This is the diagnostic data from the card that shipped with a RoboRIO 2.0. Some SD Cards support providing this data as part of something known as CMD56 - it is part of the SD specs but it is manufacturer specific as far as what it outputs. The values here can be used to calculate “remaining life” of a card if you know the rest of the specs.

This data came from the Apacer SDSMART tool for the Apacer card that I got in a RoboRIO 2.0:

>>======================================================================<<
                     [Date: 2021/10/11]
                     [Time: 00:53 pm]
< SSD drive #0(E:)>
*------------------------------------------------------------
1. Flash Type                        : Toshiba MLC_16K (15nm)
2. FW Version                        : V82.105
3. Total Power Up Count              : 38
4. Abnormal Power On Count           : 0
5. Average Erase Count               : 2
6. Maximum Erase Count               : 21
7. Spare Block Count                 : 32
8. Initial Bad Block Count           : 7
9. Later Bad Block Count             : 0
*------------------------------------------------------------

You’ll notice a few things. Particularly the one that everyone will potentially freak out about is the Initial Bad Block Count. It should NOT scare you or worry you at all. It’s small. Pretty much all SD Cards will ship with some bad blocks. It’s rare to find any that don’t. It’s when it starts growing that there are concerns but as you can see, there are spare blocks just for that purpose and each one of those blocks will have a healthy lifetime of many writes and erases.

This is the Datasheet for the card based on the part number: https://www.elvac.eu/ipc/download/APACER/datasheet/MicroSDHC3.0_H1-SL_15nm_AP-MSDxxGXA-2XTM_Spec_rev1.2.pdf

You’ll also notice the card that ships with the RoboRIO 2.0 is MLC NAND flash from Toshiba. Toshiba makes memory and supplies it to a lot of companies. That being said - the firmware it provides is for something known as SLC-Lite. That’s the Apacer branding for PSLC (Pseudo-SLC): SLC-lite - Technology - Apacer for Industrial – Leader in industrial SSD and DRAM module

In general, most consumer cards are not SLC (Single Level Cell) NAND but MLC (Multi Level Cell) NAND. There is also TLC - Triple Level Cell and 3D NAND… and if you really want to look at weird stuff go look at Intel’s Optane but you won’t find that in a micro SD card.

MLC means that instead of storing one bit per NAND cell, they will store multiple bits. I need pictures to understand things and this one does a decent job of it:

What you can see is that the voltage level sets the bit values of the NAND cells. We can get PSLC/SLC-Lite by ignoring the second bit and just treating MLC like SLC… but the thing is, it’s not SLC NAND.

Now, that being said - engineering is about compromises and understanding. SLC NAND is expensive. It costs $$$$ money. True 8GB SLC cards from Mouser and Digikey go for $100+ now and they are supply constrained so don’t expect those prices to start falling anytime soon.

SLC NAND is more reliable in terms of operating conditions, write/erase cycles, power failures, and because it’s a premium industrial product the controllers are likely to be better too and provide additional error handling. It’s also a lot more expensive.

So do you REALLY need true SLC flash? Probably not. I suspect most teams don’t even need 4GB of space on the RoboRIO given that we’ve been living with less than 512MB for so long that it just doesn’t matter. It’s highly likely they will be able to make do with PSLC NAND.

So it’s entirely up to the team and what they are willing to spend. The cards shipping with the RIO and much of the lower cost “industrial” pSLC/SLC-Lite type cards will likely be a good compromise.

EDIT: Worth pointing out that I work for a company that recently told a large customer base that our operating system could no longer be booted from SD card storage.

15 Likes

In the PLC world, I like to use the SanDisk Industrial series cards. I’ve never had one fail on me in that application, I’d imagine they would hold up well in a roborio too.

https://www.amazon.com/SanDisk-Industrial-MicroSD-UHS-I-SDSDQAF3-016G/dp/B07CV344WJ

3 Likes

Thank you both. This is the info I was looking for. @marshall , I love that you went into such detail. It is extremely helpful.

3 Likes

Thanks! There is definitely a lot to memory technology. It’s not as simple as it first seems sadly.

Some other things that are important that I didn’t cover:

MLC storage tends to be larger (it’s cheaper and manufacturing is easier). This has the added benefit of providing additional cells for wear/write leveling. It can also be faster because of the way it writes data to the cells. The speed doesn’t seem to matter for the RoboRIO 2.0 from what I can tell - it’s all faster than the older raw NAND.

There is also the matter of the SD Card specs and max size. SDHC, which is what the RoboRIO 2.0 has is technically capped at 32GB max… HOWEVER, that’s the spec and it is based around the FAT32 filesystem. The thing is, most controllers are capable of going larger because they utilize different info from the card. I’m not sure why anyone needs more than 32GB on the RoboRIO 2.0 but it’s certainly possible that it could support up to 2TB (more info on the specs and numbers here: Secure Digital - HandWiki).

Additionally, the new RoboRIO 2.0 with its SD Card has swapped from using JFFS2 to EXT4 as the file system. JFFS2 is meant for raw NAND storage (mostly) and because the 2.0 has an SD Card, it also now has a memory controller. There are pros/cons to the different file systems and you’ll find plenty of Raspberry Pi enthusiasts who will run JFFS2 for stability still. From experience with the Jetson Nano and Xavier NX, EXT4 is plenty stable though.

4 Likes

This is a short intro to what’s happening inside these devices. This hints at why there are initial bad blocks – tiny manufacturing defects.

1 Like

Lucky you, website says the Rio 2 is still out of stock :frowning:

I know how lucky we are, I apologize. I feel bad about starting this thread as I did not want to brag that we actually received one. However, I do think this will ultimately be valuable. The only advice I can give is to add your email to the in-stock email notification list, and when you receive the email, pounce (it seemed like they had them in stock for about 30 hours when we ordered ours before they went out again). That worked for us.

2 Likes

Out of curiosity, how do we program these new RoboRIOs?

Is it download just like we do now? Or do you image a SD card each time? I’m wondering why they didn’t make a partition on the card like FAT32 to just drop code in and go.

Also, are the SD cards mounted read only when running in the Rio? I know that is done on WpiLibPi to help save SD cards from unfortunate power downs during writes… (and helps extend the life of the card)

1 Like

No change to how software is deployed. The only difference is to imaging–the SD card can be imaged outside the Rio, instead of requiring to cable up to the Rio to reimage.

No, they are not.

2 Likes

I’m going to answer for completeness but first off - the beta is open to anyone to join this year and I think a lot more teams should be joining. You might not have a RoboRIO 2.0 (yet) or you might not be buying one but that doesn’t stop you from joining the beta and being able to read the discussions and use the RoboRIO 1.0 to do some community good.

Now with that bit said, I don’t work for NI. I know as much as anyone else in the beta group and nothing I say should be taken as gospel and a point of truth for how this will work in the future. It’s purely based on the beta and how it works now.

As of right now, we are using Etcher (or dd) to write an image to the card and then using the normal RoboRIO tool to do the configuration process for the Team number. I’m guessing the desire is to have teams keep using the RoboRIO imaging tool once the process has been worked out - it’s a beta - there are bugs and they are working to resolve them.

The card is not mounted read only. Mounting it read only wouldn’t do a lot to extend the life of the card in my experience but YMMV. These cards seem to last for ages with minimal writes/erases in systems like this. In cameras and cell phones… very different.

As for why there isn’t a FAT32 partition on the card… I don’t know because I don’t work for NI… but I, personally, don’t think teams should be removing and re-inserting tiny SD cards in the heat of competition to try and program the robot. Leave it in, put some tape over it, and then program it like you normally would.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.