Usb modeswitch как пользоваться
Перейти к содержимому

Usb modeswitch как пользоваться

  • автор:

usb_modeswitch и USB модем — Как переключить?

Есть USB Модем на котором написано W120
по #lsusb он говорит:
Bus 001 Device 009: ID 20a6:f00e
Добился того что после:
#eject /dev/sr0
#lsusb Говорит:
Bus 001 Device 010: ID 20a6:1105
и появляются порты /dev/ttyUSB*

Нужно чтобы устройство переключалось само.
Сделал: /etc/usb_modeswitch.d/20a6:f00e
——
TargetVendor=0x20a6
TargetProduct=0x1105
——

Однако переключения не происходит. Где может быть косяк?
Как добиться переключения в 1105?

n0mad ★★
16.01.14 13:32:38 MSK

$ cat huawei_e3276.conf # HUAWEI E3276 DefaultVendor= 0x12d1 DefaultProduct= 0x14fe TargetVendor= 0x12d1 TargetProduct= 0x1506 MessageContent="55534243123456780000000000000011062000000100000000000000000000"
$ cat udev/rules.d/20-usb.rules . ACTION=="add",SUBSYSTEM=="usb",ATTRS=="12d1",ATTRS=="14fe",RUN+="/usr/sbin/usb_modeswitch --quiet --config-file /etc/huawei_e3276.conf"

imb ★★
( 16.01.14 16:53:50 MSK )
Ответ на: комментарий от imb 16.01.14 16:53:50 MSK

У меня не х№;вей а W120
Сделал:
# cat W120.conf
DefaultVendor= 0x20a6
DefaultProduct= 0xf00e
TargetVendor= 0x20a6
TargetProduct= 0x1105

MessageContent не знаю откуда брать и какой именно — потому убрал.

Исполнил:
#/usr/sbin/usb_modeswitch —config-file W120.conf

Looking for target devices .
No devices in target mode or class found
Looking for default devices .
found matching product ID
adding device
Found device in default mode, class or configuration (1)
Accessing device 005 on bus 001 .
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 .
No driver found. Either detached before or never attached

И что с этим делать?

n0mad ★★
( 16.01.14 18:03:07 MSK ) автор топика
Ответ на: комментарий от n0mad 16.01.14 18:03:07 MSK

Вы сперва выясните на каком чипе построено Ваше устройство, либо попробуйте по её ID поискать пример конфигурации, например http://www.draisberghof.de/usb_modeswitch/device_reference.txt
Актуальные версии usb_modeswitch и базы к нему http://www.draisberghof.de/usb_modeswitch/#download

imb ★★
( 16.01.14 18:13:28 MSK )
Ответ на: комментарий от imb 16.01.14 18:13:28 MSK

НУ НЕТ КОНФИГОВ ДЛЯ МОЕГО УСТРОЙСТВА.

Еще раз: Если сделать #eject /dev/sr0 — оно переключается.
Как это сделать автоматом? После переключения появляются порты.
вывод minicom:

ati
Manufacturer: QUALCOMM INCORPORATED
Model: HSUPA
Revision: WUP_1.10.040
IMEI: 359769029585756
+GCAP: +CGSM,+DS,+ES

Как узнать название чипа? Какой командой?

Неужели невозможно принудительно модем перевести в 20a6:1105?

n0mad ★★
( 16.01.14 20:56:24 MSK ) автор топика
Последнее исправление: n0mad 16.01.14 20:57:29 MSK (всего исправлений: 1)

Ответ на: комментарий от n0mad 16.01.14 20:56:24 MSK

Ну повесьте правило в udev что бы при подключении устройства он вызывал для него eject, в чём тогда вопрос?

imb ★★
( 16.01.14 22:25:52 MSK )
Ответ на: комментарий от imb 16.01.14 22:25:52 MSK

Ну повесьте правило в udev что бы при подключении устройства он вызывал для него eject, в чём тогда вопрос?

Вопрос в том что не знаю как.
Пробовал так:
#lsusb
Bus 001 Device 002: ID 20a6:f00e

cat /etc/udev/rules.d/80-USBGSM.rules
SUBSYSTEM==«usb», ACTION==«add», ATTRS==«f00e», ATTRS==«20a
6», MODE:=«0666», RUN+=«/usr/bin/eject /dev/sr0»

Ни при вставлении ни при загрузке не происходит eject.
Нигде в логах не вижу запуска /usr/bin/eject хотя если в скрипте
меняю на просто eject без пути то в логе появляется:
——
udevd[3027]: failed to execute ‘/lib/udev/eject’ ‘eject /dev/
sr0′: No such file or directory
——

Когда меняю на полный путь — тишина и нет результата.
Если руками исполняю — всё отрабатывает как надо.

n0mad ★★
( 17.01.14 10:48:24 MSK ) автор топика
Ответ на: комментарий от n0mad 17.01.14 10:48:24 MSK

А в ответ тишина.

Видимо задача нерешаемя и придется выкинуть модем из линукса. не судьба линуксу работать с этим модемом.
Придется использовать оффтопик.

n0mad ★★
( 20.01.14 11:09:53 MSK ) автор топика
Ответ на: А в ответ тишина. от n0mad 20.01.14 11:09:53 MSK

Всё решаемо

1) В windows переключить модем в режим только модем at-командой AT+MDTFLAG=00000000 2) В linux делаем следующее Для определения модема и появления устройств /dev/ttyUSBx нужно дать команду или прописать её в правила udev: sudo modprobe -v usbserial vendor=0x20a6 product=0x1105 3) Настраиваем pppd и радуемся http://4pda.ru/forum/index.php?showtopic=474527&st=0

net
( 03.02.14 13:45:33 MSK )
6 мая 2014 г.

Переключить в режим модема из под Linux

Мое устройство определилось как 20a6:f00e # eject /dev/sr0 теперь как 20a6:0x1105

Переключение в режим модема, работает практически для всех модемов от Huawei: usb_modeswitch -H -v 20a6 -p 1105

теперь устройство представляется как 20a6:0x1106 в lsusb В базе udev такого устройства нет — нужно вручную запустить драйвер modprobe usbserial vendor=0x20a6 product=0x1106

Вооля: ls /dev/ttyUS* /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3

Возможно, что 2-ой шаг можно выполнить без 1-го, указам первоначальный product_id.

Usb-modeswitch

USB-modeswitch это инструмент переключения режима для управления USB-устройствами «flip flop».
Некоторые современные USB-устройства, для облегчения их использования в Windows, при первом подключении работают как флеш-память. При установке такого USB-устройства начинается установка драйвера оттуда. А когда он установлен, запоминающее устройство исчезает, и появляется новое устройство, например, USB-модем. Эта функция называется ZeroCD. В системе Debian/GNU Linux данная функция не требуется, потому что драйвер включён в модуль usbserial ядра Linux. Тем не менее устройство продолжает отображаться по умолчанию как usb-накопитель. USB-modeswitch решает эту проблему посылкой команды, которая переключает устройство из «usb-storage» в «usbserial».

Установка

Пакет присутствует в хранилище пакетов debian.
Для установки пакета

  • в командной строке: следует выполнить команду # apt-get install usb-modeswitch
  • в графическом режиме: воспользоваться специализированной программой управления пакетами

После установки пакет готов к использованию.

Для настройки существует файл /etc/usb_modeswitch.conf с двумя параметрами

DisableSwitching=0 - 0/1 включение/выключение переключения режимов при установке USB-устройства EnableLogging=1 - 0/1 выключение/включение журналирования работы

Литература

Справочная информация

  • 10.02.2014: Usb-modeswitch: создание статьи в википедии, описание установки и настройки пакета в debian wheezy

Переключение режима USB модема из Mаss Storage в GSM modem в Linux

Переключаем USB 3G модем из режима накопителя в режим GSM modem на Raspbery Pi 3 Model B+.

Теория

Обычно USB модемы имеют 2 режима инициализации в OS — Mass Storage (виртуальный накопитель с драйверами) и GSM модем. Нам нужно указать OS правило — при инициализации, переключать USB модем с определенным VendorId:ProductId в режим GSM modem.

Установка usb-modeswitch

Для одних USB модемов достаточно просто установить утилиту usb-modeswitch и usb-modeswitch-data, которая содержит правила и конфиги переключения режимов для большинства USB устройств. Примечательно, что в OS Raspbian Stretch эта утилита уже установлена.

sudo apt install usb-modeswitch usb-modeswitch-data

После установки usb-modeswitch и подключения USB модема, он может определиться правильно — как GSM modem:

dmesg -T | grep ttyUSB
[2018-05-25 02:42:14] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB0 [2018-05-25 02:42:14] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB1 [2018-05-25 02:42:14] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB2 [2018-05-25 02:42:22] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB3 [2018-05-25 02:42:22] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB4 [2018-05-25 02:42:22] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB5

Также будут доступны по 3 интерфейса /dev/ttyUSB* на каждый модем:

ls -la /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 май 25 02:45 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 май 25 02:42 /dev/ttyUSB1 crw-rw---- 1 root dialout 188, 2 май 25 14:48 /dev/ttyUSB2 crw-rw---- 1 root dialout 188, 3 май 25 13:56 /dev/ttyUSB3 crw-rw---- 1 root dialout 188, 4 май 25 02:42 /dev/ttyUSB4 crw-rw---- 1 root dialout 188, 5 май 25 14:48 /dev/ttyUSB5

Но, попадаются модемы с номерами vendor ID и product ID, для которых нужно прописывать правила переключения режима из Mass Storage в GSM modem.

dmesg -T | grep -Pi 'huawei|ttyUSB'
[2018-05-25 02:42:23] scsi 1:0:0:0: Direct-Access HUAWEI MMC Storage 2.31 PQ: 0 ANSI: 2 [2018-05-25 02:42:23] scsi 0:0:0:0: CD-ROM HUAWEI Mass Storage 2.31 PQ: 0 ANSI: 2 [2018-05-25 13:22:13] scsi 2:0:0:0: Direct-Access HUAWEI TF CARD Storage 2.31 PQ: 0 ANSI: 2 

Настройка usb-modeswitch

Внимание!

Если совсем ничего не получается, попробуйте очистить логи, перезагрузить сервер и пролистать все новые логи:

sudo rm /var/log/usb_modeswitch_* cat /var/log/usb_modeswitch_*

Параметры запуска usb-modeswitch

Переключение режима работы модема можно запускать вручную.

Примеры запуска утилиты для ручного переключения режима USB девайса:

sudo usb_modeswitch -v 12d1 -p 1003 -V 12d1 -P 1003 -H sudo usb_modeswitch -v 12d1 -p 1003 -V 12d1 -P 1003 -d sudo usb_modeswitch -v 12d1 -p 1003 -V 12d1 -P 1001 -HR -M "55534243123456780000000000000011062000000100000000000000000000" 
sudo usb_modeswitch -v 0x12d1 -p 0x1003 -V 0x12d1 -P 0x1001 -J sudo usb_modeswitch -v 12d1 -p 1003 -V 12d1 -P 1001 -M 55534243123456780000000000000011060000000000000000000000000000
#: Error: can't use storage command in MessageContent with interface 0; interface class is 255, expected 8. Abort
sudo usb_modeswitch -v 0x12d1 -p 0x1003 -V 0x12d1 -P 0x1003 --target-class 0xff -c ./setup/vendors/configs/12d1\:1003 sudo usb_modeswitch -v 12d1 -p 1003 -V 12d1 -P 1003 --target-class 0xff -J #: No devices in default mode found. Nothing to do.
sudo usb_modeswitch -v 12d1 -p 1003 -H #: Send old Huawei control message . 
-v ID Искать девайс с указанным VendorId -p ID Искать девайс с указанным ProductId -V ID Переключить девайс в заданный VendorId -P ID Переключить девайс в заданный ProductId -c FILE Указать файл конфигурации с настройками переключения девайса и режима --target-class 0xff ?? -M Передача какой-то управляющей команды, значение - константа (не разобрался с этим) -H Режим Huawei -J Режим Huawei new -R Перезагрузить USB устройство -d Отключить накопитель (Mass Storage) 

Файлы конфигурации usb-modeswitch

Основной файл конфигурации (активация утилиты, логирование):

sudo leafpad /etc/usb_modeswitch.conf
Примечание

Каталог /etc/usb_modeswitch.d теперь используется для дополнительных файлов конфигурации.

Примеры конфигурации: http://www.draisberghof.de/usb_modeswitch/device_reference.txt

Архив /usr/share/usb_modeswitch/configPack.tar.gz не распакован! Так должно быть?

cp /usr/share/usb_modeswitch/configPack.tar.gz /home/pi/robot/setup/modems-mode-configs cd /home/pi/robot/setup/modems-mode-configs && sudo tar -xzf configPack.tar.gz

Правила переключения из пакета usb-modeswitch-data

Каталог c правилами подключения девайсов (файлы .rules), с помощью которых можно переключить режим USB устройства при его инициализации:

/lib/udev/rules.d/ # системные правила /etc/udev/rules.d/ # пользовательские правила 

Дефолтные правила переключения режима USB модемов находятся здесь:

cat /lib/udev/rules.d/40-usb_modeswitch.rules

Добавить собственное правило для переключения режима USB модема:

sudo leafpad /etc/udev/rules.d/40-huawei.rules
ATTR=="12d1", ATTR=="1003", RUN+="usb_modeswitch '/%k'" ACTION=="add", SUBSYSTEM=="usb", ATTRS=="12d1", ATTRS=="1003", RUN+="/usr/sbin/usb_modeswitch -v 12d1 -p 1003 -J"

Драйвер

Загрузить другой драйвер и отключить накопитель (как с этим работать?):

# Загрузить драйвер модема и detach накопитель sudo modprobe usbserial vendor=0x12d1 product=0x1003 sudo usb_modeswitch -v 0x12d1 -p 0x1003 -d #: OK, driver detached

USB modeswitch

Пакет исходного кода: usb-modeswitch применяется в Unix системах для подключения устройств через USB интерфейс.
Для опознания USB устройства системой, в некоторых случаях, необходимо изменить конфигурационный файл /etc/usb_modeswitch.conf
В частности, мы пытались подключить модем usb pantech UM175A оператора «Интертелеком» на ось linux 5.0
Первоначально идентификатор устройства (ID) взяли командой lsusb

Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 005: ID 106c:3715 Curitel Communications, Inc.

и вставили его в конфигурационный файл usb_modeswitch.conf.
Pаскоментировали следующие строки (убрали # вначале строки)

DefaultVendor= 0x106c
DefaultProduct= 0x3b03
TargetVendor= 0x16d5
TargetProduct= 0x6502
MessageContent=»555342431234567824000000800008FF05B112AEE102000000000000000000″

Сохранив изменения запустили usb_modeswitch (от суперпользователя «root»). Благодаря этому устройство начало опознаваться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *