我可以读取与USB卡reader/writer连接的SD卡序列号作为挂载的sda吗?
Can I read SD card serial number connected with USB card reader/writer as mounted sda?
在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
但是,关于USB SD卡连接的SD卡reader/writer挂载在sda设备上,看不到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
有没有办法读取挂载为sda的SD卡序列号?欢迎提出任何建议!
前几天我 运行 遇到了这个问题(在我的搜索中偶然发现了这个问题),看起来答案是 不太可能.
CID信息保存在SD卡的一个寄存器中,只能通过SPI访问(通常)。驱动程序必须向 SD 卡发送特定命令才能读取这些寄存器。
另一方面,当您使用 USB SD 卡 reader 时,它使用通用的“USB 大容量存储设备”接口——所以当您的 PC 与 USB 卡通信时 reader ,它 [您的 PC] 甚至不知道它正在专门与 SD 卡通信,它只是将其视为另一个通用 USB 存储设备(如闪存驱动器或其他东西)。
如果您的 USB SD 卡 reader 具有允许您直接与其通信的模式(例如,通过 USB 向其发送自定义命令),那么这种事情将成为可能的唯一方法, 但 AFAIK 这种东西不存在。
如果您对获取 CID 信息一无所知并且不介意使用额外的硬件(约 10 美元),您可以购买一个 SD 卡分线板并将其连接到 Arduino 或其他任何东西,然后您将拥有访问引脚,您可以编写自己的代码来读取 CID 数据。
此答案的来源,这是我的答案所基于的:
如果您有兴趣,可以在此处查看 SD 卡协会的规范('Physical Layer')https://www.sdcard.org/downloads/pls/,了解有关如何收集 CID 信息的更多信息。
和Linux内核的SD卡驱动:https://github.com/torvalds/linux/blob/master/drivers/mmc/core/sd.c
在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
但是,关于USB SD卡连接的SD卡reader/writer挂载在sda设备上,看不到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
有没有办法读取挂载为sda的SD卡序列号?欢迎提出任何建议!
前几天我 运行 遇到了这个问题(在我的搜索中偶然发现了这个问题),看起来答案是 不太可能.
CID信息保存在SD卡的一个寄存器中,只能通过SPI访问(通常)。驱动程序必须向 SD 卡发送特定命令才能读取这些寄存器。
另一方面,当您使用 USB SD 卡 reader 时,它使用通用的“USB 大容量存储设备”接口——所以当您的 PC 与 USB 卡通信时 reader ,它 [您的 PC] 甚至不知道它正在专门与 SD 卡通信,它只是将其视为另一个通用 USB 存储设备(如闪存驱动器或其他东西)。
如果您的 USB SD 卡 reader 具有允许您直接与其通信的模式(例如,通过 USB 向其发送自定义命令),那么这种事情将成为可能的唯一方法, 但 AFAIK 这种东西不存在。
如果您对获取 CID 信息一无所知并且不介意使用额外的硬件(约 10 美元),您可以购买一个 SD 卡分线板并将其连接到 Arduino 或其他任何东西,然后您将拥有访问引脚,您可以编写自己的代码来读取 CID 数据。
此答案的来源,这是我的答案所基于的:
如果您有兴趣,可以在此处查看 SD 卡协会的规范('Physical Layer')https://www.sdcard.org/downloads/pls/,了解有关如何收集 CID 信息的更多信息。
和Linux内核的SD卡驱动:https://github.com/torvalds/linux/blob/master/drivers/mmc/core/sd.c