In dem Espuino meines Sohns steckt eine 32 Gb große SD Karte. Damit funktioniert der Espuino wunderbar. Er läuft beinahe jeden Tag und wird fleißig für Musik und Hörspiele verwendet.
Die Karte ist nun jedoch voll, da auch mit der Zeit eine recht große Anzahl an Karten angesammelt hat. Ich habe deshalb eine 64 Gb Karte besorgt, neu formatiert, alle Dateien überspielt und in den Espuino gesteckt. Leider funktioniert der Espuino mit der 64 Gb Karte jedoch nicht.
Daher meine Frage: Funktioniert der Espuino grundsätzlich mit 64 Gb Karten nicht oder habe ich evtl. nur einfach Pech mit meiner Karte?
Lustig, dass du gerade jetzt schreibst. Denn ich habe genau dieses Thema jetzt gerade (und wollte dazu in ein paar Minuten hier auch nen Thread aufmachen) bei einem anderen Benutzer. Da gab’s auch noch andere Probleme, aber tatsächlich war ein Problem auch die Karte. Jetzt war es aber so, dass ich ersatzweise eine 64G von mit gegriffen habe (hatte nicht draufgeschaut) und diese ging. Anschließend habe ich einen anderen D32 pro verwendet und dann ging sie nicht.
Ich muss gestehen, dass ich das vorher nie ausprobiert habe. Aber offenbar scheint es mit Speicherkarten >32G ein „Thema“ zu geben.
Bestrebungen dafür gab’s schon: Arduino V2.0.1-RC1.
Vielleicht hat grad jmd. ein solches Setup laufen und kann das mal testen. @Wolle weißt du dazu ggf. etwas?
Alternativ mal checken, ob die Karte mit FAT32 oder exFat formatiert ist. Letztgenanntes wird nicht unterstützt afaik.
Zum Formatieren der Karte habe ich das Tool verwendet, das hier schon öfter erwähnt worden ist. Ich bin mit ziemlich sicher, dass es die SD Karte als exFat formatiert. Ich werde das morgen prüfen und mich dann melden.
PS: Vielen Dank für deine schnelle und ausführliche Antwort
Also das liegt an exFat. Habe es ausprobiert. Hatte diese besagte Karte vom genannten Nutzer und die lief nicht. Habe sie umformatiert unter Linux auf FAT32 und jetzt gehts.
heisst das nun, das theoretisch auch größere karten als 64gb genutzt werden können, sofern sie fat32 formatiert sind?
Ich habe gelesen, das die begrenzung nicht in der hardware läge, die fat32-formtierung kann einen gesammtspeicher von 16TB verwalten, und lediglich die maximale dateigröße von 4GB ist beschränkend.
FAT32 dagegen kann 16 Terabyte organisieren. Die Auswahl an Festplatten dieser Größe ist auch aktuell noch übersichtlich. Dieses im Grunde steinalte System kann also noch immer Speicher in alltagstauglicher Größe verwalten und bietet zudem genügend Kapazität für die nötige Anzahl an Dateien. Aus diesem Grund wird es von nahezu jedem System, jedem Smartphone, Computer und Notebook unabhängig vom Betriebssystem unterstützt.
Der große Nachteil ist die Begrenzung der Dateigröße. Eine einzelne Datei kann lediglich 4 Gigabyte groß sein. Dieser Wert wird beispielsweise von unkomprimierten Videos problemlos überschritten. Aber auch die Cluster, in die FAT32 eine Festplatte zerlegt, um die Dateien darauf zu schreiben, werden bei großem Speicher sehr groß. Das bedeutet keine grundlegende Einschränkung, jedoch eine vermeidbare Platzverschwendung.
Quelle: https://www.cyberport.de/blog/lifestyle/erstmalverstehen-formatierungsformate-und-dateisysteme-fat32-ntfs-exfat/2020/06/22/
(ist nur ein gedankenspiel, da meine alte ps2(die ja auch nur fat32 kann) ja auch eine 1TB platte mit fat32 format nutzt.)
Benutzt denn jemand von euch ein 64 GB Karte die problemlos funktioniert? Und wie genau wurde die formatiert? Ich habe hier eine SanDisk Ultra 64 GB (mit GParted unter Linux FAT32 formatiert).
sudo dosfsck -v -n /dev/sdb1
fsck.fat 4.1 (2017-01-24)
Checking we can access the last sector of the filesystem
Boot sector contents:
System ID "mkfs.fat"
Media byte 0xf8 (hard disk)
512 bytes per logical sector
32768 bytes per cluster
64 reserved sectors
First FAT starts at byte 32768 (sector 64)
2 FATs, 32 bit entries
7798784 bytes per FAT (= 15232 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 15630336 (sector 30528)
1948483 data clusters (63847890944 bytes)
32 sectors/track, 64 heads
2048 hidden sectors
124733440 sectors total
Checking for unused clusters.
Checking free cluster summary.
/dev/sdb1: 71 files, 44980/1948483 clusters
Die Karte funktioniert, aber nicht immer. Wenn ich den ESPuino neustarte (z.B. über das Webinterface per /restart), dann kann die Karte nicht gelesen werden und die serielle Konsole zeigt:
[E][SD_MMC.cpp:79] begin(): Failed to mount filesystem. If you want the card to be formatted, set format_if_mount_failed = true.
...
Bootgang wegen SD fehlgeschlagen. Gehe in Deepsleep...
Wenn ich dann einen Button drücke, geht der ESPuino an und in den allermeisten Fällen wird die Karte dann korrekt gelesen und ich kann problemlos Audiofiles abspielen.
Wer zu faul ist auf Linux das ganze zu tun kann auch einfach in Windows mit diskpart eine Partition mit 32 GB auf FAT32 formatieren… Nur zur Vollständigkeit hier erwähnt .
Bei mir läuft es mit einer 256GB Karte nun auch stabil mit FAT32. Was man hier beachten sollte: Man darf einzelne Verzeichnisse nicht zu voll machen. Ab ca. 150 Dateien in einem Verzeichnis stürzt der ESPUino ab, wenn man das Verzeichnis in der Weboberfläche ausklappt. Mit Unterverzeichnissen (z.B. Folge 1-50, Folge 51-100, Folge 101-150) klappt es aber.
@fhirschmann Zunächst wäre es hilfreich hier den Log des Absturzes zu posten.
Mir fallen spontan zwei mögliche Ursachen ein:
Die Verzeichnisauflistung wird bei vielen Dateien grottenlangsam und der Watchdog-Reset springt an
Der Speicher für das JSON ist zu klein
Diese Dinge kannst Du noch probieren:
Fix für langsames Auflisten ist hier beschrieben. Damit sinkt die Auflistungszeit von z.B. 3 Sek auf 200ms.
Für den 2. Fall hier den Speicher für das JSON größer machen