Подключение Android по MTP в OpenBSD

Опубликовано 23.02.2024 в OpenBSD

... на четвертые сутки зоркий индеец Соколиный Глаз заметил, что устройства на Android давным-давно уже разучились эмулировать флешку. Честное слово, с этими вездесущими безлимитными и высокоскоростными (ну, условно) интернетами в дикой, отсталой России - я уже много лет как забыл о такой процедуре, как подключение смартфона к компьютеру кабелем с целью передачи файлов. Ну вот не нужно оно - сделанные телефоном снимки автоматически синхронизируются с облаком, всякой там музыки, кино и пиратского софта я уж не первое десятилетие, как не качаю, для резервного копирования есть решения от производителя смартфона... Оно как бы и незачем?

Но вот понадобилось тут вдруг. А в Android оказывается уже много версий как лишился возможности эмулировать эту самую флешку при подключении по USB - удалили ее по причине несекьюрности, в пользу богомерзкого протокола MTP, придуманного в мрачных осклизлых пещерах Microsoft специально, чтобы люди страдали и из достоинств только и имеющего, что встроенную защиту от копирования и прочие бездны анальных ограничений. Ну ладно, ладно, сгущаю краски. Да и не все производители android-устройств от эмуляции дискового накопителя отказались.

И тем не менее: как подключить свой смартфон на Android в OpenBSD для передачи файлов? Да проще простого! Во-первых, установим необходимый для этого пакет:

$ doas pkg_add simple-mtpfs

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

$ doas mkdir -p /mnt/mtp

Затем подключим собственно устройство USB-шнурком и введем незатейливую команду для получения списка подключенных устройств (ну чисто убедиться, что всё в порядке), вот что примерно мы увидим:

$ doas simple-mtpfs -l 
1: SamsungGalaxy models (MTP)

В данном случае, устройство у нас нашлось одно, но я допускаю, что их может быть и больше (например, если Android-смартфон имеет, помимо встроенной памяти, еще внешнюю флешку, ну или в других каикх случаях). Теперь, собственно, приступим к монтированию:

$ doas simple-mtpfs --device 1 /mnt/mtp/ -o allow_other
Could not retrieve device storage.
For android phones make sure the screen is unlocked.
pthread_mutex_destroy on mutex with waiters!

Озадачившись вышеизложенным выводом, поспешим разблокировать экран устройства - а там нас ждет уже запрос на подключение, где нужно нажать "разрешить", после чего повторяем вызов той же самой команды:

$ doas simple-mtpfs --device 1 /mnt/mtp/ -o allow_other

На этот раз никаких пугающих сообщений мы не увидим, открываем свой любимый файловый менеджер и следуем в /mnt/mtp/ сотворять интересующие нас файловые операции. Кстати, если у нас устройство обнаружилось лишь одно, то опцию --device 1 можно и опустить.

По завершению не забываем сделать doas umount /mnt/mtp. Собственно, всё.

P.S. К сожалению, под OpenBSD не портирован пакет gvfs-mtp, так что научить какой-нибудь фичастый файловый менеджер вроде Thunar или Nautilus автомонтированию смартфона пока не получилось. Но на досуге я как-нибудь поковыряюсь и с автомонтированием, тут под OpenBSD тоже есть парочка любопытных и кастомизируемых решений.