В декабре реализовалась моя давняя хотелка купить андроидофон. Разжился я телефоном Sony Ericsson Live with Walkman с Android 2.3.4 на борту. Наигравшись в это чудо техники, я захотел большего. Если в телефоне есть USB-порт и Linux на борту, то в этот порт можно вставлять устройства и при хорошем стечении обстоятельств ими даже пользоваться. Тем более, что в телефоне реализован USB-host. Таким образом остается только программный вопрос, т.е. поддерживает требуемое устройство система или нет?
Обычная USB-мышка завелась без плясок с музыкальными инструментами, а вот с флешкой робот работать не захотел, а чем красноречиво сообщил в dmesg.
Дальше выхода было два: освоить сборку андроида на коленке, или искать ресурсы, где добрые люди уже выложили подходящий модуль.
Тут надо сделать маленькое отступление. Чтобы реализовать всё то, что дальше я опишу, надо иметь root-доступ к системе на телефоне. Описывать процедуру взлома я не буду, потому что всё необходимое есть на форуме сайта 4PDA.ru. Им я и пользовался в своих изысканиях.
И снова о главном.
Нам понадобятся три компонента:
- Ядерный модуль "usb-storage.ko" от соответствующей версии Android;
- Удобная программа с графическим интерфейсом для его загрузки;
- Еще одна такая же удобная программа для монтирования файловой системы флешки.
Всё необходимое можно скачать по ссылке в конце статьи.
Для начала надо всё это добро скинуть на SD-карточку в папку. После этого уже в самом телефоне запустить какой-нибудь файловый менеджер, который умеет работать с root-правами и перемонтировать файловую систему в режиме "R/W", чтобы не возиться ручками в терминале. Терминал нам тоже понадобится, поэтому советую какой-нибудь поставить из Маркета. Для манипуляций с файлами я буду использовать Root Explorer.
Итак, первым делом с помощью Root Explorer копируем файл "usb-storage.ko" в папку "/system/lib/modules". При этом надо не забыть перемонтировать нужную файловую систему в режим "R/W" с помощью соответствующей кнопки и обратно в "R/O" после всех манипуляций.
После копирования надо назначить файлу такие права доступа:
![](https://lh6.ggpht.com/-yuRUkFwijPQ/Tw8M_4-zr9I/AAAAAAAAC4A/E1WMhrHHev0/s0/screenshot_2012-01-12_2038.png)
Теперь опять возвращаемся в папку на флешке и из неё ставим два apk-пакета.
Программа "Module Loader" нужна чтобы загрузить скопированный модуль в память и настроить его автоматическую загрузку.
Программа "Q5 USB Memory" предоставляет удобный интерфейс для монтирования блочных устройств.
Для начала запустим первую программу и ответим положительно на запрос прав суперпользователя.
![](https://lh5.ggpht.com/-kCLMimfIENo/Tw8D13hq5FI/AAAAAAAAC24/rT55jPFL7dI/screenshot_2012-01-12_1947.png)
Появится вот такой богатый интерфейс приложения:
![](https://lh3.ggpht.com/-5r9L70gGn0Q/Tw8Ew-akJrI/AAAAAAAAC3A/9ocwTA7VTDg/s0/screenshot_2012-01-12_1943.png)
Из всего многообразия выбираем пункт "System Modules", потому что модуль мы поместили в память телефона. Появился список всех доступных модулей. У меня он выглядит так:
![](https://lh4.ggpht.com/-WPSQ8QLxgoM/Tw8FA9TF2hI/AAAAAAAAC3I/DNOOH0SR18U/s0/screenshot_2012-01-12_1943_1.png)
Отмечаем то, что добавили, и нажимаем кнопоску "Save selection". Программа загрузит выбранные модули и по-умолчанию пропишет их автоматическую загрузку.
Проверить загрузку модуля можно через терминал командой "lsmod". Права суперпользователя для этого не нужны. Результат должен получиться примерно таким.
![](https://lh3.ggpht.com/-zbu6jP4x2DM/Tw8LBLjz8qI/AAAAAAAAC3w/oXbDtF_2EAM/s0/screenshot_2012-01-12_2030.png)
Теперь надо учесть один маленький нюанс. Прогмма "Q5 USB Memory" в упор не понимает символ "/" в поле указания точки монтирования.
Снова запускаем Root Explorer и переводим корневую файловую систему в режим "R/W". В корне файловой системы создаем папку "usb_drive", отключаем возможность записи и закрываем программу.
Всё, теперь можно вставлять флешку через кабель в телефон. Выглядеть всё это будет примерно так:
Телефон всё также скажет, что в него воткнули устройство, которое он не понимает, но при этом создаст в папке "/dev". Теперь настал черед второй программы. Её мы и запустим сейчас. Она сразу запросит всё, что ей надо для монтирования флешки.
![](https://lh5.ggpht.com/-iqNCYjie3zg/Tw8JJKfd5LI/AAAAAAAAC3g/MQXnEg6r5xU/s0/screenshot_2012-01-12_2019.png)
В меню выбора блочного устройства она уже самостоятельно выбрала флешку, если таковой там нет, то через меню программы даём ей команду пересканировать устройства. У меня нет под рукой флешки с несколькими разделами, но по идее система должна создать ссылки на все разделы. Нужный можно выбрать через вот такое меню.
![](https://lh3.ggpht.com/-g0CUSjfZNXs/Tw8JJutxCKI/AAAAAAAAC3k/qcDsLYyN6WI/s0/screenshot_2012-01-12_1945.png)
Вы меню выбора файловой системы есть пункт "ntfs", но выбирать его смысла нет, потому что в текущей прошивке её поддержки нет.
Теперь смело щелкаем единственную кнопку, чтобы смонтировать флешку. Теперь запускаем любимый файловый менеджер и переходим в папку "/usb_drive", в которой должно появиться содержимое флешки, если всё прошло хорошо.
Перед отключением флешки через ту же программу надо отмонтировать файловую систему.
![](https://lh6.ggpht.com/-QDgPpEzkWvU/Tw8LTz4PO6I/AAAAAAAAC34/iuJJepCMOLo/s0/screenshot_2012-01-12_1944_1.png)
Единственная проблема, которая возникнет заключается в том, что батарейка начнет садиться заметно быстрее из-за того, что флешке для работы требуется питание.
Архив со всем необходимым: http://radjah.ucoz.ru/rar/usbstorandroid.rar (349 килобайт)