我可以将USB读卡器/写卡器连接的SD卡序列号读取为挂载的sda吗?

Ued*_*uki 5 linux sd-card raspberry-pi

在Raspberry pi上,我可以从/sys/block/mmcblk0/device文件夹下的cid文件读取安装在内置SD卡驱动器上的SD卡的序列号。

pi@raspberrypi:~ $ ls /sys/block/mmcblk0/device
block  driver      hwrev   oemid                 scr        type
cid    dsr         manfid  power                 serial     uevent
csd    erase_size  name    preferred_erase_size  ssr
date   fwrev       ocr     rca                   subsystem
Run Code Online (Sandbox Code Playgroud)

但是,对于安装在sda设备上的USB SD卡读写器连接的SD卡,我看不到cid文件。

pi@raspberrypi:~ $ ls /sys/block/sda/device
blacklist                           evt_soft_threshold_reached  rescan
block                               generic                     rev
bsg                                 inquiry                     scsi_device
delete                              iocounterbits               scsi_disk
device_blocked                      iodone_cnt                  scsi_generic
device_busy                         ioerr_cnt                   scsi_level
driver                              iorequest_cnt               state
eh_timeout                          max_sectors                 subsystem
evt_capacity_change_reported        modalias                    timeout
evt_inquiry_change_reported         model                       type
evt_lun_change_reported             power                       uevent
evt_media_change                    queue_depth                 vendor
evt_mode_parameter_change_reported  queue_type                  wwid
Run Code Online (Sandbox Code Playgroud)

有什么方法可以读取安装为sda的 SD 卡序列号吗?欢迎任何建议!

Ral*_* L. 9

前几天我遇到了这个问题(并在搜索中偶然发现了这个问题),看起来答案是这实际上是不可能的

CID 信息存储在 SD 卡上的寄存器中,您只能通过 SPI 访问它(通常)。驱动程序必须向 SD 卡发送特定命令才能读取这些寄存器。

另一方面,当您使用 USB SD 读卡器时,它使用通用的“USB 大容量存储设备”接口 - 因此,当您的 PC 与 USB 读卡器通信时,它 [您的 PC] 甚至不知道它是具体到 SD 卡,它只是将其视为另一个通用 USB 存储设备(如闪存驱动器或其他东西)。

如果您的 USB SD 读卡器有一种可以让您直接与它进行手动通信的模式(例如通过 USB 向其发送自定义命令),那么这种事情远程实现的唯一方法是,但据我所知,这种事情不会不存在。

如果您执意要获取 CID 信息并且不介意使用额外的硬件(~ 10 美元),您可以购买 SD 卡分线板并将其连接到 Arduino 或其他任何设备,然后您就可以访问引脚和您可以编写自己的代码来读取 CID 数据。

感谢这个答案,这就是我的答案所基于的: https: //stackoverflow.com/a/50999034/1576548

如果您有兴趣,可以在此处查看 SD 卡协会的规范(“物理层”):https://www.sdcard.org/downloads/pls/,了解有关如何收集 CID 信息的更多信息。

以及Linux内核的SD卡驱动:https://github.com/torvalds/linux/blob/master/drivers/mmc/core/sd.c