Start Aktuell Mixed Mode: microSD-Karte unter Android Marshmallow als internen und externen Speicher nutzen

Mixed Mode: microSD-Karte unter Android Marshmallow als internen und externen Speicher nutzen

84769
20

Eine zentrale Neuerung von Android 6 „Marshmallow“ besteht darin, dass sich eine SD-Karte auch als interner Speicher formatieren lässt. Damit gehören Probleme mit einem zu kleinen internen Speicher der Vergangenheit an. Die Alternative bleibt eine Nutzung wie bisher. Doch es gibt auch einen dritten Weg, den gemischten Modus.

Apps auf die microSD-Karte auszulagern, war in den Anfängen unter Android 2.x ganz normal. Denn die meisten Geräte besaßen 8 oder 16 GByte internen Speicher, sodass früher oder später die microSD-Karte dran glauben musste. Mit KitKat wollte Google das Rad neu erfinden und verbot quasi das Auslagern von App-Daten auf die externe Speicherkarte, was für viele Nutzer eine Katastrophe war. Android 5 machte diese Änderung teilweise wieder rückgängig, eine echte Lösung für das Problem des zu wenig internen Speicher bot jedoch auch Lollipop keine.

Marshmallow will alles besser machen und erlaubt nun — zumindest in der Version von Google — die Nutzung einer microSD-Karte als internen Speicher. Besitzt dein Smartphone zum Beispiel 16 GByte internen Speicher und du legst eine 32 GByte Karte ein, dann kannst du auf 48 GByte Speicher Apps installieren, Videos aufnehmen etc.

Ist doch alles wunderbar, oder?

Die neuen Probleme fangen dort an, dass der interne Speicher verschlüsselt ist und auch vom Android-System als interner Speicher behandelt wird. Das bedeutet, dass beim Anschließen des Smartphones an einen Computer nur die gewohnten Verzeichnisse des internen Speichers zu sehen sind. Zudem ist es nicht möglich, eine als intern formatierte Karte einfach so an einem anderen Rechner oder auf einem anderen Smartphone zu lesen. Denn erstens benutzt Android für die intern formatierte Karte Ext4 als Dateisystem, womit Windows und Mac OS X von Haus aus nicht klarkommen, und zweitens ist das Dateisystem verschlüsselt. Der Schlüssel lässt sich zwar mit etwas Aufwand auslesen, wenn man auch auf das Smartphone via Shell zugreifen kann, aber diesen Aufwand betreibt niemand wirklich ernsthaft, um nur mal schnell Daten von der Karte auszulesen.

Ein weiteres Problem besteht darin, dass die microSD-Karte für die Nutzung als interner Speicher (adptable Storage) formatiert werden muss. Dabei gehen — wie üblich — sämtliche Daten verloren. Samsung und LG haben sich deshalb dazu entschlossen, das Feature auf ihren Marshmallow-Geräten per Update nicht anzubieten. Über einen Trick lässt sich der adaptierbare Speicher aber dennoch einschalten. Wenn du ein Power User bist, und auf deinem LG G4 oder Samsung Galaxy S7 neben den internen 32 GByte Speicher noch weitere 32/64/128 GByte Speicher erhalten möchtest, dann musst du dich lediglich per adb shell auf dem Smartphone einloggen und hier folgende drei Befehle ausführen:

sm set-force-adoptable true
sm list-disks
sm partition disk:123_45 private

Den Eintrag für 123_45 oder 123,45 musst du dabei durch die Ausgabe des Befehls sm list-disk ersetzen. Danach ist die microSD-Karte „adoptiert“.

„Mit Marshmallow kannst du auch eine 500 GByte USB-Platte als internen Speicher formatieren.“

 

Auch wenn du ein SHIELD-Tablet oder SHIELD TV mit Marshmallow besitzt und dich noch nicht getraut hast, zum neuen Modus zu wechseln, eignet sich diese Anleitung wunderbar. Last but not least sei auch erwähnt, dass das Ganze nicht nur für microSD-Karten gilt, sondern auch für einen beliebigen Speicher, den man via USB ans Android-Gerät anschließt. Du kannst also auch eine 500-GByte-Festplatte auf diese Weise als internen Speicher formatieren :-)

Der undokumentierte gemischte Modus

Die neue Lösung ist also wunderbar für alle, die die microSD-Karte entweder nur als externe Karte wie bisher benutzen möchten oder diese nur als internen Speicher einsetzen. Was aber, wenn jemand gerne seinen internen Speicher erweitern, aber trotzdem die Möglichkeit nutzen möchte, einen Teil dieses Speichers mobil zu benutzen? Dafür gibt es den relativ unbekannten gemischten Modus. Über ihn lässt sich ein Teil der microSD-Karte als interner Speicher im Ext4-Format formatieren, der Rest als mobiler Speicher im Uralten VFAT-Format. Dafür musst du allerdings kräftig in die Tasten hauen und dich via ADB auf deinem Androiden einloggen.

Das Ziel: Die 64 GByte große microSD-Karte soll zu 32 GByte als mobiler Speicher, zu 32 GByte als interner formatiert werden.
Das Ziel: Die 64 GByte große microSD-Karte soll zu 32 GByte als mobiler Speicher, zu 32 GByte als interner formatiert werden.

Auch hier gehen sämtliche Daten auf der microSD-Karte erst einmal verloren, da diese neu formatiert wird! Root-Rechte sind dazu keine notwendig, lediglich die Entwickleroptionen und USB-Debugging musst du aktiviert haben.

Alles klar? Dann kann es losgehen. Wenn du ein Smartphone mit Android 6 „Marshmallow“ und einem microSD-Slot besitzt, dann richtest du den Mixed Mode folgendermaßen ein:

  1. Zunächst musst du das Feature einschalten. Wie oben erwähnt, ist es bei LG und Samsung nach einem Update per default nicht aktiv. Schalte also den Adoptable-Storage-Modus ein. Dazu loggst du dich über adb shell auf dem Smartphone ein und gibst den folgenden Befehl ein:
    sm set-force-adoptable true
  2. Jetzt musst du die Disk-ID der microSD-Karte herausfinden das geht über den Befehl sm list-disks, zum Beispiel:
    shell@jfltexx:/ $ sm list-disks 
    disk:179_32
  3. Die gesuchte Angabe lautet in diesem Fall also disk:179_32. Nun erfolgt die eigentliche Partitionierung über den Befehl:
    sm partition disk:179_32 mixed 50

Das war’s auch schon. Der interne Speicher will anschließend noch von Android formatiert werden, hier einfach nicht den falschen Speicher wählen, sonst fügt das Android-System die zwei Partitionen wieder zu einer zusammen.

Die Zahl 50 hinter „mixed“ gibt an, welcher Prozentsatz als externer Speicher formatiert wird. Bei einer 64-GByte-Karte sind somit 32 GByte adoptiert/intern, 32 GByte extern. Möchtest du lediglich ca. 20 GByte als interne Erweiterung benutzen dann lautet der Befehl

sm partition disk:179_32 mixed 30

Die folgende Abbildung zeigt die drei Schritte in der Shell noch einmal.

Über drei Befehle auf der Android-Kommandozeile richtest du eine microSD-Karte als gemischten Speicher ein.
Über drei Befehle auf der Android-Kommandozeile richtest du eine microSD-Karte als gemischten Speicher ein.

Auch das Formatieren  als interner/adoptierter/privater Speicher oder als externer/portable ist über die Kommandozeile möglich. Dazu einfach mal den Befehl sm ohne weiteren Parameter in der Shell eingeben:

shell@jfltexx:/ $ sm 
usage: sm list-disks [adoptable]
 sm list-volumes [public|private|emulated|all]
 sm has-adoptable
 sm get-primary-storage-uuid
 sm set-force-adoptable [true|false]
sm partition DISK [public|private|mixed] [ratio]
 sm mount VOLUME
 sm unmount VOLUME
 sm format VOLUME
 sm benchmark VOLUME
sm forget [UUID|all]

Fazit

Ja, Google hat bei Marshmallow alle Register gezogen, was den (fehlenden) internen Speicher anbelangt, aber auch Samsung und LG haben die richtige Lösung getroffen, dieses neue Feature bei einem Update nicht anzubieten. Doch Android wäre nicht Android, wenn man die Sache auf der Kommandozeile nicht so einrichten könnte, wie man es als Power User gerne hätte. Insofern wünsche ich „Happy Formatting“!

20 Kommentare

  1. Hi, ich hab das jetzt versucht, aber ich kriege es nicht hin. An der Stelle wo du sagst einfach nur sm eingeben, kommt ein Fehler am Ende Error: java.lang.IllegalArgumentException. Woran kann das liegen?

    Viele Grüße,

    M.G.

  2. Anscheinend handelt es sich dabei um einen Bug bei gewissen Geräten, bzw. mit der microSD-Karte. Falls Custom-ROM, dann am besten einen Bug-Report schreiben.

  3. Ich hab cyanogenmod 13 drauf und nutze ein Samsung s4. Ich kriege es nicht hin, dass das so klappt. Wie soll ich den Bug report erstellen? mehr als diesen einen Fehler bekomme ich leider nicht.

  4. Ich hab es genau so gemacht, dieses Mal die Speicherkarte als interne formatiert und dann sm , kam wieder die selbe Feher. am Ende dass man per sm die Partitionen richtig hat, passt nicht

  5. Update: also mit dem erst als intern, dann die oben genannten Schritte durchführen hat es dann doch gebracht, jedoch ohne sm am Ende. Das bringt irgendwie nichts (zumindest bei mir)
    P.S. Das mit dem „adb shell“ damit man eben die shell „öffnet“, sollte auch als Schritt gesondert erwähnt werden und nicht nur im Text.
    und VIELEN DANK!!!

  6. Vielen Dank, hatte etwas Bedenken wegen der Garantie. Bekomme die Tage nämlich ein neues Handy mit Android 6 wo ich die Karte entsprechend einrichten muss

  7. Wenn ich die SD-Karte meines Samsung Gerätes wie im Artikel beschrieben vorbereite (z.B. nur 50% als interen Speicher nutze), was passiert dann nach einem OTA Update?
    Wird die Karte trotzdem weiterhin ohne Probleme erkannt?

  8. Hallo,
    Bei mir steht dann in den Einstellungenen, dass die SD Karte beschädigt sei. Habe ich was falsch gemacht?

  9. der befehl „sm“ ist entweder falsch geschrieben oder konnte nicht gefunden werden
    sm set-force-adoptable true
    was soll ich tun ???

  10. leider bekomme ich die Karte von meinem A5 nicht formatiert.
    gebe ich sm ein, erhalte ich die gleichen Angaben als wenn ich sm list-disk eingebe.
    Bei sm list-volumes komme ich and den Namen der SD Karte.
    Formatiert bekomme ich sie nicht.

  11. Vielen Dank für die Anleitung, hat gut funktioniert! Beim Hinweis nur z.B. ca. 20 Gb als internen Speicher zu benutzen, müsste man aber: sm partition disk:179_32 mixed 70 eingeben, da hier mit der letzten Zahl in Prozent angegeben wird, wie viel mobilen Speicher man partitionieren will.

  12. Hallo,
    ich bin neu, was adb / USB Debugging usw. betrifft. Ich habe SDK installiert, habe ADB-Tools installiert, habe ADB Treiber / gerätespezifische Treiber installiert. USB Debugging aktiviert, adb aufrufen geht. device gefunden und aktiv. adb Shell gestartet. läuft. ABER: ich kriege immer den Fehler „sm not found in /system/bin/sh“. Habe in der Shell echo $PATH gemacht und bin alle angegebenen Pfade durchgegangen: kein „sm“. leider geht das Suchen auch nicht, da auch „find“ nicht gefunden wird. Bitte kann mir jemand helfen: was muss ich tun, damit der adb shell Befehl „sm“ erkannt und ausgeführt wird? Ich habe keine su / root Rechte, weil in der Beschreibung zur Erweiterung des internen Speichers für Galaxy S7 nichts davon steht. Bitte und DANKE im Voraus!

  13. Hallo,

    genial wäre ein tweak, wie man wenn man das ding neu aufsetzt, die Externe SD behalten kann und nur die interne neu ins system einbinden muss… finde mit den befehlen keine Möglichkeit dazu.

    muss man immer diese partitionsarie durchführen für beide partitionen??? Die eine exestiert ja noch… oder bin ich doof?

    vg

Comments are closed.