How to read, write and subscribe to a BLE characteristic from your iPhone
This is the screen for working directly with a device's firmware. Open the device in Periphery's inspector and each characteristic shows buttons for what it actually supports: Read fetches the value, Write sends bytes you type in hex, Notify subscribes to live updates until you tap Stop Notify. Switch the display between Hex, Decimal, ASCII and Binary as needed. No laptop required.
BLE services, characteristics and properties in one minute
A BLE device files its data into services, and each service holds characteristics underneath. One characteristic, one value, a battery level or a data channel, say, and its properties decide what you are allowed to do with it: read, write, or get notified on change. Periphery marks those as small tags on each row, R for read, W for write, N for notify or indicate.
How to read a characteristic
- Tap Scan, then tap your device. Periphery connects and lists its services.
- Find a characteristic with an R tag and tap Read.
- The value appears under the characteristic. Use the Format picker to switch between Hex, Decimal, ASCII and Binary.
How to write bytes to a characteristic
- Tap Write on a characteristic with a W tag. The Write Hex sheet opens.
- Type the bytes as hexadecimal pairs, for example 01 FF. Spaces are optional.
- Check the line under the field: it says how many bytes will be sent, or warns that the text is not valid hexadecimal.
- Tap Send, or Cancel to close without writing.
Write with response, and Periphery uses it, waiting for the device to confirm before moving on. Write without response, and the bytes just go, no confirmation at all, so read the value back yourself or watch for a notification if you need to know it landed.
How to subscribe to notifications
- Tap Notify on a characteristic with an N tag.
- Every time the device sends a new value, it replaces the one shown under the characteristic.
- Tap Stop Notify to unsubscribe. Leaving the inspector disconnects and ends all subscriptions.
Worked example: one value, four formats
Say a characteristic hands back the same three bytes you might send to a test board. Here is how each format renders that:
| Format | Shown as |
|---|---|
| Hex | 01 41 42 |
| Decimal | 1 65 66 |
| Binary | 00000001 01000001 01000010 |
| ASCII | Only the first byte does not print; the other two show as letters, AB |
A Battery Level characteristic (2A19) returning 5A in hex reads as 90 in decimal, meaning 90 %. For text fields, Manufacturer Name and the like, ASCII is just easier on the eyes.
Logging a test session with Pro
Pro saves every read, write and notification automatically, with a timestamp, direction, characteristic UUID and the raw bytes attached. The Logs tab lists each session by packet count; swipe one and tap Export to pull it out as plain text, or Delete to drop it. Leave the inspector on an empty session and it just gets discarded. No Pro, no logging, nothing saved at all.
Tips and common mistakes
- The buttons only ever show what the characteristic actually allows. No Read button means that property is not set, not the app hiding something from you.
- BLE multi-byte numbers are usually little-endian. 34 12 in hex reads as 0x1234, not 0x3412.
- A read or write failing often just means the characteristic wants pairing or encryption first. Let iOS handle the pairing prompt, then try again.
- Usually only one connection at a time. Disconnect your own test app, or the other phone, before Periphery can get in.
Questions and answers
What is the difference between notify and indicate?
Can I write text instead of hex?
Why do I see Connecting… and then an error?
Can I read descriptors?
You might also like
More Periphery guides
- How to find a lost Bluetooth device with your iPhone by signal strength
- Using a Bluetooth scanner app on iPhone to list nearby BLE devices
- How to identify an unknown Bluetooth device on iPhone
- BLE UUID lookup on iPhone: find and name a device's service UUIDs
- How to check Bluetooth signal strength on iPhone
- All questions about Periphery
- Back to Periphery