LINUX.ORG.RU

Вышел Android File Transfer for Linux 2.0

 , ,


1

2

После месяца упорных трудов и сбора отзывов от пользователей, вышла новая версия MTP-клиента для Linux - Android File Transfer 2.0

Основные нововведения:

  • Поддержка файлов больше 4Gb.
  • Поддержка FUSE, поддержка partial read/write-расширений протокола: теперь можно быстро редактировать, создавать и докачивать файлы.
  • Поддержка PTP-устройств, предварительная поддержка не-андроид устройств, таких как Nokia Lumia.
  • Поддержка Qt4/Qt5.
  • Отказ от libusb в пользу linux usbfs, уменьшение потребляемой памяти, увеличение скорости передачи данных.
  • Индикатор скорости скачивания/закачивания, всякие улучшения и ухудшения.

К сожалению, остались две большие нерешенные системные проблемы, обе отправлены в бегтрекер андроида, подробнее в секции «Известные проблемы». Как и всегда, очень жду ваших отзывов, желательно в багтрекер на github.

PS: Если вы хотите deb/rpm, шлите запросы в багтрекер своего дистрибутива, я отвечаю на письма и github issues в режиме 16/7, но не могу поддерживать зоопарк сборок :)

>>> Ссылка на страницу проекта



Проверено: JB ()
Последнее исправление: cetjs2 (всего исправлений: 7)

Показательно что после кучи критики (в основном необоснованной) в адрес автора в предыдущей новости он всё же не забросил свой проект и развивает его. Похвально. Делайте то что считаете нужным, а хейтеры.. хейтеры они всегда будут.

haku ★★★★★
()

Отказ от libusb в пользу linux usbfs, уменьшение потребляемой памяти, увеличение скорости передачи данных.

Это то что 6 лет назад сделали деприкейтед или что-то другое? Те под эту штуку надо ядро пересобирать? Будущее у нее туманное)
http://markmail.org/message/3mw5yw465qmxgnwp#query: page:1 mid:3mw5yw465qmxgn...

F457 ★★★★
()
Ответ на: комментарий от JB

Извините, ехал в машине, не успел исправить. :)

whoozle
() автор топика

Хорошее начинание, иногда бывает нужно.

Keon
()
Ответ на: комментарий от F457

Ядро пересобирать не надо, libusb работает через этот же механизм.

По поводу deprecate, лучше пока не придумали, понятно что давать пользователю прямой доступ из юзерспейса к потрохам usb плохо (по тем же причинам, что и к raw socket'ам), но риск куда меньше, потому что нужно физическое подключение, и устройства пассивные и изолированы друг от друга. По идее, надо все протоколы (MTP в том числе) целиком реализовать в ядре, и делать /dev/mtp/mtpX устройства, со своим апи. Но протоколов очень много, устройств со своими особенностями ещё больше. Но это случится неизвестно когда, а с usb устройствами работать хочется уже сейчас: упсы, камеры, принтеры, звуковухи, телефоны. Ядро не успеет за этим всем.

whoozle
() автор топика
Ответ на: комментарий от whoozle

Так а если мои накопители монтируются, и я работаю с ними без всяких прослоек в чем прикол? Или я слоупок со своим 4.2?

int13h ★★★★★
()
Ответ на: комментарий от haku

Спасибо, меня всегда расстраивала ситуация вокруг MTP. Гугл сделал довольно деструктивный шаг, решившись безусловно отказаться от mass storage, так как реализаций mtp немного и они сомнительного качества. А ещё более странно, что они сделали для мака тулзу (которая не умеет большие файлы, кстати :)), а для линукса нет, хотя у мака сопоставимая доля пользователей и похожая ос ;)

whoozle
() автор топика
Ответ на: комментарий от int13h

Если у вас всё работает, то возможно вам это и не надо. :) Но, насколько я знаю, нет ни одной открытой реализации mtp, которая бы работала с файлами больше чем 4Gb, или умела partial update.

whoozle
() автор топика
Ответ на: комментарий от Freyr69

Потому что android — главная цель, но я не отказываюсь поддерживать другие устройства. Попробуйте, если у вас заработает, то хорошо, если нет, пришлите мне lsusb -v и/или логи. FUSE монтировалка работает через partial updates, поэтому, скорее всего, на виндофонах работать не будет. Qt UI использует честный Send/GetObject и заливает/получает объект целиком, мы боремся при помощи одного из %username% отсюда за стабильность работы с Lumia, но пока перспективы неясны. :)

whoozle
() автор топика

А тут так же, как и на винде, невозможно лазить по подсоединённым каталогам, пока осуществляется копирование файлов на устройство?
Или в линуксовом мтп такой «заботы о пользователях» не наблюдается?

anonymoos ★★★★★
()

А вроде недавно был релиз, а тут сразу 2.0, что ж, это серьезные изменения.

Вот бы это было аналогом libmtp, а не просто клиентом, чтобы всякие там крусадеры и даблкомандеры могли встраивать это внутрь.

Лично меня устраивает как Nautilus и Double Commander поддерживает MTP.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от anonymoos

К сожалению, копирование в рамках протокола можно сделать двумя способами:

  • SendObject. Объект передается одной большой usb bulk передачей, в одной mtp транзакции. То есть, параллельно нельзя передать ни одной команды.
  • Через android-расширение протокола SendPartialObject() (только для андроидных устройств), но оно почему-то в 10 раз медленнее работает, видимо потому, что с андроидной стороны запись объекта через SendObject находится в ядре, в f_mtp.c, а для SendPartialObject нет. :)

Поэтому, можно сделать как в libmtp, выкачать всю иерархию при подключении (не тру, у меня вся метаинфа скачивается 3-5 минут), там видны не только пользовательские файлы, а ещё и данные приложений, кэши и всякое барахло. И потом надо будет этот огромный деревянный кэш обновлять всячески и синхронизировать с устройством → наверняка будет глючить и тормозить, гг

Скажите спасибо за наше счастливое детство известно кому. (m$ и google)

whoozle
() автор топика
Ответ на: комментарий от I-Love-Microsoft

вижу только один способ это нормально сделать — добавить совместимые с libmtp (бинарно и на уровне исходников) C-биндинги. Добавил задачу в багтрекер.

whoozle
() автор топика
Ответ на: комментарий от Kompilainenn

Короче, телефон доступен как накопитель на компе, и при этом ОС Android сохраняет доступ к карте памяти внутри телефона. При этом можно безопасно тупо выдергивать из порта и ничего не повредится, ибо телефон сам допишет на флэш. К тому же, это позволяет работать программам с SD-карты в Android и одновременно писать файлы с компа.

Очень удобная концепция, пользуюсь постоянно.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от whoozle

вижу только один способ это нормально сделать — добавить совместимые с libmtp (бинарно и на уровне исходников) C-биндинги. Добавил задачу в багтрекер.

Дадада! Это было бы очень правильно, по типу как TurboJPEG может подменять обычную libjpeg и при том быть быстрее.

I-Love-Microsoft ★★★★★
()

всякие улучшения и ухудшения

Люблю здоровую самокритику :)
Автору - не унывать и не слушать школоту. Так держать!

Gonzo ★★★★★
()
Ответ на: комментарий от GrandMaster

Если для вас наутилус хорошо работает, то преимуществ действительно немного: умеет устанавливать картиночки на альбомы, заливать большие файлы (я тестирую на 9Gb mkv файлах), и умеет partial read/write'ы, если пользоваться FUSE, то есть может эффективно открывать/редактировать даже большие файлы. Я сам слушаю много музыки, в основном с телефона и иногда заливаю фильмы. И у меня постоянно то упадет, то тэги потеряются где-то, то русские имена разваляцо, то зависнет, то стартует по 3-5 минут, то kio упадет и всё в таком духе.

whoozle
() автор топика

большое спасибо, собралось и прекрасно работает

TERRANZ ★★★★
()
Ответ на: комментарий от whoozle

И у меня постоянно то упадет, то тэги потеряются где-то, то русские имена разваляцо, то зависнет, то стартует по 3-5 минут, то kio упадет и всё в таком духе.

Ничего подобного абсолютно не наблюдаю. Тем не менее, удачи проекту! Особенно в видел библиотеки совместимой с libmtp.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от whoozle

15-20Mb/s

Даже не верится. Обычно mtp работает медленнее mass storage, даже в винде. Ушёл собирать и тестить.

Myau ★★★★
()

Для Linux 2.0?
Интересненько.

Steplton ★★★★★
()

Хм. У меня для связи с телефоном используется sshfs. Тоже достаточно удобно. Единственный недостаток - нужен вайфай, однако у меня телефон может выступать в роле точки доступа.

kir2yar
()
Ответ на: комментарий от backburner

На телефоне ssh-сервак, корень телефона просто монтирую с помощью sshfs.

Для не рутованных - монтировать можно не корень, а сд-карту. А у рутованных, ssh-сервер запущенный от рута, позволяет творить что угодно в фс.

kir2yar
()

А можно и так. После месяца упорного лабанья и сбора фидбека от юзеров, релизнулась новая версия Linux MTP клиента.

Горел бы ты в аду, автор. За свой «фидбек».

anonymous
()
Ответ на: комментарий от whoozle

У меня есть телефон с андроидом. Заливаю и скачиваю файлы без «этой штуки». ЧЯДНТ?

...Когда уже вы передохнете, поттеринги с(т)ран(н)ые.

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

Вот это бы в описание добавить, в стартовом посте. Ну или на гитхабе хотя бы. А то действительно не очевидны отличия.

PS А чего анонимус такой злой?

orm-i-auga ★★★★★
()

А проблем с названием (типа слишком похоже на Android File Transfer for Mac, например) не будет?

Evgueni ★★★★★
()

судя по количеству пунктов нововведений — работа кипит:) круто!

oblepiha_pie
()
Ответ на: комментарий от anonymous

Ну главное отличие меня от с(т)ран(н)ого поттеринга в том, что я никому ничего не навязываю, и даже специально пишу, что вам не нужно ничего менять, если для вас всё работает. Вы никогда не получите эту программу в качестве умолчательной без возможности от неё отказаться или выбрать другое, как получили networkmanager, pulseaudio или ibus. :)

whoozle
() автор топика

.deb пакеты еще не собраны для минт?

Zabroid
()

Новая версия - это хорошо. Обновил пакеты в репозиториях Росы.

Pulfer
()

Собрал, запустил, получил ошибку «No MTP device found». Я конечно не подключил еще устройство, но было бы неплохо все же не завершать при этом программу. А что будет, если у меня два MTP устройства? Можно ли как-то выбрать конкретное?

m0rph ★★★★★
()

попробовал на Fedora 21 и Debian 7 На федоре не собралось

cmake ..
-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is unknown
-- Check for working C compiler: /bin/cc
-- Check for working C compiler: /bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
CMake Error at CMakeLists.txt:1 (project):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.


-- Configuring incomplete, errors occurred!
это видимо связано что с тем что в федоре нет c++ и g++. завтра ещё попробую.

На дэбе всё ок собралось но после запуска это (телефон подключён):

./aft-mtp-cli 
terminate called after throwing an instance of 'mtp::usb::Exception'
  what():  ioctl(_fd, USBDEVFS_GET_CAPABILITIES, &_capabilities): Inappropriate ioctl for device
Аварийный останов

Или седьмой дэба уже слишком стар для этой проги?

Телефон - SGS2 c CM11

ionanahin ★★★
()

Годно!

Успехов автору.

Twissel ★★★★★
()

UPD

на федоре собрал. Гуй работает хорошо, но у меня в телефоне есть внутрення память и SD карта. программа видит только SD, выбрать память телефона нельзя. если монтировать в директорию, то у Dolphin адово тормозит интерфейс при перемещении в телефоне.

ionanahin ★★★
()
Ответ на: UPD от ionanahin

да, и если монтировать то монтуруются обе памяти. то есть проблема тольке в гуе

ionanahin ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.