Автор Тема: Runtu XFCE 16.04 c Huawei E3372H  (Прочитано 103 раз)

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

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4524
Runtu XFCE 16.04 c Huawei E3372H
« : Июль 15, 2022, 21:18:23 »
Huawei E3372H с прошивкой Hilink, переключение из режима CD-ROM в CdcEthernet.


В Runtu XFCE 16.04 усб модем Huawei E3372H не подключается к интернету и в файловом менеджере отображает диск с программами для него (CD-ROM).
Для выхода в интернет нужно переключить устройство из режима CD-ROM в CdcEthernet (модем с эмуляцией Ethernet).

1. Посмотреть коды производителя и модели устройства через программу lsusb
lsusb
2. Посмотреть в руководстве по usb_modeswitch параметр переключения из режима CD-ROM для вашего производителя, мне подошел параметр -J
man usb_modeswitch
3. Для автоматического переключения устройства в режим модема нужно создать /etc/udev/rules.d/40-huawei-e3372h.rules

В файловом менеджере открыть с правами администратора папку /etc/udev/rules.d, нажать правой кнопкой мыши в пустом месте - создать пустой файл, дать ему название 40-huawei-e3372h.rules
Открыть его в текстовом редакторе, вставить следующий текст
DRIVERS=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1f01", RUN+="/usr/sbin/usb_modeswitch  --default-vendor 0x12d1 --default-product 0x1f01 -J"

Если у вас другое устройство - замените коды производителя и модели, а также параметр переключения.
Последнюю строку оставить пустой.
Сохранить. Закрыть.

Вытащить/вставить модем, после этого подключение к интернету должно заработать.

В Runtu XFCE 18.04 и более новых системах этого делать не требуется, модем там работает нормально.


Оформил результаты исследования в виде инструкции, исследование с подробностями спрятал в спойлер, надеюсь инструкция кому-нибудь пригодится.

Runtu XFCE 16.04 c Huawei E3372H

Совсем недавно я перекочевал на старом компьютере в систему Runtu XFCE 16.04 x64

И мой модем Huawei E3372H с прошивкой Hilink отображался в системе как CD-ROM (в файловом менеджере и в lsusb).
Первое время спасался с помощью роутера с поддержкой усб модемов, втыкал туда и роутер уже передавал по лан кабелю данные в компьютер. Но мне этот способ не нравился, так как карта памяти вставленая в модем была доступна только в веб интерфейсе роутера, а там убогий файловый менеджер. Иногда модем в роутере не подключался, приходилось вытаскивать и втыкать модем.

Решил разобраться с этим неудобством.

Гугление выдало информацию что Hilink тоже можно переключить из режима CD-ROM в модемный.
Для этого нужно посмотреть в lsusb коды производителя и продукта, а также узнать в интернете какие коды производителя и продукта должны быть, когда модем переключен в модемный режим.

Эти коды можно прописать в /etc/usb_modeswitch.conf

DefaultVendor = 0x12d1
DefaultProduct = 0x1f01
TargetVendor= 0x12d1
TargetProduct= 0x14dс


После этого можно станет переключать устройство в режим модема этой командой
sudo usb_modeswitch -c /etc/usb_modeswitch.conf -J

Затем я решил автоматизировать эти действия, чтобы не вводить команду вручную после каждой вставки модема.

Запустил файловый менеджер с правами администратора, создал этот файл
/etc/udev/rules.d/40-huawei-e3372h.rules

В него написал такой текст
DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idProduct}=="1f01", ATTRS{idVendor}=="12d1", RUN+="/usr/sbin/usb_modeswitch  --default-vendor 0x12d1 --default-product 0x1f01 --target-vendor 0x12d1 --target-product 0x14dс -J"


Сохранил.

Теперь модем сам переключается в нужный режим.

В Runtu XFCE 18.04 модем работает и без этих настроек.


======================


Хочу еще расписать что означают части команды
DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idProduct}=="1f01", ATTRS{idVendor}=="12d1", RUN+="/usr/sbin/usb_modeswitch  --default-vendor 0x12d1 --default-product 0x1f01 --target-vendor 0x12d1 --target-product 0x14dс -J"



DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idProduct}=="1f01", ATTRS{idVendor}=="12d1"
Это указавает что устройство подключается по усб, указывает идентификаторы поизводителя и модели устройства

RUN+="...."
Это указывает выполнить команду прописанную в кавычках

Запятая и пробел после нее - это разделители для udev

/usr/sbin/usb_modeswitch  --default-vendor 0x12d1 --default-product 0x1f01 --target-vendor 0x12d1 --target-product 0x14dс -J
Это команда которую нужно выполнить при обнаружении устройства
Запустить usb_modeswitch
Для устройства с идентификаторами default (изначальными) послать команду -J (как я понял это замена --message 123456789..., то есть команды модему для переключения режима, в man usb_modeswitch такие упрощенные ключи есть для многих производителей)
После выполнения команды udev должен получить идентификаторы target (измененные), возможно при неудаче осуществляется повторная попытка, если не указать - то должно посылать один раз. Но это предположение нужно проверять.

===============

Выполнил оптимизацию команды, укоротил для ускорения выполнения и уменьшил необходимую информацию о модеме.

DRIVERS=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1f01", RUN+="/usr/sbin/usb_modeswitch  --default-vendor 0x12d1 --default-product 0x1f01 -J"

Теперь достаточно посмотреть lsusb и если у вас другое устройство - заменить в команде идентификаторы устройства.
И не забыть посмотреть в man usb_modeswitch ключ переключения режимов для вашего устройства (у меня указан -J), либо то же самое сделать длинной командой message.

« Последнее редактирование: Июль 23, 2022, 00:38:49 от Пользователь. »