Comment puis-je intentionnellement casser / corrompre un secteur sur une carte SD?

142

J'ai besoin de tester la résilience de certains codes en lecture / écriture pour du matériel embarqué. Comment pourrais-je sacrifier quelques cartes SD et casser plusieurs secteurs connus pour une étude contrôlée?

La seule chose à laquelle je peux penser, c’est d’écraser un seul secteur quelques millions de fois. Je me demande si un script Linux badblocks peut être créé pour exécuter son test destructif sur un seul secteur à plusieurs reprises pendant plusieurs heures.

Gabe Krause
la source
20
Pouvez-vous changer le pilote SD de bas niveau pour faire croire qu'il y a un blocage, ou est-ce hors de question?
3
@ MarkYisri, je ne pense pas que le pilote soit très accessible. Quel que soit le pilote utilisé, il est ultra-rudimentaire pour optimiser l’allocation de mémoire au reste du microprogramme. En outre, si cela était possible, ce serait probablement au-delà de mes capacités.
Gabe Krause
3
Pouvez-vous construire un émulateur de carte SD? Ce n'est pas le projet le plus simple, remarquez.
user20574
11
Étant donné l’objectif visé, vous pouvez acheter des cartes SD d’occasion pour un prix modique et vous pouvez facilement en obtenir une qui est défectueuse, ou mettre une annonce "à la recherche de ..." pour rechercher spécifiquement les cartes défectueuses. Ou recherchez sur eBay des cartes défectueuses. Ensuite, vous testez la carte et vous connaîtrez la position des zones défectueuses.
FarO
28
Demandez à n'importe quel photographe professionnel. Ils auront sûrement une pile de cartes SD incomplètes.
J ...

Réponses:

168

Une approche alternative qui peut être utile.

Si votre code fonctionne sous Linux, vous pouvez peut-être le tester avec un périphérique logique "défectueux". dmsetuppeut créer des périphériques qui renvoient des erreurs d'E / S. Il suffit de construire votre appareil en utilisant erroret / ou flakeycible. De man 8 dmsetup:

error
Erreurs toutes les E / S qui vont à cette zone. Utile pour tester ou pour créer des appareils avec des trous.

flakey
Crée un mappage similaire à la linearcible mais présente un comportement non fiable périodiquement. Utile pour simuler les périphériques défaillants lors des tests.

Remarque: flakeyl'utilisation de la cible est documentée ici . Exemple de base ici .

Pour autant que je sache, une erreur d’entrée / sortie sera immédiatement signalée. C’est donc différent du comportement réel de la carte SD dans lequel vous pouvez vous attendre à un délai, à un blocage, etc. Néanmoins, je pense que cette approche peut être utile dans certains cas, du moins pour une exécution rapide. test préliminaire ou si.

Kamil Maciorowski
la source
34
J'apprécie cette pensée originale! Nous interfacons au niveau des blocs avec le SD via une puce Atmel à 80 MHz et aucun système d'exploitation réel.
Gabe Krause
1
@GabeKrause Dans ce cas, l'utilité de cette réponse dépend du degré de similitude entre l'API de périphérique bloc Linux et l'API de votre pilote de périphérique intégré.
Qsigma
1
dmsetupcommande permettant de configurer un errorpériphérique qui renvoie toujours des erreurs de lecture: stackoverflow.com/questions/1870696/…
Peter Cordes
1
Je conviens que cela semble être une meilleure solution. Tout d'abord, vous pouvez répliquer sur n'importe quel matériel. Et aussi, vous pouvez simuler les différents modes d'erreur. Par exemple, j'ai un lecteur flash USB de 16 Go qui fonctionne très bien. Après un certain temps, une zone particulière commence à renvoyer des données erronées. Il n'y a aucune erreur de FS d'aucune sorte. Vous lisez le fichier mais le contenu est différent. Certains secteurs sont évidemment instables. Mais on ne peut pas savoir à l'avance comment se comportera un appareil particulier.
akostadinov
75

Ce gars a piraté le microcontrôleur à l'intérieur des cartes SD utilisées pour marquer les blocs défectueux: https://www.bunniestudios.com/blog/?p=3554

Vous pourrez peut-être faire la même chose et marquer arbitrairement des blocs comme défectueux.

Aujourd’hui, au Chaos Computer Congress (30C3), xobs et moi-même avons révélé qu’une carte SD contenait des vulnérabilités permettant l’exécution arbitraire de code - sur la carte mémoire elle-même. Du côté obscur, l’exécution de code sur la carte mémoire active une classe d’attaques MITM (homme du milieu), où la carte semble se comporter dans un sens, mais fait en réalité autre chose. D'un autre côté, il offre également la possibilité aux passionnés de matériel d'accéder à une source très économique et omniprésente de microcontrôleurs.

.

Ces algorithmes sont trop compliqués et trop spécifiques à un périphérique pour être exécutés au niveau de l'application ou du système d'exploitation. Ainsi, chaque disque de mémoire flash est livré avec un microcontrôleur assez puissant pour exécuter un ensemble personnalisé d'algorithmes d'abstraction de disque. Même la minuscule carte microSD contient non pas une, mais au moins deux puces - un contrôleur et au moins une puce flash (les cartes haute densité empilent plusieurs matrices flash).

.

Le microcontrôleur intégré est généralement un processeur 8051 ou ARM fortement modifié. Dans les implémentations modernes, le microcontrôleur atteindra des niveaux de performance de 100 MHz et disposera de plusieurs accélérateurs matériels sur puce. Étonnamment, le coût d’ajout de ces contrôleurs à l’appareil est probablement de l’ordre de 0,15 à 0,30 USD, en particulier pour les entreprises capables de fabriquer à la fois la mémoire flash et les contrôleurs d’une même unité. Il est probablement moins coûteux d’ajouter ces microcontrôleurs que de tester et caractériser chaque puce de mémoire flash, ce qui explique pourquoi les périphériques flash gérés peuvent être moins chers par bit que les puces flash brutes, malgré l’inclusion d’un microcontrôleur.

.

Le point crucial est qu’un mécanisme de chargement et de mise à jour du microprogramme est pratiquement obligatoire, en particulier pour les contrôleurs tiers. Les utilisateurs finaux sont rarement exposés à ce processus car tout se passe en usine, mais cela ne rend pas le mécanisme moins réel. Dans mes explorations des marchés de l'électronique en Chine, j'ai vu des commerçants graver des micrologiciels sur des cartes qui «étendent» la capacité de la carte. En d'autres termes, ils chargeaient un micrologiciel indiquant que la capacité d'une carte était bien plus grande espace de stockage disponible réel. Le fait que cela soit possible sur le point de vente signifie très probablement que le mécanisme de mise à jour n'est pas sécurisé.

Dans notre exposé de 30C3, nous rapportons nos résultats en explorant une marque de microcontrôleur particulière, à savoir Appotech et ses offres AX211 et AX215. Nous découvrons une simple séquence de «knock» transmise via des commandes réservées au fabricant (à savoir CMD63, suivies de «A», «P», «P», «O») qui placent le contrôleur dans un mode de chargement de microprogramme. À ce stade, la carte acceptera les 512 octets suivants et l'exécutera en tant que code.

FarO
la source
10
De toutes les réponses, celle-ci est probablement la plus proche de ce que le PO demandait réellement.
Cort Ammon
11
C'était une lecture fantastique!
Gabe Krause
@Twisty a copié certaines des parties pertinentes.
FarO
2
Je vais dans le monde des architectures de cartes SD.
Tejas Kale
38

Cela ne fonctionne généralement pas, car les cartes SD (ou eMMC) les plus récentes utilisent un nivellement d'usure statique et dynamique, ce qui signifie qu'un contrôleur intelligent interprète votre instruction d'écriture et la mappe sur l'un des secteurs flash les moins utilisés.

La seule chose que vous puissiez faire est d’essayer de contacter vos fournisseurs et de demander leur fiche technique; il peut y avoir des moyens (spécifiques au fournisseur) de récupérer l'état de leur algorithme de mise à niveau. Cela vous permettrait potentiellement d'interroger l'état / l'utilisation du flash sous-jacent. Ou vous pourriez être malchanceux et cela pourrait ne pas exister.

Si votre objectif est réellement de détruire le flash, tout ce que vous pouvez faire est d'exécuter des cycles de lecture et d'écriture massifs et de vérifier en permanence que les données que vous lisez sont toujours cohérentes. Par exemple, créez deux fichiers volumineux, stockez leurs sommes de contrôle et lisez-les / écrivez-les afin de vérifier leur somme de contrôle. Plus le flash est grand, plus ce processus prendra longtemps.

amo-ej1
la source
2
Cela ne fonctionnera-t-il pas encore si la carte SD est complètement remplie de données, de sorte qu'elle ne puisse pas remapper beaucoup? Je ne pense pas qu'ils ont beaucoup de secteurs cachés de rechange.
Ruslan
2
@Ruslan L'appareil n'a pas besoin de savoir si un secteur est rempli de quelque chose. Il suffit de connaître le contenu des secteurs à livrer sur demande et des secteurs à écrire sur demande. Et puis, il peut y avoir une couche d'abstraction en place qui l'oblige à utiliser une autre mémoire physique pour représenter ces secteurs suivant un algorithme non divulgué ... - Et "plein" signifie simplement "seuil pour les blocs remplissables de manière cumulée", bien sûr.
Alexander Kosubek
6
@Ruslan: Même si tout le périphérique contient des données, le traitement anti-usure peut toujours être efficace: par exemple, si le secteur A a été écrit une fois, et que le secteur B a été écrit 1 000 fois, puis, une autre écriture entre pour secteur B, la carte peut échanger les données entre les deux secteurs, de sorte que le secteur A contienne les données du secteur B (et sera probablement écrasé beaucoup plus de fois - mais ce n’est pas grave, car elle est fraîche), et le secteur B contiendra les données du secteur A (qui j'espère ne pas beaucoup changer). De toute évidence, l'appareil doit également stocker la cartographie du secteur dans lequel il est stocké.
psmears le
2
@ GabeKrause Oui, c'est la nature de la bête. Au niveau le plus bas, vous avez des puces nand ou ni (actuellement, tout utilise nand), et il y a un contrôleur intelligent devant la puce nand qui termine le bus (par exemple, usb pour une clé usb ou mmc pour une carte sd ), et cette puce est responsable de la cartographie / usure nivellement, etc, il éloigne le flash loin de vous. Si vous utilisiez nand sur Linux intégré, voici ce que feraient par exemple les ubifs.
amo-ej1
2
Les cartes SD ont un microcontrôleur qui implémente une "couche de traduction Flash" - les requêtes de blocs sont traduites par ce microcontrôleur en commandes NAND brutes. Certaines cartes SD ont des commandes cachées pour changer / mettre à jour le micrologiciel du MCU et des efforts d’ingénierie inverse sont même déployés. La plupart des périphériques de stockage flash autres que les NAND bruts (qui peuvent parfois apparaître comme de nombreux routeurs domestiques) sont probablement "surapprovisionnés" - ce qui signifie que votre carte SD de 1 Go dispose probablement d'un espace de 1024 Mo + 128 Mo brut, pour couvrir le niveau d'usure lorsqu'il est plein. et aussi secteur-épargnant pour mauvaises pages flash.
LawrenceC
31

Vous pouvez augmenter l'usure du transistor en augmentant la température de fonctionnement. Utilisez des cycles d'écriture-effacement sur une puce chauffée (70-120 ° C); il va porter plus vite.

Pavlus
la source
18
Une température de stockage excessive est également dommageable. Il peut donc être plus pratique de "cuire" la puce à 120 ° C (voire plus) pendant un certain temps, puis de rechercher les défauts éventuels.
Dmitry Grigoryev
2
Une légère surtension sur l'alimentation de la carte pourrait également être possible et nécessiterait de même des expériences.
Chris H
Une sous-tension peut également causer différents types de défauts, tels que des blocages du contrôleur.
user20574 le
17

Préface: Cette option nécessite une programmation supplémentaire et des modifications matérielles, mais elle permettrait des lectures contrôlées transparentes pour l'hôte.

Une carte SD a plusieurs options d'E / S, mais elle peut être contrôlée via SPI. Si vous deviez prendre une carte SD et la modifier afin de pouvoir relier les broches à un microcontrôleur (tel qu’un Arduino), l’Arduino imiterait la carte SD et resterait transparent pour le périphérique qui la lisait. Votre code sur le microcontrôleur peut à dessein renvoyer des données incorrectes en cas de besoin. En outre, vous pouvez installer une carte SD sur le microcontrôleur afin que les lectures puissent passer à travers le microcontrôleur sur la carte SD afin de permettre des tests de plusieurs gigaoctets.

Eric Johnson
la source
3
La plupart des appareils à haute vitesse (y compris les lecteurs de carte PC) refuseront tout simplement de travailler avec une carte qui ne prend pas en charge la carte SD à quatre bits.
Dmitry Grigoryev
1
Le PO a déclaré qu'il s'agissait d'un système intégré qui utiliserait la carte, ce qui le rendrait plus susceptible de prendre en charge SPI pour les cartes SD
Eric Johnson
3
Une variante de ce travail, mais plus difficile, serait de trouver une carte SD pour laquelle vous pouvez reflasher le firmware .
Peter Taylor
2
C'est super intéressant! Notre système intégré exécute les E / S via SPI. Je ne sais pas si j'ai la bande passante pour modifier notre matériel afin de réaliser un ajout comme celui-ci, mais je pense que c'est une pensée brillante.
Gabe Krause
2
S'informer sur le nivellement dynamique de l'usure m'amène à penser qu'il est beaucoup plus difficile (ou impossible) de créer de manière stratégique une "mauvaise" carte SD avec des secteurs défectueux connus que je ne l'aurais espéré en posant la question. Bien qu’elle dépasse actuellement mes capacités, cette approche semble être la plus maîtrisable et la plus prometteuse sur le plan technique, suivie éventuellement de @Olafm. Personnaliser le matériel intermédiaire pour intercepter et "corrompre" les données à n'importe quel emplacement de secteur prédéfini pendant le transfert de données semble être une bonne approche.
Gabe Krause
15

Je voudrais aller à ebay / aliexpress et acheter la carte SD la moins chère que je puisse trouver en Chine, celle qui est "trop ​​belle pour être vraie". Ils viennent souvent avec des secteurs défectueux ou sont dans un ensemble de logiciels beaucoup plus gros qu’ils ne le sont réellement. De toute façon, vous devriez vous retrouver avec une carte SD défectueuse à utiliser pour les tests.

GuzZzt
la source
Approche intéressante, mais comment écririez-vous les mauvaises zones afin de tester les effets des mauvais blocs sur le code stocké?
Fix1234
@ Fix1234, j'avais une de ces cartes SD qui disait qu'il était 32 Go mais ce n'était en réalité que 128 Mo. Je l'ai mis dans mon appareil photo et pouvais prendre des photos au-delà de 128 Mo mais seules les premières photos pouvaient être lues. Le reste était répertorié mais a été relu comme cassé. J'imagine que c'est comme ça qu'ils veulent que vous remarquiez les problèmes avec la carte d'abord quand il est trop tard pour se plaindre ...
GuzZzt
11

Il était une fois, il y a de nombreuses années, j'étais payé pour récupérer un ensemble de photos et de vidéos de fin d'études d'une carte SD pour une mère plutôt désemparée. Après une inspection minutieuse, la carte avait été physiquement endommagée avec une fissure visible dans le boîtier externe et présentait plusieurs secteurs défectueux, notamment plusieurs secteurs critiques précoces, ce qui rendait même les programmes de récupération les plus fiables du moment incapables de lire la carte. . En outre, les outils de données médico-légales coûtaient alors une fortune.

J'ai fini par obtenir une carte SD de taille / marque identique et d'écrire mon propre utilitaire de copie et de restauration de données brutes personnalisé permettant de copier les données de la mauvaise carte vers la bonne. Chaque fois que le service public rencontrait un secteur défectueux, il réessayait plusieurs fois avant d'écrire tous les zéros pour ce secteur et, au lieu d'abandonner et d'arrêter, ignorait l'échec et passait au secteur suivant. Les tentatives ont été tentées à nouveau, car j’avais également remarqué que certains secteurs avaient encore un taux de réussite de lecture de 40% environ. Une fois les données stockées sur la nouvelle carte SD, les outils de récupération qui avaient échoué auparavant fonctionnaient parfaitement, avec une perte / corruption de données minimale. Dans l'ensemble, environ 98% de tous les fichiers ont été récupérés. Un certain nombre d'éléments précédemment supprimés ont également été récupérés, car rien n'est jamais réellement supprimé - ils sont simplement marqués comme tels et lentement remplacés. Ce qui a commencé comme un exercice de récupération de données légèrement ennuyeux est devenu l’un de mes projets de développement de logiciels personnels les plus mémorables et les plus intéressants. Au cas où vous vous le demanderiez, la mère était ravie.

Quoi qu’il en soit, cette histoire montre qu’il est possible d’endommager physiquement une carte SD de telle sorte que les données restent accessibles mais que certains secteurs ne fonctionnent que très peu et que tout lecteur qui tente de le lire puisse avoir de la difficulté à le faire. Le plastique des cartes SD a tendance à être assez fragile, alors plier ou couper des morceaux bon marché peut faire l'affaire. Votre kilométrage peut varier.

Vous pouvez également demander à certains endroits de la récupération de données dans votre région. Dans la mesure où ils se spécialisent dans la récupération de données à partir de divers périphériques défaillants ou défaillants, ils doivent disposer de conseils / astuces utiles et peuvent même disposer de cartes SD pré-décomposées (par exemple à des fins de formation).

CubicleSoft
la source
2
Avez-vous publié cet utilitaire en ligne? Ce serait formidable d'ajouter à mon arsenal.
Ploni
1
À ce stade, il ne fonctionnerait probablement même pas correctement compte tenu de la progression des technologies (voire même de la compilation) et des appels système de bas niveau que j'ai utilisés. Il existe également quelques outils de clonage de périphérique / lecteur médico-légaux modernes et open source que je serais plus enclin à utiliser en premier lieu que d'essayer d'extraire mon ancien logiciel de Nothballs.
CubicleSoft le
Je pense que vous pouvez probablement simplement donner quelques paramètres pour ddqu’il se comporte de la même manière que cela, de nos jours. Je ne suis pas sûr cependant.
wizzwizz4
@ wizzwizz4, regardez ddrescue.
hildred
"En outre, les outils de données médico-légales coûtaient alors une fortune." Je suis sûr qu'ils le font encore.
jpmc26
5

Cette réponse est une extension du commentaire de @Ruslan

  1. Remplissez votre carte SD jusqu'à environ 99,9%
  2. Réécrivez continuellement le contenu des 0,1% restants (écrivez A - supprimez-écrivez B-supprimez - écrivez A ...)
  3. Testez (périodiquement) si vous avez déjà cassé la carte

Alternative possible:

Vous n'êtes pas sûr que cela fonctionne à vos fins, mais peut-être que cela suffira réellement à endommager physiquement votre carte, ce qui pourrait être beaucoup plus rapide.

Dennis Jaheruddin
la source
6
Remplir la carte à 99% n’aidera pas, puisque l’objectif de nivellement par usure est de prévenir exactement ce type de dommage prématuré. Si vous endommagez physiquement la carte, vous obtiendrez une carte qui ne s’initialisera plus.
Dmitry Grigoryev
2
@DmitryGrigoryev Comment le nivellement par l'usure sera-t-il d'une grande aide (entrave, dans ce cas) à moins que la carte ait beaucoup plus de mémoire que sa capacité officielle?
Ispiro
12
@ ispiro Par exemple, lors du prochain écrasement d'un secteur avec un nombre d'écritures élevé, son contenu peut être échangé contre un secteur avec un nombre d'écritures faible.
Dmitry Grigoryev
1
@DmitryGrigoryev Si j'interprète cette réponse correctement il devrait y avoir des cartes SD qui ne font pas l' usure lvling: electronics.stackexchange.com/a/27626/16104
Dennis Jaheruddin
1
@DennisJaheruddin Oui, les cartes plus anciennes ne le font pas. avec ces cartes, il suffit de créer / supprimer de manière répétée un fichier vide jusqu'à ce que le secteur de la table d'allocation soit épuisé.
Dmitry Grigoryev
3

Vous pouvez essayer d’introduire une alimentation instable ou une signalisation de tension plus élevée.

Une faute commune à une famille d’appareils que je connais a une forte corrélation entre la corruption de la carte SD et le contact intermittent de la batterie.

PCARR
la source
3

Certaines cartes SD de faible capacité (16 Mo) utilisent des puces flash dans les packages de style TSOP / TSSOP. Un atelier capable de retravailler SMT (si vous effectuez un travail intégré, vous pouvez disposer de cette compétence en interne, sinon vérifiez si les petites entreprises effectuent des réparations sur téléphone / ordinateur portable au niveau du conseil d'administration) pourrait éventuellement séparer et rattacher cette puce, de sorte qu'elle puisse être lue et écrite. raw (y compris les codes ECC) avec un programmeur d’appareil.

Sachez néanmoins que vous allez principalement tester:

  • Comment votre appareil gérera-t-il d'éventuelles aberrations de synchronisation introduites par une correction d'erreur interne?

et dans le pire des cas

  • comment votre appareil gère une carte SD défaillante.

Si vous souhaitez simplement vérifier le comportement erratique d’une carte SD pour une raison quelconque, il est probablement préférable d’introduire un bruit électrique dans les lignes d’interface (en plaçant par exemple un commutateur de bus FET entre à une source de signaux non sensés (des bons niveaux électriques cependant).

rackandboneman
la source
Les cartes SD défaillantes ne génèrent pas de "bruit électrique", elles ne font que renvoyer des codes d'erreur pour les opérations d'écriture.
Dmitry Grigoryev
2

Relatif à la réponse d'OlafM, mais différent: vous pouvez programmer votre propre microcontrôleur pour qu'il parle le protocole de la carte SD, puis émuler le comportement que vous souhaitez.

R ..
la source
1

La zone FAT32 Master Boot Record est probablement la plus susceptible d’être utilisée de manière abusive car, d’un point de vue logique, elle doit toujours se trouver au même endroit. (Peut-être que cela est géré par le remappage en douceur des secteurs défectueux, mais je suis quelque peu sceptique quant à son implémentation sur tout le matériel.) Vous pouvez donc exécuter sfdisken boucle et voir si vous pouvez le détruire de cette façon.

Mais je vais vous prier de faire tout ce qui est en votre pouvoir pour améliorer la fiabilité du matériel, au lieu d'essayer de gérer un matériel défectueux dans un logiciel. Le problème, c’est que les cartes SD échouent de toutes sortes de façons étranges. Elles deviennent illisibles, deviennent illisibles, vous transmettent de mauvaises données, elles expirent lors d'opérations, etc. Il est très difficile de prévoir toutes les possibilités d'échec d'une carte.

Voici l'un de mes échecs préférés, le "mode big data":

mauvais SD faux Big Data

Les cartes SD sont des produits de consommation courante qui subissent une pression énorme sur leurs coûts. Les pièces changent rapidement et les fiches techniques sont difficiles à obtenir. Les produits contrefaits ne sont pas inconnus. Pour le stockage bon marché, ils sont difficiles à battre, mais si les SSD font de la fiabilité une priorité, la priorité des cartes SD est la vitesse, la capacité et le coût (probablement pas dans cet ordre).

Votre première ligne de défense consiste à utiliser une pièce eMMC soudable avec une vraie fiche technique d'un fabricant réputé au lieu d'une carte SD amovible. Oui, ils coûtent plus cher par Go, mais la pièce sera en production plus longtemps et au moins, vous savez ce que vous obtenez. Souder la pièce évite également toute une série de problèmes potentiels (cartes éjectées pendant les écritures, mauvais contact électrique, etc.) avec une carte amovible.

Si votre produit nécessite un stockage amovible ou qu'il est trop tard pour changer quoi que ce soit, envisagez de dépenser plus d'argent pour les cartes de qualité «industrielle» ou de les traiter comme des objets jetables. Ce que nous faisons (sous linux), c'est fsckla carte au démarrage et la reformater si des erreurs sont signalées, car le reformatage est acceptable dans ce cas d'utilisation. Puis on fsckle refait. S'il signale toujours des erreurs après le reformatage, nous le RMA et remplaçons le matériel par une variante plus récente utilisant eMMC.

Bonne chance!

Robert Calhoun
la source
Je vous ai donné un pouce en l'air. J'utilise beaucoup les cartes SD et j'ai un échec plusieurs fois par an. Je n'y avais jamais vraiment pensé, mais ma propre expérience m'a montré que les cartes qui avaient échoué présentaient les symptômes d'une FAT défaillante avant de finalement perdre toute valeur. Je pense que vous êtes sur quelque chose ici :) Donc, simplement créer et supprimer des fichiers devrait tirer le diable de la FAT.
jwzumwalt
1

Ce n’est peut-être pas la direction que vous souhaitiez, mais j’ai trouvé que retirer ma carte SD pendant que ma radio ou mon ordinateur portable lisait garantit une carte SD bloquée environ 1/5 ou 1/10 fois. Il semble que les cartes ne fonctionnent pas bien lorsque le courant est coupé pendant une lecture et probablement écrites. Après avoir lu les commentaires de Robert Calhoun ci-dessous, cela me porte à croire que cela pourrait endommager le FAT. Bien que je ne sache pas pourquoi la simple lecture provoque un blocage - il ne devrait y avoir aucune écriture en cours?

Jwzumwalt
la source
cela pourrait endommager le FS mais ne serait pas sûr de créer de mauvais secteurs
akostadinov
Je peux vous dire pour un fait qu'il bloque la carte et nécessite un reformatage. Je l'ai fait plusieurs fois avec des cartes SD, une tarte aux framboises, mon ordinateur portable et plusieurs de mes appareils personnels.
jwzumwalt
2
Nécessite un reformatage! = Cause des dommages aux secteurs . Système de fichiers, oui. Secteurs, peut-être.
wizzwizz4
1

Si votre carte SD est au format FAT32, vous pouvez éditer les 2 graisses en hexadécimal et marquer un secteur comme défectueux avec le code hexadécimal correct. Ce n'est qu'une astuce si vous voulez tester logiquement un logiciel supposé trouver un secteur défectueux à cet endroit particulier; cela ne nuira pas à votre carte SD non plus, un reformatage la ramènera à un état normal.

Emile De Favas
la source
1
Bienvenue sur Super User! Cela semble être une approche intéressante - pourriez-vous peut-être expliquer comment effectuer précisément l'édition hexadécimale? Merci.
Ben N
Je pense que la commande Linux hdparm fera l'affaire: elle vous permettra de sauvegarder un secteur que vous pourrez éditer plus tard, puis d'écrire sur votre carte. vous devez cependant trouver de la documentation sur vfat et man hdparm. Désolé, je ne suis nulle part proche d'un ordinateur Windows.
Emile De Favas
Le --make-bad-sectordrapeau semble prometteur! Cependant, je ne peux pas dire si cela ne fonctionnera que dans le système Linux qui a initialement exécuté cette commande. J'espère que la commande hdparm --make-bad-sector 20000 /dev/sd#rendrait le secteur 20000 incorrect et serait détectée comme mauvaise sur mon périphérique matériel intégré qui ne fonctionne pas sous Linux. Des pensées?
Gabe Krause
0

Je me demande si un script Linux badblocks peut être créé pour exécuter son test destructif sur un seul secteur à plusieurs reprises pendant plusieurs heures.

Sur un seul secteur - non, car le code de correction d'usure à l'intérieur de la carte SD remappera les blocs logiques partout.

Mais vous pouvez facilement exécuter badblocks -wune boucle jusqu'à ce que certains mauvais blocs apparaissent. Quelque chose comme ça devrait marcher:

while badblocks -w /dev/xx; do :; done

en supposant que badblocks renvoie 0 si aucun bloc défectueux n'a été détecté et ≠ 0 sinon (la page de manuel ne dit pas et je n'ai pas vérifié le code source.)

Tobia
la source
-1

Normalement, avec les cartes SD / USS, ils mettent en œuvre le nivellement d'usure, ce qui peut être assez difficile. Selon le type (cellule à une seule couche, multicouche, TLC, 3D-NAND, etc.), le cycle d'écriture nécessaire pour le casser suffisamment pour épuiser le pool de secteurs peut se situer dans plusieurs TB.

En fait, je l'ai testé avec un Duo, SSD et clé USB de 4 Go, 64 Go et 256 Go. Les 64 Go K --- s --- utilisant des puces de 4 microns et 16 Go ont duré environ 3,84 To avant de tomber en panne avec une simple erreur logicielle dans la zone FAT. . L’utilisation de 256 Go a duré un peu moins, mais il faudrait peut-être 5 To avant de céder avec une corruption de MBR, mais sans savoir si le contrôleur le faisait fonctionner correctement en mode USB3, mais USB2 présentait davantage de problèmes lors de la relecture. et il a également couru très chaud. 4 Go Duo a échoué dans le lecteur lors de la copie des données, encore une fois, cela n’est pas sûr, mais cela équivaut peut-être à 6 ans d’utilisation et l’appareil photo affichait également des messages "Récupération". La variation accidentelle de la tension d’alimentation pendant l’écriture accélérera considérablement l’échec. Ma microSD de 128 Go a échoué après environ 2 ans d'utilisation avec des symptômes similaires,

Suppression des notes non pertinentes sur les expériences de rayons X.

Énigme
la source
1
Plusieurs réponses aident déjà à détruire des recteurs spécifiques. Votre suggestion de détruire les aléatoires ne donne rien de plus.
Máté Juhász