Search

Items tagged with: usb


Kein SMART für SD-Karten: sieben Linux-Werkzeuge, die trotzdem verraten, wie gesund eine Karte ist


The media in this post is not displayed to visitors. To view it, please go to the original post.

Transcend-8-GB-microSD-Karte im SD-Adapter und USB-Kartenleser neben Linux-Werkzeugen zur Prüfung von Kapazität, Datenintegrität und Schreibleistung ohne SMART.

Eine alte 8-GB-microSD-Karte lag noch in der Schublade, entbehrlich genug für einen Härtetest. Die Ausgangsfrage war simpel: ist die Karte noch gut, oder produziert sie im Hintergrund längst stille Fehler? Bei einer SSD würde ich smartctl -a tippen und hätte binnen Sekunden Health-Prozent, Reallocated Sectors und Power-On-Hours auf dem Schirm. Bei einer SD-Karte geht genau das nicht, und der Grund dafür ist interessanter als die fehlende Zahl selbst.

Warum SMART hier nicht funktioniert


ATA- und NVMe-Laufwerke haben eine standardisierte SMART-Schnittstelle: fest definierte Attribute, die die Firmware selbst pflegt und die jedes Betriebssystem auf die gleiche Weise abfragen kann. SD-Karten haben nichts Vergleichbares. Der Flash-Controller auf der Karte übernimmt zwar Wear-Leveling und Bad-Block-Mapping, aber wie er das im Detail tut und was er darüber nach außen preisgibt, ist herstellerspezifisch und komplett verschlossen. Es gibt zwar eine SD Health Status Extension, CMD56-basiert, die unterstützt aber so gut wie kein Consumer-Werkzeug, und sie setzt einen nativen MMC-Host voraus, keinen USB-Kartenleser.

Ein Wort noch zu TRIM, bevor der Eindruck entsteht, SD-Karten hätten damit überhaupt nichts zu tun: der Linux-MMC-Stack unterstützt discard-artige Operationen für native mmcblk-Geräte durchaus. Nur bringt das über einen USB-Kartenleser nichts, weil die USB-Massenspeicher-Übersetzung diesen Pfad gar nicht durchreicht, das habe ich in diesem Test empirisch bestätigt. Und selbst auf einem nativen Host wäre das nur ein Erase-Hinweis an den Controller, keine standardisierte Health-Rückmeldung wie bei SSD-TRIM zusammen mit SMART.

Testkandidat und Aufbau


Für den Test kam eine Transcend Premium 8GB microSDHC zum Einsatz, Class 10, UHS-Speed-Class U1, in einem Samsung-Adapter auf volle SD-Größe gesteckt und über einen UGREEN-USB-Kartenleser ausgelesen. Der Leser meldet sich per USB als Genesys-Logic-Chip (05e3:0748), ein generischer Combo-Reader, wie er auch in vielen Laptops und günstigen USB-Dongles verbaut ist. Host war ein Linux Mint 22.3 mit Kernel 7.0.0-28-generic, Ubuntu-24.04-Unterbau, alle Befehle liefen als root.

MicroSD-Karte im Samsung-Adapter, gesteckt in einen schwarzen USB-Kartenleser auf einer KüchenarbeitsplatteSo kam die Karte beim Testsystem an: microSD im Samsung-Adapter, gesteckt in den UGREEN-USB-Kartenleser.

Werkzeuge installieren


Bis auf badblocks, smartctl, hdparm und dd, die auf den meisten Systemen ohnehin vorhanden sind, kommt der Rest aus den Standard-Paketquellen, keine Drittanbieter-PPA nötig:
apt-get install -y f3 mmc-utils sdparm flashbench
apt-get install -y fio # nachinstalliert, sobald der Schritt feststand
Installiert wurden f3 8.0, mmc-utils als Git-Snapshot von 2022, sdparm 1.12, flashbench 62 und fio 3.36, alles aus dem Ubuntu-Noble-Universe-Repository. Getestet auf Linux Mint 22.3, aber auf einem reinen Ubuntu 24.04 sollten Paketnamen und Versionen identisch sein.

Schritt 1: Identifikation, warum SMART eine Sackgasse ist

$ smartctl -a /dev/sdc
/dev/sdc: Unknown USB bridge [0x05e3:0x0748 (0x1209)]
Please specify device type with the -d option.

$ smartctl -a -d sat /dev/sdc
Read Device Identity failed: scsi error unsupported scsi opcode
A mandatory SMART command failed: exiting.

$ smartctl --scan
/dev/nvme0 -d nvme
/dev/nvme1 -d nvme
# sdc taucht gar nicht erst auf, smartd hält es für keinen unterstützten Gerätetyp

$ sdparm -a /dev/sdc
MODE SENSE(10): Malformed SCSI command
/dev/sdc: Generic MassStorageClass 1209

$ sdparm -i /dev/sdc
/dev/sdc: Generic MassStorageClass 1209
Device identification VPD page:
Addressed logical unit:
designator type: T10 vendor identification, code set: ASCII
vendor id: Generic
vendor specific: STORAGE DEVICE
smartctl erkennt die Genesys-Logic-USB-Bridge gar nicht erst als unterstützten Gerätetyp. Erzwingt man SAT, also ATA-Kommandos über SCSI getunnelt, scheitert das vollständig, weil die Bridge-Firmware das Kommando schlicht nicht implementiert. Selbst der Geräte-Scan von smartd listet /dev/sdc gar nicht auf. sdparm kommt einen Schritt weiter, eine simple SCSI-INQUIRY funktioniert, aber die gemeldete Identität bleibt vollständig generisch: „Generic MassStorageClass“, „STORAGE DEVICE“. Weder Hersteller-ID noch Seriennummer noch irgendeine Form von Wear- oder Health-Daten sind über diesen Pfad erreichbar. Das ist der konkrete, reproduzierbare Beleg dafür, dass es für SD-Karten hinter einem USB-Leser kein SMART-Äquivalent gibt.
$ lsusb -v -d 05e3:0748
Bus 002 Device 007: ID 05e3:0748 Genesys Logic, Inc. All-in-One Cardreader
bcdUSB 3.10
idVendor 0x05e3 Genesys Logic, Inc.
idProduct 0x0748 All-in-One Cardreader
iSerial 5 000000001209
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
SuperSpeed USB Device Capability:
wSpeedsSupported 0x000e (Full/High/SuperSpeed, bis zu 5Gbps Link)
Der Leser meldet sich als „All-in-One Cardreader“ von Genesys Logic, ein verbreiteter generischer Combo-Chip, USB-3.1-fähig, spricht auf der SCSI-Ebene aber Bulk-Only Transport (BOT), nicht UAS. Wichtig für die Kausalität: BOT statt UAS ist für sich genommen nicht der Grund, warum SAT-Passthrough scheitert. Es gibt genug BOT-Bridges, die SAT unterstützen, und genug, die es nicht tun, unabhängig vom Transportprotokoll. Belegt ist hier nur, dass ausgerechnet diese Genesys-Bridge keine ATA- beziehungsweise SAT-Kommandos durchreicht, nicht dass USB-Bulk-Only-Bridges das grundsätzlich nicht könnten.

Transcend Premium 8GB microSDHC Class 10 U1 im Samsung-Adapter, liegend auf einem UGREEN-USB-Kartenleser mit blau leuchtender Status-LEDDer Aufdruck verrät mehr als jedes Software-Tool: Transcend Premium, 8GB, Class 10, UHS-Speed-Class U1.

Schritt 2: Durchsatz mit dd und hdparm


hdparm -t allein ergab rund 90 MB/s gepuffertes Lesen, plausibel, aber es lohnt sich, mit echtem O_DIRECT-I/O gegenzuprüfen, damit keine Bridge- oder Seiten-Cache-Effekte den Wert verfälschen.
$ hdparm -Tt /dev/sdc
Timing cached reads: 24182 MB in 2.00 seconds = 12113.48 MB/sec
Timing buffered disk reads: 272 MB in 3.00 seconds = 90.66 MB/sec

# 512MB Zufallsnutzlast zuerst im tmpfs erzeugt, damit die CPU-Last von
# /dev/urandom die eigentliche Messung nicht verfälscht
$ dd if=/dev/urandom of=/root/sdtest/payload.bin bs=1M count=512
536870912 Bytes (537 MB, 512 MiB) kopiert, 1,74754 s, 307 MB/s

# SCHREIBEN: Direct I/O direkt auf das Rohgerät, kein Seiten-Cache beteiligt
$ dd if=/root/sdtest/payload.bin of=/dev/sdc bs=1M count=512 oflag=direct,sync
536870912 Bytes (537 MB, 512 MiB) kopiert, 22,8654 s, 23,5 MB/s

# LESEN: erst flushen, dann Direct I/O der gleichen 512MB zurück
$ blockdev --flushbufs /dev/sdc
$ dd if=/dev/sdc of=/root/sdtest/readback.bin bs=1M count=512 iflag=direct
536870912 Bytes (537 MB, 512 MiB) kopiert, 6,28156 s, 85,5 MB/s

# Integritätscheck
$ cmp /root/sdtest/payload.bin /root/sdtest/readback.bin
MATCH: identical
Ergebnis: rund 23,5 MB/s sequenzielles Schreiben, rund 85,5 MB/s sequenzielles Lesen, mit byteidentischem Rücklese-Ergebnis. Die Asymmetrie zwischen Schreiben und Lesen ist normal und erwartbar, Schreiben braucht auf Flash-Ebene ein Erase-before-Program, Lesen nicht. 23,5 MB/s reißt die Class-10- und U1-Mindestangabe von 10 MB/s locker, für U3/V30 mit 30 MB/s Minimum würde es nicht reichen, was exakt zum aufgedruckten Rating der Karte passt: Class 10, U1, keine U3- oder V30-Kennzeichnung.

Schritt 3: f3probe, ist die Kapazität echt?


Bevor der große, langsame Test kommt, lohnt sich der schnelle: f3 (Fight Flash Fraud) bringt mit f3probe einen Kapazitätsbetrugs-Check, der binnen weniger Minuten läuft, statt die ganze Karte zu beschreiben.
$ f3probe --time-ops /dev/sdc

Probe finished, recovering blocks... Done

Good news: The device `/dev/sdc' is the real thing

Device geometry:
*Usable* size: 7.31 GB (15333376 blocks)
Announced size: 7.31 GB (15333376 blocks)
Module: 8.00 GB (2^33 Bytes)
Approximate cache size: 0.00 Byte (0 blocks), need-reset=no
Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 1'46"
Operation: total time / count = avg time
Read: 29.32s / 4197116 = 6us
Write: 1'15" / 4192321 = 18us
Reset: 0us / 1 = 0us
Verdikt: eine echte Karte, keine Fälschung. Die angekündigte Größe, 8-GB-Modul mit 7,31 GB nutzbar, deckt sich mit der tatsächlich nutzbaren Größe, die f3probe per binärer Suche gefunden hat, also dort, wo Schreibvorgänge aufhören, korrekt anzukommen. Approximate cache size: 0.00 Byte ist ebenfalls ein gutes Zeichen: manche gefälschten Karten täuschen ihre Kapazität vor, indem sie eine kleine Menge echten Flashs als Write-Back-Cache benutzen, der Schreibvorgänge über die tatsächliche Kapazität hinaus vorübergehend „schluckt“ und damit naive Benchmarks täuscht. Diese Karte zeigt diesen Trick nicht. f3probe hat die für die Prüfung benutzten Blöcke danach wiederhergestellt, ohne -n gestartet, die Karte blieb also in ihrem vorherigen, leeren Zustand. Reine Probe-Zeit rund 1:46 Minuten, mit Block-Wiederherstellung insgesamt rund 3 Minuten, deutlich schneller als ein vollständiger Schreib-Lese-Durchlauf, weil f3probe gezielt sucht statt jeden Block anzufassen.

Schritt 4: f3write und f3read, der Haupttest

$ wipefs -a /dev/sdc
$ parted -s /dev/sdc mklabel gpt mkpart primary ext4 0% 100%
$ mkfs.ext4 -F -L SDTEST /dev/sdc1
$ mount /dev/sdc1 /mnt/sdtest
$ df -h /mnt/sdtest
/dev/sdc1 7,2G 24K 6,8G 1% /mnt/sdtest

$ cd /mnt/sdtest && f3write .
Free space: 7.10 GB
Creating file 1.h2w ... OK!
...
Creating file 8.h2w ... OK!
Free space: 16.46 MB
Average writing speed: 22.78 MB/s

$ f3read .
SECTORS ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/ 0/ 0/ 0
...
Validating file 8.h2w ... 176128/ 0/ 0/ 0

Data OK: 7.08 GB (14856192 sectors)
Data LOST: 0.00 Byte (0 sectors)
Corrupted: 0.00 Byte (0 sectors)
Slightly changed: 0.00 Byte (0 sectors)
Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 90.32 MB/s
Verdikt: sauber. Jedes Byte jeder der 8 Testdateien, 7,08 GB insgesamt, bis auf rund 16 MB Restplatz gefüllt, kam exakt so zurück, wie es geschrieben wurde: 0 korrupte, 0 veränderte, 0 überschriebene Sektoren. Die gemessenen Geschwindigkeiten, 22,78 MB/s Schreiben und 90,32 MB/s Lesen, decken sich eng mit dem rohen dd-Direct-I/O-Benchmark aus Schritt 2, eine gute Gegenprobe, dass die Zahlen echt sind und kein Artefakt einer einzelnen Methode.

Schritt 5: badblocks, die Musterprüfung

$ umount /mnt/sdtest
$ badblocks -wsv /dev/sdc

Es wird nach defekten Blöcken gesucht (Lesen+Schreiben-Modus)
Von Block 0 bis 7666687
Es wird getestet Mit Muster 0xaa: ... 100% erledigt
Es wird getestet Mit Muster 0x55: ... 100% erledigt
Es wird getestet Mit Muster 0xff: ... 100% erledigt
Es wird getestet Mit Muster 0x00: ... 100% erledigt
Durchgang beendet, 0 defekte Blöcke gefunden. (0/0/0 Fehler)
Verdikt: 0 defekte Blöcke, über alle 4 Standard-Testmuster hinweg (0xAA/01010101, 0x55/10101010, 0xFF/lauter Einsen, 0x00/lauter Nullen, gewählt, um Stuck-at-0- und Stuck-at-1-Zellfehler ebenso wie Kopplungsfehler zwischen Nachbarbits zu erwischen). Gesamtlaufzeit für den kompletten Schreib-Lese-Vergleichs-Zyklus über alle 4 Muster: rund 26 Minuten 47 Sekunden auf dieser 7,31-GiB-Karte, was zur Schätzung von rund 27 Minuten aus den früheren Durchsatzwerten passt, 4-mal Schreibdurchlauf plus Lesedurchlauf bei rund 23,5/85 MB/s.

badblocks -w ist ein linearer, positionsbasierter Test, Teil von e2fsprogs. In einem Durchgang schreibt er dasselbe Muster auf jeden logischen Block und liest es zurück. Genau das ist der strukturelle Unterschied zu f3write/f3read, und der Grund, warum badblocks kein Ersatz für f3 bei der Kapazitätsbetrugsfrage ist: eine Karte, die Schreibvorgänge still auf einen kleineren physischen Bereich zurückführt, könnte in einem badblocks-Durchgang trotzdem das „richtige“ Muster zurückliefern, weil ohnehin jeder logische Block identischen Inhalt bekommt, das Aliasing bliebe unsichtbar. f3write vermeidet das, indem es positionsabhängige Pseudozufallsdaten schreibt, sodass Wraparound oder Aliasing als Mismatch auffällt. badblocks beantwortet dafür eine engere, ergänzende Frage: versagen bestimmte Blöcke oder Zellen dabei, irgendein Muster zuverlässig zu speichern, was der einmalige, pseudozufällige Schreibdurchgang von f3 pro Karte nicht so systematisch prüft, kein 0xAA/0x55/0xFF/0x00-Stuck-Bit-Sweep.

Schritt 6: flashbench, ein Blick unter die Haube

$ flashbench -f -o /root/sdtest/flashbench.out /dev/sdc
$ cat /root/sdtest/flashbench.out

4MiB 28.5M/s 28.3M/s 26.7M/s 27.6M/s 23.4M/s 28M/s
2MiB 26.6M/s 28.2M/s 26.7M/s 28.1M/s 26.8M/s 28.1M/s
1MiB 26.6M/s 28.8M/s 26.4M/s 28.4M/s 26.6M/s 27.3M/s
512KiB 26.7M/s 28.2M/s 26.9M/s 28.9M/s 26.8M/s 28.3M/s
256KiB 26.7M/s 28.2M/s 26.6M/s 27.8M/s 27M/s 28.8M/s
128KiB 26M/s 28.5M/s 26.7M/s 28.3M/s 26.8M/s 28.3M/s
64KiB 26.9M/s 28.8M/s 26.8M/s 28.3M/s 26.7M/s 27.9M/s
32KiB 12.6M/s 12.7M/s 13.1M/s 12.6M/s 12.9M/s 12.8M/s
16KiB 5.78M/s 5.91M/s 5.87M/s 5.82M/s 5.82M/s 5.86M/s
flashbench -f (find-fat) liest am Ende der ersten paar Erase-Blöcke zunehmend kleinere Häppchen und misst die Zeit dafür, auf der Suche nach dem Punkt, an dem die Lesegeschwindigkeit plötzlich einbricht. Die Grundidee: das deutet auf die interne Lese- beziehungsweise Page-Granularität des Flashs hin, weil das Lesen eines Teils einer internen Page oder eines Blocks genauso viel kosten kann wie das Lesen der ganzen Einheit, sub-granulare Reads verschwenden dann Bandbreite. Hier hält sich das Plateau, rund 26 bis 29 MB/s, passend zum rohen sequenziellen Lese-Benchmark, stabil bis hinunter zu 64 KiB, bricht dann bei 32 KiB auf weniger als die Hälfte ein (rund 12,6 bis 13,1 MB/s) und nochmal auf etwa ein Fünftel bei 16 KiB (rund 5,8 bis 5,9 MB/s). Ein sauberes, reproduzierbares Signal, 6 Wiederholungen pro Zeile, alle konsistent.

Die Schlussfolgerung bleibt bewusst vorsichtig formuliert: das ist ein Performance-Knick bei 64 KiB auf diesem konkreten Reader-Controller-Pfad, konsistent mit einer größeren internen Leseeinheit oder FTL-Gruppierung, aber keine direkte, verifizierte Messung der tatsächlichen physischen NAND-Page-Größe der Karte (typischerweise 8 bis 16 KiB, dafür bräuchte es Herstellerdokumentation oder eine andere Messmethode). Die Daten sind mit einer bestimmten Erklärung konsistent, sie beweisen sie nicht.

Schritt 7: fio, bleibt die Schreibrate konstant?


dd und f3write liefern Durchschnittswerte. fio mit einem Bandbreiten-Log pro Sekunde zeigt dagegen die Form des Schreibvorgangs über die vollen 6 GB, genau das will man sehen, wenn man einen Pseudo-SLC-Cache-Absturz sucht: viele Karten schreiben schnell in einen kleinen SLC-Modus-Puffer, bis der voll ist, und fallen danach auf eine deutlich niedrigere TLC- oder QLC-Dauerschreibrate ab.
$ fio --name=sdcard-write --filename=/dev/sdc --rw=write --bs=1M --size=6G --direct=1 --ioengine=psync --iodepth=1 --write_bw_log=/root/sdtest/fio_write --log_avg_msec=1000 --group_reporting

write: IOPS=26, BW=26.0MiB/s (27.3MB/s)(6144MiB/236179msec)
bw (KiB/s): min=24576, max=27675, per=100.00%, avg=26645.27, stdev=457.38, samples=236
Der Blick ins rohe Sekunden-Log lohnt sich, nicht nur die Zusammenfassung: 236 Einsekunden-Stichproben über den kompletten 6-GB-Schreibvorgang, alle im Bereich von 24576 bis 27675 KiB/s, also rund 24,0 bis 27,0 MB/s. Erste und letzte Stichprobe liegen im selben schmalen Band, kein erhöhter Burst am Anfang, kein Absturz später.

Verdikt: flach, kein erkennbarer SLC-Cache-Absturz auf dieser Karte. Auch hier lohnt sich die vorsichtige Formulierung: das beweist nicht, dass die Karte null Schreibpufferung hat, nur dass ein eventueller Puffer beziehungsweise Absturz innerhalb dieses 6-GB-Testfensters auf einer Karte mit nur rund 7,3 GB nutzbarer Gesamtkapazität nicht sichtbar wurde. Es könnte schlicht nicht genug Karte nach dem Puffer übrig sein, um einen Absturz zu zeigen, oder, wahrscheinlicher bei einer reinen Class-10/U1-Budgetkarte ohne A1/A2- oder „Extreme/Pro“-Einstufung, sie implementiert gar kein dynamisches SLC-Caching. So oder so steht das praktische Ergebnis: die Schreibleistung war über die gesamte Kapazität konsistent und vorhersagbar, nicht nach vorne verlagert.

Was für eMMC gilt, aber nicht für SD


Ein paar Dinge, die in diesem Testlauf nicht zum Einsatz kamen, aber der Vollständigkeit halber dazugehören. mmc extcsd read und seine Lebensdauer-Schätzfelder, das Nächste an einer echten Health-Prozentangabe in diesem Umfeld, sind eine eMMC-Eigenschaft. Eine wechselbare SD- oder microSD-Karte ist kein eMMC, dieser Pfad stand hier ohnehin nicht zur Verfügung, USB-Leser statt nativer MMC-Host. Ein nativer MMC-Host-Slot, etwa der eingebaute SD-Slot eines Laptops, würde dagegen mehr Identitätsdaten offenlegen als ein USB-Leser: /sys/block/mmcblkX/device/ mit cid, csd, scr, serial, manfid, name, oemid, preferred_erase_size und date, der Kernel parst die Identitätsregister der Karte direkt in sysfs, ganz ohne Zusatzwerkzeug. Wer also einen echten SD/MMC-Controller statt einer USB-SCSI-Bridge als Leser hat, bekommt das gratis dazu, in diesem Test war davon nichts erreichbar.

Und noch ein Missverständnis vorweg: der „SD Card Formatter“ der SD Association ist ein Formatierungs- und Reset-Werkzeug, das die werkseitige Partitionierung wiederherstellt, nachdem andere Betriebssysteme sie durcheinandergebracht haben, kein Health-Check-Werkzeug.

Die Reihenfolge, wenn du das nachmachen willst


Vom schnellsten und harmlosesten zum langsamsten und gründlichsten, ungefähr so, wie dieser Test auch abgelaufen ist:

  1. lsusb -v, udevadm info, dmesg. Leser und Karte identifizieren, Schreibschutz-Status vorab prüfen.
  2. smartctl -a -d sat und sdparm -a. Schneller, harmloser Versuch an Health- und Identitätsdaten, meist scheitert das über einen USB-Leser, und genau dieses Scheitern ist der Punkt, den man erklären sollte.
  3. f3probe. Schneller Kapazitätsbetrugs-Check, für 8 GB etwa 2 bis 3 Minuten, minimal destruktiv, stellt die benutzten Blöcke standardmäßig wieder her.
  4. f3write plus f3read. Der Haupttest, vollständige Schreib-Lese-Integritätsprüfung über die gesamte Kapazität, braucht ein Dateisystem.
  5. badblocks -w. Destruktive Vier-Muster-Prüfung auf defekte Blöcke, Rohgerät, kein Dateisystem nötig. Fängt Dinge, die f3 strukturell nicht kann, siehe Schritt 5.
  6. dd mit oflag/iflag=direct und/oder fio mit Bandbreiten-Log. Durchsatzzahlen und, mit fio, die Form der Schreibrate über die Zeit.
  7. flashbench -f -o DATEI. Optional, für die Neugier, Hinweise auf die interne Lese-Granularität.


Fazit


Für diese konkrete Karte: gesund, echt, keine Defekte gefunden, bei jedem Test, der überhaupt in der Lage gewesen wäre, welche zu finden. Keine SMART-Werte erreichbar über den USB-Leser, echte Kapazität ohne Cache-Trickserei, null Datenkorruption über 7,08 GB, null defekte Blöcke über alle 4 Muster, rund 23 bis 27 MB/s Schreiben und rund 85 bis 90 MB/s Lesen, konsistent über vier unabhängige Messmethoden, kein SLC-Cache-Absturz über die volle Kapazität. Die Karte reißt ihre aufgedruckte Class-10/U1-Angabe locker, für U3/V30 würde es nicht reichen, was sie auch gar nicht behauptet.

Der eigentliche Punkt reicht über diese eine Karte hinaus: ohne SMART bleibt nur Verhaltenstestung statt Register-Abfrage. Schreiben, lesen, vergleichen, und der Karte dabei zusehen, statt sie nach einer Zahl zu fragen, die sie gar nicht hat.

Siehe auch


Falls jemand einen zuverlässigeren Weg zur Health-Einschätzung einer SD-Karte unter Linux kennt, immer her damit. Und falls ihr selbst öfter mit fragwürdigen Billigkarten zu tun habt, dürft ihr mich zu dem Thema sehr gerne fragen.


Einen Linux-USB-Boot-Stick mit #Android erstellen 🐧


Siehe: f-droid.org/packages/com.vento…

#Ventoy ist eine tolle Sache, wenn man Linux-Distributionen auf dem Laptop ausprobieren möchte. Jetzt kann man es einfach als App nutzen.

Ventoy: ventoy.net
Distributionen kann man hier auswählen: distrowatch.com

#Linux #distro #distribution #ausprobieren #boot #usb #Hilfe #test #foss #os #Software #tool #Werkzeug


#Linux- #Dateisystem & #Root einfach erklärt (inkl. USB-Stick einbinden!)

Du steigst gerade bei #Linux ein und verstehst die #Ordnerstruktur nicht? Welcher Ordner macht was? Wo liegt mein #USB-Stick? Und was bedeutet dieses ominöse / (Root) eigentlich? 🐧

In diesem Video bringen wir endlich Licht ins Dunkel! Wir schauen uns die #Linux- #Ordnerstruktur verständlich an und demonstrieren das Ganze direkt am praktischen Beispiel: Einem USB-Stick.

#Steinzone

youtube.com/watch?v=UhTZn7ydhh…



#Rikus #Mintshot genial einfach eigene Live iso erstellen.

Eine selbst erstellte #ISO-Datei auf einen #USB- #Bootsstick erstellten.
Zum Zeitpunkt dieses Video gibt es auf bei Rikus einer Version für Debian basierte Systeme.
Das Programm bietet 3 Modi:
1. Nur System (root) mit Benutzerkonto
2. System mit Benutzerkonto und Eigenen Dateien
3. Klone des kompletten Systems.

#sysform_it

youtube.com/watch?v=QGQkHW5cCg…


The media in this post is not displayed to visitors. To view it, please go to the original post.

Klappt. 8Bit Retro Rechteck Sound mit Pitch-Bend, Modulation, Sustain, 8-Stimmig und Anschlags-Dynamik für USB-Midi-Keyboards.

Nach ein paar Umwegen über Linux, Raspberry Pi1, eeePC version 1, BuildRoot, einer C und einer C++ Version und einer C# Version für Windows landete ich final beim Arduino Uno 😆🤪 Mit stumpfen Polling auf den USB Host Shield... reicht offensichtlich.

github.com/alltagshack/miniMid…

#USB #Arduino #DIY #Midi #Retro #Musik #8bit #Rechteck #Linux #buildroot


#Android- #Tablet befreien: #LineageOS installieren

gehe auf die technischen Hintergründe ein, darunter #USB- #Debugging, #Bootloader, #Recovery-System und den Einsatz von Tools wie Heimdall und #TWRP. Ihr bekommt einen Einblick in den gesamten Ablauf sowie die typischen Hürden bei der Installation eines alternativen #Betriebssystems. Außerdem teile ich meine Erfahrungen mit einem Gerät ohne offizielle Updates...

#Nicht_der_Weisheit_letzter_Schluß

@nichtderweisheit

youtube.com/watch?v=f_fRpe5ig7…


#cc2tv

Kompakte #USB- #Diagnostiklösung ( #CC2tv Folge 426)

Der #ALIENTEK USB Tester C2 ist ein kompaktes #Messgerät zur Analyse von USB-Verbindungen, Ladeprozessen und Energieübertragungen. Es misst Spannung, Strom und Leistung in Echtzeit und erlaubt zusätzlich die Auswertung von Kommunikationsprotokollen zwischen Quelle und Verbraucher.

#computerclubzwei

@computerclubzwei

youtube.com/watch?v=SoVFvw28E6…


Da offenbar jedes USB-C-Kabel ein individuelles, nicht durch Augenschein erkennbares, Skillset hat, wäre es da nicht sinnvoll, dass die Hersteller einen QR-Code auf den Stecker machen, mit denen man die Fähigkeiten des jeweiligen Kabels erscannen kann, statt - wie im Artikel empfohlen- die Kund*en die eigene Kabelsammlung durchtesten und entsprechend etikettieren zu lassen? tagesschau.de/wissen/technolog…

#Technik #USB #Kabel


The media in this post is not displayed to visitors. To view it, please go to the original post.

#Werbung #Reklame in eigener Sache:

VERKAUFT! 20.02.2026 - 08:13 Uhr

Liebes #fediverse ,
hier nun ein weiteres Produkt, welches wir mit Hilfe von #akkus aus #einweg E-Zigaretten hergestellt haben.
Die Bahnlampe von A.Sartorius #wuppertal aus dem Jahr 1962 haben wir zunächst restauriert und gereinigt.
Danach erfolgte der Umbau auf #LED mit den besagten Akkus und #USB C Ladebuchse.

Aktuell messen wir noch die Leuchtdauer, die bisher 14 Stunden beträgt, also genug für eine sehr lange Gartenparty.

Die Lampe ist #outdoor geeignet, sollte aber vor Regen geschützt werden (wegen der Elektrik)

Hier könnt Ihr sie kaufen:
neufeldt-kuhnke.de/shop/Bahnla…

#upcycling #restaurierung #restaurierungswerkstatt #madeinkiel #madeingermany #madeineu #madeineurope #kiel #handwerk
#licht #beleuchtung


The media in this post is not displayed to visitors. To view it, please go to the original post.

Update: habe einen anderen AliExpress-Lieferanten gefunden.

Für ein Qi Ladegerät Projekt benötige ich ein USB-A auf USB-C Kabel, wo der USB-A Anschluss 90° gewinkelt ist und der USB-C gerade ist. Länge des Kabels ca 10cm. Es gibt dafür zwei Ausrichtungen. Oft finde ich die, wie es auf dem großen Bild ist (Links). Ich brauche aber die Ausrichtung, wo der rote Pfeil ist (Rechts). Grund ist, dass ich einen Hochkant-USB-A Anschluss habe und das Kabel nach unten geführt werden muss.

Es ist nur für eine Strom-Übertragung gedacht, keine Daten.

Ich habe bei AliExpress etwas gefunden (mit Flachkabel), aber die Qualität sah bescheiden aus und eine Bewertung beschwerte sich, dass das Kabel nie ankam. Evtl. kennt jemand einen Shop in Deutschland, wo man sowas bestellen kann?

#usb #cable #boostokay


I have installed usb #wifi dongles and an #SDR software defined radio receiver on a #nixOS machine lenovo T480s but had a #usb question. The key steps in both cases was restarting rebooting the computer: the exact opposite of #plugandplay . Is there a nixOS trick I am missing? Having to restart the machine feels so wrong in a nix world. In practical terms it makes installation very hard because one does not know if a reboot is needed or if the flake needs a software fix. Ideas welcome!




#FreieSoftware und #Schule: Aufräumen in den #Ferien

Das #Schuljahr geht zu Ende, aber ein neues kommt. Da lohnt es sich, die eigenen Dateien aufzuräumen und sich digital auf das nächste Schuljahr vorzubereiten.

#Backup erstellen

Dieses #Backup sollte auf einer externen #Festplatte oder #USB-Stick erstellt werden. Hierbei gibt es auch direkt verschlüsselte USB-Sticks, die aber sehr teuer sind.

gnulinux.ch/freie-software-und…


The media in this post is not displayed to visitors. To view it, please go to the original post.

This #cellular ⁨#modem #Huawei⁩ ⁨#E3372⁩ LTE #USB ⁨#dongle⁩ ⁨#usbstick⁩ ⁨#cellularmodem⁩ works on the #Firebat T8 plus #firebatt8 #firebatt8plus a.aliexpress.com/_EyRHnqi plus running #nixos and the configuration.nix commands indicated in the post comments. #t8plus #t8



Tried running #linux #tails operating system off a #bootable #usb .
#distro seems to work nicely. It entirely disappears on shutdown due to
being in RAM only. But then the OS needs all settings and configuration
set afresh on next restart.

What about if I run a #nixOS #container #vm #virtalmachine #virtualize
inside Tails then I could maybe use my #configurationdotnix after each
reboot to save manually reconfiguring after each reboot. What is the
best way of doing this? Tips welcome. Thanks!