Tuesday, January 22, 2013

Accessing Nexus 4 USB Storage From Linux

The objectives is to be able to access USB storage on Nexus 4 from my Linux desktop. This way, I can easily copy and/or move files from/to Nexus 4.

1. Enable Developer options:
a. Open Settings
b. Tap 'About phone'
c. Tap on 'Build number' seven (yes, it's 7) times
d. You'll get the notification that Developer options is enabled

2. In settings, you'll find in System tab the Developer options, tap to open it, and then check the USB debugging option

3. Install necessary modules to Linux desktop:
$ sudo apt-get install mtp-tools mtpfs
4. Configure 51-android.rules:
$ sudo vi /etc/udev/rules.d/51-android.rules
5. Paste the following line into the file:
#LG - Nexus 4
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666"
6. Make the file executable:
$ sudo chmod +x /etc/udev/rules.d/51-android.rules
7. Restart udev
$ sudo service udev restart
8. Create mount point and permissions
$ sudo mkdir /media/nexus4
$ chmod 755 /media/nexus4
9. Plug in Nexus 4 and make sure MTP is enabled

10. Mount with the following command:
$ sudo mtpfs -o allow_other /media/nexus4
11. And unmount it when you have completed your work:
$ sudo umount /media/nexus4

Practically you can do this with every other Android devices. Just plug your Android and use this command to get your idVendor and idProduct information:
$ mtp-detect | grep idVendor
$ mtp-detect | grep idProduct
Use the information on step 5 above, and you're good to go :)