This is going to be a rant, so be prepared. I have to start out saying that I truly do love the Android OS and I am really pleased with it in my phone and tablet. The thing is that my tablet runs Android 4.0 Ice Cream Sandwich, whereas my phone only runs Android 2.2. On versions of Android 3.0 and earlier, devices could be mounted as mass storage devices using any computer OS when plugged in using USB. Starting with Android 3.1 and later, they only support the Media Transfer Protocol (MTP) or the very similar Picture Transfer Protocol (PTP). You can select the mode when you plug in the device. PTP is well supported by all OSes nowadays and works perfectly. The only issue is that when the device uses this mode, it is detected as a camera and you can only access the pictures on the device, nothing else. MTP was developed by Microsoft as a way of getting media such as pictures, music and videos on and off portable devices. MTP is in fact an extension of PTP. The problem is that MTP was never widely implemented into OSes other than Windows Vista and later; therefore the big problem lies with Linux. Most (if not all) Linux distros do not come with any support for MTP out of the box. There are packages that can be installed to enable functionality, but they really suck. For example if you want to mount your Android device in MTP mode, you have to run through a bunch of shell commands that require a lot of knowledge that most users do not have. Even if you do get the device mounted, the problems do not stop there. The actual performance is abysmal. It takes about 2 minutes to just load a directory on my device, which makes browsing basically hopeless. Even so, I could not seem to transfer any media files to my device other than pictures. The files that were not pictures were silently dropped and no matter what I tried and how I tried to copy them, they would not go. So in the end, I really end up with the same functionality as I would if I had simply used PTP mode.

This is clearly a problem. I really hate having to boot into Windows simply to transfer an MP3 to my device. That is stupid. I do almost 95% of everything in Linux (including music management) and having to switch OSes and back is really retarded. If you are wondering why Google dropped mass storage support, it does make sense from a technical standpoint. With mass storage, the device has to be accessed at the block level and it can only have one mount point. This means that when the device is connected to the computer, it has to unmount (disconnect) the internal memory/SD card from the Android OS and pass control to the PC. The memory would then be remounted when the user was finished. There were problems with corruption and overall slowness and the lack of the ability to use the device while the transfers were taking place. Since MTP is not block level, it is impossible to have a corrupt transfer or filesystem. It can also be used by the Android OS and the PC at the same time.

While the switch to use MTP was a good one from the technical standpoint, the problem with computer OS compatibility is a big downside. Yes, most of the world uses Windows, but there is still a significant percentage which use Linux or OS X. Google needs to help the Linux community develop an easy to use and properly functioning library for communicating with MTP devices. The sad thing is that Android is Linux, and Linux is sadly not getting the attention it deserves.