LINUX.ORG.RU

Мистика с USB-модемом

 


0

1

ЛОР, такое дело. Ковыряюсь уже полдня, уперся в стенку, решил спросить у мудрецов совета. Имеется 3G модемчик Huawei (v:0x12d1,p:0x1505). Заводится сам у меня в Gentoo и на машине с Debian 7.1, но у товарища, поставившего себе Ubuntu 13.10 — отказалось. Пока что есть такая инфа:

  • Модем имеет очень хитрую схему работы, сначала определяется как флешка и ОС должна его перевесить в режим модема со сменой product id на 0x1506. Этим занимается утилита usb_modeswitch, у udev-а под нее есть все скрипты уже пару лет как.
  • Опытным путем установил, что скрипт udev-а отрабатывает, usb_modeswitch запускается.
  • На моей машине опытно установил, что сначала запускается usb_modeswitch с ключом типа /2-1.2:1.0, что соответствует udev-овскому правилу по паре pid/vid, через пару секунд он уже подхватывается как модем и подтягивается тот же скрипт с уже другими ключами.
  • На Ubuntu первый скрипт выполняется так же (тестировал эхами в нем), но дальше дело не идет.
  • Если в Ubuntu вообще отключить этот скрипт из udev и выполнять точно такую же команду от рута в терминальчике — модем запускается как надо, остальные скрипты отрабатывают.

Ума ни приложу, в чем разница запуска скрипта от udev-а и вручную. Скрипты udev-а и /lib/udev/usb_modeswitch вроде как одинаковые. Версия самого usb_modeswitch одинаковая (1.2.3). Что бы еще такого попробовать?


Что бы еще такого попробовать?

Отключить все свистоперделки и оставить модем только модемом (AT^U2DIAG=0).

(тестировал эхами в нем)

Этими же эхами проверить от какого пользователя запускается скрипт.

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

Отключить все свистоперделки и оставить модем только модемом

Руками работает, автоматом из udev-а нет. Чтобы гнать комманды модема, нужно чтобы подгрузился usbserial.

Этими же эхами проверить от какого пользователя запускается скрипт.

От рута в обоих случаях, я тоже на это подумал, но сразу проверил.

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

кстати, а что в списке блеклиста той убунты? Подика какой юсбсериал.

Я посмотрю, но опять же, если запустить рукой тот скрипт, который должен пускать udev — буква в букву — все работает.

Установить все обновления.

Это не ЛОР-вей. Так-то я и дебиан туда могу вкатить, у меня-то норм.

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

Чтобы гнать комманды модема, нужно чтобы подгрузился usbserial.

Мы может за разные вещи говорим? Што мешает отключить в самом модеме свистопирделки типа кдпзу навсегда? и скормить юсбсериалу id устройства?

Это не ЛОР-вей.

Можно проанализировать что говорят udevadm и dmesg.

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

>> Установить все обновления.

> Это не ЛОР-вей.

Это убунту-вей, эти ребята выпускают глючные релизы. Без обновлений работать сложно.

ZenitharChampion ★★★★★
()

Еще можно попробовать sleep запихнуть в начало скрипта вызываемого udev'ом. Ибо разница между ручным запуском и из правила - только во времени в течении которого свисток проторчал в системе. Ну и правило само можно людям показать.

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

Почему не ЛОР-вей? Может, проблему уже пофиксили. Кстати, не пробовал поискать по их баг-трекеру?

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

Мы может за разные вещи говорим? Што мешает отключить в самом модеме свистопирделки типа кдпзу навсегда? и скормить юсбсериалу id устройства?

Сорри, понял теперь. Попробовал скормить через Minicom — отвечает ERROR. http://pastebin.ca/2522262

Можно проанализировать что говорят udevadm и dmesg

Сейчас посравниваю udevadm, спасибо. dmesg неинформативен — подключилось mass-storage устройство и все на Ubuntu, у меня то же самое + оно отключилось и переподключилось как usbserial но это я и так знал.

Это убунту-вей, эти ребята выпускают глючные релизы. Без обновлений работать сложно.

Да, я чуточку загнался, имел в виду, что мне интересно, откуда вообще ноги растут. Последние обновления, результата ноль.

Еще можно попробовать sleep запихнуть в начало скрипта вызываемого udev'ом. Ибо разница между ручным запуском и из правила - только во времени в течении которого свисток проторчал в системе.

Втыкал от 5 до 15 секунд слипа в скрипт — эффекта нет, хотя на Debian заводится где-то за 2-3 секунды.

Кстати, не пробовал поискать по их баг-трекеру?

Там очень много, сейчас буду искать, что остается уже делать. Само правило: http://pastebin.ca/index.php

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

Окей, оказалось вот это. Спасибо. Причин пока не понимаю, но репортов таких много. В одном из портов взлетело.

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

если вручную пускаешь от рута, как и через udev, то разницы может быть примерно две: 1) environment variables 2) working directory.

покажи, чтоли, udev-правила и скрипт?

ну и еще путь - попытаться в начало скрипта дописать sleep 5s. ой, не, в udev такое, вроде, нельзя.. (?)

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

Окей и файнал репорт по итогам USB2 vs USB3, помогла опция delay_use=3 в usb-storage, видимо почему-то в USB3 портах драйвер usb-storage подхватывает сильно быстро устройство и не дает переключиться.

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

Пробовал все это, переменные окружения те же, директория та же, UID тот же, пауза в скрипте не помогла, собственно почему из истерики сюда и написал. https://bugs.launchpad.net/ubuntu/ source/linux/ bug/979697 релеватный баг

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