понедельник, 19 января 2015 г.

Борьба с HUAWEI E3531 в Kubuntu 14.04

В данной статье хочу рассказать вам, как я завел USB-модем Huawei E3531 в Kubuntu 14.04, так же известный, как МТС 423S и Мегафон M21-4...





Модем изначально определялся в системе как CD-Rom:
12d1:15e7
Естественно, намученный опытом я начал экспериментировать с usb-modeswitch. Но некоторое время спустя я не нашел данные VID и PID в базе usb-modeswitch.
На форуме usb-modeswitch появился вариант перевода в режим модема, который я и опробовал.
Создаем файл настроек:
sudo kate /etc/usb_modeswitch.d/12d1:15e7
# Huawei E3531
TargetVendor=0x12d1
TargetProduct=0x1506
MessageContent="55534243123456780000000000000011062000000101000100000000000000"
 

Но радоваться было рано, потому что в udev не прописаны правила для этого модема, которые нужно предварительно добавить.
Добавляем правила:
sudo kate /lib/udev/rules.d/40-usb_modeswitch.rules
# Huawei E3531
ATTR{idVendor}=="12d1", ATTR{idProduct}=="15e7", RUN+="usb_modeswitch '%b/%k'"


Перезапускаем правила udev и передергиваем модем:
sudo udevadm control --reload-rules
Для верности вручную переводим модем:
sudo usb_modeswitch -v 12d1 -p 15e7 -c /etc/usb_modeswitch.d/12d1:15e7
После этих манипуляций модем должен переключиться в режим модема и сменит свой VID и PID на:
12d1:1506


И вроде бы все хорошо, модем определился и виден в системе, работает в режиме модема, а не флешки или CD-Rom...
Но вот незадача - подключение создается, но не выполняется. Модем не хочет подключаться через NetworkManager и пишет нам: "Connection Deactivated". Дальнейшие манипуляции с обновлением ядра, usb_modeswitch не принесли результатов. И было принято решение установить родной Connect Manager, который шел в комплекте.
Но и он не устанавливался, а точнее не компилировался драйвер NDIS. Вот дела, думаю я - купил модемчик :-)
Но мы не сдадимся, будем биться до последнего! Что интересно, сам установщик  на диске не является выполняемым, что несомненно удивило, а потому для удобства я перенес установочные файлы в домашний каталог и сделал их исполняемыми. 
Переходим в директорию установщика и устанавливаем:
cd ~/'Connect Manager/Linux'
sudo ./install

Сам Connect Manager установится, но в процессе компиляции драйвера появится ошибка: Install NDIS driver failed. Установщик нас предупреждает об зависимостях build-essentialmake и gcc. С зависимостями все в порядке, случайно нашел решение по компиляции:
Открываем каталог с установщиком драйвера, который был создан при компиляции Connect Manager:
sudo kate /usr/local/Mobile_Partner/driver/ndis_driver/ndis_src/src/hw_cdc_driver.c
Нажимаем F11 и ищем строчку 2718:
dbg ("can't kmalloc dev");
И закомментируем ее, поставив два слэша:
//dbg ("can't kmalloc dev");
Сохраним изменения и переустановим драйвер:
cd /usr/local/Mobile_Partner/driver/
sudo ./install

После этого драйвер установится и вы можете спокойно запускать Connect Manager и подключиться к всемирной паутине.




Также возможно вам пригодятся АТ-команды, которые можно выполнить через minicom:
sudo minicom --device=/dev/ttyUSB0
AT – проверка работоспособности команд 
AT^SYSCFG=13,1,3fffffff,0,0 – режим только 2G
AT^SYSCFG=2,1,3fffffff,0,0 – режим предпочтительно 2G
AT^SYSCFG=14,2,3fffffff,0,1 – режим только 3G
AT^SYSCFG=2,2,3fffffff,0,1 – режим предпочтительно 3G
AT^SYSCFG=2,2,3fffff ff,0,2 – режим включение 2G и 3G
AT^SETPORT="A1,A2;1,16,3,2,A1,A2" - (Установить конфигурацию по умолчанию)
AT^SETPORT="A1,A2;1,2,3,16,A1,A2" -
 (режим для работы модема с Android 4.0 (иногда работает))
AT^SETPORT="A1,A2;1,16,3,2" - 
(девайс в режиме "модем + сетевая карта")
AT^SETPORT="A1,A2;1,3,2,A2" - 
(девайс в режиме "модем + Card Reader")
AT^SETPORT="A1,A2;1,3,2" -
 (девайс в режиме "только модем")

AT^SETPORT="FF;1,2" (девайс в режиме "модем + пользовательский интерфейс")
AT^SETPORT="A1,A2;2,16" - 
(девайс в режиме "сетевая карта")
AT^SETPORT="A1,A2;2,16,A1" - 
(девайс в режиме "сетевая карта + CD-ROM")

Добавлю отдельным комментарием следующие приключения с поделием от МТС.
После установки Коннект Менеджера (КМ) компилируется NDIS-драйвер и создается специальный активатор - HWactiwator, который в свою очередь призван запускать программу КМ при вставке модема в USB-порт и переводить его в режим можема. Так мало того, что сам КМ выглядит убого (просто нет слов, как можно нарисовать такой некрасивый скин, который смотрится нелепо абсолютно на всех ОС?), так еще и HWactivator начинает поглощать тонны оперативки и за час работы он съедает порядка 1 Gb.
В общем, как оказалось мой модем оснащен функцией HiLink - это когда модем работает в режиме сетевой карты со своим шлюзом, т.е. ненужно настраивать, ставить драйверы и программы и т.д. У этого интерфейса есть есть свой WebUI, который можно открыть через адрес 192.168.1.1 и глянуть настройки. Вставляешь модем в порт и он сразу подключается автоматически.
Пришлось разлочить модем, чтобы его прошить универсальной прошивкой и залить WebUI, теперь модем работает превосходно без всяких Коннект Менеджеров и Нетворк Менеджеров.
Еще нужно установить новую версию usb-modeswitch, чтобы она распознала модем, для этого подойдут пакеты из Debian Sid.


Комментариев нет:

Отправить комментарий