|
linux IRDA 实验报告
环境:
笔记本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
发送文件cqst.txt用
ircp cqs.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 |
|