http://mitroko.com
:: Играем со своим мобильным телефоном в системе GNU/Linux.

0) Подготовка

Необходимо:

1) Процесс.

Включаем устройство IrDA (в моем случае это MosChip USB IrDA Adapter 7780)

modprobe mcs7780

Включаем поиск ИК-устройств

irattach irda0 -s

Наблюдаем за тем, как устройства обнаруживаются

watch cat /proc/net/irda/discovery

Подносим телефон на расстоянии 20-30 сантиметров (оптимальное растояние для ИК связи)

Every 2,0s: cat /proc/net/irda/discovery                Mon Nov 20 01:58:24 2006
IrLMP: Discovery log:

nickname: SIEMENS CX65, hint: 0xb124, saddr: 0xd56f424a, daddr: 0x00616000

Вот и мобильный телефон обнаружился.
Следите за тем, чтобы сам телефон не отключал в течении некого времени (обычно одна минута) ИК порт для экономии батареи.

Можем поиграть с ним в пинг/понг (попинговать)

irdaping -i irda0

Надоело, нажимаем Ctrl+C и читаем, сколько пакетов ответа получили от устройства.

IrDA ping (0x00000000 on irda0): 32 bytes

     5 packets received by filter

Если хочется более глубже копнуть, можно использовать irdadump

irdadump -i irda0

Жмем Ctrl+C, и видим

Using interface: irda0
23:36:43.779656 xid:cmd d56f424a > ffffffff S=6 s=0 (14)
23:36:43.879613 xid:cmd d56f424a > ffffffff S=6 s=1 (14)
23:36:43.979617 xid:cmd d56f424a > ffffffff S=6 s=2 (14)
23:36:44.061115 xid:rsp d56f424a < 00616000 S=6 s=2

SIEMENS CX65 hint=b124 [ PnP Modem Fax IrCOMM IrOBEX ] (29)
23:36:44.079625 xid:cmd d56f424a > ffffffff S=6 s=3 (14)
23:36:44.179630 xid:cmd d56f424a > ffffffff S=6 s=4 (14)
23:36:44.279639 xid:cmd d56f424a < ffffffff S=6 s=5 (14)
23:36:44.379643 xid:cmd d56f424a > ffffffff S=6 s=* Arnie hint=0400 [ Computer ] (21)

8 packets received by filter

Для тех, кто не гуру

ау, есть кто живой, спрашиваю раз?
ау, есть кто живой, спрашиваю два?
ау, есть кто живой, спрашиваю три?
на третий отвечаю - Я тут, Siemens CX65
ау, есть кто живой, спрашиваю четыре?
ау, есть кто живой, спрашиваю пять?
ау, есть кто живой, спрашиваю шесть?
ау, есть кто живой, опрос окончен, все вопросы к компьютеру

Готовим файл устройства ИК связи, если не существует

mknod /dev/ircomm0 c 161 0

Разрешаем работу с ним

chmod 755 /dev/ircomm0

Готовим точку монтирования, если не существует

mkdir /mnt/mobile
mkdir /mnt/mobile/Siemens

Монтируем файловую систему

mount -t siefs -o ro,umask=000 /dev/ircomm0 /mnt/mobile/Siemens/

параметр ro - только для чтения (во избежание повреждений файловой системы, пока будем ее изучать, если Вы готовы к ее редактированию ее содержимого - включайте опцию rw).
параметр umask накладывает маску прав доступа в восьмеричном формате.
Ее вычитают из 777 (7 = 4[Read] + 2[Write] + 1[eXecute])

Так что, если наложить маску 022, то пользователь root сможет выполнять все операции с файлом, в то время, как пользователи только читать и выполнять (777 - 022 = 755 / 5 = 4[Read] + 1[eXecute]).
Если наложить маску 133, то все пользователи, в том числе и root, потеряют право на выполнение файла, 777 - 133 = 644 / root(6 = 4[Read] + 2[Write]) / пользователи(4 = 4[Read] + 0[Only])

В данном случае, пользователю будет разрешено даже записывать, но надо помнить, что опция ro запрещает ВСЕМ, в том числе и системе запись на монтируемое устройство.
Это для удобства, когда опция ro будет заменена на rw.

Перемещаемся в каталог файловой системы мобильного телефона и читаем его

cd /mnt/mobile/Siemens
ls -1a

Получаем

Data

Еще

cd Data/
ls -1a

Получаем

Animations
Config
Java
Misc
Pictures
Skins
Sms archive
Sounds
System
Text module
Themes
Videos
Voice memo

На самом деле, у кого как, это лишь показательный пример.

Заметим, что после такого монтирования, сессия будет постоянно занимать устройство "чтением".
Завершаем пример, не будем забивать канал ИК

cd /mnt umount -f /mnt/mobile/Siemens/

Теперь поиграем с ftp, о котором нам так ясно сказал телефон

obexftp -i -H -l /Data/

получаем

Connecting...done
Receiving "/Data/"... Sending ""... Sending "Data"... done
|<?xml version="1.0"?>
<!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd">
<folder-listing version="1.0">
   <folder name="Misc" modified="20040101T030000" user-perm="RWD" group-perm="W" />
   <folder name="Animations" modified="20040101T030000" user-perm="RWD" group-perm="W" />
   <folder name="Pictures" modified="20040101T030000" user-perm="RWD" group-perm="W" />
   <folder name="Sounds" modified="20040101T030000" user-perm="RWD" group-perm="W" />
   <folder name="Themes" modified="20040101T030000" user-perm="RWD" group-perm="W" />
   <folder name="System" modified="20040101T030000" user-perm="WD" group-perm="W" />
   <folder name="Java" modified="20040101T030000" user-perm="RWD" group-perm="W" />
   <folder name="Videos" modified="20040401T040000" user-perm="RWD" group-perm="W" />
   <folder name="Skins" modified="20050315T025322" user-perm="RWD" group-perm="W" />
   <folder name="Sms archive" modified="20050315T111112" user-perm="RWD" group-perm="W" />
   <folder name="Text module" modified="20050315T112004" user-perm="RWD" group-perm="W" />
   <folder name="Voice memo" modified="20050703T170708" user-perm="RWD" group-perm="W" />
   <folder name="Config" modified="20051231T160300" user-perm="RWD" group-perm="W" />
</folder-listing>
done
Disconnecting...done

Это обычный XML, кто знает, может еще и скрипт распарсинга написать.







This site is better to surf with Mozilla Firefox.

Mozilla Firefox Project