Aug 172008
 

蓝牙这个东西挺让人头疼,因为虽然标准能统一,但各家有各家的协议栈实现,不通的芯片需要使用不同的协议栈来支持。目前来讲,常见的协议栈有微软协议栈,Bluesoleil的IVT,Widcomm(已经被Broadcom收购),还有东芝的协议栈。微软和东芝的东西稳定,但功能比较弱,例如A2DP之类的东西无法实现,同时支持的芯片有限,而另外两个是商业软件,功能比较牛X,支持的芯片众多,但多多少少都有些兼容性和稳定性的问题。

前两天败了部新手机,数据线接上PC后不能充电反而放电,想来是水货配备的数据线触电设计与手机实际相反导致。于是就想办法通过蓝牙连接PC,但我现在使用地是Windows Server 2008,这东西做为Workstation来玩完全没有问题,但是微软却使坏把自己的蓝牙协议栈给屏蔽了。而其他几个协议栈实现目前在64位的2008下都无法正常使用。好在可以自己动手把驱动给Rip出来装,微软的某牛给出了方法,做法见这里。简单点说,其实驱动文件本身在发行版里都存在,无论是Vista还是2008,问题只出现在inf里,找到几个相关inf,把[Microsoft.NTamd64...1]替换成[Microsoft.NTamd64...3],1代表workstation,3代表server,改好后就能找到驱动了。不过自从Vista开始系统文件的修改因为TrustInstaller机制会变得很麻烦,所以还不如从安装盘里拿文件出来自己Rip驱动包,这里提供我做好的X64的驱动包,只要下载下来解压到本地文件夹,插上适配器,把所有新出来的未知设备手工指定到驱动目录,就应该能自动认出设备了。

注意一点,微软协议栈不能支持所有的蓝牙设备,因此只有在Vista能够不需要手工安装驱动的那些蓝牙棒用这个驱动才能认出来,其他的一些像ISSC芯片的杂牌棒还是只能用IVT或者Widcomm来跑。

下载地址在这里,只适用于X64,i386我没有源安装盘,个人也再不会去使用i386,想用得只有自己按前面的帖子去做了。

Aug 292007
 

这两天办公室不时有人机器中毒,结果整个内部局域网经常被ARP Poison充斥,导致网络瞬断,于是不得不想办法来实现静态IP-Mac地址绑定。然而在我用的Windows Server 2008 beta3的机器上,却碰到了一个很奇怪的问题。

在本机键入如下命令,这个IP是我局域网网关的地址,MAC为其内网网卡的MAC:

C:\Windows\system32>arp -s 10.0.0.254  00-11-d8-64-6b-bc

结果失败,错误提示为:

The ARP entry addition failed: 5

放狗搜了一下这个错误提示,发现这个提示应该为权限不足。见鬼了,明明用的是administrators组的用户,却权限不够?于是把故障嫌疑定位到UAC上去,发现无论是怎样调整,甚至关掉UAC,都还是同样的结果。同时用Process Explorer检查发现我的CMD进程有足够权限执行此项配置,这样也断定不可能是用户权限问题,简直是见鬼了。

然后就是打开安全审核,拼了命查找各项安全日志,无奈发现不了任何蛛丝马迹。回头一想,貌似命令行下的一些个命令都不生成安全审计记录的,这次彻底郁闷了。

翻着翻着资料突然看到了netsh这个工具,这玩艺是MS建议以后再命令行配置Windows网络协议栈的一个类似IOS的新工具,死马当活马医,试试看这玩艺能不能操作ARP表,简单看了一下帮助,于是弄出来这么个命令:

C:\Windows\system32>netsh -c “interface ipv4″ add neighbors 10  “10.0.0.254″  ”00-11-d8-64-6b-bc”

其中数字10为我本地网卡连接的index,这个从show interface可以看到。或者直接替换成网卡名称也可以,就是”Local Area Connection”了。

结果这个命令竟然成功了,运行之后再运行arp -a可以看到static的ARP表项已经按照预想的一样创建成功。也就是说,前面使用arp -s添加失败根本不是权限不够的原因,而是其他原因了。具体什么原因呢?我个人猜想恐怕是内核网络部分一些数据结构或者API的变更,同时arp.exe这个工具没有跟随更新导致的broken问题吧。

更诡异的在后面,虽然我目的达到了,但不小甘心又使用arp -s修改了刚添加的静态表项,结果发现竟然修改成功-_-b,然后又继续测试其他情况,发现如下结论:

1,目前ARP表中不存在对应IP的记录,可以用arp -s添加新的静态IP-Mac绑定。

2,目前ARP表中已经存在对应IP的static表项的记录,可以用arp -s修改为新的静态IP-Mac绑定。

3,目前ARP表中已经存在对应IP的dynamic表项的记录,使用arp -s添加新的静态记录时会出现错误:The ARP entry addition failed: 5

总之这个版本的Windows附带的这个arp.exe一定有问题,改天找找看有没有联系方式能否反映给MS开发部门。