SDCard & Associated Pi Tracking
(usdcardlog and cid_decoder.c)
Contents
GNU Autotools configuration files etc.
pi@raspiP3Bplus18:~/usdcard_tools-0.0 $ cat ./configure.ac # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([usdcard_tools], [0.0], [trevor.gowen@blueyonder.co.uk]) #AC_CONFIG_SRCDIR([common/parsel.c]) AC_CONFIG_SRCDIR([config.h.in]) # Platform & System ... AC_CANONICAL_BUILD AC_CANONICAL_HOST AM_INIT_AUTOMAKE([-Wall foreign]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. AC_PROG_RANLIB # Checks for header files. AC_CHECK_HEADERS([stdlib.h string.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_SSIZE_T # Checks for library functions. AC_CONFIG_FILES([Makefile common/Makefile src/Makefile]) AC_OUTPUT ### $Log: configure.ac,v $ ### Revision 1.3 2019/02/05 23:41:45 pi ### SCM Version 0.01 build working here ### ### Revision 1.2 2019/02/05 23:23:13 pi ### Duplicate line removed ### ### Revision 1.1 2019/02/05 23:18:58 pi ### Initial revision ### # # #
pi@raspiP3Bplus18:~/usdcard_tools-0.0 $ cat ./Makefile.am ## Process this file with automake to produce Makefile.in SUBDIRS = common src EXTRA_DIST = scripts ### $Log: Makefile.am,v $ ### Revision 1.1 2019/02/05 22:51:02 pi ### Initial revision ### # #
pi@raspiP3Bplus18:~/usdcard_tools-0.0/common $ cat ./Makefile.am ## Process this file with automake to produce Makefile.in noinst_LIBRARIES = libparsel.a libparsel_a_SOURCES = parsel.h parsel.c ### $Log: Makefile.am,v $ ### Revision 1.1 2019/02/05 23:06:29 pi ### Initial revision ### # # #
pi@raspiP3Bplus18:~/usdcard_tools-0.0/src $ cat ./Makefile.am ## Process this file with automake to produce Makefile.in bin_PROGRAMS = cid_decoder cid_decoder_SOURCES = ../common/rcs_scm.h cid_decoder.c cid_decoder_CPPFLAGS = -I$(top_srcdir)/common cid_decoder_LDADD = ../common/libparsel.a ### $Log: Makefile.am,v $ ### Revision 1.1 2019/02/05 22:57:46 pi ### Initial revision ### # # #
Simple Script
(usdcardlog)
pi@raspiP3Bplus18:~/usdcard_tools-0.0/scripts $ cat usdcardlog #!/bin/bash date echo "CID:" cat /sys/block/mmcblk0/device/cid df / -H uname -a cat /etc/os-release gpio -v gpio readall # $Log: usdcardlog,v $ # Revision 1.1 2019/02/05 22:46:41 pi # Initial revision # # #
Example Output
pi@raspiP3Bplus18:~/usdcard_tools-0.0 $ ./scripts/usdcardlog Wed 13 Feb 16:30:36 UTC 2019 CID: 02544d53413136472225498b4500f7bb Filesystem Size Used Avail Use% Mounted on /dev/root 16G 7.7G 6.9G 54% / Linux raspiP3Bplus18 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)" NAME="Raspbian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" gpio version: 2.46 Copyright (c) 2012-2018 Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY. For details type: gpio -warranty Raspberry Pi Details: Type: Pi 3+, Revision: 03, Memory: 1024MB, Maker: Sony * Device tree is enabled. *--> Raspberry Pi 3 Model B Plus Rev 1.3 * This Raspberry Pi supports user-level GPIO access. +-----+-----+---------+------+---+---Pi 3+--+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT5 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT5 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | ALT0 | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | ALT0 | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | ALT0 | 0 | 23 || 24 | 1 | OUT | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | OUT | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 3+--+---+------+---------+-----+-----+
Self-generated, brief Program Help
(cid_decoder.c)
pi@raspiP4B4-32GbI:~/pi_tools_etc/usdcard_tools-0.0 $ ./src/cid_decoder cid_decoder.c Version 0.01 {Exp}, [12/06/2019], (c) F_Trevor_Gowen <--| Package usdcard_tools_0.0 |--> Usage cid_decoder [Options] Options: -a arg_filename[.arg], -E {Echo command-line arguments}, -LX {Log eXtracted cid (implies -X)}, -oldCID {decode an old CID in rawcid file}, -rawCID s {decode the rawCID string s}, -tag s {TAG the Log filename with string s}, -Q {Quiet - default}, -V {Verbose}, -X {eXecute decode operation}.
Code Snippits
(Structures etc.)
typedef struct { char rawcid[33]; /* 32-char Hex String */ char mid; /* Binary */ char oid[2]; /* ASCII */ char pnm[5]; /* ASCII */ char prv; /* 2xBCD */ uint psn; /* Binary */ char rsvd; /* ???? */ char mdt[2]; /* 3xBCD */ char crc; /* Binary */ } sdcard_cid; sdcard_cid current_cid; /* SD Card block/device strings etc. */ static char MMC_CID[] = "/sys/block/mmcblk0/device/cid"; static char RawcidInfile[] = "rawcid"; char cidlogfile[FN_LEN]; FILE *RawcidInfn,*LogcidOutfn; void init_cid(sdcard_cid *cid) { /* INITialise CID with example (SanDisk 2003) data */ strncpy((*cid).rawcid, "03534453443030383000000000013201", 32); (*cid).mid = 0x03; (*cid).oid[0] = 0x53; (*cid).oid[1] = 0x44; (*cid).pnm[0] = 0x53; (*cid).pnm[1] = 0x44; (*cid).pnm[2] = 0x30; (*cid).pnm[3] = 0x30; (*cid).pnm[4] = 0x38; (*cid).prv = 0x30; (*cid).psn = 0; /* Dummy value */ (*cid).rsvd = 0; /* Dummy value */ (*cid).mdt[0] = 19; /* 2019 */ (*cid).mdt[1] = 2; /* February */ (*cid).crc = 1; /* Dummy value (0) + 1 for the NIU bit */ } void echo_cid_status(sdcard_cid cid) { char a,b; int y; printf("sdcard cid status:\n"); printf("RAWCID %s\n", cid.rawcid); printf("MID 0x%02x\n", cid.mid); printf("OID 0x%02x%2x (%c%c)\n", cid.oid[0], cid.oid[1], cid.oid[0], cid.oid[1]); printf("PNM 0x%02x%2x%2x%2x%2x (%c%c%c%c%c)\n", cid.pnm[0], cid.pnm[1], cid.pnm[2], cid.pnm[3], cid.pnm[4], cid.pnm[0], cid.pnm[1], cid.pnm[2], cid.pnm[3], cid.pnm[4]); a = (cid.prv & 0xf0) / 16; b = (cid.prv & 0x0f); printf("PRV 0x%02x (%1d.%1d)\n", cid.prv, a, b); printf("PSN 0x%08x\n", cid.psn); printf("RSVD 0x%01x\n", cid.rsvd); y = 2000 + cid.mdt[0]; printf("MDT 0x%02x%1x (%1d/%4d)\n", cid.mdt[0], cid.mdt[1], cid.mdt[1], y); printf("CRC+1 0x%02x\n", cid.crc); }
Examples
Externally Acquired Raw CID
pi@raspiP3Bplus18:~/pi_tools_etc/usdcard_tools-0.0 $ ./src/cid_decoder -rawCID 035344534331364780c50a158f013101 -X cid_decoder.c Version 0.01 {Exp}, [23/05/2019], (c) F_Trevor_Gowen <--| Package usdcard_tools_0.0 |--> <cid_decoder.arg> fopen: No such file or directory cid_decoder.arg not found Initialising cid ... grawcid = 035344534331364780c50a158f013101 raspiP3Bplus18 sdcard cid status: RAWCID 035344534331364780c50a158f013101 MID 0x03 OID 0x5344 (SD) PNM 0x5343313647 (SC16G) PRV 0x80 (8.0) PSN 0xc50a158f RSVD 0x0 MDT 0x131 (1/2019) CRC+1 0x01
raspiP3Bplus18
uSDHC card Boot
pi@raspiP3Bplus18:~/usdcard_tools-0.0 $ ./src/cid_decoder -X cid_decoder.c Version 0.01 {Exp}, [12/02/2019], (c) F_Trevor_Gowen <--| Package usdcard_tools_0.0 |--> <cid_decoder.arg> fopen: No such file or directory cid_decoder.arg not found Initialising cid ... Opened rawcid ... 02544d53413136472225498b4500f7bb raspiP3Bplus18 sdcard cid status: RAWCID 02544d53413136472225498b4500f7bb MID 0x02 OID 0x544d (TM) PNM 0x5341313647 (SA16G) PRV 0x22 (2.2) PSN 0x25498b45 RSVD 0x0 MDT 0x0f7 (7/2015) CRC+1 0xbb
USB Boot
(using -tag s option, s = "x-RISCOS")
pi@raspiP4B4-32GbI:~/pi_tools_etc/usdcard_tools-0.0 $ cat raspiP3BplusUSB_x-RISCOS_cid.log raspiP3BplusUSB sdcard cid status: RAWCID 02544d5341303447049c7d74e000995b MID 0x02 OID 0x544d (TM) PNM 0x5341303447 (SA04G) PRV 0x04 (0.4) PSN 0x9c7d74e0 RSVD 0x0 MDT 0x099 (9/2009) CRC+1 0x5b
raspi3Aplus2
pi@raspi3Aplus2:~/usdcard_tools-0.0 $ ./src/cid_decoder -X cid_decoder.c Version 0.01 {Exp}, [12/02/2019], (c) F_Trevor_Gowen <--| Package usdcard_tools_0.0 |--> <cid_decoder.arg> fopen: No such file or directory cid_decoder.arg not found Initialising cid ... Opened rawcid ... 1b534d303030303010148357890102b5 raspi3Aplus2 sdcard cid status: RAWCID 1b534d303030303010148357890102b5 MID 0x1b OID 0x534d (SM) PNM 0x3030303030 (00000) PRV 0x10 (1.0) PSN 0x14835789 RSVD 0x0 MDT 0x102 (2/2016) CRC+1 0xb5
raspiP2BJamesA
(On which the MoinMoin wiki which exports these pages is run)
pi@raspiP2BJamesA:~/usdcard_tools-0.0 $ ./src/cid_decoder -X cid_decoder.c Version 0.01 {Exp}, [12/02/2019], (c) F_Trevor_Gowen <--| Package usdcard_tools_0.0 |--> <cid_decoder.arg> fopen: No such file or directory cid_decoder.arg not found Initialising cid ... Opened rawcid ... 035344534c303847800e66298700e7e5 raspiP2BJamesA sdcard cid status: RAWCID 035344534c303847800e66298700e7e5 MID 0x03 OID 0x5344 (SD) PNM 0x534c303847 (SL08G) PRV 0x80 (8.0) PSN 0x0e662987 RSVD 0x0 MDT 0x0e7 (7/2014) CRC+1 0xe5
raspiP4B4-32GbI
pi@raspiP4B4-32GbI:~/pi_tools_etc/usdcard_tools-0.0 $ ./src/cid_decoder -LX cid_decoder.c Version 0.01 {Exp}, [12/06/2019], (c) F_Trevor_Gowen <--| Package usdcard_tools_0.0 |--> <cid_decoder.arg> fopen: No such file or directory cid_decoder.arg not found Initialising cid ... Logging to ... raspiP4B4-32GbI_cid.log Executing 'cat /sys/block/mmcblk0/device/cid > rawcid' ... Opened rawcid ... 824a544e4361726410218182d900dc00 raspiP4B4-32GbI sdcard cid status: RAWCID 824a544e4361726410218182d900dc00 MID 0x82 OID 0x4a54 (JT) PNM 0x4e43617264 (NCard) PRV 0x10 (1.0) PSN 0x218182d9 RSVD 0x0 MDT 0x0dc (12/2013) CRC+1 0x00
Download a "Snapshot" tarball
NB: This may include current "work-in-progress" that is not yet documented here!
Download usdcard_tools-0.0.tar.gz (2019-06-28 18:33:10, 125.3 KB)