14 Replies Latest reply on Feb 27, 2015 9:24 AM by Arnold007

    Intel Edison SD specifications?

    Elspin

      I'm not too knowledgeable about the internals of SD card hardware, and I'm wondering where I could find out what the Edison supports? Mine is currently sitting in the full-sized Arduino Breakout, and I'm wondering in terms of:

      Capacity... does it support SD, SDHC, SDXC, or something else entirely?

      Class... does it support class 2,4,10, U1, U2, etc?

       

      I mostly just am looking at what the fastest/highest capacity card is I can get for my Edison to further improve the already fantastic capability of the board. In another thread someone said up to 32gb seems to work, I'm just trying to find out if it can be pushed further and by how much if so

        • 1. Re: Intel Edison SD specifications?
          CMata_Intel

          Hi Elspin

           

          I'm going to investigate more about the supported SD - (classes/capacity/speed). I'm using SD cards :8GB/4GB-SDHC-class4 and they are working fine.

          Could you post the thread that you mentioned above? In the Galileo Datasheet is stated that you can use SD cards up to 32GB of storage. I think it should work on the same way with the Edison but I will investigate more about it and I will post here the information.

           

          Regards;

          CMata

          • 2. Re: Intel Edison SD specifications?
            Elspin

            Thanks for the speedy response! The post where DiegoV_Intel said he believes it worked up to 32GB is here: SD Card Capacity Upper Limit, but did not indicate that it had necessarily been tried above 32GB or that that was the hard limit.

            • 3. Re: Intel Edison SD specifications?
              CMata_Intel

              Hi Elspin

               

              Checking the Edison Compute Module Hardware Guide (Section 4.3), I found the SD Specifications Physical Layer Specification—v3.01

              Searching for more documentation about this version. I found that: 

                   It supports five speed classes: 0, 2, 4, 6 and 10

                   Capacity Memory: SDSC,SDHC and SDXC

               

              I hope this answer your question, take a look at the reference: https://www.sdcard.org/downloads/pls/simplified_specs/archive/part1_301.pdf

               

              Best Regards;

              CMata

              • 4. Re: Intel Edison SD specifications?
                Elspin

                Thanks for the information! I did a lot of searches, but I couldn't find anything containing XC, class, capacity, etc, so I missed that single line that translates to more information in the SD specification. Supporting XC as well as HD is a huge deal for the Edison imo because it opens up the potential for memory over 32 gigabytes, so I'd definitely put that on an advertising sheet! I'll give it a try as soon as I can get my hands on an XC  microsd card.

                • 5. Re: Intel Edison SD specifications?
                  Elspin

                  As far as I can tell this is incorrect and it's caused me to waste some money, if you put a normal sd card (below SDXC) into the edison and run df you can see

                   

                  Filesystem           1K-blocks      Used Available Use% Mounted on

                  /dev/root               475080    464588         0 100% /

                  (..etc)

                  /dev/mmcblk1p1          994928      1328    993600   0% /media/sdcard

                   

                  whereas if you run it with an SDXC (in my case, a 64GB lexr micro sdxc card) it reads nothing. I mean if the specifications say it supports it maybe it's just lacking the drivers for the filesystem SDXC uses but either way it definitely doesn't work as is

                  • 6. Re: Intel Edison SD specifications?
                    tintar

                    I have a Samsung 64GB EVO Micro SDXC Class 10 / UHS-1 in an arduino edison onboard slot, and it works just fine. I'm using ubi/debian, but I can't imagine yocto would omit up to date SD controller driver objects.

                     

                    $ df

                    ...

                    /dev/mmcblk1p1   62489776 24799936  37689840  40% /media/microsd

                     

                    performance is not the best, but it's not bad either:

                     

                    $ sudo hdparm -t /dev/mmcblk1

                    /dev/mmcblk1:

                    Timing buffered disk reads:  64 MB in  3.07 seconds =  20.84 MB/sec

                     

                    (compare: the Edison onboard NAND was getting 90+MB/s reads, which feels better than most eMMC I've seen...!)

                     

                    $ sudo dd count=512 bs=1M if=/dev/zero of=/media/microsd/foo.img

                    512+0 records in

                    512+0 records out

                    536870912 bytes (537 MB) copied, 26.4995 s, 20.3 MB/s

                    • 7. Re: Intel Edison SD specifications?
                      Elspin

                      Then it definitely has to be up to spec I suppose, but what could be the problem? I mean I swapped them back and forth several times and the SD one loaded every time whereas the SDXC one would not. Are there any commands you could recommend using to try and test this problem?

                       

                      also how is ubi/debian compared to yocto? Do all the same edison-specific libraries and cross-compiling tools still work?

                      • 8. Re: Intel Edison SD specifications?
                        tintar

                        I don't use much or any of the IoT / mraa / node / etc. stuff, but it seems like the emutex ubilinux guys have been great, I think most or all of the tools are present, and I've definitely seen people on the forum making progress with ubilinux. (I also simply prefer debian in general, and my purpose for Edison is daily low-power use, rather than baking some type of consumer/retail product...)

                         

                        so there are 2 (maybe 3?) things required for sdxc, right?

                        - sufficient sd controller (which Edison definitely supports sdxc)

                        - driver software (as you mentioned)*

                        - possibly the electrics of the slot and/or between slot+controller?

                         

                        stupid questions (apologies) :

                        - was the 64gb card confirmed working on different hardware?

                        - are you using e.g. Sparkfun or other 3rd-party boards rather than the Intel Arduino board?

                         

                         

                        take a look through dmesg or syslog for any interesting errors?

                         

                        this is what related stuff I get with the 64gb:

                         

                        $ dmesg -T |  grep mmc1

                        [Tue Feb 17 18:07:08 2015] mmc1: no vqmmc regulator found

                        [Tue Feb 17 18:07:08 2015] mmc1: SDHCI controller on PCI [0000:00:01.2] using ADMA

                        [Tue Feb 17 18:07:08 2015] mmc1: SD Status: Invalid Allocation Unit size.

                        [Tue Feb 17 18:07:08 2015] mmc1: new high speed SDXC card at address 0001

                        [Tue Feb 17 18:07:08 2015] mmcblk1: mmc1:0001 00000 59.6 GiB

                         

                         

                         

                        (if you do lspci you'll actually see 3 controller lines. mmc0, I believe, is to the onboard eMMC. there's also an mmc2 which isn't wired to anything (or maybe some of the breakout headers)

                         

                        do /dev/mmcblk1 , /dev/mmcblk1p1 exist? maybe also try taking a look at what's under e.g.

                         

                        $ ls -l /sys/bus/mmc/devices/mmc*\:0001/block/

                        mmcblk0

                        mmcblk1

                         

                        /sys/bus/sdio might also have some useful information.

                        (if you have any error about mmc1 that can be looked into, but if you don't see anything about mmc1 in the first place, that can't be good...)

                         

                         

                        * I remember some hardware/closed-software project, don't recall exactly what it was, but the developers said "hey if you users donate enough money, we will upgrade the driver to sdxc" ... classy.

                        • 9. Re: Intel Edison SD specifications?
                          Elspin

                          In response to your questions:

                          -Nothing I have appears to support sdxc but the edison (ironic gotta say) so I can't confirm it's working, but I literally bought it a couple hours ago. I probably have a thousand devices at work that support it so I'll check there tomorrow I guess to be sure it's not the sd card

                          -I am using the official arduino breakout, no third party devices

                           

                          when I run the command you listed, this happens:

                          root@Quincy:/# dmesg -T | grep mmc1

                          dmesg: invalid option -- 'T'

                          BusyBox v1.22.1 (2014-12-09 18:30:16 CET) multi-call binary.

                          Usage: dmesg [-c] [-n LEVEL] [-s SIZE]

                           

                          so no dice there. When I run the 2nd one I get this:

                          root@Quincy:/# ls -l /sys/bus/mmc/devices/mmc*\:0001/block

                          drwxr-xr-x   20 root     root             0 Jan  1  2000 mmcblk0

                           

                          So that's something. A friend who's much more capable with linux played around with it a bit and he's pretty sure that yocto doesn't seem to support exfat, he couldn't get it to work. It seems like switching to ubilinux is an option because the libraries for gpio can apparently be coerced into compiling. There also appears to be some open-source exfat libaries around but that's getting a bit out of hand

                          • 10. Re: Intel Edison SD specifications?
                            tintar

                            apologies; you can leave off the " -T " all it does is a nice convenience to convert the funny dmesg timestamps into human-readable date/time.


                            simplest things I can think to try:

                            1. dmesg | grep mmc1

                            2. dmesg | grep SD

                            3. test your sdxc card in other devices

                            4. if you can test different sdxc cards in your own Edison

                             

                            at least the node for the sd slot/controller exists and is linked correctly -- i.e. you had success mounting /dev/mmcblk1p1 when it was with a regular SDHC.

                             

                            but... when it's the sdxc, your sysfs only shows mmcblk0 but not mmcblk1. rather certain that means the OS thinks the sd-controller thinks the slot is empty

                             

                            EDIT: forgot to mention: exfat or how the card is partitioned shouldn't be causing problems like this. whether the OS has FS support for exfat or not, the hardware node should show up regardless - missing exfat driver would only mean not being able to mount /dev/mmcblk1p1 but there should still be an underlying /dev/mmcblk1 . /EDIT

                            • 11. Re: Intel Edison SD specifications?
                              Elspin

                              So a couple things:

                              -I tested the card at work, it works fine in a proper SDXC card reader and shows the correct amount of space and writes/reads fine

                              -As for the commands in 1. and 2., I got these responses:


                              root@Quincy:/# dmesg | grep mmc1

                              [    1.629511] mmc1: no vqmmc regulator found

                              [    1.629939] mmc1: SDHCI controller on PCI [0000:00:01.2] using ADMA

                              [    2.148807] mmc1: new high speed SDXC card at address b368

                              [    2.149663] mmcblk1: mmc1:b368       59.6 GiB

                              root@Quincy:/# dmesg | grep SD

                              [    0.000000] SFI: XSDT E64B0, 002C (v1  INTEL INTELFDK)

                              [    0.190942] SDIO bus = 1, name = bcm43xx_clk_vmmc, ref_clock = 26000000, addr =0x401

                              [    0.756625] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

                              [    1.014584] sdhci-pci 0000:00:01.0: SDHCI controller found [8086:1190] (rev 1)

                              [    1.440392] mmc0: SDHCI controller on PCI [0000:00:01.0] using ADMA

                              [    1.608043] sdhci-pci 0000:00:01.2: SDHCI controller found [8086:1190] (rev 1)

                              [    1.629939] mmc1: SDHCI controller on PCI [0000:00:01.2] using ADMA

                              [    1.630129] sdhci-pci 0000:00:01.3: SDHCI controller found [8086:1190] (rev 1)

                              [    1.631387] mmc2: SDHCI controller on PCI [0000:00:01.3] using ADMA

                              [    2.148807] mmc1: new high speed SDXC card at address b368

                              [    2.484590] mmc2: new ultra high speed DDR50 SDIO card at address 0001

                              [    2.719255] systemd[1]: Starting Automount for SDCard.

                              [    2.829154] systemd[1]: Set up automount Automount for SDCard.

                               

                              It honestly appears that it recognizes the SD card seeing as it says that it found an SDXC card and reports its size, but I'm not sure how to go about getting it to read/write to it. It still doesn't show up in df and I can't read/write to it. I tried a mount command and this happened:

                               

                              root@Quincy:/media# mount /dev/mmcblk1 sdxc

                              mount: wrong fs type, bad option, bad superblock on /dev/mmcblk1, missing codepage or helper program, or other error

                               

                              I was told by my more capable friend to try a different command, and this happened:

                               

                              root@Quincy:/media# mount /dev/mmcblk1p1 sdxc

                              mount: unknown filesystem type 'exfat'

                               

                              So it's definitely pointing towards yocto just having no support for exfat, which explains everything. According to the wikipedia page: "exFAT (Extended File Allocation Table) is a Microsoft file system optimized for flash drives.[3] It is proprietary and patented.[2]", so maybe intel/the yocto project didn't include it for legal reasons?

                              • 12. Re: Intel Edison SD specifications?
                                tintar

                                hey, that's great news, sorry to have wasted your time - you did mention in a much earlier post your friend saying about exfat.

                                 

                                cool, then no problem, right? repartition as your FS of choice and then format, done.

                                • 13. Re: Intel Edison SD specifications?
                                  Elspin

                                  So I know everybody hates it when they google a problem and the thread is vague, so I'll leave this to make it perfectly clear:

                                   

                                  Summary: The Edison has the hardware capability to use an SDXC card (any card over 32GB), but not the software capability in the default yocto linux. All SDXC cards are exFat, but it does not have any support for it on yocto (ubilinux appears to have it out of the box). You can still use your SDXC card, you just have to format it to something the Edison can understand (I used FAT32). FAT32 has a lower max file size, but it's pretty high (4GB) for the Edison, at least.

                                   

                                  Some extra details:

                                  CMata_Intel told me the hardware specs, that it could do SDXC from a h/w point of view

                                  tintar showed me how to get some info on what's supported or not and told me that an SDXC was working in ubilinux

                                   

                                  What I used to get my card into FAT32:

                                  I'm sure you could do this on the Edison with fdisk or something but to make it easy, I used a plain old verbatim SDXC card reader on my windows computer and this tool from verbatim: FAT32 tool. Some other people had success with other formatting tools, but none of them worked for me but that one. As for read/write speed on the Edison's SD card and whether it matches the specs on the card, I couldn't get a reading but if I can figure out how to do so I'll update here.

                                  • 14. Re: Intel Edison SD specifications?
                                    Arnold007

                                    Hi!

                                     

                                    The Verbatim tool worked for me.

                                     

                                    Now I can at least see the SD card with Linux and copy file to it with WINSCP.

                                     

                                    I don't know precisely where it's leading to but I feel it's a step toward A good direction...

                                     

                                    Don't give up!