Мне нужно открыть сокеты Bluetooth на Mac.
LightBlue казался великолепным, но потом оказалось, что в версии для Mac все, что связано с L2CAP, просто не реализовано, и вполне вероятно, что Mac не поддерживает (реализованный) RFCOM.
При использовании этого и попытке привязать сокет происходит сбой с сообщением IOReturn 0x2c0, которое является kIOReturnNoDevice
.
Вот мой код:
from lightblue import *
s = socket() # uses RFCOMM
s.bind(("", 0))
→ kIOReturnNoDevice
from lightblue import *
s = socket(L2CAP)
s.bind(("", 0))
→ NotImplementedError: серверные сокеты L2CAP в настоящее время не поддерживаются
Существуют ли какие-либо альтернативы, позволяющие создавать сокеты Bluetooth в macOS, или, может быть, активные форки LightBlue?
В конце концов, в macOS уже есть сокеты BSD.
Оказывается, macOS не позволяет открыть сокет с чипом Bluetooth. Из соображений безопасности все соединения Bluetooth должны проходить через драйвер Bluetooth IOBluetoothFamily.kext
, и сами Apple используют для этого фреймворк IOBluetooth
.