在raspberry pi上没有rfcomm连接,而桌面上的相同设置工作

时间:2015-10-11 21:12:08

标签: python linux ubuntu bluetooth rfcomm

我想通过蓝牙从我的Android手机(目前使用BlueTerm)与我的覆盆子pi上的python应用程序进行通信。

我试图获得以下内容' Hello World'在我的树莓派上工作的脚本:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import pty
import uuid    
import bluetooth

def main():
    server_sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
    server_sock.bind(('', bluetooth.PORT_ANY))
    server_sock.listen(1)

    port = server_sock.getsockname()[1]
    random_uuid = str(uuid.uuid4())

    bluetooth.advertise_service(server_sock,
        'ShellServer',
        service_id=random_uuid,
        service_classes=[random_uuid, bluetooth.SERIAL_PORT_CLASS],
        profiles=[bluetooth.SERIAL_PORT_PROFILE]
    )

    print("Waiting for connection on RFCOMM channel {0}".format(port))

    while True:
        try:
            client_sock, (client_addr, client_ch) = server_sock.accept()
        except KeyboardInterrupt:
            break
        print("Accepted connection from {0}".format(client_addr))
        client_sock.send("Hello World!")
        client_sock.close()

    print('Shutting down the server socket...')
    server_sock.close()

if __name__ == '__main__':
    main()

(基于https://warroom.securestate.com/index.php/spawning-shells-over-bluetooth/的代码)

我按照网络上的教程配对设备:

  

pi @ raspberrypi~ $ sudo hciconfig hci0 piscan       pi @ raspberrypi~ $ sudo bluetooth-agent 1234       Pincode请求设备/ org / bluez / 2152 / hci0 / dev _ [...]

配对似乎有效(设备显示在' sudo bluez-test-device list')。 在另一个终端上,我启动脚本:

pi@raspberrypi /usr/local/bin $ sudo python bluetest.py
Waiting for connection on RFCOMM channel 1

我尝试使用BlueTerm进行连接,但这只是给了我消息"无法连接设备"。剧本本身是沉默的; server_sock.accept()永远不会返回。

令人恼火的部分是:完全相同的设置(相同的脚本,相同的手机,相同的配对程序,相同的蓝牙适配器)在我的台式机(Ubuntu 14.04)上按预期工作。

/etc/bluetooth/main.conf和/etc/bluetooth/rfcomm.conf在两台机器上都是相同的。

关于pi的更多信息:

pi@raspberrypi ~ $ cat /etc/*release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l GNU/
Linux
pi@raspberrypi ~ $ hcitool --version
hcitool: unrecognized option '--version'
hcitool - HCI Tool ver 4.99
Usage:
 [...]

pi@raspberrypi ~ $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 04d9:1602 Holtek Semiconductor, Inc.
Bus 001 Device 005: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
Bus 001 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

pi@raspberrypi /usr/local/bin $ aptitude versions bluetooth bluez-utils bluez-compat
Package bluetooth:
i   4.99-2                                                                                oldstable                                                         500

Package bluez-compat:
i   4.99-2                                                                                oldstable                                                         500

Package bluez-utils:
p   4.99-2                                                                                oldstable                                                         500

[...]

桌面计算机是一个非常标准的Ubuntu 14.04。

为什么脚本在桌面系统上完全按预期工作而不在pi上工作的原因可能是什么?

这是我第一次使用蓝牙和rfcomm,我已经没有想法如何调试它。我非常感谢你的帮助。

0 个答案:

没有答案