Переклад(и): English - Українська


Протокол передачі мультимедія (MTP) використовується для передавання файлів між пристроями. Зокрема, між новими смартфонами Android або Microsoft та компʼютером Debian.

Майте на увазі, що багато смартфонів вмикають MTP лише тоді, коли телефон розблоковано! Останні версії Android також вимагають змінити стан USB-з’єднання із Зарядити цей пристрій на Передача файлів.

Стільнична підтримка

GNOME

Програми GNOME (як-от Файли GNOME та Керівник архівами) для монтування розділів MTP і доступу до файлів на пристроях MTP використовують GVFS (віртуальну файлову систему GNOME) на основі GIO:

Встановити пакунок gvfs-backends

KDE Plasma

KDE використовує MTP KIO Slave із схожим рівнем інтеґрації як у GVfs. Вимагає встановлення пакунка kio-extras. Коли телефон підʼєднано і налаштовано на передачу файлів через MTP, KDE відкриєє Сповіщення пристроїв і покаже запис про це. Звідси Ви можете відкривати його як теку в Dolphin або переглядати фотографії на пристрої через Gwenview.

Інші

gMTP — засіб, що не залежить від стільниці і дозволяє легко монтувати і керувати файлами на підʼєднаних пристроях MTP, який можна отримати встановивши пакунок gmtp.


libmtp

libmtp надає підтримку пристроїв MTP. Підтримка пристроїв змінюється з кожною версією коду, тому Вам може знадобитися конкретна версія libmtp (або пізніша) для підтримки конкретного пристрою: наприклад, телефон MotoG не підтримується прямо до версії libmtp == 1.1.8 від його супровідників.


Командний рядок

Деякі засоби надають файлову систему на основі FUSE для монтування пристроїв MTP в ієрархії файлової системи Unix, роблячи її доступною для будь-якої програми, що працює з файлами і каталогами. Прикладами є mtpfs, jMTPFS, go-mtpfs і simple-mtpfs тощо…

  1. mtp-tools

    • встановити пакунок із назвою=mtp-tools

    • ЗРОБ: задокументувати використання, проте дивіться нижче.

  2. jmtpfs

    • Використовує FUSE для монтування MTP-структури Вашого пристрою у файлову систему POSIX і fusermount для відмонтування пристрою.

    • встановити пакунок із назвою=jmtpfs

    • створити <каталог> для точки монтування: $ mkdir -p <каталог>

    • переконайтеся, що Ви маєте права на запис до <каталогу>: $ sudo chown $USER:$USER <каталог>

    • змонтувати Ваш пристрій: $ jmtpfs <каталог/>

      • На деяких MTP-пристроях: під час монтування Ваш екран має бути розблокованим. Хоча, Ви можете отримати (непомилкову) помилку вводу/виводу навіть якщо екран розблоковано.

    • відмонтувати пристрій: $ fusermount -u <directory/>

  3. mtpfs

    • mtpfs осиротів починаючи від Squeeze, проте mtpfs дуже схожий на jmtpfs, крім назви виконуваного файлу, назви пакунка і стану пакунка.

    • назва пакунка для встановлення=mtpfs

    • змонтувати пристрій: $ mtpfs <каталог/>

    • відмонтувати Ваш пристій: $ fusermount -u <каталог/>

тестування і зневадження зʼєднання з пристроєм

Connect your target device (e.g., Android phone) to your Debian host (e.g., laptop) via USB cable, and unlock the target device. Relatively quickly, you should see the following:

  1. Your Debian host's desktop should open a file browser (e.g., a nautilus window) showing the browsable contents of a location. If the location is mounted in your filespace, you should not need to read further from this article. Alternatively, the location will be shown with a URI beginning with mtp://, which will not be mounted, but can be manipulated via the usual means provided by your file browser (including copying and deleting files). If you wish to actually mount that location (i.e., your target device), read on.

  2. The target device may also show some GUI, such as choosing the connection mode. If so, choose mode=MTP.

If neither of those occur, you should

  1. Check your connection, e.g., the USB cable. If fixing that does not make your target device browseable as described above, then ...
  2. Check which version of libmtp and associated packages you have installed on your Debian host: see following section=device statuses. Install them if not already done. You will minimally need to have the executable mtp-detect in your path.

  3. Run mtp-detect from your host with your target device attached.

If you see results like

$ sudo mtp-detect 
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
libmtp version: 1.1.8

Listing raw device(s)
   No raw devices found.

... stop and seek help elsewhere. If you see results like

$ sudo mtp-detect 
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
libmtp version: 1.1.8

Listing raw device(s)
Device 0 (VID=<something/> and PID=<something else/>) is UNKNOWN.
Please report this VID/PID and the device model to the libmtp development team
   Found 1 device(s):<remaining text omitted for this documentation/>

... your target device is not currently supported. As noted in the result, you should report it to the libmtp maintainers by making a feature request like this one.

If you see results like

$ mtp-detect 
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
libmtp version: 1.1.8

Listing raw device(s)
Device 0 <... remaining text omitted for this documentation, ending with/>
OK.

then you should be able to mount the target device onto your host's filespace as discussed in the following example.

Приклади: laptop, MotoG, USB, libmtp, jmtpfs

стан пристрою

Я маю (працюючий) Motorola MotoG 1го-покоління, що працює на Android версії=4.4.4, і я хочу змонтувати його на ноутбуці Debian:

$ cat /etc/debian_version
jessie/sid
$ uname -rv
3.11-2-amd64 #1 SMP Debian 3.11.8-1 (2013-11-13)
$ gcc --version | head -n 1
gcc (Debian 4.8.2-1) 4.8.2

Зауважте, що версії libmtp >= 1.1.8 підтримують MotoG від його супровідників. Після того, як я повозився з APT і своїми репозиторіями, я маю

$ aptitude versions --disable-columns mtp | grep -e '^Package\|^i' | grep -vie 'dovecot\|mtpaint\|smtp'
Package gmtp:
Package gmtp:i386:
Package jmtpfs:
i  0.5-2  100
Package kio-mtp:
Package kio-mtp-dbg:
Package kio-mtp-dbg:i386:
Package kio-mtp:i386:
Package libmtp-common:
i  1.1.8-1  100
Package libmtp-dbg:
Package libmtp-dbg:i386:
Package libmtp-dev:
Package libmtp-dev:i386:
Package libmtp-doc:
i  1.1.8-1  100
Package libmtp-runtime:
i  1.1.8-1+b1  100
Package libmtp-runtime:i386:
Package libmtp9:
i  1.1.8-1+b1  100
Package libmtp9:i386:
i  1.01-3 testing 500
Package mtp-tools:
i  1.1.6-20-g1b9f164-1 testing 500
Package mtp-tools:i386:
Package python-pymtp:
Package uucp-lmtp:

налаштування/перевірка хоста Debian

# створити точку монтування ...
$ mkdir -p ~/Android_transfer/
# ... і відмонтувати її
$ fusermount -u /home/me/Android_transfer
$ ls -al ~/Android_transfer/
total 8
drwxr-xr-x  2 me me 4096 Apr  5 20:08 .
drwxr-xr-x 50 me me 4096 Apr  5 21:09 ..

Я бачу (з ноутбука), що нема підʼєднаних пристроїв MTP

$ date ; jmtpfs -l
Sun Apr  5 20:08:46 EDT 2015
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
Available devices (busLocation, devNum, productId, vendorId, product, vendor):

вдале монтування jmtpfs

Потім я розблоковую екран MotoG і підʼєдную його до ноутбука за допомогою кабеля USB.

Відразу після підключення на ноутбуці відкрилося вікно nautilus із, доступним для перегляду, вмістом розташованим за адресою=mtp://[usb:001,040]/ із назвою пристрою=XT1028. Я також можу бачити (з ноутбука)

$ date ; jmtpfs -l
Sun Apr  5 20:09:06 EDT 2015
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
Device 0 (VID=22b8 and PID=2e82) is a Motorola Moto G (ID2).
Available devices (busLocation, devNum, productId, vendorId, product, vendor):
1, 41, 0x2e82, 0x22b8, Moto G (ID2), Motorola

Потім, я можу змонтувати сховище MotoG

$ jmtpfs ~/Android_transfer/
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
Device 0 (VID=22b8 and PID=2e82) is a Motorola Moto G (ID2).
Android device detected, assigning default bug flags
$ ls -al ~/Android_transfer/
total 4
drwxr-xr-x  3 me me    0 Dec 31  1969 .
drwxr-xr-x 50 me me 4096 Apr  5 21:09 ..
drwxr-xr-x 12 me me    0 Oct  2  4448648 Internal storage
$ ls -al ~/Android_transfer/Internal\ storage/
total 0
drwxr-xr-x 12 me me 0 Oct  2  4448648 .
drwxr-xr-x  3 me me 0 Dec 31  1969 ..
drwxr-xr-x  2 me me 0 Aug 31  2024 Alarms
drwxr-xr-x  3 me me 0 Aug 26  2014 Android
drwxr-xr-x  3 me me 0 Feb 13 19:50 DCIM
drwxr-xr-x  2 me me 0 Aug 31  2024 Download
drwxr-xr-x  2 me me 0 Aug 31  2024 Movies
drwxr-xr-x  2 me me 0 Aug 31  2024 Music
drwxr-xr-x  2 me me 0 Aug 31  2024 Notifications
drwxr-xr-x  2 me me 0 Aug 31  2024 Pictures
drwxr-xr-x  2 me me 0 Aug 31  2024 Podcasts
drwxr-xr-x  2 me me 0 Aug 31  2024 Ringtones

... і відмонтувати сховище MotoG

$ fusermount -u /home/me/Android_transfer
$ ls -al ~/Android_transfer/Internal\ storage/
ls: cannot access /home/me/Android_transfer/Internal storage/: No such file or directory

невдале монтування jmtpfs

Спочатку я намагався змонтувати MotoG за допомогою sudo. Не робіть так! Ви отримаєте такий результат, як цей

$ sudo jmtpfs ~/Android_transfer/
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
Device 0 (VID=22b8 and PID=2e82) is a Motorola Moto G (ID2).
ignoring libusb_claim_interface() = -6PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
Android device detected, assigning default bug flags
$ ls -al ~/Android_transfer/
ls: cannot access /home/me/Android_transfer/: Permission denied
$ sudo ls -al ~/Android_transfer/
ls: cannot access /home/me/Android_transfer/: Permission denied
$ sudo fusermount -u /home/me/Android_transfer

Запамʼятайте: файлову систему MTP реалізовано як FUSE, що означає Файлова система у Вашому користувацькому просторі.

копіювання файлів з Вашого смартфона через mtp-getfile

Спочатку встановіть пакунок mtp-tools:

$ sudo apt-get install mtp-tools

Потім, отримайте список доступних файлів:

$ mtp-files > file_list.txt

file_list.txt тепер містить записи, схожі на ці:

File ID: 81
   Filename: WP_20161029_16_26_49_Pro.jpg
   File size 936160 (0x00000000000E48E0) bytes
   Parent ID: 12
   Storage ID: 0x00010001
   Filetype: JPEG file

де «Parent ID» щось на зразок теки, в якій файл знаходиться на смартфоні. Тому Вам треба зробити щось на зразок цього, щоб отримати цей конкретний файл:

mkdir "12"
mtp-getfile "81" "12/WP_20161029_16_26_49_Pro.jpg"

Так, mkdir "12" і 12 із Parent ID в локальному файлі важливі.