LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2726|回复: 2

在linux下面安装连接红外设备一法

[复制链接]
发表于 2004-9-23 20:21:07 | 显示全部楼层 |阅读模式
这几天一直在研究这个问题,今天看到arkar兄弟的文章:
http://www.linuxsir.cn/bbs/showt ... d=830142#post830142
里面提到一个链接
http://www.tuxmobil.org/Infrared-HOWTO/Infrared-HOWTO.html
我看了老外的这个文章,经过实验,终于连通我的红外设备了。

我的系统:Mandrake 10.0
主板: Intel845G
红外线:水木行SMH-IR210(最便宜的一款,直接通过主板的红外连出的红外装置,非串口连接,也非USB连接)
手机:爱立信T39m

准备阶段:
1.首先编译内核,让内核支持红外设备,我是到www.kernel.org下载最新的2.6.8编译内核的。关于编译内核,就不多说了,大家看置顶文章吧。注意的一点,就是在编译前的配置过程中,记得选择irda模块内容极其相关协议,如果你不确定选多少,那么你全部选择吧,我就是这样的

编译完内核后,在系统的服务中就能看到irda服务了,当然默认情况下,irda服务已经启动了,在linux启动过程中就能看出来。如果你不确定这个服务是否启动,可以手动执行:#/etc/rc.d/init.d/irda restart
不要忘记在bios中的设置中打开irda选择,详细过程请查阅主板说明书。

2.安装软件
软件IrDA-Utils包含,irattach:挂载红外线,irdadump:监测红外线装置间的传输,irdaping:Ping外围红外线装置,irkbd:红外线键盘;
在这里下载软件
http://irda.sourceforge.net/download.html
下载后,解压,执行configure,make,make install完成安装

3 具体配置
编辑/etc/modules.conf
里面增加下面内容



  1. # IrDA over a normal serial port, or a serial port compatible IrDA port (SIR)
  2. alias tty-ldisc-11 irtty

  3. # IrCOMM (for printing, PPP, Minicom etc)
  4. alias char-major-161 ircomm-tty     # if you want IrCOMM support

  5. # IRLAN
  6. # But currently the IrLAN protocol is no longer maintained
  7. # by the Linux/IrDA core team.
  8. alias irlan0 irlan

  9. # To be able to attach some serial dongles
  10. # These values are hard-coded in irattach (not instance order)
  11. alias irda-dongle-0  tekram             # Tekram IrMate IR-210B
  12. alias irda-dongle-1  esi                # ESI JetEye
  13. alias irda-dongle-2  actisys            # Actisys IR-220L
  14. alias irda-dongle-3  actisys            # Actisys IR-220L+
  15. alias irda-dongle-4  girbil             # Greenwich GIrBIL
  16. alias irda-dongle-5  litelink           # Parallax LiteLink/ESI JetEye
  17. alias irda-dongle-6  airport            # Adaptec Airport 1000 and 2000
  18. alias irda-dongle-7  old_belkin         # Belkin (old) SmartBeam dongle
  19. alias irda-dongle-8  ep7211_ir          # Cirrus Logic EP7211 Processor (ARM)
  20. alias irda-dongle-9  mcp2120            # MCP2120 (Microchip) based
  21. alias irda-dongle-10 act200l            # ACTiSYS Ir-200L
  22. alias irda-dongle-11 ma600              # Mobile Action ma600

  23. # To use the FIR driver. This applies only to the specific device!!!

  24. #options nsc-ircc dongle_id=0x09        # NSC driver on a IBM Thinkpad laptop
  25. #options nsc-ircc dongle_id=0x08        # HP Omnibook 6000
  26. #alias irda0 nsc-ircc

  27. # options smc-ircc ircc_irq= ircc_dma=
  28. # alias irda0 smc-ircc

  29. # options toshoboe max_baud=
  30. # alias irda0 toshoboe

  31. # options w83977af_ir io= io2= irq= qos_mtt_bits=
  32. # alias irda0 w83977af_ir

  33. # IrNET module...
  34. alias char-major-10-187 irnet       # Official allocation of IrNET

复制代码


然后运行depmod -a
这会装载所需要的红外模块

红外可以被安装成两种模式SIR和FIR,这里推荐SIR,下面写SIR
模式的配置:
执行dmesg | grep tty选择ttySx,
# dmesg | grep tty
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
说明我的红外就在ttyS0和ttyS1两个之一(后面实践证明是第二个)

启动IrDA
执行下列命令启动IrDA,如果正常,没有输出。
#modprobe irda irtty
#irattach /dev/ttyS1 -s
到此为止,红外已经开始工作了,我的SMH-210红外的指示灯终于在linux下亮起来了。此时运行lsmod,可以看到相关红外模块的加载
# lsmod
Module                  Size  Used by
irtty_sir               7424  2
sir_dev                17708  1 irtty_sir
irda                  134460  1 sir_dev
crc_ccitt               2432  1 irda

4 简单测试
测试红外要使用上面安装的IrDA-Utils中的命令irdadump。
先不开手机的红外,执行irdadump命令,显示如下

  1. # irdadump
  2. 12:09:40.338482 xid:cmd a91d66a1 > ffffffff S=6 s=0 (14)
  3. 12:09:40.428388 xid:cmd a91d66a1 > ffffffff S=6 s=1 (14)
  4. 12:09:40.518376 xid:cmd a91d66a1 > ffffffff S=6 s=2 (14)
  5. 12:09:40.608361 xid:cmd a91d66a1 > ffffffff S=6 s=3 (14)
  6. 12:09:40.698348 xid:cmd a91d66a1 > ffffffff S=6 s=4 (14)
  7. 12:09:40.788334 xid:cmd a91d66a1 > ffffffff S=6 s=5 (14)
  8. 12:09:40.878321 xid:cmd a91d66a1 > ffffffff S=6 s=* robocup hint=0400 [ Computer ] (23)
复制代码

说明主机红外地址是a91d66a1,目标地址 ffffffff说明是广播,robocup是我的主机名。此时就是正在搜寻周围设备,红外上的红色指示灯在闪,也说明红外在周期性扫描周围设备。
接下来,我打开手机的红外,并对准电脑的红外(1米之内),再执行irdadump,效果如下:

  1. # irdadump
  2. 12:12:10.315678 xid:cmd a91d66a1 > ffffffff S=6 s=0 (14)
  3. 12:12:10.405591 xid:cmd a91d66a1 > ffffffff S=6 s=1 (14)
  4. 12:12:10.495576 xid:cmd a91d66a1 > ffffffff S=6 s=2 (14)
  5. 12:12:10.585563 xid:cmd a91d66a1 > ffffffff S=6 s=3 (14)
  6. 12:12:10.675548 xid:cmd a91d66a1 > ffffffff S=6 s=4 (14)
  7. 12:12:10.765537 xid:cmd a91d66a1 > ffffffff S=6 s=5 (14)
  8. 12:12:10.838527 xid:rsp a91d66a1 < 181e9ec5 S=6 s=5 T39 hint=9124 [ PnP Modem IrCOMM IrOBEX ] (20)
  9. 12:12:10.855523 xid:cmd a91d66a1 > ffffffff S=6 s=* robocup hint=0400 [ Computer ] (23)
  10. 12:12:13.315150 xid:cmd a91d66a1 > ffffffff S=6 s=0 (14)
  11. 12:12:13.405132 xid:cmd a91d66a1 > ffffffff S=6 s=1 (14)
  12. 12:12:13.495120 xid:cmd a91d66a1 > ffffffff S=6 s=2 (14)
  13. 12:12:13.585106 xid:cmd a91d66a1 > ffffffff S=6 s=3 (14)
  14. 12:12:13.675095 xid:cmd a91d66a1 > ffffffff S=6 s=4 (14)
  15. 12:12:13.748077 xid:rsp a91d66a1 < 181e9ec5 S=6 s=4 T39 hint=9124 [ PnP Modem IrCOMM IrOBEX ] (20)
  16. 12:12:13.765081 xid:cmd a91d66a1 > ffffffff S=6 s=5 (14)
  17. 12:12:13.855066 xid:cmd a91d66a1 > ffffffff S=6 s=* robocup hint=0400 [ Computer ] (23)
  18. 12:12:16.314703 xid:cmd a91d66a1 > ffffffff S=6 s=0 (14)
  19. 12:12:16.404677 xid:cmd a91d66a1 > ffffffff S=6 s=1 (14)
  20. 12:12:16.494663 xid:cmd a91d66a1 > ffffffff S=6 s=2 (14)
  21. 12:12:16.584649 xid:cmd a91d66a1 > ffffffff S=6 s=3 (14)
  22. 12:12:16.657639 xid:rsp a91d66a1 < 181e9ec5 S=6 s=3 T39 hint=9124 [ PnP Modem IrCOMM IrOBEX ] (20)
  23. 12:12:16.674639 xid:cmd a91d66a1 > ffffffff S=6 s=4 (14)
  24. 12:12:16.764623 xid:cmd a91d66a1 > ffffffff S=6 s=5 (14)
  25. 12:12:16.854608 xid:cmd a91d66a1 > ffffffff S=6 s=* robocup hint=0400 [ Computer ] (23)

  26. 24 packets received by filter
复制代码


其中这一行12:12:10.838527 xid:rsp a91d66a1 < 181e9ec5 S=6 s=5 T39 hint=9124 [ PnP Modem IrCOMM IrOBEX ] (20)说明收到了目标地址为181e9ec5的数据,也显示名字叫T39(就是我手机型号),PnP Modem说明手机中的即插即用modem, IrCOMM是手机中的红外通讯设备, IrOBEX说明手机支持OBEX协议,Object Exchange (OBEX)协议是一种会话协议,主要用在PDA设备和一些手机中,该协议被优化用于在这些设备之间交换中vCard(名片)

到此为止,手机和电脑已经通过红外连通,如果要同步电话本,发送文件,带机图片,铃声等等,需要安装额外的软件,http://www.tuxmobil.org/Infrared-HOWTO/Infrared-HOWTO.html
文章提到了一个软件OpenOBEX,可以在这里下载,
http://sourceforge.net/projects/openobex/
记得先安装openobex,再安装obexftp,obexftp可以在红外连接的双方互相传文件。
这里也有不少软件:
http://openobex.sourceforge.net/applications.html

另外我自己发现了一个用电脑通过红外发短消息的程序,下载地点
http://www.smsclient.org/downloa ... client-3.0.2.tar.gz
目前这个软件我还没有学会使用,大家研究一下,有进展就发上来。
 楼主| 发表于 2004-9-23 21:07:53 | 显示全部楼层

补充一下,通过红外给手机传图片成功

1,下载ircp程序
http://heanet.dl.sourceforge.net ... bex/ircp-0.3.tar.gz
2,安装ircp
./configure,make,make install
2,编辑一张手机可以接受的图片
对于我的T39来说,图片要求:73×26的4色灰度gif图片,文件名为1.gif
3,发送文件
# ircp /home/xy/mydata/1.gif
Connecting...done
Sending /home/xy/mydata/1.gif...done
Disconnecting...done

发送过程用irdadump监视如下:
# irdadump
13:06:54.816367 xid:cmd a91d66a1 > ffffffff S=6 s=0 (14)
13:06:54.906269 xid:cmd a91d66a1 > ffffffff S=6 s=1 (14)
13:06:54.996255 xid:cmd a91d66a1 > ffffffff S=6 s=2 (14)
13:06:55.073243 xid:rsp a91d66a1 < 31181555 S=6 s=2 T39 hint=9124 [ PnP Modem IrCOMM IrOBEX ] (20)
13:06:55.086245 xid:cmd a91d66a1 > ffffffff S=6 s=3 (14)
13:06:55.176234 xid:cmd a91d66a1 > ffffffff S=6 s=4 (14)
13:06:55.266214 xid:cmd a91d66a1 > ffffffff S=6 s=5 (14)
13:06:55.356203 xid:cmd a91d66a1 > ffffffff S=6 s=* robocup hint=0400 [ Computer ] (23)
13:06:57.815834 xid:cmd a91d66a1 > ffffffff S=6 s=0 (14)
13:06:57.893810 xid:rsp a91d66a1 < 31181555 S=6 s=0 T39 hint=9124 [ PnP Modem IrCOMM IrOBEX ] (20)
13:06:57.905813 xid:cmd a91d66a1 > ffffffff S=6 s=1 (14)
13:06:57.995803 xid:cmd a91d66a1 > ffffffff S=6 s=2 (14)
13:06:58.085785 xid:cmd a91d66a1 > ffffffff S=6 s=3 (14)
13:06:58.175775 xid:cmd a91d66a1 > ffffffff S=6 s=4 (14)
13:06:58.265759 xid:cmd a91d66a1 > ffffffff S=6 s=5 (14)
13:06:58.355748 xid:cmd a91d66a1 > ffffffff S=6 s=* robocup hint=0400 [ Computer ] (23)
13:07:00.815376 xid:cmd a91d66a1 > ffffffff S=6 s=0 (14)
13:07:00.905359 xid:cmd a91d66a1 > ffffffff S=6 s=1 (14)
13:07:00.995345 xid:cmd a91d66a1 > ffffffff S=6 s=2 (14)
13:07:01.085330 xid:cmd a91d66a1 > ffffffff S=6 s=3 (14)
13:07:01.162318 xid:rsp a91d66a1 < 31181555 S=6 s=3 T39 hint=9124 [ PnP Modem IrCOMM IrOBEX ] (20)
13:07:01.175316 xid:cmd a91d66a1 > ffffffff S=6 s=4 (14)
13:07:01.265303 xid:cmd a91d66a1 > ffffffff S=6 s=5 (14)
13:07:01.355290 xid:cmd a91d66a1 > ffffffff S=6 s=* robocup hint=0400 [ Computer ] (23)
13:07:02.115455 snrm:cmd ca=fe pf=1 a91d66a1 > 31181555 new-ca=32
        LAP QoS: Baud Rate=115200bps Max Turn Time=500ms Data Size=2048B Window Size=7 Add BOFS=0 Min Turn Time=5000us Link Disc=12s (32)
13:07:02.228157 ua:rsp ca=32 pf=1 a91d66a1 < 31181555
        LAP QoS: Baud Rate=115200bps Max Turn Time=500ms Data Size=256B Window Size=3 Add BOFS=0 Min Turn Time=0us Link Disc=12s (31)
13:07:02.230059 rr:cmd > ca=32 pf=1 nr=0 (2)
13:07:02.244154 rr:rsp < ca=32 pf=1 nr=0 (2)
13:07:02.245163 i:cmd  > ca=32 pf=1 nr=0 ns=0 LM slsap=32 dlsap=00 CONN_CMD (6)
13:07:02.253151 i:rsp  < ca=32 pf=1 nr=1 ns=0 LM slsap=00 dlsap=32 CONN_RSP (6)
13:07:02.254165 i:cmd  > ca=32 pf=1 nr=1 ns=1 LM slsap=32 dlsap=00 GET_VALUE_BY_CLASS: "OBEX:IrXfer" "IrDA:TinyTPsapSel" (37)
13:07:02.266149 i:rsp  < ca=32 pf=1 nr=2 ns=1 LM slsap=00 dlsap=32 GET_VALUE_BY_CLASS: Success Integer: 04 (15)
13:07:02.267172 i:cmd  > ca=32 pf=1 nr=2 ns=2 LM slsap=32 dlsap=00 DISC (6)
13:07:02.279149 rr:rsp < ca=32 pf=1 nr=3 (2)
13:07:02.280159 i:cmd  > ca=32 pf=1 nr=2 ns=3 LM slsap=33 dlsap=04 CONN_CMD TTP credits=16 (7)
13:07:02.292146 i:rsp  < ca=32 pf=1 nr=4 ns=2 LM slsap=04 dlsap=33 CONN_RSP TTP credits=6 (7)
13:07:02.293156 rr:cmd > ca=32 pf=1 nr=3 (2)
13:07:02.301147 i:rsp  < ca=32 pf=1 nr=4 ns=3 LM slsap=01 dlsap=00 CONN_CMD (6)
13:07:02.302175 i:cmd  > ca=32 pf=0 nr=4 ns=4 LM slsap=33 dlsap=04 TTP credits=0
        OBEX CONNECT len=7 ver=1.1 flags=0 mtu=1024 (12)
13:07:02.302224 i:cmd  > ca=32 pf=1 nr=4 ns=5 LM slsap=00 dlsap=01 CONN_RSP (6)
13:07:02.314144 i:rsp  < ca=32 pf=1 nr=6 ns=4 LM slsap=01 dlsap=00 GET_VALUE_BY_CLASS: "Device" "DeviceName" (23)
13:07:02.315166 i:cmd  > ca=32 pf=1 nr=5 ns=6 LM slsap=00 dlsap=01 GET_VALUE_BY_CLASS: Success String: robocup (20)
13:07:02.325135 i:rsp  < ca=32 pf=1 nr=7 ns=5 LM slsap=04 dlsap=33 TTP credits=1
        OBEX SUCCESS len=7 ver=1.0 flags=0 mtu=512 (12)
13:07:02.326154 rr:cmd > ca=32 pf=1 nr=6 (2)
13:07:02.335141 i:rsp  < ca=32 pf=1 nr=7 ns=6 LM slsap=01 dlsap=00 DISC (6)

45 packets received by filter
发表于 2005-2-8 22:03:31 | 显示全部楼层
怎么使用红外线手机gprs上网呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表