iOSBluetooth HIDNo-Jailbreak

iOS No-Jailbreak Bluetooth HID Automation: Run Scripts Without a Proxy IPA

A complete guide to iOS no-jailbreak automation via Bluetooth HID: an ESP32C3 dev board delivers no-signature, proxy-free control, with no-screen-mirror screenshots to reduce risk control detection. Covers firmware selection, pairing configuration, keyboard shortcuts, and troubleshooting.

11 min read

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:

  1. Make sure you select the iOS USB Bluetooth firmware, not the Android Bluetooth firmware or the OTG firmware;
  2. After flashing, note down the dev board’s MAC address — both pairing and control-center recognition depend on it;
  3. 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

  1. 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;
  2. Open the iOS USB control center, right-click the device → Bluetooth HID Settings → Pair Bluetooth BLE;
  3. Select the connected serial port (if you can’t find it, uncheck “Show only paired devices” and force-refresh the serial list);
  4. 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;
  5. 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:

  1. Confirm the phone’s Bluetooth is on and paired with the board;
  2. Re-check every system option from section 3.2;
  3. 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):

  1. Download and run the iOS Shortcuts Assistant on the computer;
  2. Create a Shortcut on the phone that requests http://<computer IP>:8696 to fetch the content;
  3. Add a vibrate device action in the Shortcut so it can still fetch data and place it on the clipboard in the background;
  4. Call back the suc endpoint to tell the program the request succeeded;
  5. In “Full Keyboard Access → Commands”, bind a keyboard shortcut to this Shortcut;
  6. In the control center, right-click → Bluetooth HID Settings → Add Keyboard Shortcut, and bind the same key combination;
  7. In the script, trigger that shortcut with bleEvent.keyPressChar to 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

  1. 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;
  2. 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;
  3. 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;
  4. 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.

Visit EasyClick →