Wie man eine SD-Karte als internen Speicher auch beim Xiaomi Redmi 9 Smartphone unter Android 10 nutzen kann

Normalerweise gibt es seit Android 6 die Funktion, SD-Karten so zu formatieren, dass sie als interner Speicher behandelt werden können. Damit sollte es eigentlich kein Problem sein, wenn das Smartphone, wie mein neues Xiaomi Redmi 9 nur 32 GB internen Flash-Speicher hat. Man könnte sich ja einfach eine 128 GB SD-Karte (das Redmi kann sogar bis 512 GB) für um die 15 bis 20 Euro dazukaufen und hätte dann Speicher satt, denn die SD-Karten wird nach der Spezial-Formatierung wie interner Speicher behandelt und damit kann man ewig viele Apps parallel installieren, ohne das der Speicher knapp wird.

Die Betonung liegt hier auf "normalerweise". Denn der Hersteller Xiaomi hat über das Google-Android sein eigene Benutzeroberfläche, die MiUI gelegt und dabei die Formatierungsfunktion schlichtweg unzugänglich gemacht. Dokumentiert ist das natürlich nirgends und schon gar nicht taucht sowas im Datenblatt oder der Werbung auf. Ein Schuft, wer Böses dabei denkt, zum Beispiel dass Xiaomi der Meinung ist, der Kunde soll sich gefälligst die teure Pro-Version mit 128 GB Flash-Speicher kaufen, wenn er soviel Platz will.

Das ist schon ein bisschen hinterhältig von Xiaomi. Schließlich steht nicht auf der Verpackung "Vorsicht! Enthält nur kastriertes Android! Es fehlen wichtigen Funktionen!". Das findet man nur heraus, wenn man hartnäckig danach forscht oder halt weiß, welche Funktionen ein unbeschnittenes Android hat und was hier fehlt.

Aber das muss man sich nicht gefallen lassen. Mit diesem Tutorial erfahrt ihr, wie ihr aus eurem 3 GB RAM / 32 GB Flash - Redmi 9 ein Gerät macht, das 128 GB von einer eingesteckten SD-Karte plus die vorhandenen 32 GB, also 160 GB internen Speicher macht. Es gehen aber auch 256+32 und 512+32 GB Varianten für die, die nochmehr Speicher brauchen.

Eins aber ist klar: die 32 GB interner Speicher von Haus aus, von denen im Auslieferungszustand gerade mal noch 19 GB frei sind, werden ohne diesen Trick sehr schnell knapp werden. Ich habe das schnell gemerkt, als ich ein Manga-Rollenspiel installieren wollte, dass bei der Installation immer abbrach, weil keine 7.6 GB für den Download der Installationsdateien frei waren.

Doch was müssen wir tun, damit wir bald Speicher im Überfluss haben? Kurz gesagt: Das, was normalerweise das unzugänglich gemachte Formatierungsprogramm automatisch und mit einem Klick erledigt, zu Fuß mit der ADB, der "Android Debug Bridge", erledigen. Das ist eine Debug-Schnittstelle für Entwickler. Und das heisst:

Ab hier wird es sehr technisch. Aber mit dieser Schritt für Schritt Anleitung sollte das eigentlich jeder mit ein bisschen technischem Fachverständnis hinkriegen. Trotzdem: Ich übernehme keine Haftung für gar nichts. Kommt mir bitte nicht an, wenn ihr aus Neugier irgendwelche Befehle eingebt, von denen ihr keine Ahnung habt und das Smartphone danach nur noch als Türstopper taugt.

USB-Debugging erlauben und MIUI-Optimierung abschalten


Als erstes müssen wir dem Handy erst einmal klarmachen, dass wir "Entwickler" sind und es ernst meinen, sprich das "USB-Debugging" benutzen wollen. Dagegen ist es nämlich im Auslieferungszustand abgesichert. Nicht das jeder mit ein bisschen Ahnung unseren Speicher auslesen kann, ohne unser Passwort zu kennen.

Dazu gehen wir in die Einstellungen und suchen dort nach "debug". Danach tappen wir auf "USB-Debugging" und aktivieren es. Dann erhalten wir eine Warnmeldung und die Frage, ob wir USB-Debugging wirklich erlauben wollen. Klar wollen wir, also tappen wir auf "OK".

Sollte die Suchliste leer bleiben und kein Eintrag zum "USB-Debugging" auftauchen, dann müssen wir noch eine weitere Hürde aus dem Weg schaffen. Denn manchmal will Xiaomi partout nicht, dass wir die Entwickler-Optionen finden. Vielleicht wollen sie uns ja nur vor uns selbst beschützen, wer weiß. Egal, wenn die Liste leer bleibt, gehen wir unter Einstellungen auf "mein Gerät" und tappen dort 5 mal auf die Beschriftung "MIUI-Version" (siehe Screenshot rechts).

Nein, das ist kein Witz, dass ist die versteckte Schaltfläche, um "Entwickler" zu werden. Nach 5 mal Tappen erscheint dann die Meldung, dass man jetzt Entwickler ist und Simsalabim erscheinen wie durch ein Wunder auch die Debug-Optionen, wenn man in den Einstellungen danach sucht.

Zur Sicherheit sollten wir vielleicht die "MIUI Optimierung", die ja für das Versteckspiel verantwortlich scheint, ausschalten. Dazu suchen wir in den Einstellungen nach "miui" und tappen auf den gefundenen Eintrag. Oder wir scrollen in den Entwickleroptionen gaaanz nach unten und schalten dort die "MIUI Optimierung" aus. Eventuell klappt es auch mit eingeschalteter Optimierung, denn dem Text nach soll hier ja nur die Grafikdarstellung beschleunigt werden. Ich habe der Sache aber eher misstraut. Später wieder einschalten geht ja immer noch.

Apropos "später wieder einschalten". Die Erlaubnis zum USB-Debugging solltet ihr nachher, wenn ihr fertig seid, wieder zurücknehmen, nicht dass das jemand eventuell missbraucht, wenn ihr das Handy mal verliert oder es gestohlen wird.



Wir können das Redmi jetzt zwar schon an den Computer anstöpseln, aber das wird nicht erkannt werden. Zuerst brauchen wir noch den passenden Treiber...

Redmi USB-Treiber installieren

Bei Xiaomi auf der Treiber-Downloadseite geht es zu wie im wildgewachsenen Gemüsegarten. Man könnte fast meinen, Xiaomi möchte nicht, dass man den richtigen Treiber findet. Man wird wild kreuz und quer verwiesen, aber mit einem der vier folgenden Links solltet ihr fündig werden. Versucht zuerst Denn dieser Link kommt dabei raus, wenn man das Kauderwelsch im Link zum Beispiel mit dem MysteryMaster, einem Online-Dekodierungstools von mir, dekodiert (unter auf "ausführen" klicken). Das Kauderwelsch ist nämlich nichts anderes als Base64. So ist der Link jedenfalls auf der Treiber-Download-Seite von Xiaomi zu finden.

Mag da Xiaomi den Link vor Google verstecken, weil es sonst Lizenzabgaben oder sowas zahlen müsste? Oder wollen sie verschleiern, dass das Redmi den stinknormalen Android-USB-Treiber von Google benutzt? Ich habe keinen Dunst, was hier die Motivation ist und was die Kodierung soll. Ich für meinen Teil vertraue Google mehr als Xiaomi.

Das Heruntergeladen "latest_usb_driver_windows.zip" unzippen wir im nächsten Schritt, etwa mit 7Zip, zum Beispiel nach "d:\treiber\redmi9".

Dann gehen wir in den Gerätemanager (unter Windows 7 schnell mit Windows+Pause zu erreichen) und suchen dort den Eintrag Redmi9 mit rotem Ausrufezeichen. Darauf klicken wir mit der rechten Maustaste und dann auf "Treibersoftware aktualisieren".



Dann geben wir den Pfad an, in den wir den Treiber entpackt haben, also in meinem Fall "d:\treiber\redmi9" plus "\usb_driver" und klicken auf "Weiter".



Dann sollte die Erfolgsmeldung kommen, dass der Treiber jetzt erfolgreich installiert ist und auch das Ausrufungszeichen im Geräte-Manager sollte verschwunden sein.



Okay, die Verbindung zum Redmi steht. Fehlt noch die passende Software, um Befehle zum Smartphone absetzen zu können. Die nennt sich "Android-Debug-Bridge"...

ADB-Software von Google installieren

Die ADB ist Bestandteil des Entwicklungspakets für Android und in den "Platform Tools" zu finden. Das ist eine Sammlung von Werkzeuge rund um die Android-Entwicklung.

Den Download finden wir unter Die Tools natürlich wieder unzippen, diesmal vielleicht in den Ordner "d:\tools\platform-tools".

Test, ob ADB-Tool funktioniert

Als nächstes starten wir eine Eingabeaufforderung unter Windows und wechseln in das Unpack-Verzeichnis und testen, ob die ADB-Installation korrekt ist. Dazu einfach "adb" eingeben. Dann erscheint die Hilfe... 21:31:44,64 d:\tools\platform-tools >> adb Android Debug Bridge version 1.0.41 Version 30.0.5-6877874 Installed as d:\tools\platform-tools\adb.exe global options: -a listen on all network interfaces, not just localhost -d use USB device (error if multiple devices connected) -e use TCP/IP device (error if multiple TCP/IP devices available) -s SERIAL use device with given serial (overrides $ANDROID_SERIAL) -t ID use device with given transport id -H name of adb server host [default=localhost] -P port of adb server [default=5037] -L SOCKET listen on given socket for adb server [default=tcp:localhost:5037] general commands: devices [-l] list connected devices (-l for long output) help show this help message version show version num ... ADB läuft. Aber können wir damit auch aufs Handy zugreifen?

Verbindung zu Redmi 9 Smartphone checken

Dazu listen wie die Geräte, die das ADB-Tool findet. Das Handy ist dabei natürlich immer noch in einem USB-Port eingesteckt... 21:34:15,57 d:\tools\platform-tools >> adb devices List of devices attached 123456789abc unauthorized 123456789abc ist die ID meines Redmi. Ich habe sie nur ein bisschen anonymisiert.

Verbindung auf dem Handy erlauben

Jetzt oder im weiteren Verlauf wird eine Meldung auf dem Smartphone aufpoppen, die fragt, ob wir das USB-Debugging erlauben wollen. Klar wollen wird, ohne geht's ja schließlich nicht. Also auf OK tappen. Vielleicht vorher die Option "immer erlauben" rausnehmen, nur aus Sicherheitsgründen.



ADB-Shell aufrufen und Befehle eingeben

Jetzt geht es ans Eingemachte. Nun haben wir endlich selbst die Kontrolle über unser Redmi und können definieren, dass die eingesteckte 128 GB-Karte zu internem Speicher werden soll. Dabei wird natürlich alles auf der SD-Karte gelöscht. Wenn da also noch irgendwelche Daten drauf sein sollten: vorher sichern!

SD-Karte zu internem Speicher machen

Dazu benutzen wir die Shell des ADB und darin die SM-Tools, die für das Disk-Management zuständig sind. Ein kurzer Blick auf die Hilfe kann nicht schaden: 21:50:27,22 d:\tools\platform-tools >> adb shell galahad:/ $ sm help usage: sm list-disks [adoptable] sm list-volumes [public|private|emulated|stub|all] sm has-adoptable sm get-primary-storage-uuid sm set-force-adoptable [on|off|default] sm set-virtual-disk [true|false] sm partition DISK [public|private|mixed] [ratio] sm mount VOLUME sm unmount VOLUME sm format VOLUME sm benchmark VOLUME sm idle-maint [run|abort] sm fstrim sm forget [UUID|all] sm set-emulate-fbe [true|false] sm defrag [run|stop] sm set-isolated-storage [on|off|default] Als erstes gucken wir nach, ob es überhaupt Speicherkarten gibt, die man "adoptieren" und zu internem Speicher machen kann. galahad:/ $ sm has-adoptable true Gut. In diesem Fall gibt es welche.

Sollte hier ein "false" als Antwort kommen, dann hilft es eventuell, das adoptieren mit dem Befehl galahad:/ $ sm set-force-adoptable on zu erzwingen. Danach das "sm has-adoptable" noch einmal wiederholen, ob dann ein "true" kommt.

Haben wir nun ein "true", schauen wir uns doch mal an, welche adoptierbaren Speicher es gibt: galahad:/ $ sm list-disks disk:179,128 galahad:/ $ Okay, eine Disk "disk:179,128" steht zur Verfügung. Die "128" steht dabei für die Größe, in meinem Fall für 128 GB.

Schauen wir uns die Disks ein bisschen näher an: galahad:/ $ sm list-volumes private mounted null public:179,129 mounted 56AA-98C3 emulated mounted null galahad:/ $ Wir haben also ein Volume "179" mit 129 GB (wo kommt das eine GB mehr plötzlich her?) Speicher der Art "Public" und daneben das interne Volume "null" mit der Art "private". Vom internen Volume lassen wir die Finger.

Für das Public-Volume, also unsere SD-Karte, können wir bestimmen, wieviel GB wir davon dem internen Speichern zugerechnet haben wollen. "private" ist interner Speicher, "public" ist externer Speicher.

Auf den internen Speicher können auch Apps installieren werden, auf dem externen Speicher nicht. Der interne Speicher ist verschlüsselt, der externe (je nach Android-Version und Option) evtl. nicht und kann so eventuell im SD-Kartenleser im PC gelesen werden.

Da beim Redmi das Entfernen der SD-Karte ein ziemliches Gefrickel ist, besonders mit der Silikon-Schutzhülle (die ich persönlich gut und eine super Dreingabe finde), nehme ich den kompletten Speicher als intern.

Das geht mit dem Befehl galahad:/ $ sm partition disk:179,128 private Jetzt sollte es einen Moment dauern, bis sich Sir Galahad, unser treuer Ritter der Tafelrunde (galahad:/ $) wieder zurückmeldet.

Überprüfen wir sodann die neue Disk-Konfiguration: galahad:/ $ sm list-volumes emulated:179,130 unmounted null private:179,130 mounted 12345678-1234-1234-1234-123456789abc private mounted null emulated mounted null galahad:/ $ Sehr gut, wir haben jetzt zwei Volumes, die "private" sind, also internem Speicher entsprechen. Natürlich ist die Volume-ID "12345678-1234-1234-1234-123456789abc" nicht meine echte, die habe ich nur aus Gründen der Datensparsamkeit geändert.

Internen Speicher für Apps verwenden

Schmeißen wir noch kurz den Paket-Manager an, um die Apps für den neuen Speicher klarzumachen und ggf. auch umzuziehen: galahad:/ $ pm help Package manager (package) commands: help Print this help text. ... galahad:/ $ pm move-primary-storage 12345678-1234-1234-1234-123456789abc Hier ist statt "12345678-1234-1234-1234-123456789abc" natürlich die Zeichenkette vom vorletzten Befehl zu verwenden.

Und wieder dauert es eine ganze Weile - da können schon mal 10 Minuten und mehr ins Land gehen - bis wir ein "Success" erhalten. Wunderbar, es hat alles geklappt. Jetzt können wir das ADB-Tool verlassen. galahad:/ $ exit 22:22:27,31 d:\tools\platform-tools >> und das Smartphone neu starten, indem wir den Einschaltknopf lange drücken und die entsprechende Option wählen.

Erfolg!

Das Smartphone denkt jetzt, es hätte 128 GB internen Speicher:



Auch wenn die Anzeige nicht immer 100%ig korrekt ist, z. B. "Verfügbar: 8,24 GB". Eigentlich sind es ja 128 GB neuer Speicher und ein bisschen alter, bereits vorhandener. Auf einer Seite heißt es dann "117,28 GB" interner Speicher verfügbar.

Das liegt aber wahrscheinlich daran, dass die MiUI nicht damit rechnet, dass jemand rumtrickst und sich um Umwegen internen Speicher über eine SD-Karte besorgt.

Wichtig ist doch, dass sich die Apps im neuen internen Speicher installieren lassen und dort problemlos laufen. Und die Apps laufen auf dem Android-OS und nicht auf dem MiUI-Verschnitt.

Die Installation des Spieles Genshin Impact, die vorher immer fehlgeschlagen war, weil das Spiel 8 GB Installationsdateien in den internen Speicher herunterladen wollte, funktioniert jetzt auf jeden Fall ohne Probleme.



Leider ist das kleine Redmi 9 dann doch zu schwachbrüstig, um das Spiel flüssig spielen zu können. Ständig hakelt die Grafik oder Sound-Ausgabe. Aber das Problem liegt jetzt nicht am mehr an zu knappen Speicher, sondern eher, dass die CPU nicht leistungsstark genug ist, 3D in 1.080 x 2.340 Pixel HD zu rendern. Das ist die Kehrseite der Medaille "hochauflösender Bildschirm".

Warum macht Xiaomi das?

Warum beschneidet der Hersteller Xiaomi die normalerweise in Android 10 vorhandene Funktion, Apps auch auf der SD-Karte zu installieren? In Android gibt es eigentlich eine Funktion, um eine SD-Karte speziell zu formatierten und so für Apps brauchbar zu machen. Im Prinzip macht die automatisch, was wir gerade per Hand erledigt haben. Xiaomi hat in seiner eigenen Oberfläche MiUI (für Mi User Interface?) einfach diese Funktionalität unzugänglich gemacht.

Unfair würde manche einer sagen. Aber wenn ich bedenke, dass ich ein 8-Core Smartphone mit 3 GB RAM, 32 GB internem Flash-Speicher, hochauflösenden Full-HD-Auflösung auf einem 6,5 Zoll Screen, Fingerabdrucksensor, Kompass, NFC, IR-Sendeeinheit und allem Schnick und Schnick am Black Friday für unter 100 Euro ergattert habe, bekomme ich eine Ahnung, was der Hersteller da treibt.

Bei dem Preis kann der gar nicht anders, als das Redmi 9 als "Einstiegsdroge", als Probierstückchen anzubieten. Und wer auf den Geschmack gekommen ist, kauft sich die Pro-Version mit 128 GB internem Flash und 64 Megapixel-Kamera (statt 13 MP wie das Redmi), spätestens, wenn er merkt, das 32 GB (davon sind im Auslieferungszustand ja auch nur noch 19 GB oder so für eigene Apps und Daten frei) doch nicht für alle Zeiten reicht.

Außerdem sind einige Apps im Auslieferungszustand dabei, für die Xiaomi auch Geld bekommen wird, als Prämie, weil es für andere Software-Hersteller Probierstückchen mitliefert, die der Benutzer dann vielleicht lieb schätzt und in besserer Version kauft. Und dann kann ich mir gut vorstellen, dass Xiaomi auch Provisionen bekommt, wenn über die eBay oder die AliExpress-App eingekauft wird. Mir war nämlich ein System-Service aufgefallen, der "eBay Partner" im Namen hatte. eBay Partner ist das Programm, mit dem eBay Provisionen für Vermittler ausschüttet.

Man kann die Werbe-Apps aber auch deinstallieren. Und mit dem hier vorgestellten Trick eben auch den Speicher hochschrauben, so dass man ein Smartphone hat, dass man für diesen Preis im Grunde genommen eigentlich gar nicht kriegen könnte.

Ein schlechtes Gewissen habe ich deswegen aber nicht. Xiaomi ist ja auch nicht besonders transparent mit seiner MiUI. Und da diesen Trick nur die wenigsten kennen, oder sich nicht trauen, ihn anzuwenden, weil ihnen etwa das Computer-Knowhow fehlt, habe ich keine Sorgen, dass Xiaomi wegen mir ins Minus rutscht.

Nachtrag 2023-01-03: MIUI-Update funktioniert evtl. nicht richtig


Ich habe Rückmeldungen bekommen, dass das Update auf eine neue MIUI-Version nicht mehr richtig funktioniert, wenn man mit einer SD-Karten den internen Speicher erweitert wie hier beschrieben.

Das äußert sich darin, dass der Download nicht mehr korrekt funktioniert. Ich selbst habe das Problem auch und weiß zu berichten, dass meistens sofort eine Fehlermeldung kommt, dass das "Herunterladen nicht möglich" sei. Ich habe aber auch schon beobachtet, dass er manchmal ein Stückchen weit herunterlädt und dann mit gleicher Fehlermeldung abbricht.

Ich habe das deshalb immer auf eine schlechte Serververbindung zurückgeführt, gerade auch wegen den Abbrüchen mittendrin. Aber dass sich jetzt auch andere Leser melden, die den "Speichererweiterungstrick" angewendet haben und Probleme beim MIUI-Update haben, lässt mich vermuten, dass es doch an der Speichererweiterung liegt. Ein Leser äußerte die Vermutung, dass das Smartphone vielleicht bei der Berechnung des freien Speichers für den Download durcheinanderkommt und deshalb abbricht. Das hört sich für mich nach einer plausiblen Ursache an.

Mir persönlich ist das Update auf die neueste Version nicht so wichtig. Erstmal, weil ich in vielen Foren Beschwerden von Anwendern gelesen habe, deren Redmi nach einem MIUI-Update sehr viel langsamer geworden ist. Zweitens, weil ich keine Funktionen vermisse in meiner derzeitigen Version. Und drittens, weil ich befürchte, dass dann wieder reichlich Werbe-Apps und anderes "Nerv-Gedöns" mitkommt. Auf der anderen Seite sind die Sicherheitsupdates einer neuen Android-Version vielleicht auch nicht ganz unwichtig.

Wie dem auch sei, seid gewarnt, dass es gut zu diesem "Update funktioniert nicht mehr"-Verhalten auch bei euch kommen kann. Wollt ihr unbedingt Updates, dann solltet Ihr den Trick besser nicht durchführen, um auf der sicheren Seite zu sein.

Sollte mir das Update irgendwann, z. B. wegen einer wirklich kritischen Sicherheitslücke, wichtig werden, dann werde ich mich eingehender mit dem Thema beschäftigen. Vielleicht reicht es ja, die SD-Karten temporär zu dismounten, das Update durchzuführen und danach sie SD-Karte wieder zu mounten?

Falls jemand von euch das Update-Problem auch hatte und eine Lösung dafür gefunden hat, möchte er/sie mir doch eine mail schreiben. Dann werde ich hier an dieser Stelle berichten - und natürlich auch, wenn ich das Problem selbst angehe.