Conectarea unui telefon mobil prin IR
From linux360
Introducere
Acest tutorial prezintă modul de configurare a distribuţiei Slackware Linux 12.0 pentru a permite conectarea la un telefon mobil folosind un adaptor IrDA/USB.
Adaptorul IrDA/USB este de tipul KingSun-959:
Bus 003 Device 002: ID 07d0:4959 Dazzle Kingsun KS-959 Infrared Adapter
- cat /var/log/dmesg | grep 959
KingSun KS-959 IRDA/USB found at address 3, Vendor: 7d0, Product: 4959 drivers/net/irda/ks959-sir.c: IrDA: Registered KingSun KS-959 device irda0 usbcore: registered new interface driver ks959-sir
Singurul telefon mobil pe care am testat aceste informaţii este Nokia 5200, deci este posibil ca pentru alte tipuri de telefoane mobile să existe diferenţe în ceea ce priveşte setările descrise în acest tutorial.
Informaţiile au fost testate pe un notebook Fujitsu Amilo Pro v3515 (Slackware-current, kernel 2.6.24.5-smp). Distribuţia a fost instalată cu opţiunea "full". De asemenea, am configurat HAL (Hardware Abstraction Layer) conform CHANGES_AND_HINTS.TXT.
Pentru conectivitatea prin infraroșu, am instalat pachetul irda-utils de aici, folosind sursele pachetului de aici, astfel:
$ cd /home/<user>/Desktop
$ wget -r ftp://ftp.slackbuilds.org/12.0/network/irda-utils
$ wget http://downloads.sourceforge.net/irda/irda-utils-0.9.18.tar.gz?modtime=1152584674&big_mirror=0
$ mv /home/<user>/Desktop/ftp.slackbuilds.org/12.0/network/irda-utils/*.* /home/<user>/Desktop
$ su
- chmod +x irda-utils.SlackBuild
- ./irda-utils.SlackBuild
- cd /tmp
- installpkg irda-utils-0.9.18-i486-1_SBo.tgz
Configurare
- Încărcarea modulelor de kernel necesare (modificarea fișierului de configurare /etc/rc.d/rc.molules-<kernel-version>-smp):
- IrDA/USB modules
/sbin/modprobe irda-usb /sbin/modprobe ks959-sir /sbin/modprobe irtty-sir /sbin/modprobe ircomm /sbin/modprobe ircomm_tty
- Verificarea încărcării modulelor:
- lsmod
Module Size Used by ircomm_tty 23944 0 ircomm 14340 1 ircomm_tty irtty_sir 8960 0 sir_dev 14596 1 irtty_sir irda_usb 16772 0 ks959_sir 11648 0 irda 114360 5 ircomm_tty,ircomm,sir_dev,irda_usb,ks959_sir crc_ccitt 5760 1 irda
- Activarea serviciului IrdA:
- cd /etc/rc.d
- chmod 0755 rc.irda
- ./rc.irda start
Starting IrDA: /usr/sbin/irattach
- Activarea interfeței irda0:
- irattach irda0 -s 1
- ifconfig
irda0 Link encap:IrLAP HWaddr bf:21:c7:c1
UP RUNNING NOARP MTU:2048 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:21 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:8 RX bytes:0 (0.0 B) TX bytes:339 (339.0 B)
- Modificarea fișierului /etc/rc.d/rc.local:
- IrDA/USB - SIR mode connections at startup
if [ -x /etc/rc.d/rc.irda ]; then /etc/rc.d/rc.irda start fi
/usr/sbin/irattach irda0 -s 1
- Verificarea funcţionării conectivităţii IR:
Comanda cat /proc/net/irda/discovery:
- cat /proc/net/irda/discovery
IrLMP: Discovery log:
nickname: Nokia 5200, hint: 0xb125, saddr: 0xbf21c7c1, daddr: 0x0000b3b5
Comanda cat /proc/net/irda/irlap:
- cat /proc/net/irda/irlap
irlap0 state: LAP_NDM
device name: irda0, hardware name: usb#2 caddr: 0x3e, saddr: 0xd5f0ad13, daddr: 0x002c21 win size: 1, win: 1, line capacity: 2360, bytes left: 2360 tx queue len: 0 win queue len: 0 rbusy: FALSE mbusy: FALSE retrans: 0 vs: 3 vr: 1 va: 2 qos bps maxtt dsize winsize addbofs mintt ldisc comp tx 9600 0 64 1 12 0 0 rx 9600 0 64 1 12 0 0
Comanda irdadump:
- irdadump
(...) 07:39:50.648254 xid:rsp bf21c7c1 < 0000b3b5 S=6 s=5 Nokia 5200 hint=b125 [ PnP Modem Fax Telephony IrCOMM IrOBEX ] (27) (...) 91 packets received by filter
Comanda irdaping <daddr>:
- irdaping 0x0000b3b5
IrDA ping (0x0000b3b5 on irda0): 32 bytes 32 bytes from 0x0000b3b5: irda_seq=1 time=110.18 ms. 32 bytes from 0x0000b3b5: irda_seq=2 time=111.15 ms. 32 bytes from 0x0000b3b5: irda_seq=4 time=111.10 ms. 32 bytes from 0x0000b3b5: irda_seq=5 time=105.08 ms.
8 packets received by filter
Comanda obex_test:
- obex_test
Using IrDA transport OBEX Interactive test client/server. > c Connect OK! Version: 0x10. Flags: 0x00
- Utilizarea obexftp:
$ obexftp -i -l
Connecting...done
Receiving "(null)"...\<?xml version="1.0"?>
<!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"
[ <!ATTLIST folder mem-type CDATA #IMPLIED> ]>
<folder-listing version="1.0">
<folder name="Extra" user-perm="RW" mem-type="MMC"/> <folder name="Graphics" created="20060101T000000" user-perm="R" mem-type="DEV"/> <folder name="Music files" created="20060101T000000" user-perm="R" mem-type="DEV"/> <folder name="Themes" created="20060101T000000" user-perm="RW" mem-type="DEV"/> <folder name="Tones" created="20060101T000000" user-perm="R" mem-type="DEV"/> <folder name="Video clips" created="20060101T000000" user-perm="R" mem-type="DEV"/> <folder name="Images" created="20060101T000000" user-perm="R" mem-type="DEV"/> <folder name="Recordings" created="20060101T000000" user-perm="R" mem-type="DEV"/> <folder name="Receiv. files" created="20060101T000000" user-perm="R" mem-type="DEV"/>
</folder-listing> done Disconnecting...done
- Transferul de fișiere folosind comenzile irxfer și ircp (din pachetul openobex-1.3-i486-1, inclus în distribuție):
De pe telefonul mobil pe calculator:
- ircp -r
Waiting for incoming connection Incoming connection Receiving Water01.jpeg...done Disconnecting
- irxfer
Waiting for files
............................HEADER_LENGTH = 27732 Filename = Water01.jpeg Wrote Water01.jpeg (27732 bytes)
De pe calculator pe telefonul mobil:
- irxfer /Water01.jpeg
name=/Water01.jpeg, size=27732 ...........................
PUT successful
- ircp /Water01.jpeg
Connecting...done Sending /Water01.jpeg...done Disconnecting...done
- Verificarea conectării la Internet (prin IR, folosind modem-ul telefonului mobil)
Configurarea aplicației wvdial:
- wvdialconf
Editing `/etc/wvdial.conf'.
Scanning your serial ports for a modem.
Modem Port Scan<*1>: S0 S1 S2 S3 ircomm0<*1>: ATQ0 V1 E1 -- OK ircomm0<*1>: ATQ0 V1 E1 Z -- OK ircomm0<*1>: ATQ0 V1 E1 S0=0 -- OK ircomm0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK ircomm0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK ircomm0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK ircomm0<*1>: Modem Identifier: ATI -- Nokia ircomm0<*1>: Speed 19200: AT -- OK ircomm0<*1>: Speed 38400: AT -- OK ircomm0<*1>: Speed 57600: AT -- OK ircomm0<*1>: Speed 115200: AT -- OK ircomm0<*1>: Speed 230400: AT -- OK ircomm0<*1>: Speed 460800: AT -- OK ircomm0<*1>: Max speed is 460800; that should be safe. ircomm0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK (...) Found a modem on /dev/ircomm0.
Editarea fișierului de configurare /etc/wvdial.conf (exemplu):
[Dialer Defaults]
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
Phone = <edit>
ISDN = 0
Username = <edit>
Init1 = ATZ
Password = <edit>
Modem = /dev/ircomm0
Baud = 9600
Configurarea automată a sesiunii PPP:
- wvdial
--> WvDial: Internet dialer version 1.60 --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Modem initialized. --> Sending: ATDT<edit> --> Waiting for carrier. ATDT<edit> CONNECT 9600 --> Carrier detected. Waiting for prompt. --> PPP negotiation detected. --> Starting pppd at Tue Apr 29 13:25:33 2008 --> Pid of pppd: 8112 --> Using interface ppp0 --> pppd: Ð[06][08]P[06][08] (...) --> local IP address 1xx.2x.x3.2x --> remote IP address 10.xx.xx.x4 --> primary DNS address 6x.2xx.1xx.x5 --> secondary DNS address 6x.2xx.1xx.1 --> pppd: Ð[06][08]P[06][08] --> Connect time 1.3 minutes. (...) --> Disconnecting at Tue Apr 29 13:26:55 2008
Verificarea activării interfeței ppp0:
- ifconfig
ppp0 Link encap:Point-to-Point Protocol
inet addr:1xx.2x.x3.2x P-t-P:10.xx.xx.x4 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:76 (76.0 B) TX bytes:91 (91.0 B)
- route -n
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.xx.xx.x4 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
Alte aplicaţii
- obextool (http://sourceforge.net/projects/obextool/) - instalat conform acestui tutorial (Secțiunea 3 - Alte aplicaţii)
$ obextool
Scanning for Irda devices
Found IrDA device
Using obexftp command: /usr/bin/obexftp -i
Found ObexTool version 0.33 ...
Found configuration file /etc/obextool/obextool.cfg version 0.33 ...
Found configuration file /etc/obextool/obextool.typ version 0.33 ...
Found configuration file /etc/obextool/obextool.ext version 0.33 ...
- gnokii (http://www.gnokii.org/) - numai pentru anumite tipuri de telefoane, detalii pe gnokii wiki.
Exemplu de fișier de configurare (numai liniile esențiale):
[global]
- With Linux-IrDA you will want to use
port = /dev/ircomm0
- Set model to the model number of your phone. For the
model = 6510
- There are few main models that should make use of the certain drivers.
- These are: 6110, 7110, 6510, 3110, 2110, 6160.
- Set IrDA device name.
irda_string = Nokia 5200
initlength = default
- For infrared connection with phones other than Nokia 6110/6130/6150 use:
connection = irda
- Don't forget to run: 'irattach irda0 -s' or similiar before running gnokii
use_locking = yes
- Baudrate to use on serial port connections.
serial_baudrate = 9200
- Force serial port handshaking mode, useful primarily for "AT" model.
handshake = hardware
sm_retry = 1
Fișierul de configurare original este /etc/gnokiirc.