linux IRDA 实验报告 |
| 作者:juexie@redflag-linux.com linuxforum (2005-04-04 14:50:13) |
|
|
环境: 笔记本Twinheader slim 600 RedFlag Desktop 3.0 beta Kernel : 2.4.7-2 ----> 2.4.18-1 irda-utils 0.9.4 ----> 0.9.14 升级内核是由于经过测试,在2.4.7上红外设备虚拟网卡的驱动irlan不能正常运转,而且会造成其中一台机器死机 查阅文档,得到如下描述: * The latest big update was in kernel 2.4.16, which fixed various race conditions, memory leaks and endianess issues. I don't even want to hear about version prior to that. And don't mention 2.2.X ;-) * Kernel 2.4.18 (when it will be released) has essential fixes for IrLAN and IrLPT. I don't normally use them, but they now seem to work. Get one of the "pre" version.
所以,我们升级内核到2.4.18
配置过程: 查看BIOS中Infrared设备,一般是ttyS0或者ttyS1, 设置tty的中断为3,使用的io为 0x3f8,如果有FIR/SIR的选项,设置为FIR
*******升级irda-utils到0.9.14, 安装openobex-0.9.8和ircp-0.2******
启动linux,执行如下命令: findchip -v 能看到红外芯片类型,我们用的是nsc pc87338 如果不是nsc,配置过程不一样,这里只先考虑nsc,其他参见附件
编辑/etc/modules.conf 增加如下行:*
# IrDA stuff... alias tty-ldisc-11 irtty alias char-major-161 ircomm-tty # if you want IrCOMM support
# NSC FIR chipset alias irda0 nsc-ircc options nsc-ircc dongle_id=0x09
# IrNET module... alias char-major-10-187 irnet # Official allocation of IrNET options irlan access=2
保存以后退出,然后让ttyS1不占用资源: setserial /dev/ttyS1 uart none
irattach irda0 -s 1
可以通过dmesg查询系统日志,看设备是否正常驱动 当有红外邻居的时候,还可以看 /proc/net/irda :
> cat /proc/net/irda/discovery IrLMP: Discovery log:
nickname: Jean Tourrilhes, hint: 0x8220, saddr: 0x913b1bbc, daddr: 0x5619b45e
这个时候可以使用irdaping来调试,使用discovery文件中的saddr irdaping 0x913b1bbc 这个命令可以模仿ping来测试是否红外通讯链接。
也可以使用irdadump来监听irda的传输消息。
这个时候需要调节红外传输的最大速率:
sysctl -w net.irda.max_baud_rate=115200
然后就可以使用ircp进行红外文件传输了! 让机器接收文件,执行: ircp -r
发送文件test.txt用 ircp test.txt
这个命令可以和windows的红外传输程序通讯,我测试了这个传送。 也可以是linux->linux的传输。其中linux->linux文件传输的速度大概是9k/s
下面说的是红外设备模拟TCP/IP的使用,TCP/IP Over IRDA有两中方法,irnet和irlan, 我没有测试传统的irnet,只测试了irlan。
irlan在Desktop3.0的kernel 2.4.7-2有致命问题,升级到2.4.18才正常!
按照前面说到的方法配置结束以后, insmod irlan access=2 killall ifconfig
非常奇怪的就是当插入irlan模块以后.按照/etc/sysconfig/network-scripts/ifcfg-irlan0 中的配置,系统配置irlan0设备网络地址的命令ifconfig就死在那了,需要用killall ifconfig 来中断这个进程。然后再用ifconfig就能看见虚拟的irlan0设备和它的网络配置了。 当网络配置结束,两个笔记本就已经能相互ping/telnet/ftp了。操作完全和网卡一样,但是速度比较慢。
关于irnet,我没有测试。相信也可以通。参见irnet.html
(http://www.fanqiang.com)
原文链接:http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=laptop&Number=308536&page=0&view=collapsed&sb=5&o=all&fpart=
|
|