Купил себе 3G-модем Beeline, который оказался производства Alcatel а модель X602D. При подключении к ноутбуку с дистрибутивом основанным на Ubuntu 14.04 1) работать «из коробки» отказался. Далее опишу как я его всё-таки запустил…
При подключении модема в USB-порт система сообщает в логах следующую информацию:
kernel: usb 1-1.3: new high-speed USB device number 10 using ehci-pci kernel: usb 1-1.3: New USB device found, idVendor=1bbb, idProduct=022c kernel: usb 1-1.3: New USB device strings: Mfr=2, Product=1, SerialNumber=0 kernel: usb 1-1.3: Product: HSPA+ USB Modem kernel: usb 1-1.3: Manufacturer: Spreadtrum kernel: usb-storage 1-1.3:1.0: USB Mass Storage device detected kernel: scsi6 : usb-storage 1-1.3:1.0 kernel: usbcore: registered new interface driver usb-storage kernel: scsi 6:0:0:0: CD-ROM USBModem Mass Storage 2.31 PQ: 0 ANSI: 2 kernel: sr0: scsi-1 drive kernel: cdrom: Uniform CD-ROM driver Revision: 3.20 kernel: sr 6:0:0:0: Attached scsi CD-ROM sr0 kernel: sr 6:0:0:0: Attached scsi generic sg2 type 5
Видно, что устройство распозналось как CD-ROM с драйверами для Windows. Вывод команды lsusb:
# lsusb Bus 001 Device 002: ID 1bbb:022c T & A Mobile Phones
В дистрибутиве установлена программа usb_modeswitch
, которая работает с такими комбо-устройствами, но в ней есть баг, из-за которого не происходит переключение модема из режима CD-ROM. Поэтому будем делать то же самое, но скриптом:
#!/bin/bash # # for i in /sys/bus/usb/devices/*; do if [[ `grep -s 1bbb ${i}/idVendor` ]] && [[ `grep -s 022c ${i}/idProduct` ]]; then DEVICE=$i break fi done if [[ -z ${DEVICE} ]]; then echo "Device not found" exit 1 fi if [[ `cat ${i}/bNumConfigurations` == 2 ]]; then if [[ `cat ${i}/bConfigurationValue` == 1 ]]; then sudo sh -c "echo 2 > ${i}/bConfigurationValue" sudo modprobe option sudo sh -c "echo 1bbb 022c ff > /sys/bus/usb-serial/drivers/option1/new_id" fi fi
Не забыть сделать скрипт исполняемым: 2)
sudo chmod +x /usr/local/bin/alcatel-x602d
После запуска скрипта устройство переключится в режим модема и в системе появится четыре последовательных порта:
kernel: option 3-1:2.0: GSM modem (1-port) converter detected kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB0 kernel: option 3-1:2.1: GSM modem (1-port) converter detected kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1 kernel: option 3-1:2.2: GSM modem (1-port) converter detected kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB2 kernel: option 3-1:2.3: GSM modem (1-port) converter detected kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB3
Обнаружив эти устройства NetworkManager
автоматически определит одно из них как модем и отобразит его в графическом интерфейсе. Обнаружение занимает около 30 секунд, так что надо немного подождать.
Чтобы каждый раз не запускать этот скрипт руками, добавим его в подсистему работы с оборудованием:
# Alcatel x602d 3G modem # ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="022c", RUN+="/usr/local/bin/alcatel-x602d"
Далее нужно создать подключение к 3G-сети через графический интерфейс NetworkManager
или создать файл конфигурации вручную:
[connection] id=Beeline 3G modem uuid=196d92cf-46ba-4fb9-81a1-43de92e973f2 type=gsm timestamp=1420835434 [ppp] lcp-echo-failure=5 lcp-echo-interval=30 [ipv4] method=auto [serial] baud=115200 [gsm] number=*99# username=beeline password=beeline apn=home.beeline.ru
Спасибо Vitold S за помощь в решении проблемы!