LINUX.ORG.RU

Android File Transfer for Linux

 ,


7

5

Наверняка многие из вас используют MTP, наверняка кто-то успешно, но может быть у кого-то (как у меня) всё время случаются недокачанные файлы, пропавшие тэги, отсутствие обложек, обрывы соединения, зависания, отключения устройства, жуткие тормоза, замедление закачки при закачивании целых каталогов. Это всё из-за печально известной libmtp. Меня такое положение дел давно не устраивало и я написал свой MTP клиент, на c++11, с референсной реализацией модели для Qt.

Минимальный ui, создание папки, закачка папки, закачка альбома (с автоматической подборкой и установкой картинки). Никаких fuse, libmtp, libptp, только libusb и Qt, только хардкор.

Очень жду фидбека и хотелок в тракере github, обещаю пилить, так как постоянно использую сам.

>>> Исходный код на github



Проверено: anonymous_incognito ()
Последнее исправление: ymn (всего исправлений: 3)
Ответ на: комментарий от Axon

Вы в курсе, что канал номиналом больше 150mb на 802.11n можно получить только используя 40Ghz каналы и MIMO, которое в принципе не поддерживается мобильными девайсами?

Скоро у haku будет новая игрушка, которая заткнёт всех нас за пояс и поставит жирную точку в решении о превосходстве Syncthing, и называться она может, к примеру, Galaxy S6/S6 EDGE

Wi-Fi: 802.11 a/b/g/n/ac (2.4/5GHz), HT80 MIMO(2x2) 620Mbps

Как видим, отделы сбыта и PR не дремлют, а исследовательские отделы подмахивают. Да, и на случай внезапной вылазки за пределы домашней точки доступа кое-что есть

LTE cat.6

Вообще, беда, что неплохую, в принципе FOSS Syncthing пытается проталкивать такой слабо адекватный персонаж как haku, надеюсь образу программы эта его деятельность не повредит.

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

все в новой версии протокола есть.

Сие есть благая весть, брат! Осталось дождаться новой эталонной реализации!

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

У тебя на скриншоте в Галерее 404-нулись залитые на Дропбокс картинки. Скрин yakuake вместе с ними. Можешь перезалить, пожалуйста? Хочется увидеть твою консольку.

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

UMS всегда был опциональной фичей.
То что это не включают флагманы типа говнонексусов подтверждает лишь только то что это не включено на говнонексусах.

А кроме этого бреда какие мысли вы можете облечь в слова?

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

Которая, конечно же, творит чудеса на аудио- и видеофайлах. Пешы есчо!

Ага, а еще она jpeg пакует в 4 раза.

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

Я плохо разбираюсь в этих ваших мобильных штучках. У меня все интерфейсы выключены. Если значок вай-фая включен, но телефон спит. В этом случае же вай-фай выключен? Как он тогда синхронизируется?

И еще вопрос: добавил я, скажем в папку Sync все сезоны битвы экстрасенсов, которые скопируются на телефон за 10 минут. Но через 5 минут бездействия телефон заснул и отключил вай-фай. Правильно я понимаю?

makoven ★★★★★
()

Вот никогда такого не понимал:

QFile f("/sys/module/usbcore/parameters/usbfs_memory_mb");
if (f.open(QIODevice::ReadOnly | QIODevice::Text))
{
 QTextStream stream(&f);
 stream >> limit;
 qDebug() << "usbfs limit: " << limit << "Mib";
}

Завтра полудурки разработчики/майнтенеры поменяют путь к файлу usbfs_memory_mb. Или в каком-то дистрибудиве другой путь. Как ваша программа будет работать?

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

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

Им схему установки соединения надо сильно дорабатывать, или в сторону btsync, или что-то еще придумывать.

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

Извини, принял твою(?) фразу за троллинг. Объясняю:

Тред — детектор пассивных анальных рабов корпораций и облаков (да-да, dropbox, я про тебя).

с этими словами haku ворвался в обсуждение, что несколько оживило дискуссию, и тут, когда все стали расходиться, была робко вкинута эта фраза.

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

И опять враньё. ☺ У половины дешёвых устройств нет поддержки AP mode, где в дровах, а где и аппаратно.

Не только дешевые китайские девайсы этим грешат. Nexus 7 2012 - не умеет из коробки AP. Можно или поставить цианоген/что-либо еще, или рутануть девайс и разлочить поддержку AP. Так было в версиях до 4.4. Возможно в пятом андроеде разрешили по умолчанию.

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

Кто бы под винду MTP нормальную сделал. Вот где мучения жуткие.

Пользуюсь OneDrive в качестве «промежуточного» хранилища.

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

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

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

Потом смахивает пот со лба, и ещё в три раза дожимает!

В точку :)

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

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

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

так же как раньше был - с отдельного раздела

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

Хуже чем хотелось бы.
Включаю режим модема и выставляю ойпи

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

Держи, аналитик ты наш диванный:

Regardless of the form of shared storage used, device mplementations MUST provide some mechanism to access the contents of shared storage from a host computer, such as USB mass storage (UMS) or Media Transfer Protocol (MTP). Device implementations MAY use USB mass storage, but SHOULD use Media Transfer Protocol.

Jetty ★★★★★
()
Последнее исправление: Jetty (всего исправлений: 2)
Ответ на: комментарий от whoozle

А что, к file сделали API?

libmagic — его, собственно, file и использует.

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

PS: ну и почему убогий ведроид не поддерживает ничего кроме fat32 - это другой вопрос (всякие кастомы и прочая ерунда не в счёт).

Philips Xenium W6500 - сдшка в ext4

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

Кстати, все мои андройды, при подключении к компу умеют притворятся флешкой.
Может вы устройства выбирать не умеете?

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

Создаешь data-партишн c нужными файлами и прошиваешь. По удобству не уступает adb

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

С какого-то момента (точнее с 4ых стабильных версий мороженного бутерброда) google в нексусах оставил только mtp (типа поддержки внешней SD карты нет, поэтому и не нужно, а на внутренней ext, поэтому виндовз всё-равно не поймёт). Остальные остались перед выбором: копировать такое поведение или городить что-то своё. Как таковой драмы особо не было, ибо люди кушают, что дают.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)

Cобрал, запустил, попробовал передать альбом, получил зависание. А libmtp работает у меня нормально.

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

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

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

Это тестовый файл и называется mtp-test.cpp, вообще-то.

Вообще-то это файл main.cpp.

Часто вы храните mkv в файлах с расширениями mp3?

Ну, например, многие камеры сохраняют картинки как JPG.

Короче, ваш код ущербно-вездузячий.

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

в Линуксе нет других графических тулкитов...

...кроме GTK3

eternal_sorrow ★★★★★
()

GetObjectHandles: invalid response code InvalidStorageID (0x2008)

anonymous
()

От пользователя

i@home:/tmp/aft/android-file-transfer-linux-master/build$ ./qt/android-file-transfer 
upload worker started 
libusbx: error [_get_usbfs_fd] libusbx couldn't open USB device /dev/bus/usb/001/001: Отказано в доступе
libusbx: error [_get_usbfs_fd] libusbx requires write access to USB device nodes.
libusbx: error [_get_usbfs_fd] libusbx couldn't open USB device /dev/bus/usb/005/001: Отказано в доступе
libusbx: error [_get_usbfs_fd] libusbx requires write access to USB device nodes.
libusbx: error [_get_usbfs_fd] libusbx couldn't open USB device /dev/bus/usb/004/002: Отказано в доступе
libusbx: error [_get_usbfs_fd] libusbx requires write access to USB device nodes.
libusbx: error [_get_usbfs_fd] libusbx couldn't open USB device /dev/bus/usb/004/001: Отказано в доступе
libusbx: error [_get_usbfs_fd] libusbx requires write access to USB device nodes.
libusbx: error [_get_usbfs_fd] libusbx couldn't open USB device /dev/bus/usb/003/001: Отказано в доступе
libusbx: error [_get_usbfs_fd] libusbx requires write access to USB device nodes.

и окно «GetObjectHandles: invalid response code InvalidStorageID (0x2008)»

от рута только «GetObjectHandles: invalid response code InvalidStorageID (0x2008)»

14.04

android 4.1.2

anonymous
()

Слава богам, у меня андроид 2.3.6, который ещё умел прикидываться нормальной флешкой. Но это, конечнно, не навсегда. Автор, а почему было принято решение делать принципиально новый документ продукт, а не патчить libmtp? Они не принимают патчей?

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

А вы попробуйте сами, там гниющая сишная лапша, как, в принципе, почти везде в некоммерческом опенсорце. Я пробовал год-два назад, мотивация очень быстро угасла. Больше всего меня интересовало, это mtp такой плохой, или реализация его в андроиде плохая, или usb плохо подходит. Оказалось, mtp очень простой, в андроиде сделано всё более-менее (не сделан стандартный способ установки превьюх), usb работает быстро :)

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

Так ведь в Линуксе нет других графических тулкитов.

Держи:

% pkg info gmtp-1.3.9
gmtp-1.3.9
Name           : gmtp
Version        : 1.3.9
Installed on   : Wed Mar 11 00:36:18 MSK 2015
Origin         : audio/gmtp
Architecture   : freebsd:10:x86:64
Prefix         : /usr/local
Categories     : audio
Licenses       : BSD3CLAUSE
Maintainer     : freebsd-ports-local@be-well.ilk.org
WWW            : http://gmtp.sourceforge.net/
Comment        : Media Transfer Protocol (MTP) GUI client
Options        :
	DOCS           : on
	GTK2           : on
	GTK3           : off
	NLS            : on
Shared Libs required:
	libvorbisfile.so.3
	libpangoft2-1.0.so.0
	libpangocairo-1.0.so.0
	libpango-1.0.so.0
	libmtp.so.9
	libintl.so.8
	libid3tag.so.0
	libgtk-x11-2.0.so.0
	libgthread-2.0.so.0
	libgobject-2.0.so.0
	libglib-2.0.so.0
	libgio-2.0.so.0
	libgdk_pixbuf-2.0.so.0
	libgdk-x11-2.0.so.0
	libgconf-2.so.4
	libfreetype.so.6
	libfontconfig.so.1
	libcairo.so.2
	libatk-1.0.so.0
	libFLAC.so.8
Annotations    :
Flat size      : 393KiB
Description    :
Basic GUI for Microsoft's Media Transfer Protocol (MTP)
including file transer and some playlist handling.

WWW: http://gmtp.sourceforge.net/
% pkg info -d gmtp-1.3.9
gmtp-1.3.9:
	pango-1.36.8
	gtk2-2.24.27
	libxml2-2.9.2_2
	libmtp-1.1.8_1
	libIDL-0.8.14_2
	glib-2.42.2
	gettext-runtime-0.19.4
	gconf2-3.2.6_3
	ORBit2-2.14.19_1
	libvorbis-1.3.5,3
	libid3tag-0.15.1b_1
	flac-1.3.1
	atk-2.14.0
iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 3)
Ответ на: комментарий от anonymous

не умеет файлы больше 4 ГБ, и начинает тупо копировать, хотя априори это обречено на провал. С точки зрения юзерэкспиеренс - это позорище.

Надо посмотреть как это под линуксами и OS X происходит кстате.

Browse the files and folders on your Android device and copy files up to 4GB. https://www.android.com/filetransfer/

Просто слов нет, ведроид...

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

а питается он у тебя святым духом?

А благородный Дон в курсе существования технологии беспроводной зарядки?)

haku ★★★★★
()

Молодец. Спасибо автору.

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