Chinese smartphone system update adventure
Some time ago I decided it was time to get a better smartphone, since the non-replaceable battery in my Moto G started losing capacity and the microUSB connector became so wonky that it took me a good minute every evening to get the thing to start charging - and then I'd have to lay it down extremely carefully and never touch it again lest the goddamned cable would lose contact again.
But anyway, that's not what I want to tell you about. I want to tell you about the replacement. After googling for a while I found out that 1) nobody makes an Android smartphone with a slide-out QWERTY keyboard (oh Xperia Mini Pro, how I miss you...) and 2) "compact" smartphones nowadays are the size of a fucking oar, except for the absolute low end which is so slow at everything it would drive me insane, even though the most intensive thing I do on smartphones is browse Slashdot discussions on the toilet.
There was one thing, though: Xiaomi MI2s. It's almost exactly the size of the Moto G (has a smaller display, though), and when it was introduced it was fairly cheap and really fast - it was more powerful than contemporary top-end models from "established" manufacturers (Samsung, Sony Ericsson) while costing about 40 - 50 % less. Nowadays it's fairly old and of course it's been surpassed, but still decently powerful, and also much cheaper... and they actually have an distributor in my country, so I wouldn't have to order one from China and hope it never ever has any problems!
Well, thank $deity I thought of this, because I actually ordered the thing months ago and I only now started using it, after having to send it back twice due to phantom touch issues. There were other problems that I managed to fix by myself; for example, when they sent it back from the first repair, the technician apparently didn't turn the phone off, left the battery in, and it drained itself to the 3% and shut down... and then a little bit more as it was sitting in a cold warehouse. And the fascinating thing about this phone is that if the battery has very, very little charge left, it refuses to charge. Apparently it's a known issue - says the internet. I managed to fix it through excessive swearing and some insane combination of plugging in the charging cable, removing the battery, starting it... I don't even know what I did, it was all a red haze to me.
But now, I have the phone back again, phantom touches seem to ge gone and it's charging normally, so all is good, right? Let me set it up and start using it. And look, there's a system update available! Yeah, I heard MIUI (the custom Android "spin", I guess, that it runs) has an active community and even older phones get updates. How wonderful! Let's use the updater app.
Downloading... applying update... boom, fail. With zero useful information, just "could not apply update" or some shit. OK, whatever, I'll just boot into recovery and do it from there. Nope! No updates for you!
So I got curious. A somewhat interesting (read: stupid) feature of this phone is that it has 2 system partitions, one of which runs and the other one should, theoretically, hold a previous version of your whole system, which could be nice in case of an update gone wrong. The in-system updater app always updates the currently inactive partition while the recovery can only update system 1, for some reason. Either way, the system I was in was running from the second partition, meaning it was trying to update the 1st, while the recovery was also trying to work with that. I noticed that my phone was booting from partition 2, and the phone seemed to hang when trying number 1. So thought the repair technician was screwing around in the system and broke something and that's why the phone wasn't updating.
After spending hours on the MIUI forums, which by the way are horrible, I was none the wiser. I tried flashing a new recovery image, which didn't help either. I spent hours trying increasingly stupid random shit I found on the internet - forums, blogs, whatever seemed relevant and didn't involve screwdrivers and wires. (I found one procedure like that, too...). At several points I thought I bricked the whole thing.
And then I ran into a forum thread that didn't really seem relevant at first glance. It's for a different model, and it's about someone wanting to only use one of the system partitions and explaining how to make it bigger by reducing the second one. And then I thought of something. That couldn't be it, could be? I mean... they wouldn't possibly... there's no way, right?
Model: MMC 032G94 (sd/mmc) Disk /dev/block/mmcblk0: 31.3GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags <snip> 23 336MB 872MB 537MB ext4 system 24 872MB 1409MB 537MB ext4 system1 <snip>
Both system partitions have a size of 537 MB. The update image I was trying to install was, DUN DUN DUNNNNNN... a 556 MB .zip. This was an official update, downloaded from en.miui.com, meant for this exact phone - the motherfuckers pushed an update that was literally too large to fit into the default partitioning scheme. The updater didn't check that, either, why would it? It just started unpacking the .zip into partition 23 or 24, then ran out of room and deleted everything, which is why it always failed at ~90 %. And it never said why.
After some work with parted I was able to reduce the size of the storage partition and double each system partition in size. After that, installing the new ROM worked and the system is now up to date. But I have to ask - is it so goddamn hard to output a marginally useful error message? AND IS IT SO GODDAMN HARD TO CHECK IF YOUR UPDATE ACTUALLY FITS ON THE DEVICE YOU'RE UPDATING, YOU FUCKING FUCKERS?! I HAD TO REPARTITION MY FUCKING CELL PHONE! IF I WANTED TO HAVE TO DO THAT KIND OF SHIT, I'D HAVE BOUGHT AN N900!
Oh and also the phone is nice and small and snappy and everything, but jesus it's slippery. I'll have to get a case or something, using it with one hand is like trying to type a text on a wet bar of soap.
(And also, I still have no idea why I couldn't boot from partition 1.)
And the fascinating thing about this phone is that if the battery has very, very little charge left, it refuses to charge
I got to that point on my Galaxy S2 once. There was so little battery that when you plugged it in it did the semi-boot into the charging screen, but this drained the battery to the point where it died. It was still getting some in from the charger so once it had enough juice it would try again, and die again. I think I sorted it by finding a higher power charger and warming the battery up in my hands.
I could understand if that was the problem, but it was way stupider. It got to that screen fine, it could even stay there a while before powering down again. Multiple times, too. But it was showing the battery at 0% and refused to charge it.
nobody makes an Android smartphone with a slide-out QWERTY keyboard
Who would want that? Fondle that touchscreen. Enjoy the lack of tactile response! Enjoy not being able to touch-type! Fondle it! Fondle the red boob... no, wait, that's a NodeBB specific thing, ignore the last bit.
By the way, the updated ROM has a new screen during the initial setup thingy where you log into accounts and such. It asks you to choose your locale, for some reason (no, it doesn't have anything to do with the time zone, language, or default keyboard, those are all separate settings and most of them are set during this same procedure too). The only choices you get are:
- Hong Kong
And nothing else. This is a "global" ROM, as evidenced by the file name
miui_MI2Global_V18.104.22.168.LXAMICK_9407576128_5.0.zip. The only other stable ROM offered by the download site is one for the Chinese version of the phone. I wonder if that would allow me to pick Czech Republic - or nothing at all, since I have no clue what it's actually used for.
@blek You're clearly . You should install a hypervisor in your phone then run your OS in the virtualized environment. Get with the times!
2 system partitions
I mean, I guess I can see how that would be useful, but.... wtf!? That's taking a system-sized chunk out of internal storage...
That's taking a system-sized chunk out of internal storage
Slightly less than system-sized, actually
It asks you to choose your locale, for some reason ...
I wonder if that would allow me to pick Czech Republic - or nothing at all, since I have no clue what it's actually used for.
It wants you to select which country you prefer your credit card info to be sold to, or maybe to auto-fill your porn hub preferences.