[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 网管技术 > 硬件技术 > 正文

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=

 相关文章
Linux 核心--2.硬件基础 2001-04-27 13:53:43
Jaz-drive HOWTO -- 2. Jaz 磁碟机的硬件 2001-05-02 10:36:24
Solaris如何在reboot后增加和改变系统硬件? 2001-05-12 15:54:00
网络管理员指南 -3.设置网络硬件 -2>核心配置 2001-07-10 14:08:00
网络管理员指南 -3.设置网络硬件 -2>漫游网络设备 2001-07-10 15:00:00
网络管理员指南 -3.设置网络硬件 -3>以太网安装 2001-07-10 16:10:01
网络管理员指南 -3.设置网络硬件 -4>PLIP 驱动器 2001-07-10 17:04:00
网络管理员指南 -4.设置串联硬件 -4>串联硬件 2001-07-10 22:08:00

★  感谢所有的作者为我们学习技术知识提供了一条捷径  ★
www.fanqiang.com