[Решено]USB-модем МТС, не могу получить /dev/ttyUSB0

Автор gardarea51, 05 декабря 2012, 22:09:40

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

gardarea51

Привет всем!
Меня этот модем сегодня просто доканал, буду признателен за любую помощь. Незнаю как, но один раз он определился.. но я не сам пойму почему и как это получилось. Итак, есть МТС-модем. В lsusb определяется так:
Bus 004 Device 007: ID 12d1:155b Huawei Technologies Co., Ltd.
При его втыкании происходит следующее:
Dec  5 23:44:20 area51 kernel: [ 1937.388185] usb 4-2: new high-speed USB device number 7 using ehci_hcd
Dec  5 23:44:21 area51 kernel: [ 1937.522380] usb 4-2: New USB device found, idVendor=12d1, idProduct=155b
Dec  5 23:44:21 area51 kernel: [ 1937.522392] usb 4-2: New USB device strings: Mfr=3, Product=2, SerialNumber=0
Dec  5 23:44:21 area51 kernel: [ 1937.522400] usb 4-2: Product: Mobile Connect
Dec  5 23:44:21 area51 kernel: [ 1937.524710] scsi19 : usb-storage 4-2:1.0
Dec  5 23:44:21 area51 kernel: [ 1937.525316] scsi20 : usb-storage 4-2:1.1
Dec  5 23:44:22 area51 kernel: [ 1938.525743] scsi 19:0:0:0: CD-ROM                     Mass Storage     2.31 PQ: 0 ANSI: 2
Dec  5 23:44:22 area51 kernel: [ 1938.525855] scsi 20:0:0:0: Direct-Access              SD Storage       2.31 PQ: 0 ANSI: 2
Dec  5 23:44:22 area51 kernel: [ 1938.530451] sr1: scsi-1 drive
Dec  5 23:44:22 area51 kernel: [ 1938.531220] sr 19:0:0:0: Attached scsi CD-ROM sr1
Dec  5 23:44:22 area51 kernel: [ 1938.531462] sr 19:0:0:0: Attached scsi generic sg5 type 5
Dec  5 23:44:22 area51 kernel: [ 1938.532698] sd 20:0:0:0: Attached scsi generic sg6 type 0
Dec  5 23:44:22 area51 kernel: [ 1938.535956] sd 20:0:0:0: [sde] Attached SCSI removable disk

То есть появляется cd-rom по адресу /dev/sr1, а интерфейс модема /dev/ttyUSB0 и сопутствующие не появляются. Поставил usb-modeswitch, но исследуя его файл конфигурации для udev в /lib/udev/rules.d/ не нашел там строки для своего модема 12d1:155b. Не стал отчаиваться и добавил в /etc/usb_modeswitch.conf строки:
DefaultVendor=  0x12d1
DefaultProduct= 0x155b

TargetVendor=   0x12d1
TargetProduct=  0x155b

DetachStorageOnly=1
После запуска root@area51:~# usb_modeswitch -c /etc/usb_modeswitch.conf

Looking for target devices ...
   found matching product ID
   adding device
Found devices in target mode or class (1)
Looking for default devices ...
   found matching product ID
   adding device
Found device in default mode, class or configuration (1)
Accessing device 007 on bus 004 ...
Getting the current device configuration ...
OK, got current device configuration (1)
Using first interface: 0x00
Using endpoints 0x01 (out) and 0x81 (in)
Inquiring device details; driver will be detached ...
Looking for active driver ...
OK, driver found ("usb-storage")
OK, driver "usb-storage" detached

SCSI inquiry data (for identification)
-------------------------
  Vendor String:         
   Model String: Mass Storage   
Revision String: 2.31
-------------------------

USB description data (for identification)
-------------------------
Manufacturer:
     Product: Mobile Connect
  Serial No.: not provided
-------------------------
Only detaching storage driver for switching ...
Any driver was already detached for inquiry
-> Run lsusb to note any changes. Bye.
Ничего не меняется, уже создал правило для udev:root@area51:~# cat /etc/udev/rules.d/40-modem.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="155b", RUN+="/usr/sbin/usb_modeswitch -c /etc/usb_modeswitch.conf; eject /dev/sr1"
SUBSYSTEMS=="usb", SYSFS{idProduct}=="155b", SYSFS{idVendor}=="12d1", RUN+="/lib/udev/usb_modeswitch --vendor 0x12d1 --product 0x155b --type option-zerocd"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="155b", RUN+="/sbin/modprobe usbserial vendor=0x12d1 product=0x155b"

Даже продублировал опции для модуля usbserial:root@area51:~# cat /etc/modprobe.d/usb-modem.conf
options usbserial vendor=0x12d1 product=0x155b


Пробовал удалять модуль usb-storage, а затем активировать usbserial, но.. все безрезультатно. Даже уже не знаю что делать как бороться с этим зловредным модемом, софт с него ставить _очень_ не хочется, нужно просто получить /dev/ttyUSB* и настроить как нибудь по простому через wvdial или /etc/ppp/. Получается нужно как то отключить у модема режим представления себя как cd-rom, чтобы он сразу определялся как модем, но пока ничего не получается.

calambus

#1
gardarea51 , такой 3G USB-модем ?
Последняя версия USB_ModeSwitch установлена ?

gardarea51

#2
Модем кажется такой, судя по ссылке (сам ее вчера курил) у человека идентификатор продукта тот же, но почему то потом он меняется, хотя.. может быть вот в чем дело:
DefaultVendor=  0x12d1
DefaultProduct= 0x155b
TargetVendor=   0x12d1
TargetProduct=  0x1506

Попробую повоевать с ним на работе. Еще как я понимаю SendMessage - это строка отправляемых модему команд, интересно как ее получить к примеру для "AT^U2DIAG=0". USB_ModeSwitch.. хм, нужно глянуть, но сижу на Debian testing, думал может последняя версия, но проверю. Сейчас пора на работу, но установлена такая версия:
root@area51:~# apt-cache show usb-modeswitch
Package: usb-modeswitch
Version: 1.2.3+repack0-1
Installed-Size: 166
Maintainer: Didier Raboud <odyx@debian.org>
Architecture: amd64
Depends: libc6 (>= 2.4), libjim0debian2 (>= 0.72), libusb-0.1-4 (>= 2:0.1.12), usb-modeswitch-data (>= 20110227-1~)
Pre-Depends: dpkg (>= 1.15.7.2)
Suggests: comgt, wvdial
Breaks: usb-modeswitch-data (<< 20100127)
Description-ru: инструмент переключения режима для управления USB-устройствами "flip flop"
Некоторые современные устройства USB имеют на борту свои собственные
патентованные драйвера для Windows, особенно WAN-донглы. При первом
подключении они работают как флеш-память и начинают установку драйвера
оттуда. Если драйвер уже установлен, запоминающее устройство исчезает,
и появляется новое устройство, например, USB-модем. Эта функция
называется ZeroCD.
.
В системе Debian это не требуется, потому что драйвер включен в модуль
usbserial ядра Linux. Тем не менее устройство продолжает отображаться
по умолчанию как usb-накопитель. usb-modeswitch решает эту проблему
посылкой команды, которая переключает устройство из "usb-storage" в
"usbserial".
.
Пакет содержит исполняемые скрипты.
Homepage: http://www.draisberghof.de/usb_modeswitch/
Description-md5: bbddadcef95b9342b7cf75c7d1b5cfa2
Tag: admin::hardware, admin::kernel, hardware::TODO, hardware::modem,
hardware::usb, implemented-in::c, implemented-in::tcl,
interface::commandline, role::program, use::configuring, use::driver
Section: comm
Priority: extra
Filename: pool/main/u/usb-modeswitch/usb-modeswitch_1.2.3+repack0-1_amd64.deb
Size: 52768
MD5sum: d798f9d79a5665a92a73e9fed2eee785
SHA1: 42ccdc58fd2e8518a17bad705891953a529791c2
SHA256: 691757176d0d6fcc8aab52aecc41522820599a28a742b17e4758e846625f5287


Сообщение объединено: 06 декабря 2012, 09:09:23

Вообще уже ничего не понимаю. Решил пойти путем выключения в модеме функции cd-rom. Запустил на компьютере с Windows XP Hyper Terminal, следую руководству, использовал команды отсюда. Судя по всему модем сменил статус на "только модем":
AT^SETPORT="A1,A2;1,2,3"
OK
AT^SETPORT?
a1,a2;1,2,3

OK
AT^GETPORTMODE
^getportmode:type:WCDMA:Qualcomm,MDM:0,PCUI:1,DIAG:2,SD:3

Но вот только при включении его в linux - он опять определяет какой то sr1 сидиром:
Dec  6 11:12:59 localhost kernel: [ 1316.599899] usb 1-6: new high-speed USB device number 4 using ehci_hcd
Dec  6 11:12:59 localhost kernel: [ 1316.741664] scsi6 : usb-storage 1-6:1.0
Dec  6 11:12:59 localhost kernel: [ 1316.741859] scsi7 : usb-storage 1-6:1.1
Dec  6 11:13:00 localhost kernel: [ 1317.740997] scsi 6:0:0:0: CD-ROM                     Mass Storage     2.31 PQ: 0 ANSI: 2
Dec  6 11:13:00 localhost kernel: [ 1317.741131] scsi 7:0:0:0: Direct-Access              SD Storage       2.31 PQ: 0 ANSI: 2
Dec  6 11:13:00 localhost kernel: [ 1317.743702] sr1: scsi-1 drive
Dec  6 11:13:00 localhost kernel: [ 1317.743833] sd 7:0:0:0: [sdb] Attached SCSI removable disk
Dec  6 11:13:00 localhost kernel: [ 1317.743853] sr 6:0:0:0: Attached scsi CD-ROM sr1


Хм.. буквально сейчас модем включился, после следующих действий:
1) Команда
usb_modeswitch -c /etc/usb_modeswitch.d/12d1\:155bСодержимое файла:
[root@tux ~]# cat /etc/usb_modeswitch.d/12d1\:155b
#######################################################
# Huawei E171

DefaultVendor= 0x12d1
DefaultProduct=0x155b

TargetVendor=  0x12d1
TargetProduct= 0x1506

MessageContent="55534243123456780000000000000011062000000100000000000000000000"

2) Команда /sbin/modprobe usbserial vendor=0x12d1 product=0x1506
И вот что говорит система:
Dec  6 11:15:20 localhost kernel: [ 1458.133232] usb 1-6: new high-speed USB device number 5 using ehci_hcd
Dec  6 11:15:55 localhost kernel: [ 1493.098793] usbcore: registered new interface driver usbserial
Dec  6 11:15:55 localhost kernel: [ 1493.098806] USB Serial support registered for generic
Dec  6 11:15:55 localhost kernel: [ 1493.098828] usbserial_generic 1-6:1.0: generic converter detected
Dec  6 11:15:55 localhost kernel: [ 1493.099031] usb 1-6: generic converter now attached to ttyUSB0
Dec  6 11:15:55 localhost kernel: [ 1493.099040] usbserial_generic 1-6:1.1: generic converter detected
Dec  6 11:15:55 localhost kernel: [ 1493.099106] usb 1-6: generic converter now attached to ttyUSB1
Dec  6 11:15:55 localhost kernel: [ 1493.099114] usbserial_generic 1-6:1.2: generic converter detected
Dec  6 11:15:55 localhost kernel: [ 1493.099167] usb 1-6: generic converter now attached to ttyUSB2
Dec  6 11:15:55 localhost kernel: [ 1493.099180] usbcore: registered new interface driver usbserial_generic
Dec  6 11:15:55 localhost kernel: [ 1493.099182] usbserial: USB Serial Driver core

Сразу после этого даже смог подключиться на модем через minicom по порту /dev/ttyUSB0. Теперь остается вопрос: как бы сделать так, чтобы модем после подключения всегда определялся как Bus 001 Device 005: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcardчтобы не было необходимости запускать usb_modeswitch и подгружать модуль usbserial.

calambus

ЦитироватьТеперь остается вопрос: как бы сделать так, чтобы модем после подключения всегда определялся как
Bus 001 Device 005: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard
чтобы не было необходимости запускать usb_modeswitch и подгружать модуль usbserial.
А вот без этого заставить работать этот 3G USB-модем никак не получится ...
Вообще для этого предназначена программа Network Manager ...

gardarea51

Интересно, можно ли как то поменять productID и vendorID для usb-устройства..

calambus

#5
gardarea51 , всё равно это упирается в проблему : Zero CD & 3G USB modem & linux

gardarea51

#6
Да, все правильно. Искал-искал вчера и понял, что все таки нет другого способа, кроме как использовать usb-modeswitch. Однако, получилось все вообще банально. Поставил прилагающийся Mobile Partner, перед этим только доставил usb-modeswitch. И оно заработало. =) При втыкании определяется как модем, МТСовская программа показывает и баланс и смс и в интернет ходит. Так что проблему можно считать решенной. Спасибо за помощь! =)

ps: видимо решение зависит еще от реализации модема, к примеру в интернете куча статей по переводу модема в режим "только модем" с помощью AT-команд. Однако, раз модем у меня фирмовый МТС, то возможно, что для начала нужно его прошить умолчальной прошивкой от Huawei. В принципе - способ, но раз заработало все изкоробки, то дальше я уже не пошел.

calambus

#7
Ну и что же , ситуация обычная - создаём себе трудности , а за тем мужественно их преодалеваем ...

gardarea51