четверг, 12 января 2012 г.

Зеленый робот с флешкой.



В декабре реализовалась моя давняя хотелка купить андроидофон. Разжился я телефоном Sony Ericsson Live with Walkman с Android 2.3.4 на борту. Наигравшись в это чудо техники, я захотел большего. Если в телефоне есть USB-порт и Linux на борту, то в этот порт можно вставлять устройства и при хорошем стечении обстоятельств ими даже пользоваться. Тем более, что в телефоне реализован USB-host. Таким образом остается только программный вопрос, т.е. поддерживает требуемое устройство система или нет?
Обычная USB-мышка завелась без плясок с музыкальными инструментами, а вот с флешкой робот работать не захотел, а чем красноречиво сообщил в dmesg.

Дальше выхода было два: освоить сборку андроида на коленке, или искать ресурсы, где добрые люди уже выложили подходящий модуль.

Тут надо сделать маленькое отступление. Чтобы реализовать всё то, что дальше я опишу, надо иметь root-доступ к системе на телефоне. Описывать процедуру взлома я не буду, потому что всё необходимое есть на форуме сайта 4PDA.ru. Им я и пользовался в своих изысканиях.

И снова о главном.

Нам понадобятся три компонента:
  • Ядерный модуль "usb-storage.ko" от соответствующей версии Android;
  • Удобная программа с графическим интерфейсом для его загрузки;
  • Еще одна такая же удобная программа для монтирования файловой системы флешки.

Первый пункт я не нашел под свою прошивку, но нашелся под такую же версию для модели XPERIA mini pro, что само по себе уже не плохо, потому что вероятность того, что ядро в панику не впадет довольно высока. Для второго и третьего пункта всё тоже было готово в виде apk-пакетов.
Всё необходимое можно скачать по ссылке в конце статьи.

Для начала надо всё это добро скинуть на SD-карточку в папку. После этого уже в самом телефоне запустить какой-нибудь файловый менеджер, который умеет работать с root-правами и перемонтировать файловую систему в режиме "R/W", чтобы не возиться ручками в терминале. Терминал нам тоже понадобится, поэтому советую какой-нибудь поставить из Маркета. Для манипуляций с файлами я буду использовать Root Explorer.

Итак, первым делом с помощью Root Explorer копируем файл "usb-storage.ko" в папку "/system/lib/modules". При этом надо не забыть перемонтировать нужную файловую систему в режим "R/W" с помощью соответствующей кнопки и обратно в "R/O" после всех манипуляций.

После копирования надо назначить файлу такие права доступа:



Теперь опять возвращаемся в папку на флешке и из неё ставим два apk-пакета.
Программа "Module Loader" нужна чтобы загрузить скопированный модуль в память и настроить его автоматическую загрузку.
Программа "Q5 USB Memory" предоставляет удобный интерфейс для монтирования блочных устройств.

Для начала запустим первую программу и ответим положительно на запрос прав суперпользователя.



Появится вот такой богатый интерфейс приложения:



Из всего многообразия выбираем пункт "System Modules", потому что модуль мы поместили в память телефона. Появился список всех доступных модулей. У меня он выглядит так:



Отмечаем то, что добавили, и нажимаем кнопоску "Save selection". Программа загрузит выбранные модули и по-умолчанию пропишет их автоматическую загрузку.

Проверить загрузку модуля можно через терминал командой "lsmod". Права суперпользователя для этого не нужны. Результат должен получиться примерно таким.



Теперь надо учесть один маленький нюанс. Прогмма "Q5 USB Memory" в упор не понимает символ "/" в поле указания точки монтирования.

Снова запускаем Root Explorer и переводим корневую файловую систему в режим "R/W". В корне файловой системы создаем папку "usb_drive", отключаем возможность записи и закрываем программу.

Всё, теперь можно вставлять флешку через кабель в телефон. Выглядеть всё это будет примерно так:



Телефон всё также скажет, что в него воткнули устройство, которое он не понимает, но при этом создаст в папке "/dev". Теперь настал черед второй программы. Её мы и запустим сейчас. Она сразу запросит всё, что ей надо для монтирования флешки.



В меню выбора блочного устройства она уже самостоятельно выбрала флешку, если таковой там нет, то через меню программы даём ей команду пересканировать устройства. У меня нет под рукой флешки с несколькими разделами, но по идее система должна создать ссылки на все разделы. Нужный можно выбрать через вот такое меню.



Вы меню выбора файловой системы есть пункт "ntfs", но выбирать его смысла нет, потому что в текущей прошивке её поддержки нет.
Теперь смело щелкаем единственную кнопку, чтобы смонтировать флешку. Теперь запускаем любимый файловый менеджер и переходим в папку "/usb_drive", в которой должно появиться содержимое флешки, если всё прошло хорошо.

Перед отключением флешки через ту же программу надо отмонтировать файловую систему.



Единственная проблема, которая возникнет заключается в том, что батарейка начнет садиться заметно быстрее из-за того, что флешке для работы требуется питание.

Архив со всем необходимым: http://radjah.ucoz.ru/rar/usbstorandroid.rar (349 килобайт)