Инструменты пользователя

Инструменты сайта


blog:2015:0127_alcatel_x602d

Модем Beeline

Купил себе 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. Поэтому будем делать то же самое, но скриптом:

/usr/local/bin/alcatel-x602d
#!/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 секунд, так что надо немного подождать.

Чтобы каждый раз не запускать этот скрипт руками, добавим его в подсистему работы с оборудованием:

/etc/udev/rules.d/alcatel-x602d.rules
# Alcatel x602d 3G modem
#
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="022c", RUN+="/usr/local/bin/alcatel-x602d"

Далее нужно создать подключение к 3G-сети через графический интерфейс NetworkManager или создать файл конфигурации вручную:

"/etc/NetworkManager/system-connections/Beeline 3G modem"
[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 за помощь в решении проблемы!

2)
спасибо Илье за подсказку
blog/2015/0127_alcatel_x602d.txt · Последнее изменение: 2022-02-19 18:16 — 127.0.0.1