BlueSim (iOS)
Introduction
BlueSim is an iOS app that turns your phone into a customizable Bluetooth LE (BLE) peripheral! This enables you to test or debug a separate "central" or "host" device with any data you choose. If you've ever used a Bluetooth scanner app, you can think of BlueSim as its logical counterpart.
How it works
When you use BlueSim, you can start by adding any valid BLE service: GATT or custom. For example, you may choose to add service 0x1822
and characteristic 0x2A5E
. This specific combination typically corresponds with GATT peripherals that measure a person's blood oxygen concentration as a percentage, for health-evaluative purposes. In this case your phone will be set up to simulate the operation of such a device, and it can even be set to respond with values you would expect a pulse oximeter to send!
Use cases
The intended uses for BlueSim revolve around developing and testing other BLE peripherals and centrals.
- Integration testing
- "Isn't there a better way to test my BLE central's interfaces than with unit tests and fake peripherals?"
- Edge case testing
- "How does my app respond if a peripheral transmits data outside of the expected range?"
- Peripheral simulation
- "I don't want to carry bulky hardware with me, but I need a way to simulate a Bluetooth peripheral's interfaces"
- BLE investigation
- "I'd like a hands-on way to learn how a BLE interface transmits data."
Support the project
This project is not my day job. If you would like to accelerate development of a particular feature (or just buy me a coffee), you can support my work through PayPal.
Privacy Policy
Read about the app's privacy policy
Development
Version History
- v3.0.0 - Research (WIP)
- Planned: Refactor app storage
- Planned: Enhanced read/notify/indicate emission abilities...
- v2.2.1 - 2024-03-05
- Changed: Web link updates
- v2.2.0 - 2024-02-22
- Added: There is a new keyboard specifically for writing hexadecimal/binary. You can toggle its use in the Preferences tab.
- Improved: Data input fields can now stretch multiple lines
- Fixed: When editing a filtered text field, the cursor position could get reset to the end of line
- Fixed: Text could overlap with the clear button on the hexadecimal/binary data input fields
- Fixed: A data input field could clip text on some devices
- Other: Accent color tuning
- v2.1.0 - 2024-02-15
- Added: A new toggle in the Preferences tab can be used to prevent the app from sleeping
- v2.0.3 - 2023-12-25
- Fixed: App would crash when broadcsting a service with a 4-byte UUID
- v2.0.2 - 2023-12-18
- Fixed: Some valid custom service and characteristic UUID inputs were not accepted
- Fixed: Service and characteristic UUID inputs were not properly formatting
- Changed: Version changelog moved to the about tab
- Changed: Contact email template now includes the app version
- Changed: Back-end tweaks to support more reliable instrumentation
- v2.0.1 - 2023-10-10 - "New Icon"
- Changed: App icon (art inspired by the shape of antenna spread patterns)
- Changed: Data sharing preference text refined to be more specific
- v2.0.0 - 2023-10-04 - "Low-Profile"
- Changed: UI migrated to a tabbed view to enable new workflows
- Added: Profiles feature - to enable quickly switching between sets of services/characteristics
- Added: Open source attributions
- Changed: Broadcast is now enabled by default on first launch
- Other: Major app logic has been rewritten: improving reliability, enhancing flexibility, and supporting future work
- v1.4.1 - 2023-04-11 - "UI Fixes"
- Changed: Disabled rotation on iPhone since it can break some views
- Fixed: Home view text could go into overflow mode on iPhone mini
- v1.4.0 - Superseded - "Contact Me"
- Added: Contact form to improve communication between developer and user
- Added: Realtime feedback when user resets all preferences
- v1.3.1 - 2023-03-09 - "Don't Suggest Dupes"
- Fixed: App was suggesting GATT services/characteristics that were already added
- Fixed: Updates view on iPhone was a half-sheet, which could cut off text
- v1.3.0 - 2023-03-07 - "Optional Diagnostics"
- Added: An optional diagnostics/crash reporting module, to help with the detection of breaking bugs
- Changed: App Settings was renamed to Preferences, to avoid confusion with the iOS Settings app
- Other: The privacy policy has been updated to reflect the optional diagnostics feature
- v1.2.0 - 2023-02-12 - "Notify and Indicate"
- Added: Characteristic properties to send data via notify and indicate
- Fixed: The app was able to advertise even when the setting was switched off
- Fixed: If characteristic output data was set while in binary-editing mode, changes might not have been saved
- v1.1.0 - 2023-01-16 - "GATT Numbers"
- Added: List of predefined GATT services and characteristics
- Added: Updates screen to display the most recent app changes
- Fixed: Local name updates not saved when using back button
- v1.0.0 - 2023-01-15 - "MVP"
- Customizable local name
- Custom services and characteristics can be set and advertised
- Read and Write properties allowed on characteristics
- Basic logging system helps users keep track of multiple reads/writes
- Stored preferences helps the app start up with the last configurations used
Dev Note: This is a major update I am conceptualizing and working through. It may take some time. Reach out if you need something in the meantime!
Platform targets
- iOS/iPadOS
- Current status: available for download
- iOS app also available for Apple Silicon Macs
- macOS secondary development (Unbegun)
- MacOS-specific UIs
- Intel Mac support
- No development plan for other systems