Hi
I have written a BLE peripheral app running on linux using bluez - dbus (in python)
it advertises a MIDI Service with a MIDI Characteristics.
If I use apps like GATT Browser and BluetoothLeGatt I can browse my device and read / write values.
When I try to use MIDI+BTLE on the other hand, what happens is
Scan is successful, but the device disappears after 2-3 seconds and no Read/Write operations are ever sent to my device.
Does anybody know exactly what the Android BLE Midi code checks in determining if a device is a valid MIDI?
I have created a service and a characteristic like
class MIDICharacteristic(egs.Characteristic):
def __init__(self, bus, index, service):
flags = ['notify', 'read', 'write', 'write-without-response']
super().__init__(bus, index, MIDI_CHARACTERISTIC_UUID, flags, service)
class MIDIService(egs.Service):
def __init__(self, bus, index):
super().__init__(bus, index, MIDI_SERVICE_UUID, True)
self.add_characteristic(MIDICharacteristic(bus, 0, self))
with
MIDI_SERVICE_UUID = '03b80e5a-ede8-4b33-a751-6ce34ec4c700'
MIDI_CHARACTERISTIC_UUID = '7772e5db-3868-4112-a1a9-f2669d106bf3'
The steps seems so easy that I am not sure what should be changed.
The hardware works, because the other apps can interoperate, but I think I am not advertising a MIDI service 100% correct and so the Android code tries something and then drops it as invalid.
Does anybody have some hint?