我正在尝试使用诺基亚N9(meego)作为虚拟蓝牙鼠标/键盘。我正在尝试使用this small program作为起点,但遇到了问题:运行此程序时,我收到一条错误消息,告诉我“绑定(bind)错误(PSM 19):权限被拒绝”。这是将蓝牙套接字绑定(bind)到PSM 19的时候。
当我以普通用户身份运行该程序时,以及以root用户身份运行时,访问均被拒绝。
在互联网上搜索时,我发现保留了0x1000以下的PSM(端口),并且在其他蓝牙实现中,无法绑定(bind)到这些PSM是一项功能(例如jsr-82)。
我使用0x1000以上的PSM尝试了相同的程序,并且可以正常工作,但是其他设备看不到附近有HID设备:(
有没有一种方法可以绑定(bind)到这些PSM,而无需动手破解蓝牙堆栈本身?
最佳答案
PSM 17和19用于HID配置文件。
您提到的诺基亚N9手机不支持HID配置文件,因此可以拒绝连接请求。
您可以在“蓝牙合格列表”站点上的任何蓝牙设备上查看支持的功能/配置文件。此手机功能列在此处https://www.bluetooth.org/tpg/QLI_viewQDL.cfm?qid=18246
编辑:根据下面的注释,您似乎正在尝试通过在N9上运行该程序来获取绑定(bind)错误,从而使N9成为HID设备。
可能的原因是-某些其他服务/守护程序已经绑定(bind)到了相同的PSM,或者堆栈配置为不接受对保留的PSM的动态绑定(bind),因此拒绝了对其不支持的配置文件的PSM绑定(bind)。
最后一个是有道理的,因为它是合格的堆栈,并且不想允许通过应用程序进行概要文件扩展(例如试图使它成为HID客户端的小程序)。
关于c - 尝试将蓝牙套接字绑定(bind)到PSM 17和19在MeeGo上返回EACCESS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8150728/