
Купили мы на днях сыну подарок - смартфон LG P880 Optimus 4x HD. Под Android`ом 4.0.3. Впрочем, дело не в производителе и не в модели. А в том, что в нынешних версиях Android, в угоду Сами-Знаете-Кому, фантастически удобный протокол передачи данных USB MSC (USB mass storage device class, при котором устройство при подключении к компьютеру видится как простая флешка, не требуя установки каких-либо дополнительных драйверов и прочих глупостей - под любой ОС!), был заменен новомодным MTP. В итоге телефон при подключении к компьютеру под Линуксом и при включении режима MTP переставал видеться вообще. Альтернативных же вариантов, пригодных для обмена файлами, за исключением PTP, дающего доступ только к папке с картинками, в менюшках телефона попросту не оказалось.
Честно говоря, подвоха именно с этой стороны я не ждал, поскольку у меня уже был опыт абсолютно беспроблемной эксплуатации планшета Wexler TAB 7b, работающего под еще более новым Android 4.1.1. Там протокол MSC уже присутствовал "из коробки", плюс имелось еще некоторое количество приятных ништячков - наподобие предустановленной поддержки NTFS. В результате дополнительную SDHC-карточку на 32 GB я отформатировал прямо в планшете, но с внешнего Linux-компьютера - в NTFS, из-под GParted. Форматнул бы с таким же успехом и в Ext3, да передумал: все же, как знать - вдруг когда-нибудь доведется сунуть девайс и в компьютер с Другой Безусловно Хорошей Операционной Системой?
Увы, все вышеописанные радости оказались лишь следствием удачного допиливания Android'а совместной русско-китайской бригадой. В Лыже это счастье отсутствовало напрочь. Каково же было мое удивление, когда я узнал, что эта проблема (отсутствие поддержки протокола USB MSC в устройствах под управлением ОС Android 4.x) на самом деле носит массовый характер: Интернет по этому поводу буквально воет матом! И доставляет эта
С другой стороны, народные массы тоже не сидят, сложа руки: в Интернете буквально масса рецептов, как добавить поддержу USB MSC в Android-устройства. В том числе и собственно под нашу модель смартфона. Одно огорчает: для описанной там операции телефон необходимо рутировать. Когда-нибудь я этим безусловно займусь. Но, по-видимому, не раньше, чем закончися гарантия. Файлы же надо перекидывать прямо сейчас, здесь и сегодня!
Итак, выяснил, что для решения поставленной задачи народ успешно юзает софтину под названием MTPfs. Подробное руководство по ее установке под Ubuntu 10.04 LTS нашел вот здесь. Скачал исходник, добавил все недостающие библиотеки, пока команда ./configure не перестала ругаться, собрал и установил. Запускаю - ура, телефон примонтировался! Успешно? А вот как бы не так: папки-то высвечиваются, да вот только файлов в них в упор не видно! Хотел уж было плюнуть и пойти спать. Да вдруг надумал для смеха попробовать еще и предыдущую версию - не 1.1, а 0.9. Все же Scientific Linux 6.x, который я юзаю на работе и дома - дистрибутив довольно консервативный.
Итак (руководство заимствовано отсюда, с поправками и уточнениями на "местные особенности"):
1. Качаем исходник версии 0.9 (mtpfs-0.9.tar.gz).
2. Разархивируем его в рабочую папку.
3. Переходим в нее и задаем по очереди сакраментальное:
./configure (при необходимости добавляем соответствующие модули, пока не перестанет ругаться)
make
make install (последнее с правами суперпользователя)
4. Монтируется Android-устройство командой
mtpfs -o allow_other <точка монтирования>
а размонтируется - командой
fusermount -u
(то и другое - с правами суперпользователя, иначе будет ругаться на отказ в доступе).
5. Проверяем работоспособность и наводим легкий марафет для удобства пользователя. Так, сыну в ноутбуке я сделал 2 кнопки запуска: Connect (su -c 'mtpfs -o allow_other /mnt/usb') и Disconnect (su -c 'fusermount -u /mnt/usb').

Ссылку на точку монтирования (/mnt/usb) я вытащил в папку на рабочем столе, рядом с кнопками запуска - для удобного доступа:

На данный момент программу успел поставить и проверить на двух ноутбуках: своем (Scientific Linux 6.4 x86_64) и сына (Scientific Linux 6.3 i386). Результат - однозначно положительный (тьфу-тьфу-тьфу!) :)))
[UPD 2013/09/14]: После успешного опробования, в дальнейшем столкнулся сразу на двух компьютерах со следующей проблемой: Android-устройство прекрасно монтируется из командной строки, но отказывается делать это через лаунчер (кнопку запуска). При этом ссылка на точку монтирования получается "битой" и не работает. Причина оказалась в том, что после выполнения команды, записанной в командной строке лаунчера, терминал тут же закрывается. А вместе с ним преждевременно завершаются и дочерние процессы. Чтобы команда успела отработать правильно, надо искусственно задержать закрытие терминала (например, с помощью команды sleep). В качестве одного из возможных способов можно написать простейший скрипт:
#! /bin/sh
su -c 'mtpfs -o allow_other /mnt/usb'
sleep 5
(команда "sleep 5" удерживает окно терминала открытым на протяжении 5 секунд).
Сохраняем этот файл под именем mtpconnect. Делаем его исполняемым с помощью команды:
chmod +x mtpconnectи помещаем полученный скрипт в папку /usr/local/bin
В дальнейшем запускаем его на выполнение обычной командой:
mtpconnect
Теперь можем записать ее в комаднную строку соответствующего лаунчера (вместо первоначального
su -c 'mtpfs -o allow_other /mnt/usb')
(no subject)
Date: 09/09/2013 03:12 (UTC)(no subject)
Date: 09/09/2013 03:59 (UTC)(no subject)
Date: 09/09/2013 08:01 (UTC)Можно взять пакет Интернет
Date: 09/09/2013 10:30 (UTC)Re: Можно взять пакет Интернет
Date: 09/09/2013 10:40 (UTC)(no subject)
Date: 09/09/2013 09:07 (UTC)Интересная мысль.
Date: 09/09/2013 09:18 (UTC)карточку сунуть
Date: 11/09/2013 00:18 (UTC)(no subject)
Date: 09/09/2013 09:16 (UTC)(no subject)
Date: 09/09/2013 09:20 (UTC)обновление до 4.1
Date: 24/10/2013 20:37 (UTC)Re: обновление до 4.1
Date: 24/10/2013 20:44 (UTC)