Підключення модему techfaith jet в linux

Після того, як накрився старий 3g модем, вирішив придбати собі модем TechFaith Jet, думаю варто поділитися з одним із способів завести його під лінуксом.

З огляду на, що старий модем працював з ходу, то у цього чуда-девайса виявилися деякі особливості. Наприклад як це працює в виндовс під який він і був створений.
  • Спочатку девайс визначається як CDROM де зберігаються драйвера і підключає флеш карту (в модемі є слот під microSD).
  • Потім з CDROM -а автоматом запускається програма автозапуску, яка встановлює сервіс і драйвера.
  • Якщо сервіс встановлений був раніше, то установка не відбувається і сервіс відключає CDROM + flash і підключає знову flash + модем. Запускає фірмову програму для роботи з модемом.
А тепер як це було в Лінуксі. Десятеро у мене трохи старий - Debian GNU / Lenny 5.0.2

По-цьому на відміну від тієї ж Ubuntu CDROM не підключений. ну і фіг з ним) в логах я знайшов все що мені потрібно:

dmesg писал (а): [632.425404] scsi 7: 0: 0: 1: CD-ROM Qualcomm MMC Storage 2.31 PQ: 0 ANSI: 2
[632.485403] sd 7: 0: 0: 0: [sdb] Attached SCSI removable disk
[632.485403] sd 7: 0: 0: 0: Attached scsi generic sg1 type 0
[633.737420] sr0: scsi3-mmc drive: 0x / 0x caddy
[633.737420] sr 7: 0: 0: 1: Attached scsi CD-ROM sr0
[633.737420] sr 7: 0: 0: 1: Attached scsi generic sg2 type 5
[633.968937] sr0: CDROM (ioctl) error, command: Get configuration 46 00 00 00 00 00 00 00 20 00
[633.968948] sr: Sense Key. No Sense [current]
[633.968952] sr: Add. Sense: No additional sense information

Як видно з логу CDROM визначився як пристрій sr0, але підключитися не зміг. З цього я просто з консолі отмонтировать привід:

bash писал (а): # eject / dev / sr0

(В Ubuntu 10.04 можна просто зайти в Nautilus і отмонтировать привід)

Тепер якщо заглянемо в lsusb побачимо, що пристрій переключилася в потрібний нам режим:

lsusb писал (а): Bus 007 Device 001: ID 1d6b: 0001 Linux Foundation 1.1 root
.
Bus 001 Device 005: ID1d09. 4316TechFaith Wireless Technology Limited
.
Bus 001 Device 001: ID 1d6b: 0001 Linux Foundation 1.1 root hub

Але для повної радості потрібно, що б з'явилося в системі пристрій модема. Виходячи з інформації вище модулями ядра, для цього виконавши від рута команду:

bash писал (а): # sudo modprobe usbserial vendor = 0x1D09 product = 0x4316

Заглянемо в логи, що б переконатися, що все розпізналося вірно:

dmesg | grep ttyUSB писал (а): [698.726108] usb 1-2: generic converter now attached to ttyUSB0
[698.743606] usb 1-2: generic converter now attached to ttyUSB1
[698.744490] usb 1-2: generic converter now attached to ttyUSB2

От і відмінно. Далі можна через wvdialconf згенерувати конфиг, підставити логін / паролі і підключитися до інтернету використовую як модем пристрій / dev / ttyUSB0.

Ось мій приклад wvdial.conf

cat /etc/wvdial.conf писал (а): [Dialer Defaults]
Auto Reconnect = false
Baud = 460800
Carrier Check = no
Country = Ukraine
Dial Command = ATM1L3DT
ISDN = false
Idle Seconds = 180
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0 = 0 C1 D2 + FCLASS = 0
Modem = / dev / ttyUSB0
Modem Name = JET_EVDO
Modem Type = USB Modem
Username = ЛОГІН
Password = ПАРОЛЬ
Phone = # НОМЕР
Stupid Mode = true
# Не забуваємо підставити свій логін / пароль, номер дозвону

Для любителів GUI нагадую про фронтенд до wvdial - QtWvDialer

Все це звичайно добре, але кожен раз повторювати процедуру з приводом і довантажувати модуль не цікаво. По-цьому трохи завзятості і гугла допомогло знайти цікавий і простий спосіб змінити спосіб модему без всяких usb_modeswitch. Полягає він в написанні правила для udev. Нагадую, що при первинному підключенні модем розпізнається як привід, а lsusb повертає 05c6 1000 Qualcomm, Inc.

Виходячи з цього треба написати правило для udev. Та легко! Створюємо файл наприклад 99-techfaith-jet.rules в каталозі cat /lib/udev/rules.d/

bash писал (а): zen @ debian:

$ Sudo - s
root @ debian:

# Echo "ACTION ==" add ", ATTRS ==" 05c6 ", ATTRS ==" 1000 ", RUN + =" / usr / local / sbin / techfaith_driver.sh ""> /lib/udev/rules.d/ 99-techfaith-jet.rules

Як видно по рядках вище udev чекатиме пристрої з vendor_id і product_id 05c6: 1000 і при виявленні такого запустить скрипт /usr/local/sbin/techfaith_driver.sh. Далі його код:

bash писал (а): root @ debian:

# Cat /usr/local/sbin/techfaith_driver.sh
#! / Bin / bash
DEV = / dev / disk / by-id
dfile = `ls $ DEV | grep usb-Qualcomm`

for i in $ dfile
do
eject $ DEV / $ i
done

modprobe usbserial vendor = 0x1D09 product = 0x4316
exit 0;
root @ debian:

Не забуваємо зробити скрипт виконуваним:

bash писал (а): root @ debian:

# Chmod + x /usr/local/sbin/techfaith_driver.sh

Ось і все, тепер модем при підключенні буде автоматом відключати CDROM і включати режим модему

бог створив працю і мавпу
щоб вийшов чоловік
а ось пінгвіна він не чіпав
той відразу вийшов добре

Повернутись до початку