SE k800i Linux modem

Фен съм на GSM-модемите. Това е идеалната и най-проста backup линия за връзка с домашното (или сървърното) ви PC. Предполага се че това PC е винаги в зоната на покритие на някой от GSM операторите, така че телефона ви винаги ще е online. По-старите телефони с RS-232 комуникация имат един недостатък - батерията им пада с времето и трябва да пачвате буксата за да я вържете в постоянно включено в контакта зарядно. Иначе какъв backup е ако телефона ви остане без ток на третия ден :) Този недостатък го няма в по-съвременните телефони с USB кабели, където батерията постоянно се дозарежда през кабела. (От USB порта може да се извади максимум до 100mA ток, което е повече от колкото може да извади зарядното ви.)
Удивително успях да се свържа с модема на k800 за по-малко от час ръчкане. Ето нужните стъпки:
0) Телефона се свързва с кабел към компютъра. На екранчето излиза меню, което ви пита в какъв режим да работи телефона. Избирате “Phone Mode”. Във “File transfer” режим телефона се рестартира и се mount-ва като флаш драйв, а това не ви трябва в момента.
1) Трябва ви CDC ACM драйвър, който служи като виртуален сериен порт под USB. Драйвърът обикновено върви в комплект с линукс кернела. Когато телефона ви е свързан с кабел към компютъра трябва да виждате устройства /dev/ttyACM*. Ако не виждате такива устройства вероятно нямате ACM драйвър. Може да се разминете без прекомпилиране на кернела, ако го добавите драйвъра като модул:
Device Drivers —> USB support —> USB Modem (CDC ACM) support (за кернел 2.6.25.6)
След това следват:
$ make modules
# make modules_install
при което ще бъде компилиран и инсталиран само този модул.
Можете да го заредите с:
# modprobe cdc_acm
Ако все още не се появяват устройства /dev/ttyACM*, проверете какво се вижда в lsusb. Трябва да виждате нещо като това:
Bus 5 Device 16: ID 0fce:d0a1 Sony Ericsson Mobile Communications AB
2) По подразбиране само root потребителя може да работи с тези устройства. При засичане на модем, драйвъра автоматично си създава ttyACM*, но режима на достъп обикновено е root:root 0600. Едно временно решение е:
# chmod a+rw /dev/ttyACM*
Но след презакачане на телефона udev ще възстанови 0600 режима.
За да направите така че всеки потребител да има достъп по всяко време, добавете следния ред в /etc/udev/rules.d/50-udev.rules:
KERNEL=”ttyACM*”, NAME=”%k”, GROUP=”uucp”, MODE=”666″
3) След като имате виртуалните серийни портове, можете да използвате любимата си програма за серийна комуникация. Обикновено трябва да зададете порт с който да се свърже и настройки. Тук идва интересната част, защото при мен се появяват обикновено няколко виртуални порта (ttyACM0, ttyACM1, ttyACM2) на всяко свързване. Може да експериментирате с всеки от портовете докато откриете къде ви е модема. Слава богу поне не се грижите да следите на какъв default baud rate работи модема, защото той е умен и се синхронизира към скоростта на вашето предаване.
Полезна програмка, която можете да използвате и за dialing е wvdial. Хубавото в нея е че изследва какво имате вързано по портовете и сама се конфигурира.
За финал - написвате си daemon програмка, която следи за състоянието на модема и при дадено събитие изпълнява нещо. Например аз следя за входящо повикване от другия си номер и когато се появи, изпълнява командата `xmms -f` и сменя песните в XMMS-a. Ето на това му викам полезен backup и дистанционно за случаите когато ме мързи да стана от леглото :)
Друго примерно приложение е при получаване на SMS да се изъплнява шелска команда, която се съдържа в него. За целта обаче първо трябва да си разкодирате SMS-а, което е готина задачка. Прочетете повече за PDU формата на съобщенията тук.
Ето ви и едно примерно съобщение, с което можете да си поиграете за домашна работа (цялото съобщение е на един ред без интервали, които го разбиват):
AT+CMGL=4
+CMGL: 1,1,,86
07915389080003F104048111110000902061904403805146F9BBAD034DE
961777ACE0EDB413CFA7B3E9FC96280733B9C66BBC6EFB60F442DE3E93A
10A8999ECFD36F3768FC6EC3D9657A991C025DC3697ADA7D0699DF72D05
B4E2ECB4320
OK

P.S. Документацията с АТ командите може да си дръпнете от девелоперската секция в сайта на Sony Ericsson.

P.S.2. Подозирам че горното писание важи за всеки телефон с USB връзка и модем, не само за k800 :)

Tags: , , ,

3 Responses to “SE k800i Linux modem”

  1. Nanera Says:

    Не прочетох всичко, но пропуснах доставчика към който се свързваш. Кой е? И какви пари е?

  2. ivanatora Says:

    Ами към никой доставчик за сега, защото не ползвам GSM-a за backup net, колкото за дистанционно… за момента ;) Иначе определено ще е 100% по-яко ако си го ползвам и за backup net, ама цените в момента са малко скъпички.

  3. Void and Null » Blog Archive » SE k800i Linux Modem Part 2 Says:

    [...] миналата част си поговорихме как да закачим телефона към компютъра [...]

Leave a Reply