USB-модем Huawei - не загружается нужный драйвер (модуль)

У меня есть USB-модем Huawei E303F. Я установил Ubuntu Studio 16.04.1 LTS "Xenial Xerus". Модем обнаружен администратором сети.

Я могу настроить мобильное широкополосное соединение в Network Manager. Но это не подключение к Интернету. Символ подключения отображается в течение длительного времени, а затем останавливается.

Но он может подключиться, только после подключения к Интернету в Windows, а затем загрузки в Ubuntu путем перезапуска. Если я выключаю систему и затем загружаюсь в Ubuntu (или) Отключите устройство и подключите его снова, это не будет работать. Несмотря на то, что я могу обнаружить его с помощью usb_modeswitch в любое время, соединение не установлено.

Затем снова я должен загрузиться в Windows и перезапустить в Ubuntu.

После подключения к Интернету в Windows и перезапуска в Ubuntu:

usb-devices: Информация о модеме при подключении

Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=1506 Rev=01.02
S:  Manufacturer=HUAWEI
S:  Product=HUAWEI Mobile
C:  #Ifs= 7 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=03 Prot=01 Driver=option
I:  If#= 1 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
I:  If#= 2 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=03 Prot=03 Driver=option
I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=03 Prot=02 Driver=option
I:  If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
I:  If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

usb-devices: Информация о модеме при отсутствии подключения

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 11 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=1506 Rev=01.02
S:  Manufacturer=HUAWEI
S:  Product=HUAWEI Mobile
C:  #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=03 Prot=01 Driver=option
I:  If#= 1 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=03 Prot=16 Driver=option
I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=03 Prot=03 Driver=option
I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=03 Prot=02 Driver=option
I:  If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
I:  If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

2 ответа

Решение

Мой модем работает в Ubuntu Studio 16.04

В Ubuntu Studio 12.10 я установил драйвер huawei, и он работал без каких-либо дополнительных настроек. В Ubuntu Studio 15.10 он работал сразу после того, как я подключил его. Я ничего не делал, чтобы заставить его работать. В Ubuntu Studio 16.04 я сделал простые шаги: usb_modeswitch а также modprobe чтобы это сработало. По этому поводу на форумах есть ряд статей и вопросов. Но все же я хочу упомянуть, как я это сделал и очень подробно. Он состоит из трех простых шагов:

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

Шаг 1: Определение того, обнаружено ли ваше устройство

Определите, обнаружен ли ваш USB с помощью lsusb а также usb-devices команды,

Если результат показывает ваш модем в списке, посмотрите, сколько интерфейсов (If#) это имеет в usb-devices команда, указанная по одной строке для каждого интерфейса, начиная с I:,

Если он имеет только одну строку интерфейса (IF#), которая имеет спецификацию класса 'Cls=08(stor.)', То она находится в режиме USB-флэш-накопителя. Вы должны переключить его в режим модема, используя следующий шаг.

Если его нет в списке, значит, ваш модем неисправен или имеет некоторые проблемы.

Шаг 2: usb_modeswitch для переключения в режим модема

1) подэтап:

Первое обновление usb-modeswitch а также usb_modeswitch-data:

Если вам удастся каким-то образом подключиться к Интернету, для обновления вы можете использовать следующие команды в терминале: sudo apt-get install usb-modewitch usb-modewitch-data

или же

Загрузите с помощью 'Synaptic Package Manager' и установите в автономном режиме:

Вы можете использовать любой другой компьютер с Ubuntu и подключением к Интернету. Откройте менеджер синаптических пакетов и введите usb-modewitch в поле поиска и в результате отметьте оба пакета. И пока вы это делаете, он спросит, нужно ли отмечать связанные пакеты зависимостей. нажмите "Отметить". Затем перейдите в файл и нажмите "Создать сценарий загрузки пакета", выберите каталог, в который вы хотите сохранить сценарий, и дайте сценарию имя, например "deblist", и сохраните. Затем перейдите в каталог скрипта. откройте терминал и введите

bash ./deblist

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

sudo dpkg -i package1.deb package2.deb package3.deb 

Где package1.deb, package2.deb, package3.deb и т. Д., Должны быть заменены именами загруженных пакетов. Это должно установить пакеты. Приведенные выше шаги являются общими для любого программного обеспечения.

2) подэтап:

Затем создайте файл с именем 12d1:1446 в каталоге /etc/usb_modeswitch.d/ как суперпользователь с touch команда.

sudo touch /etc/usb_modeswitch.d/12d1:1446

"12d1" - это идентификатор поставщика Huawei, а "1446" - это "некоммутируемый идентификатор продукта" для моего устройства, и это можно получить из приведенного выше. lsusb или же usb-devices Команды для вашего устройства.

3) подэтап:

Затем для переключения в режим модема откройте терминал и введите

sudo usb_modeswitch -v 0x12d1 -p 0x1446 -J

Команда usb_modeswitch должна включать метод переключения / сообщение. Здесь метод переключения определяется как -J и это стандартный метод переключения Huawei. Это зависит от разных производителей устройств. Тип man usb_modeswitch в терминале для получения дополнительной информации.

Сейчас типа usb-devices в терминале, и теперь вы должны увидеть новый "идентификатор продукта" и множество интерфейсов (если #) для вашего устройства в списке. Большинство интерфейсов (если #) должны использовать "option" в качестве драйвера. Некоторые из этих интерфейсов используются для подключения к Интернету, и в большинстве случаев для подключения используется другой драйвер, например "huawei_cdc_ncm".

Теперь попробуйте подключиться к Интернету, настроив "Мобильное широкополосное соединение" с помощью "Диспетчера сети" Ubuntu. Если он подключен, то ваша работа выполнена. но если это не так, то вы можете перейти к следующему шагу.

Шаг 3: Загрузка драйвера

Вы можете увидеть, какой драйвер использует ваш модем с переключением модема. usb-devices команда.

1) подэтап:

Если он показывает 'option' в качестве драйвера для всех интерфейсов (если #), кроме тех, которые используются в качестве usb-хранилища, перейдите к подэтапу 2, указанному ниже (или) Если is показывает 'huawei_cdc_ncm', перейдите в /lib/modules/(uname -r)/kernel/drivers/net/usb/, набрав

sudo thunar /lib/modules/(uname -r)/kernel/drivers/net/usb/

или же

sudo nautilis /lib/modules/(uname -r)/kernel/drivers/net/usb/

и переместите 'huawei_cdc_ncm' методом 'вырезать и вставить' в любой другой каталог, в качестве резервной копии.

Теперь удалите устройство, подключите его снова и введите команду usb_modeswitch. в usb-devices В результате команды вы должны увидеть 'none' в качестве драйвера для интерфейса (IF#), который используется в качестве модема.

2) подэтап:

Теперь удалите устройство снова и введите команду,

sudo rmmod option

удалить опциональный драйвер из ядра

Теперь подключите устройство и введите команду usb_modeswitch. И все же вы должны видеть "none" в качестве драйвера для модема и "option" в качестве драйвера для других интерфейсов (если #) в usb-devices командный результат.

Теперь откройте файл /sys/bus/usb-serial/drivers/option1/new_id, используя nano:

sudo nano /sys/bus/usb-serial/drivers/option1/new_id

тип 12d1 1506 и сохраните его, используя ctrl+o, и выйдите, используя ctrl+x. Здесь 1506 - это "идентификатор продукта в режиме переключения". Теперь, если вы печатаете usb-devices, вы должны увидеть 'option' в качестве загруженного драйвера для модема.

3) подэтап:

Теперь используйте modprobe usbserial команда, чтобы заставить устройство работать с загруженным драйвером 'option'.

sudo modprobe usbserial vendor=12d1 product=1506

Теперь попробуйте подключить модем к Интернету. В основном это должно быть связано, но если это не так, то отключите и попробуйте повторить шаг 3 снова. Тем не менее, если он не подключается, иногда процесс автоматизации этих команд может подключить модем к Интернету.

Шаг 4: Автоматизация

Чтобы автоматизировать этот процесс, после завершения подэтапа 2шага 1 скопируйте следующие строки

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1446", RUN+="/usr/sbin/usb_modeswitch -v 12d1 -p 1446 -J"

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1446", RUN+="/bin/bash -c 'modprobe option && echo 12d1 1506 > /sys/bus/usb-serial/drivers/option1/new_id'"

в /lib/udev/rules.d/40-usb_modeswitch.rules с помощью команды

sudo mousepad /lib/udev/rules.d/40-usb_modeswitch.rules

или же

sudo gedit /lib/udev/rules.d/40-usb_modeswitch.rules

Не забудьте поменять "идентификатор продукта" в вышеприведенных строках на "не переключенный идентификатор продукта" после копирования. Теперь, если вы отключите устройство и подключите его снова, оно должно быть подключено к Интернету.

Даже если это работает. Иногда он подключается только после того, как я отключаю и снова подключаю его после загрузки системы. Я думаю, что загрузка драйвера 'option' занимает некоторое время.

Я обнаружил, что, хотя в Ubuntu есть драйвер cdc_mbim, он не может генерировать два интерфейса (If# в usb-devices команда) из той, что используется для подключения в Ubuntu. Но, похоже, Windows может. Так что при перезапуске интерфейсная информация все еще находится в модеме, я думаю, но при выключении и включении это не так.

Поэтому при загрузке в Ubuntu он обнаруживает эти интерфейсы и выбирает правильный драйвер (cdc_mbim). Но не обязательно два интерфейса необходимы для подключения. Достаточно даже одного интерфейса с правильным драйвером. Это означает, что нет необходимости загружаться в Windows, если нужный модуль / драйвер загружен правильно(option модуль).

Другие вопросы по тегам