Personal tools

Conectarea unui telefon mobil prin IR

From linux360

Revision as of 18:35, 29 April 2008 by Gabel (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

  1. 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

  1. chmod +x irda-utils.SlackBuild
  2. ./irda-utils.SlackBuild
  3. cd /tmp
  4. 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):

      1. 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:

  1. 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:

  1. cd /etc/rc.d
  2. chmod 0755 rc.irda
  3. ./rc.irda start

Starting IrDA: /usr/sbin/irattach

  • Activarea interfeței irda0:

  1. irattach irda0 -s 1
  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:

  1. 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:

  1. cat /proc/net/irda/discovery

IrLMP: Discovery log:

nickname: Nokia 5200, hint: 0xb125, saddr: 0xbf21c7c1, daddr: 0x0000b3b5

Comanda cat /proc/net/irda/irlap:

  1. 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:

  1. 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>:

  1. 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:

  1. 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:

  1. ircp -r

Waiting for incoming connection Incoming connection Receiving Water01.jpeg...done Disconnecting

  1. irxfer

Waiting for files

............................HEADER_LENGTH = 27732 Filename = Water01.jpeg Wrote Water01.jpeg (27732 bytes)

De pe calculator pe telefonul mobil:

  1. irxfer /Water01.jpeg

name=/Water01.jpeg, size=27732 ...........................

PUT successful

  1. 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:

  1. 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:

  1. 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:

  1. 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)
  1. 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 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 ...

Exemplu de fișier de configurare (numai liniile esențiale): [global]

  1. With Linux-IrDA you will want to use

port = /dev/ircomm0

  1. Set model to the model number of your phone. For the

model = 6510

  1. There are few main models that should make use of the certain drivers.
  2. These are: 6110, 7110, 6510, 3110, 2110, 6160.
  1. Set IrDA device name.

irda_string = Nokia 5200

initlength = default

  1. For infrared connection with phones other than Nokia 6110/6130/6150 use:

connection = irda

  1. Don't forget to run: 'irattach irda0 -s' or similiar before running gnokii

use_locking = yes

  1. Baudrate to use on serial port connections.

serial_baudrate = 9200

  1. Force serial port handshaking mode, useful primarily for "AT" model.

handshake = hardware

sm_retry = 1

Fișierul de configurare original este /etc/gnokiirc.