Главная > Linux > Пробуем использовать Debian Wheezy, MTP и Nook HD+ в одной упряжке

Пробуем использовать Debian Wheezy, MTP и Nook HD+ в одной упряжке

Как-то совершенно незаметно для меня Linux практически вытеснил изделия Редмонда на моем домашнем компьютере. Не могу сказать, что именно сподвигло меня на этот шаг, непревзойденная скорость работы LXDE/Openbox, либо же агрессивное навязывание мне дурацких кирпичей в качестве интерфейса взаимодействия с ОС, но как бы там ни было, в Windows я теперь - гость.

Несколько дней назад я разжился устройством Nook HD+, этакая 16гиговая читалка с шикарным экраном и шикарным аккумулятором:

NOOK HD+

Картинка с wired.com

Девайс был приобретен в качестве планшета по халявной цене 150$, непосредственно читалка мне не требовалась, ибо для этих целей трудится Kindle 4.
Это стало причиной, по которой стоковая прошивка была повыпилена, а на её место был водружен CyanogenMod на базе Android 4.2.2.
И всё бы ничего, но девайс не желает монтироваться в виде USB - накопителя, вместо этого предлагается использовать протокол MTP.

В Debian Wheezy отсутствовали пакеты, необходимые для взаимодействия с устройством, пришлось немного помахать компилятором.

Для работы с протоколом MTP в линуксе используются библиотеки fuse, libmtp и набор утилит mtp-tools и mtpfs.

В Debian Wheezy имелось всё, кроме пакета mtpfs, который пришлось собрать. Дело нехитрое, но результат оказался досадным: я смог подключить устройство, смог прочитать его файлы, но вот записать на него ничего не смог. Поиски альтернатив через Wiki Арча привели меня к решению  - jmtpfs.

Jmtpfs - это альтернатива mtpfs, основная на FUSE и libmtp файловая система, призванная сделать обмен файлами с MTP-устройством прозрачным и простым, буквально такой же как c обычным USB накопителем.

И я должен отметить, что эту цель jmtpfs достигла.

Приготовления

  • Во-первых, надо скачать исходники jtmpfs.
  • Во-вторых, надо доставить необходимые пакеты для сборки, мне пришлось ставить такие:
    #apt-get install mtp-tools libmtp-dev fuse libmtp9 pkg-config libfuse-dev libglib2.0-dev libmagic1 libmagic-dev checkinstall

    Соглашаемся на доустановку зависимостей, если потребуется.

Собираем jmtpfs

Перед сборкой следует открыть файл src\jtmpfs.cpp и дописать включение заголовочного файла:

#include <unistd.h>

Почему она там отсутствует, я не знаю, без неё ничего не соберется.

#./configure

Внимательно смотрим вывод команды, нет ли ошибок.
#make
#checkinstall

Checkinstall соберет *.deb пакет, который можно поставить любым удобным способом, например, dpkg -i /путь/к-пакету-deb.

Настраиваем FUSE

  • В /etc/fuse.conf раскомментируем строчку user_allow_over. Это даст права монтировать FUSE файловые системы обычным пользователям
  • Подключаем Nook HD+, запускаем утилиту mtp-detect из состава пакета mtp-tools, она подскажет VendorID и ProductID, которые нам сейчас понадобятся. В моем случае это 2080 и 0005 соответственно.Получив идентификаторы, создаем файл с правилами udev, ну например, /etc/udev/rules.d/50-mtp.rules.
    Перезапускаем udev:
    service udev restart
  • Добавляем текущего пользователя в группу fuse:
    adduser user_login fuse
  • создаем папку, в которую будем монтировать устройство, и выставляем на её права. Можно использовать папку в своем домашнем каталоге, я предпочитаю иметь папку в /media
    #mkdir /media/nook
    #chmod 777 /media/nook

Вот теперь всё. Подключив кабелем Nook HD+, мне остается ввести команду

$jmtpfs /media/nook

чтобы получить доступ к файлам. Чтобы отключить доступ, понадобится команда

fusermount -u /media/nook

 

UPD: Залил готовый пакет jtmpfs 0.4.0 для Debian Wheezy amd64.

Winreview.ru можно найти в Вконтакте, Facebook и Twitter. Присоединяйтесь!

Комментарии

  1. noname

    Большое спасибо, заработало со Star-овским китайфоном.

  2. noname-other

    Спасибо! Благодаря Вам есть доступ к медиаплееру Sony Walkman NWZ-E383 !

    Нюансы по дороге

    1. на стадии #./configure имеем ошибку

    ./configure line 2750 AX_CXX_COMPILE_STDCXX_0X command not found

    которую можно проигнорировать.

    2. на стадии # make имеем ошибку

    MtpLocalFileCopy.cpp11543 error ‘ftruncate’ was not declared in this scope

    make *** Ошибка 1

    make Leaving directory `xxxxxxxx/jmtpfs/src'

    make *** Ошибка 1

    -- для исправления надо в файл src/MtpLocalFileCopy.h

    добавить строку

    #include

    3. если под админом (root) выполнять только операции, на которые не хватает прав пользователю

    - # checkinstall

    - # dpkg -i /путь/к-пакету-deb (например dpkg -i jmtpfs_1.0-1_i386.deb)

    - редактирование /etc/fuse.conf

    а все предшествующие - под пользователем, то для стандартно установленного Debian GNU/Linux 7.9 (wheezy) сразу после редактирования /etc/fuse.conf устройство Sony Walkman монтируется автоматически и полностью доступно пользователю на чтение и запись (т.е. без дальнейших операций).

    Хотя на всякий случай я запустил chmod 777 /media/WALKMAN

    Пардон за ламерский коммментарий, но, возможно, он небесполезен.

  3. noname-other

    Опечатка. В п. 2 имелось в виду

    в файл MtpLocalFileCopy.h добавить строку

    #include "unistd.h"

Написать комментарий