Previous Entry Поделиться Next Entry
Теперь линукс таки работает с тем андроидом..
dil wrote in ru_linux
В продолжение поста "Линукс не работает с андроидом". На случай, если у кого встретится аналогичная проблема, делюсь своим решением.

Проблема: при втыкании смартфона в ноутбук линукс сообщал, что видит подключённое андроидное устройство, но показывал только тамошний виртуальный CD-ROM. А вот файловая система самого смартфона (по MTP) почему-то оказывалась совершенно недоступна, и adb этого смартфона не видел, и fastboot тоже.

Этот дефект проявлялся только на одном экземпляре линукса, и только при втыкании смартфона в уже загруженную систему. Если смартфон воткнуть до загрузки, или в другой линукс, или в винду (даже в виртуальную на том же самом невидящем его линуксе), то все они нормально видели файловую систему смартфона по MTP, и adb работал.

Оказалось, что при втыкании смартфона в тот уже загруженный линукс, на этом USB-устройстве почему-то обнаруживалась пачка серийных портов от GSM-модемов. Хотя в смартфоне и мобильный интернет, и wifi, и USB tethering были выключёны. И из-за этого подгружались модули usbserial, usb_wwan, и ещё какой-то option. Вот этот option и вызывал проблемы. Во всех других вариантах подключения ничего подобного не обнаруживалось, лишние модули не грузились, и потому всё нормально работало.

Просто так этот option не удалялся: rmmod: ERROR: Module option is in use, хотя я совершенно не понимаю, кто им пользовался.
И даже rmmod -f иногда выдавал ошибки:
rmmod: ERROR: ../libkmod/libkmod-module.c:777 kmod_module_remove_module() could not remove 'option': Device or resource busy
rmmod: ERROR: could not remove module option: Device or resource busy


Хуже того, при повторных попытках rmmod -f option система иногда вообще рушилась в kernel panic.

Стандартный блэклистинг модулей почему-то тоже не помог, они всё равно грузились.
В конечном итоге помогло вписывание install option /bin/true в /etc/modprobe.d/option.conf . После этого option перестал грузиться, и всё заработало как полагается.
Метки: , ,

  • 1
Кривые руки не для скуки.

Да уж, кривые руки в голове - это серьёзная проблема..

Ну так что ногам покоя не даёт?
То же что и рукам. Спутанность сознания и оторванность от жизни у некоторых программистов.

Но я таки не понимаю, как одинаковые линуксы на одном и том же ноутбуке по-разному воспринимают одно и то же USB-устройство. И более того, один и тот же линукс по-разному воспринимает это устройство в зависимости от того, воткнули его до загрузки самого линукса, или после.

А линуксы зеркально одинаковы? Как грузятся?

Ну что значит "зеркально"? Оба Debian 8.7, обоих я сам ставил, и никаких специфических настроек в них не делал, так что в целом одинаковые.

Они ж с разных партиций грузятся? Тогда интуиция подсказывает, что искать в районе всяких там энумераторов...

Ну да, с разных - один с внутреннего диска, другой - с внешнего USBшного. Но разделы на обоих дисках шифрованы LUKS'ом, на нём LVM стоит, а уже внутри него файловые системы. Так что грузятся с /dev/mapper/volumegroop-root И в чём существенная разница?

Не понял, где искать??

Линукс - страна чудес.
Там ещё и не такие фокусы бывают.
Наверное очень чувствителен к малейшим ошибкам.

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

У меня свой взгляд на то, какой должна быть ОСь.
И пока ни одна ещё не устроила. А постоянные танцы с бубном, честно говоря уже достали.
Впрочем если весь мир дурдом, то чему удивляться.

Ну чё, если ни одна не устраивает, можно свою написать. Вот как Торвальдс..

Придётся.
Сам не сделаешь, никто не сделает.

а mtp в линуксе уже нормально заработал?
когда я в последний раз его тыкал, оно редко с каким телефоном снюхивалось. конкретно с имевшимся у меня тогда galaxy note ничего не вышло (специльно пробовал с виндой - работало отлично).

P.S. сейчас попробовал с mi max - вроде как утилитки запускаются, но mtp-folders, например, отрабатывал 45 секунд.

В гуях обычно нормально, а вот в командной строке обычно хреново.

и какие гуи надо поставить, чтобы оно нормально работало?

Гном и наутилус в дебиановском комплекте с установкой через tasksel без кастомизации - таки показывали.
А вот какой компонент в этом работал с mtp - хз, так как проще было таки вытащить флешку из телефона, чтобы получить доступ к нужным файлам, кои через mtp не показывались тем телефоном, для которого и был нужен mtp (остальные - умели отдавать флешку как диск и проверялись за компанию).


Стандартный дебиановский nautilus вполне себе работает

В гуях давно уже работает, а щас вот попробовал jmtpfs, как рекомендовано для Debian, тоже вполне себе работает:
$ mkdir huawei

$ jmtpfs ~/huawei/
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
Device 0 (VID=12d1 and PID=107e) is UNKNOWN.
Please report this VID/PID and the device model to the libmtp development team
Android device detected, assigning default bug flags

$ ls huawei/
Internal storage

$ ls huawei/Internal\ storage/
Alarms   backups     bluetooth  DCIM      Documents       HWThemes  Movies  Notifications  pcsc_pcsc_001.vcf  Podcasts  Recordings  Wi-Fi Direct
Android  CloudDrive  dianxin    Download  MagazineUnlock  Music     osmand  Pictures       record             Ringtones TWRP

У меня всё работает и всё видно — как с консоли, так и с гуёв (кеды, 2 лаптопа: один с debian, др. с кубунтой).

> Просто так этот option не удалялся: rmmod: ERROR: Module
> option is in use, хотя я совершенно не понимаю, кто им
> пользовался.
очевидно, кто - те самые wwan, usb_serial и может еще кто был лишний, в современном линуксе стоит появиться устройству, как запускается миллион кривых программ, жаждущих им пользоваться.
сам этот "option" - драйвер собственно конкретного модема, названный по имени давным-давно несуществюущей фирмы. Я бы его rm без всякого выяснения, зачем он пытается загружаться.



Не-а, судя по тому, что показывал lsmod в колонке "Used by", это option ими пользовался, а не наоборот.

Но вот почему один линукс находит в этом смартфоне какие-то модемы и грузит под них драйвера, а все остальные линуксы (той же версии - Debian 8.7) этого не делают? Хотя сами эти модули есть везде, я проверил.

модули-шмодули у нас не всегда сами загружаются, их udev грузит (а он нынче модный-systemd'шный и что у него внутри - аллах ведает), или они могут внезапно напрыгнуть при обращении вполне себе юзерланд-софта (в том числе - заводящего себе udev-rules при установке)

Ну и возможно дело просто в тайминге - диск-то внешний, поди, usb'шный? И в другой конфигурации первым грузится другой модуль, перехватывающий инициативу у модемного.

Да, внешний диск USBшный, но даже если его подцепить к линуксу с локального диска, а уже потом воткнуть смартфон, то никаких проблем нет. И если загрузиться с внешнего диска, предварительно воткнув смартфон, то тоже проблем нет. Никаких дополнительных модулей не вижу.
А вот если воткнуть смартфон уже после загрузки с внешнего диска, тогда проблемы и вылезают.

  • 1
?

Log in