背景
我有两张外观相同的 2GB microSD 卡,均标有“SD-C02G JAPAN”,并在“2GB microSD”徽标下。
我的问题是,除了旧设备之外,我无法在任何设备上读取其中之一 诺基亚 5310“随心音乐”。手机快要死了,我的意思是它很难操作(按键功能失调,显示疯狂),但它可以读/写卡的事实让我相信卡没有损坏(无论这意味着什么)。
(我愿意相信这张卡已经死了,然后把它扔进垃圾桶,但随后我将不得不忍受这样的问题:为什么旧的诺基亚仍然可以读取它?)
我还应该提到的是,该卡之前可能已经通过诺基亚手机中的某些技术进行了加密(不是同一台机器,而是同一型号的另一块,现在也已失效。)。 (“可能”,因为房子里有更多的卡,而且我知道其中一张已被加密,并且由于所有其他工作都在各处,我认为就是这张)。
方法/输出
现在我用这两张卡尝试了其他方法(我将主要描述“坏”卡行为):
(A) 两部不同的 Android 手机,均显示卡根本未插入,因此不提供格式化选项
(B) 一台装有 Ubuntu 12.04 LTS(内核 3.2.0-37-generic,x86_64)的电脑,使用小型金士顿 USB 棒大小的 microSD 读卡器
一台装有 Debian Wheezy(内核 3.0.0.1-amd64)的笔记本电脑,使用
(C)与(B)相同的方法; lsusb 告诉我:
Bus 001 Device 005: ID 14cd:121c Super Top microSD card reader
(D) 内置,即 PCI SD 读卡器(借助 microSD 转 SD 适配器,因为读卡器缺乏足够小的插槽); lspci 告诉我:
15:00.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 21)
(A) 没有给我任何有用的信息,据我所知,(B) 和 (C) 的行为相同。因此我将(C)和(D)与“好”和“坏”卡进行比较:
mkdosfs
对于方法(C)和“坏”卡,mkdosfs 说/dev/sdb: No medium found
。我没有尝试用方法(D);我发现它毫无意义,因为设备文件根本不存在。而且我没有尝试使用“好”卡,因为我不想丢失数据......
磁盘驱动器
当“坏”卡被安装时,(C)
sudo fdisk -l /dev/sdb
或(D)sudo fdisk -l /dev/mmcblk0
不返回任何内容;在后一种情况下 /dev/mmcblk0 不存在。对于“好”卡,在卡自动安装之后,两个输出都符合预期。
内核日志
方法(C)和“坏”卡:
usb 1-1: new high speed USB device number 7 using ehci_hcd usb 1-1: New USB device found, idVendor=14cd, idProduct=121c usb 1-1: New USB device strings: Mfr=1, Product=3, SerialNumber=2 usb 1-1: Product: Mass Storage Device usb 1-1: Manufacturer: Generic usb 1-1: SerialNumber: 812320090519 scsi9 : usb-storage 1-1:1.0 scsi 9:0:0:0: Direct-Access USB Mass Storage Device PQ: 0 ANSI: 0 CCS sd 9:0:0:0: Attached scsi generic sg2 type 0 sd 9:0:0:0: [sdb] Attached SCSI removable disk
方法(C)和“好”卡:
usb 1-1: new high speed USB device number 8 using ehci_hcd usb 1-1: New USB device found, idVendor=14cd, idProduct=121c usb 1-1: New USB device strings: Mfr=1, Product=3, SerialNumber=2 usb 1-1: Product: Mass Storage Device usb 1-1: Manufacturer: Generic usb 1-1: SerialNumber: 812320090519 scsi10 : usb-storage 1-1:1.0 scsi 10:0:0:0: Direct-Access USB Mass Storage Device PQ: 0 ANSI: 0 CCS sd 10:0:0:0: Attached scsi generic sg2 type 0 sd 10:0:0:0: [sdb] 3842048 512-byte logical blocks: (1.96 GB/1.83 GiB) sd 10:0:0:0: [sdb] Write Protect is off sd 10:0:0:0: [sdb] Mode Sense: 03 00 00 00 sd 10:0:0:0: [sdb] No Caching mode page present sd 10:0:0:0: [sdb] Assuming drive cache: write through sd 10:0:0:0: [sdb] No Caching mode page present sd 10:0:0:0: [sdb] Assuming drive cache: write through sdb: sd 10:0:0:0: [sdb] No Caching mode page present sd 10:0:0:0: [sdb] Assuming drive cache: write through sd 10:0:0:0: [sdb] Attached SCSI removable disk FAT-fs (sdb): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
方法(D)和“坏”卡:
mmc0: error -110 whilst initialising SD card [...10 secs later...] mmc0: Timeout waiting for hardware interrupt. sdhci: =========== REGISTER DUMP (mmc0)=========== sdhci: Sys addr: 0x00000000 | Version: 0x00000400 sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000 sdhci: Argument: 0x00000000 | Trn mode: 0x00000000 sdhci: Present: 0x01ff0001 | Host ctl: 0x00000001 sdhci: Power: 0x00000000 | Blk gap: 0x00000000 sdhci: Wake-up: 0x00000000 | Clock: 0x00000000 sdhci: Timeout: 0x00000009 | Int stat: 0x00000000 sdhci: Int enab: 0x00ff00c3 | Sig enab: 0x00ff00c3 sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000 sdhci: Caps: 0x01e021a1 | Caps_1: 0x00000000 sdhci: Cmd: 0x00000102 | Max curr: 0x00000040 sdhci: Host ctl2: 0x00000000 sdhci: =========================================== mmc0: Got command interrupt 0x00030000 even though no command operation was in progress. sdhci: =========== REGISTER DUMP (mmc0)=========== sdhci: Sys addr: 0x00000000 | Version: 0x00000400 sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000 sdhci: Argument: 0x00000000 | Trn mode: 0x00000000 sdhci: Present: 0x01ff0000 | Host ctl: 0x00000001 sdhci: Power: 0x00000000 | Blk gap: 0x00000000 sdhci: Wake-up: 0x00000000 | Clock: 0x00000000 sdhci: Timeout: 0x00000009 | Int stat: 0x00000000 sdhci: Int enab: 0x00ff00c3 | Sig enab: 0x00ff00c3 sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000 sdhci: Caps: 0x01e021a1 | Caps_1: 0x00000000 sdhci: Cmd: 0x00000102 | Max curr: 0x00000040 sdhci: Host ctl2: 0x00000000 sdhci: ===========================================
该过程重复 4 次(包括 10 秒延迟)。
方法(D)和“好”卡:
mmc0: new high speed SD card at address ef87 mmcblk0: mmc0:ef87 SD02G 1.83 GiB mmcblk0: FAT-fs (mmcblk0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
问题
谁能解释一下这张卡有什么问题吗?或者至少 kern.log 显示了什么?
加密会损坏卡吗?如果是这样,为什么我不能简单地重新格式化它? (我同意爆破内容。)
或者,您建议其他哪些调试方法?
答案1
简短回答
该卡受密码保护。 (@derobert 的猜测是正确的。)并且内核模块不提供对此的有用指针。
长话短说:
我对此表示怀疑,但我不知道这是 SD 特定的硬件功能;我认为诺基亚只是对分区进行了加密,我可以通过类似的操作来解决这个问题mkdosfs /dev/sdb
。
太糟糕了:
看来当前的 Linux 模块广泛不支持此功能(甚至没有达到给出有用错误的程度)。想必这也适用于提到的 Android
电话拒绝格式化卡和删除密码。您可以删除密码,但您需要知道旧密码,或者格式化卡,但这不会删除密码
所以也许其他固件可以选择完全擦除它,但这是另一个论坛的另一个问题。
有趣的背景说明:
当我正在收集上述数据时,我的老人(电话/卡的用户,45 年出生)采取了老式方法,用布和乙醇清洁“死机”手机,修复了它!
这个被魔法封印的计算机驱动的小玩意年龄:0 我爸爸:1 ;-D
重点是我现在可以验证密码是否已设置(并与“好”卡进行比较)。谁以及如何做到的,仍将是一个谜。
答案2
我在使用 MicroSD 卡方面有很多不好的经历。他们似乎非常敏感。我有一些可以在 Navigon 路由设备中读取的。但在我的 Thinkpad X40 内置读卡器(带有 SD 卡至 microSD 适配器)中却没有。
我从未尝试过(但我应该)清洁卡的触点。也许这有帮助。我认为至少有一个接触点接触不良。该卡[sdb] Attached SCSI removable disk
至少以通用方式被识别( )。我假设您在 中没有更多条目/proc/partitions
,是吗?
如果你搜索一下,mmc error 110
你会得到很多关于这个问题的讨论。找不到解决方案。但也许您可以再次朝这个方向搜索并在此处发布您的结果。