1. Bluetooth HID: The No-Signature Shortcut for iOS Automation
Proxy mode works well, but the signed IPA requirement stops many people in their tracks: personal signing expires after 7 days, enterprise signing needs a paid qualification, and re-signing creates ongoing maintenance overhead. Bluetooth HID skips signing entirely — an ESP32C3 dev board emulates a Bluetooth mouse/keyboard, which the phone recognizes as a standard Bluetooth peripheral at the system level. Combined with AssistiveTouch (the floating button), it handles taps, swipes, and text input. No proxy app is installed on the phone, and no signing certificate is involved.
Even more critical is its screenshot mechanism: it does not go through screen mirroring. Most hardware automation solutions on the market rely on screen mirroring to stream frames back to a computer in real time before capturing them; this “video capture” signature is easy for app risk-control systems to identify. The Bluetooth HID solution uses image.captureFullScreenNoAuto to grab a single frame directly from the screen without establishing a mirroring channel, greatly reducing the odds of risk-control detection — this is its core selling point over other hardware solutions.
Looking at the technical chain, the Bluetooth HID solution has three layers: the dev board (hardware layer) emulates a HID device and sends mouse/keyboard events to the phone; the control center (communication layer) talks to the board over serial or WiFi and issues control commands; the script (logic layer) calls the bleEvent family of functions to orchestrate automation flows. The three layers are decoupled, so any layer can be replaced or upgraded independently.
2. Hardware and Firmware Preparation
1. Dev Board Selection
- Model: ESP32C3, mainstream boards work — available on Taobao, Pinduoduo, and 1688;
- Comes in two variants: with and without pre-soldered pins. Flashing needs the USB port, so pick a version with Type-C or Micro-USB;
- The firmware is free — download it from the EasyClick iOS resources folder → USB version → Bluetooth firmware. Be careful not to pick the Android or OTG firmware.
2. Two Coordinate Modes of Firmware
The Bluetooth firmware flashed onto the ESP32C3 comes in relative-coordinate and absolute-coordinate variants, and the choice directly affects how complex your scripts are and how precise your taps are:
| Firmware type | Compatibility | Usage notes | Best for |
|---|---|---|---|
| Relative coordinates | Broad compatibility, covers more system versions | You calculate the compensation rate yourself; call the zeroing function to clear cumulative error | Older systems or compatibility-first setups |
| Absolute coordinates | Good compatibility on iOS 17+ | No compensation rate needed; tap the target coordinates directly for precision | New devices — simpler and more precise |
Recommendation: For new devices, prefer the absolute-coordinate firmware. You skip the compensation-rate calculation and zeroing operations, scripts are simpler, and coordinates don’t drift over long runs. If the device runs below iOS 17, only the relative-coordinate firmware works, paired with periodic bleEvent.resetZero calls.
3. Flashing the Firmware
The flashing process is the same as the Android Bluetooth HID version — use the ESP flashing tool. Key points to watch:
- Make sure you select the iOS USB Bluetooth firmware, not the Android Bluetooth firmware or the OTG firmware;
- After flashing, note down the dev board’s MAC address — both pairing and control-center recognition depend on it;
- Close the control center while flashing, so the serial port isn’t occupied and the flash doesn’t fail.
3. Pairing and Configuration Process
1. Device and Bluetooth Pairing
- Label each board and phone with its Bluetooth MAC address for later management and matching — with dozens of boards mixed together in cluster-control scenarios, labels are essential;
- Open the iOS USB control center, right-click the device → Bluetooth HID Settings → Pair Bluetooth BLE;
- Select the connected serial port (if you can’t find it, uncheck “Show only paired devices” and force-refresh the serial list);
- You can also type the last 8 characters of the Bluetooth MAC directly into the MAC address field — useful when the serial port can’t be recognized;
- After pairing, the “Bluetooth MAC” column in the control-center list shows the bound hardware address, confirming the pairing succeeded.
2. Phone System Configuration (Critical)
Whether Bluetooth HID works at all depends entirely on whether the following system options are correctly enabled. Missing any one can leave the mouse unresponsive or behaving oddly:
- Settings → Accessibility → Touch → AssistiveTouch (the floating button) ON;
- Drag tracking sensitivity all the way left (turtle speed), so the pointer doesn’t move too fast to aim precisely;
- Turn on “Perform Touch Gestures” and “Show Onscreen Keyboard”;
- AssistiveTouch → Mouse Keys: drag Initial Delay and Maximum Velocity all the way left; enable Mouse Keys, Option switching, and Use Main Keyboard;
- General → Trackpad & Mouse → drag Tracking Acceleration all the way left;
- Settings → Accessibility → Keyboards & Typing → Full Keyboard Access ON, and customize shortcuts under “Commands” (the keyboard-shortcut feature depends on this).
These options only need to be configured once and survive a phone restart. If something breaks after a system update, check these options first — they may have been reset.
3. Communication Methods
The board and the control center communicate in two ways — choose as needed:
| Method | Description | Best for |
|---|---|---|
| Serial | USB sends/receives data directly; no extra configuration | Board near the computer, single-device debugging |
| WiFi | Set the SSID and password on the board first (via the control center right-click menu); after restart the control center auto-scans the hardware IP | Board far from the computer, cluster-control setups |
WiFi mode’s advantage is that once provisioned the board no longer needs to be connected to a computer — the control center finds it anywhere on the same LAN, which suits rack-style deployment. Note that the ESP32C3 supports 2.4G WiFi only, not the 5G band.
4. Testing and Verification
After configuration, right-click → Bluetooth HID Settings → Test Bluetooth BLE, then tap “Mouse Move” or “HOME Key”. If the phone reacts, the setup works. If nothing happens, troubleshoot in this order:
- Confirm the phone’s Bluetooth is on and paired with the board;
- Re-check every system option from section 3.2;
- Hold the board’s RST button for 5 seconds, release, and re-pair.
4. Three Fallback Options for Text Input
Bluetooth HID doesn’t install a proxy — so how do you input text? From best to worst, depending on what you have available:
| Option | Requirement | Input method | Experience |
|---|---|---|---|
| Proxy input | Has a proxy IPA | Call inputText directly |
Most direct and efficient |
| Custom keyboard | Installed the EC offline main program | Enable imeApi.forwardImeServer forwarding, then use the imeApi module |
Close to the native keyboard |
| Shortcuts assistant | Desktop assistant app + a Shortcut | Request the computer endpoint → copy to clipboard → paste | Fiddly to set up, but reusable |
Full flow of the third option (Shortcuts assistant):
- Download and run the iOS Shortcuts Assistant on the computer;
- Create a Shortcut on the phone that requests
http://<computer IP>:8696to fetch the content; - Add a vibrate device action in the Shortcut so it can still fetch data and place it on the clipboard in the background;
- Call back the
sucendpoint to tell the program the request succeeded; - In “Full Keyboard Access → Commands”, bind a keyboard shortcut to this Shortcut;
- In the control center, right-click → Bluetooth HID Settings → Add Keyboard Shortcut, and bind the same key combination;
- In the script, trigger that shortcut with
bleEvent.keyPressCharto complete the text input.
The setup is fiddly, but once configured it can be shared with other phones — a practical fallback in no-signature scenarios.
5. Keyboard Shortcuts and Script Integration
1. Binding Keyboard Shortcuts
Bluetooth HID triggers system-level commands by emulating keyboard keys:
- In the control center, right-click → Bluetooth BLE Settings → Add Keyboard Shortcut;
- Pick the modifier
gui+ a character (e.g., gui+b opens Notification Center, gui+u triggers the Shortcut); - Shortcuts, Notification Center, Control Center, App Switcher, and other system commands can all be bound this way.
2. Calling from Scripts
// Trigger the bound keyboard shortcut
bleEvent.keyPressChar('b'); // triggers gui+b
// Screenshot (no screen mirroring)
const img = image.captureFullScreenNoAuto();
// Pre-capture mode, faster for frequent screenshots
image.startPreCapScreen();
3. Screenshots and Recognition Capabilities
Under Bluetooth HID, every recognition capability works normally except the node feature:
| Capability | Available | Notes |
|---|---|---|
| OCR text recognition | Yes | Reads on-screen text from screenshots |
| YOLO object detection | Yes | Needs a model file |
| Image color / color-finding | Yes | Regular color and multi-point color finding |
| Template matching | Yes | Locates a target image inside a screenshot |
| Node feature | No | Requires the proxy IPA |
6. Troubleshooting and Common Misconceptions
1. Troubleshooting Table
| Symptom | Fix |
|---|---|
| Bluetooth won’t connect | Hold the board’s RST button for 5 seconds, release, and reconnect; ignore the device in phone Bluetooth settings and pair again; disconnect and ignore the old device before re-pairing |
| Mouse drifting / inaccurate | Re-check the phone system options; call bleEvent.resetZero to zero the position; set the scale ratio with getIPhoneScale; configure the matching screen dimensions when switching between landscape and portrait |
| Serial port not found | Uncheck “Show only paired devices” and force-refresh the serial list; or enter the last 8 characters of the MAC directly |
| Control center reports an abnormal wireless serial name | Restart the control center; after flashing, close the flashing tool before reopening the control center |
| Board fails to provision WiFi | Confirm the WiFi password; use a 2.4G network (the ESP32C3 doesn’t support 5G); restart the board and rescan the IP |
2. Dev Board LED Indicator Quick Reference
| LED pattern | Meaning |
|---|---|
| Steady on for 3 seconds during pairing, then off | Pairing succeeded |
| Slow blinking 10 times | Bluetooth link lost |
| Fast blinking 15 times | Searching for Bluetooth |
3. Common Misconceptions
- Misconception: Bluetooth HID can fully replace proxy mode. It can’t. Advanced features such as node-based element fetching and photo-album insertion still require the proxy IPA. Bluetooth HID is positioned as a no-signature, low-risk tap/swipe solution;
- Misconception: absolute-coordinate firmware is always better than relative. Absolute coordinates are only precise on iOS 17+; older devices still need the relative-coordinate firmware;
- Misconception: AssistiveTouch sensitivity doesn’t need to be all the way left. Many beginners skip this step and end up with a pointer that moves too fast to aim;
- Note: Bluetooth channel congestion in cluster-control setups. More than 10 boards working in the same space can cause Bluetooth interference — switch to the wired OTG HID solution or deploy the boards in separate zones.
7. FAQ
Q1: How does the Bluetooth HID solution work? A: After flashing firmware onto an ESP32C3 dev board, it emulates a Bluetooth mouse/keyboard. Once system options such as AssistiveTouch are enabled, the phone can be controlled — no proxy IPA is installed and no signing is involved.
Q2: Does Bluetooth HID require installing a proxy IPA?
A: No. That is the core advantage of this solution — no-signature, no proxy, and no certificate maintenance costs. Screenshots use image.captureFullScreenNoAuto and bypass screen mirroring, which greatly reduces risk control detection.
Q3: Which iOS versions does Bluetooth HID support? A: The Bluetooth solution works through the system AssistiveTouch / Full Keyboard Access, with good compatibility on iOS 18+. Firmware comes in relative-coordinate and absolute-coordinate variants; absolute coordinates give more precise taps on iOS 17+.
Q4: How many phones can one dev board control? A: One dev board can only pair with one phone, and the Bluetooth name is hidden automatically after pairing to avoid detection. Multiple phones require multiple boards; it is recommended to label each board and phone with its MAC address for easy matching.
Q5: Can Bluetooth HID work with scripts?
A: Yes. Scripts can use image.captureFullScreenNoAuto or image.startPreCapScreen for faster pre-captured screenshots. OCR, YOLO, image color, and template matching all work; only the node feature is unavailable.
Q6: How do I choose between relative-coordinate and absolute-coordinate firmware?
A: For new devices on iOS 17+, prefer the absolute-coordinate firmware — no compensation-rate calculation, precise taps, and no drift over long runs. On systems below iOS 17, only the relative-coordinate firmware works, paired with periodic bleEvent.resetZero calls to handle cumulative error.
Q7: What communication methods does the dev board support? A: Two: serial and WiFi. Serial sends and receives over USB with no extra configuration, good for single-device debugging. WiFi needs the SSID and password set in the control center right-click menu; after a restart it auto-scans the hardware IP, and the board no longer needs to be connected to a computer — suited to rack-style cluster control deployment.
Q8: Can Bluetooth HID be used for cluster control? A: Yes — pair one board per phone and manage them in bulk from the control center. However, more than 10 boards in the same space may cause Bluetooth channel interference; in that case switch to the wired OTG HID solution or deploy the boards in separate zones to reduce interference.
Q9: What do the dev board LED indicators mean? A: Steady on for 3 seconds then off during pairing means pairing succeeded; slow blinking 10 times means the Bluetooth link is lost; fast blinking 15 times means it is searching for Bluetooth. When something goes wrong, read the LED state first before troubleshooting.
About EasyClick: A phone automation AI-agent platform covering Android no-root, iOS no-jailbreak (proxy / Bluetooth HID / OTG HID) and HarmonyOS Next, offering script development, Apple cluster control, local central control & mirroring, and cloud control systems. → Explore all products
Ready to build it for real?
Every approach in this article can be built on the EasyClick phone automation platform — full documentation, developer tools and cluster/cloud-control products, free to try.