ARTICLE AD BOX
I am building a native iOS app (Swift, CoreBluetooth) that needs to connect to multiple BLE drawing devices (up to 4 simultaneously) and receive streaming drawing data.
Current State
Scanning works
Multiple peripherals connect successfully
didConnect is called for each device
Services and characteristics are discovered
However:
didUpdateValueFor characteristic is never triggered
readValue(for:) produces no response
writeValue(_:for:type:) does not produce any observable result
No streaming data is received from the devices
Important Context
The vendor provides an SDK, but:
It supports only one device at a time
It does not allow multiple simultaneous connections
Because of this limitation, we are implementing multi-device support directly using CoreBluetooth.
The device protocol appears to require sending HEX-based initialization commands before it begins streaming drawing data.
What We Are Doing
After discovering characteristics, we:
peripheral.setNotifyValue(true, for: characteristic) peripheral.readValue(for: characteristic) peripheral.writeValue(data, for: characteristic, type: .withResponse)Despite this:
didUpdateValueFor is never called
didWriteValueFor is not triggered
No data is received
Questions
If a peripheral connects but no characteristic updates are received, what are the most common causes?
Is it mandatory that the characteristic has the .notify property for streaming data?
If the vendor SDK only supports one device, could the firmware restrict multiple active data streams?
How can we verify that we are writing to the correct characteristic without vendor documentation?
Can CoreBluetooth reliably handle multiple high-frequency streaming peripherals?
Core Issue
Connections succeed, but no characteristic communication (read/write/notify) works.
Any guidance on diagnosing this type of BLE communication failure would be appreciated.
