Модемы JET TechFaith EVDO 3G и BLESS UC165 в Linux
Раздел : Система. Администрирование
Опубликовано SwitNJ [16/03/2011]
Эта девайсина известна также как Flying_Fish:
http://www.techfaithwireless.com/english/products/products_WirelessCard_CDMA1X_4.htm

Итак... тестировалось это все на opensuse 11.3, и хотя щас уже вышла 11.4, думаю все должно работать аналогично

1) Вставляем девайс в USB. Далее все действия от рута

linux:/home/user # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 023: ID 05c6:1000 Qualcomm, Inc.
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

У нас есть два способа переключить девайс в режим модема из режима эмуляции компакт-привода
(так называемый ZeroCd)

2.a) USB_MODESWITCH:

устанавливаем usb_modeswitch и usb_modeswitch-data
Взять их можно тут: (все ссылки - ссылки на репозитарии)
http://download.opensuse.org/repositories/hardware/openSUSE_11.3/

создаем файлик /etc/usb_modeswitch.d/05c6:1000:uMa=Qualcomm

в нем вписываем

DefaultVendor= 0x05c6
DefaultProduct= 0x1000

TargetVendor= 0x1d09
TargetProduct= 0x4316

#For BLESS UC165
#TargetProduct= 0x4306

MessageEndpoint= 0x00000008

MessageContent= "5553424328932a86000000000000061b00000002000000000 0000000000000"


затем пробуем перевоткнуть девайс в ЮСБ порт


b) создаем файлик /lib/udev/rules.d/99-techfaith-jet.rules

в нем пишем

ACTION=="add", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="1000", RUN+="/usr/local/sbin/techfaith_driver.sh"

then make a file /usr/local/sbin/techfaith_driver.sh

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

# для модема BLESS UC165 закоментить строку выше и раскоментить эту
#modprobe usbserial vendor=0x1D09 product=0x4306
exit 0;


сохраняем и делаем его исполняемым:
chmod +x /usr/local/sbin/techfaith_driver.sh

перевставляем девайс в юсб порт
Этот способ у меня покатил на опенсусе 11.1

PS: После второго шага возможно прийдется перегрузить комп.
Увы, как линукс не крут в плане работы на живца, но иногда нужно перегружать

Перегрузили?
смотрим вывод команды lsusb :

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 024: ID 1d09:4316 TechFaith Wireless Technology Limited <------- Вот он! Все OK!
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

3) Добавляем в файлик /etc/modprobe.conf
или в /etc/modprobe.d/99-local.conf (смотря какая версия дистрибутива)

#
# JET EVDO 3G Modem
#

options usbserial vendor=0x1D09 product=0x4316

и сохраняем

4) Дальше нужно расшевелить систему, "продуть порты модема", так сказать )

rmmod usbserial
modprobe usbserial

PS: если кроме этого девайса у вас есть еще что-то, например эмуляторы юсб-ком портов
и тому подобное - отключите их и перезагрузите компьютер, иначе не получится выгрузить модули ядра!

ls -l /dev/ttyUSB*

crw-rw---- 1 root dialout 188, 0 Янв 27 09:48 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 Янв 27 09:48 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2 Янв 27 09:48 /dev/ttyUSB2

Все, модем определился!

Итак.. использовать модем для доступа в интернет - проблем нет! - на этот счет в интернете масса статей и способов.
Но я использую этот модем на работе для получения смс-ок. И тут у меня проблемка появилась.
Дело в том, что этот модем не поддерживает ни одна софтина по типу Gnokii, wader, umtsmon..
"Беда!..." (с) Быков, "Интерны"
Ну что делать? пришлось втыкать устройство под виндой и методом реверс-инжиниринга и перехвата портов смотреть
какие команды шлет его родная виндовая утилита - телефонный менеджер, который вшит на "свисток".

Вот что удалось получить:

AT
OK

ATE0V1
OK


AT+IMSI?

+IMSI:255211092480440
OK

*************
MIN 1092480440
*************

AT+MDN?

+MDN: ""
OK


AT+ESN

ERROR


AT+MEID

+MEID: 0

OK


AT+GMR

+GMR: Q6085BR00.00.82 1 [Nov 12 2009 18:34:04]
OK

*************
Software Version
************


at+GMI
PeopleNet

OK

***************
Modem Identifier
(or provider name, who locked modem)
***************


at+GMM
Jet

OK
***************
Modem Model
***************

AT+EMODE=11

+EMODE: 11,2126
OK
**********
PRL Version = 2126
**********


AT+RTRE?
+RTRE: 2,0

**********
Query the current RTRE value
+RTRE:,
OK
:
0 RUIM_ONLY
1 NV_ONLY
2 RUIM OR DROP
:
0 RUIM version
1 No RUIM version
******************

AT+RLOCK?
+RLOCK: NOLOCK, RUIM is unlocked.

**********
UIM State +RLOCK?
**********


AT+RLOCK=0
+RLOCK: 0,PASS,0x9000,CHV1(D),INIT(I,I,I,I),CNT(3,A,3,A)

**********
Read UIM Particular Status +RLOCK
+RLOCK:
0,PASS,0x9000,CHV1(D),INI
(3,A,3,A)
OK
Note: 1.PIN disable **CHV1(D)**
2.UIM card is inserted
**********


AT+SPMS=UIM
OK

*********
Preferred Message Storage +SPMS
AT+SPMS=UIM
Notes: Select ”UIM” message storage
Must insert UIM card
OK
Note : message storage in UIM
*********


AT+SPMS?
+SPMS: "UIM" (Max:30, Hold:1)

OK

*********
Preferred Message Storage +SPMS
Note : return the storag
selected, and the total
already hold number
*********


AT+SPMS=Flash
OK

++SPMS: "FLASH" (Max:255, Hold:0)

AT+CMGL
+CMGL:



OK
AT+SPMS?
+SPMS: "FLASH" (Max:255, Hold:0)

OK


AT+SPMS=UIM
OK

# Return to RUIM card for reading sms


AT+CMGL
+CMGL: 0
OK

********
List ID with Message +CMGL
+CMGL: 0,1
OK
Note : there are messages in the index
0 and 1
********


AT+CMGR=0,1
+CMGR: 0, 01A0,920,,2011/01/19 09:26:05,4098,000101,0,3D3D494E5445524E45543D3D204C6F67696E3A38303932323837353439354070656F706C652E6E65742E75612050617373776F72643A353734323239

OK

AT+CMGR=1,1
+CMGR: 1, 01A0,920,,2011/01/20 15:26:02,4098,000101,0,3D3D494E5445524E45543D3D204C6F67696E3A38303932323837353439354070656F706C652E6E65742E75612050617373776F72643A373031333731

OK
**********
Read Message

**********

AT+CVM
+CVM:

OK

***************
Not documented
***************

AT+PB?
+PB: 500,0,500,1

OK

****************
PhoneBook from UIM (really)
not documented
****************

AT+RUIMPB?
ERROR

****************
PhoneBook (from FLASH, I think)
not documented, and do not work on JET Techfaith
****************


AT+CSQ?
+CSQ: 26, 82

OK

***************
Signal Quality +CSQ
This command is used to ascertain the received Signal Quality Measure
() and the Frame Error Rate ().
+CSQ: ,
OK

99 - no Signal
***************

AT+HDRCSQ?
+HDRCSQ: 31, 74

OK

***************
Signal Indicator Query Function Command in the HDR Mode
This command is used to ascertain the received Signal Quality Measure
() and the Frame Error Rate ().
+CSQ: ,
OK
***************


at+CREG=8199
OK

***********
Signal State Report +CREG
This command is used
report of current state

Command syntax : AT+CREG=
Response syntax : +CREG :


0: Disable network registration(auto signal quality& CDMA state report) unsolicited result
code
1: Enable auto signal quality report code result code (it will return the response of
AT+CSQ)
2: Enable CDMA state report code result code (it will return the response of AT+CAD)
3 Enable network registration(auto signal quality&CDMA state report) unsolicited result
code
8199 --- undocumented, but always making by modem manager
***********

AT+MODEPREF?
+MODEPREF: 4

OK
**************
What network mode is turned
**************

AT+MODEPREF=10

++SYSMODE: 2

OK

*************
Set ONLY EVDO Mode of network
*************


AT+MODEPREF=9

++SYSMODE: 2

OK
*************
Set 1x Mode of network
*************


AT+MODEPREF=4

++SYSMODE: 4

OK
*************
Set HYBRID Mode of network
*************

AT+CMGOPT?
+CMGOPT: 0, 1, 0, 0, 4

OK
***************
Display SMS options
Undocumented
***************


AT+CMGOPT=0,1,0,0,4;+CMGS=255,920,,010103,007400650078007400200054004500580054002004420435043A04410442002004220415041A04210422
OK
*************
Send SMS

Was sended in unicode:
text TEXT текст ТЕКСТ
*************

AT+CMGTAG=1,1
OK

************
tag sms as read?
do not work
************

AT+CMGD=0

OK

***********
Detele SMS at index 0


Syntax :
Command syntax : AT+CMGD= [,]
Command Possible responses
+CMTI:.SM.,3
Note : New message received
AT+CMGD=3
Note : Delete it
OK
Note : Message deleted
AT+CMGD=52
Note : Delete it
+CMS ERROR: 321
Note : the index is wrong.
AT+CMGD=1,0 OK
Note : The message from the preferred
message storage at the location 1 is
deleted
AT+CMGD=1,1 OK
Note : All READ messages from the
preferred message storage are deleted
AT+CMGD=1,2 OK
Note : All READ messages and SENT
mobile originated messages are deleted
AT+CMGD=1,3 OK
Note : All READ, SENT and UNSENT
messages are deleted
AT+CMGD=1,4 OK
Note : All messages are deleted
***********


AT+PB=5
+PB: 5,1
OK


AT+WPCS=TEXT;+PB=2,1,0636165126,"Swit"
OK
*************
Write to UIM PhoneBook in text mode
phone num: 0636165126
name: Swit
*************


AT+PB=5
+PB: 5,2
OK


AT+WPCS=HEX;+PB=2,2,0667152055,"0412043504420430043B044C"
OK

*************
Write to UIM PhoneBook in HEX mode (for unicode text)
phone num: 0667152055
name: Веталь
*************


AT+WPCS=TEXT;+PB=2,1,0030667152055,"Swit!"
OK

Edit UIM PB is the same as write to it


AT+PB=5
+PB: 5,2
OK

************
Get UIM PhoneBook Status, %1 - ??, %2 - Next Free cell
************

AT+PB?
+PB: 500,1,499,2

OK

*****************
500 - max cells

*****************


++CMT: 2,920,,2011/01/20 15:42:58,0001010A,3D3D494E5445524E45543D3D204C6F67696E3A38303932323837353439354070656F706C652E6E65742E75612050617373776F72643A363937303730

***********
ANSWER FROM MODEM - SMS ARRIVED!!! detected on port /dev/ttyUSB2
***********

AT+CMGTAG=2,1

***********
tag sms was readed??
***********



Работа с адресной книгой

AT+PB=5
+PB: 5,2
OK

AT+PB=2,1,920,"passw"
OK

at+pb?
+PB: 500,1,499,2
OK

AT+PB=5
+PB: 5,2
OK

AT+PB=2,2,921,"ppp"
OK

AT+PB=5
+PB: 5,3
OK

AT+PB?
+PB: 500,2,498,3
OK



AT+PB=8

+PB: 8,1,920,passw
+PB: 8,2,921,ppp

OK


**********
AT+PB=8
Display PhoneBook Content
**********

Ну и ко всему прочему я накрапал маленькую програмку на питоне
Она консольная, может читать смс-ки и удалять их.
Прога автоматически находит устройство и порт на котором оно сидит.
Если кто-то может адаптировать сей девайс к известным телефонным менеджерам
под линукс (список выше) - буду рад потестировать или предоставлю девайс в
пользование по интернету (удаленным доступом).

Огромное спасибо SwitNJ за статью.