Как подключить pybluez серверный разъем RFCOMM на Debian?

У меня есть этот фрагмент в python с каркасом pybluez:

from bluetooth import * server_sock=BluetoothSocket( RFCOMM ) server_sock.bind(("",PORT_ANY)) server_sock.listen(1) port = server_sock.getsockname()[1] uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee" advertise_service( server_sock, "SampleServer", service_id = uuid # service_classes = [ uuid, SERIAL_PORT_CLASS ], # profiles = [ SERIAL_PORT_PROFILE ], # protocols = [ RFCOMM_UUID ] ) print "Waiting for connection on RFCOMM channel %d" % port client_sock, client_info = server_sock.accept() print "Accepted connection from ", client_info try: while True: data = client_sock.recv(1024) if len(data) == 0: break print "received [%s]" % data except IOError: pass print "disconnected" client_sock.close() server_sock.close() print "all done" 

а также у меня есть этот другой фрагмент в Android для подключения гнезда сервера pybluez rfcomm:

 private static final UUID MY_UUID = UUID.fromString("94f39d29-7d6d-437d-973b-fba39e49d4ee"); .... BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(myServerMacAddress); .... BluetoothSocket tmp= device.createInsecureRfcommSocketToServiceRecord(MY_UUID); 

Моя проблема в том, что Android-устройство не может подключиться к гнезду pybluez. Я думаю, что способ, которым я пользуюсь, неправильно, и я не знаю, как правильно подключиться или рекламировать свой серверный сокет

Я предложил щедрость, но сам нашел решение. 🙂 Добавлено на другой ответ, но это может также относиться к вашей проблеме. В некоторых версиях Debian (Raspbian и т. Д.) И, возможно, некоторые другие дистрибутивы. По server_sock.accept() будет просто зависать и никогда не принимать соединение – даже с сопряженного устройства! Я в некоторых случаях даже убежден, что сокет не открыт вообще. Однако решение этого очень просто.

Обновите файл /etc/bluetooth/main.conf , добавьте строку или измените существующее, чтобы оно выглядело следующим образом:

 DisablePlugins = pnat 

Затем перезапустите службу Bluetooth:

 sudo invoke –rc.d bluetooth restart 

Теперь это может быть исправлено.

Удачи!

Ссылка: RFCOMM без сопряжения с использованием PyBluez на Debian?