How to fix “Couldn’t install on USB storage or SD card”
This weekend I went camping. In preparation for the trip I preloaded the Google Maps areas that were not covered by cell phone, copied a nandroid off of my phone in case I lost the thing, cleared up some space so that I could take tons of videos and photos, and attempted and failed to install Torque Pro, receiving the error “Couldn’t install on USB storage or SD card.”
I’ll point out here that Torque Pro (which is how I root my Honda Element) was not to blame for this error. Some other apps rendered similar results on install issues, but oddly not all.
There are several ways to fix the “Couldn’t install on USB storage or SD card” listed on the net, I didn’t find that any of them worked except what I did at the bottom.
Unmount the SD
Consulting the internet, I found a potential fix for some which involves going to settings, storage, and unmounting the SD card, installing your application, and re-mounting it.
This really doesn’t seem to work on devices that have the internal storage mounted as an SD card however. For me it didn’t work.
This seems to mostly work with apps that have prefer external install set, it’s a good thing to try first because if this works for you you know it’s something in the external SD that’s borked.
Delete smdl2tmp1 (root)
Another solution involved finding and deleting smdl2tmp1, which is a good solution and easy fix if that’s the problem. Unfortunately for me it didn’t seem to resolve it as I didn’t have that particular issue.
When all else fails, you might be forced to go this route if you’re not root. It involves starting from scratch but it’s as close to guaranteed as you’re going to be that that problem is resolved. I’ve read that this doesn’t work for everyone though so be aware it might not help if your firmware doesn’t properly factory reset.
Titanium Backup + factory reset + TB restore (root)
After looking around my phone a bit I discovered that /data/data had absurd amounts of application data from previous ROMs, things I’d deleted, applications that were preinstalled with other ROMs, etc. It was a wasteland.
Usually when switching ROMs I do a full wipe, and I know I’ve done them since but evidently my custom recovery has been sparing that folder for some reason. It was time for armageddon.
I did a complete backup with Titanium Backup of everything currently installed, rebooted into recovery and did a wipe of /data or factory reset (I used factory reset and then verified via adb shell that the junk was gone), boot up, enter in Google credentials, install Titanium Backup, restore everything I wanted.
I could have made a flashable zip of Titanium Backup, but I was tired and wasn’t thinking of that.
For me with labels set up for what I care about in Titanium Backup, this is a process of simply going into TB, choosing my “common between ROMs” label and restoring everything in that label. The cool thing about doing it this way is you get a factory reset to clear out all the junk data, and then TB only restores what you want.
In the end the phone looks mostly the same as it did and I can now install my apps again.
I really wish I’d had more time to study the issue and pull logs to see what the actual error is. In my case I had to get the phone completed asap as every minute I spent staring at it was one less I was going to sleep as I was headed out at 4:30am.