You are currently viewing ESP32 giá 7 đô biến iPhone thành máy bị AI điều khiển

ESP32 giá 7 đô biến iPhone thành máy bị AI điều khiển

Một board ESP32-S3 giá khoảng 7 đô, cắm vào iPhone, và để model vision tự bấm máy. Đó là toàn bộ ý tưởng của esp32-iphone-agent. Không cần Mac chạy nền, không cần developer account trả tiền, không jailbreak.

Nghe thì giống mấy demo AI dùng điện thoại trên mạng, nhưng cách nó làm khác hẳn. Board làm AirPlay receiver: nó tự mở hotspot Wi-Fi, hiện lên trong danh sách Screen Mirroring của iPhone với tên ESP32 Agent. Điện thoại mirror màn hình sang board qua Wi-Fi nội bộ, board giữ nguyên luồng H.264 (không decode trên board) rồi chuyển tiếp sang app qua BLE. Trong lúc đó iPhone vẫn dùng cellular data để gọi model, vì Wi-Fi đã bị hotspot của board chiếm rồi.

Phần tay là USB HID. Board giả làm chuột và bàn phím USB chuẩn. Bật AssistiveTouch lên, con trỏ chuột di chuyển trên màn hình, click thành tap, kéo thành swipe. Còn não là một app iOS chạy ngay trên máy đó: nó decode stream, gửi screenshot lên bất kỳ endpoint vision nào tương thích OpenAI, rồi chạy planner và actor để thực hiện tap, swipe, draw, type, press keys, go home, finish.

Vì sao repo này đang hút sao

2.947 sao, tạo ngày 11/10/2026, cập nhật 17/10/2026. Sáu ngày, gần 3k sao. Con số đó nói lên nhu cầu: dân làm agent đang thiếu một môi trường test thật. Mấy cái computer-use agent hiện tại hoặc chạy trong VM với browser giả lập, hoặc cần một con Mac treo 24/7 làm cầu nối. Cả hai đều không giống cảm giác dùng một chiếc iPhone thật, với app thật, notification thật, animation thật.

Chỗ khác biệt nằm ở việc tác giả đã bỏ luôn cái máy tính ra khỏi kiến trúc. Bản đầu tiên (tag v0.1.0, branch legacy) cần Mac hoặc Linux chạy UxPlay cộng Python server. Giờ board tự làm AirPlay receiver, app tự làm agent, chạy nền và hiện trạng thái trên Dynamic Island. Chỉ cần Mac lúc flash board và build app một lần. Lúc chạy thì không.

Chi tiết đáng giá về mặt kỹ thuật: con trỏ chuột là tọa độ tương đối, nên app phải tự track và re-home nó về một góc. Trước mỗi cú tap chính xác, app rung con trỏ, tìm nó trên màn hình rồi bù sai số. Sau mỗi hành động, nó chờ màn hình ổn định rồi báo cho model biết có gì thay đổi. Mất kết nối board, hotspot hay mirroring thì run tạm dừng và resume đúng bước cũ. Mấy thứ này nghe nhỏ nhưng là toàn bộ khác biệt giữa demo và thứ chạy được 10 phút liên tục.

Cài và chạy thử

Phần cứng tối thiểu: một board ESP32-S3 có native USB trên cổng USB-C và PSRAM. Tác giả test với Seeed Studio XIAO ESP32S3 bản thường (8 MB PSRAM, không phải Sense hay Plus). iPhone chạy iOS 18 trở lên, có cellular data. Máy USB-C cắm trực tiếp, máy Lightning cần adapter Lightning to USB Camera. Điện thoại cấp nguồn cho board luôn.

Bước 1, flash board khi đang cắm vào Mac:

arduino-cli lib install "[email protected]"
hardware/flash.sh # optional: [serial port] [--debug]

Cần cài arduino-cli, ESP32 core 3.3.x và NimBLE-Arduino 2.5.x trước đó. Luôn build bằng flash.sh, vì script này áp dụng cấu hình buffer BLE trong hardware/hid_bridge/nimble_cfg.h.

Bước 2, build app:

cp ios/Config/Local.xcconfig.example ios/Config/Local.xcconfig # set DEVELOPMENT_TEAM and IA_BUNDLE_ID
open ios/IPhoneAgent.xcodeproj # run the IPhoneAgent scheme on your iPhone

Project sinh bằng XcodeGen từ ios/project.yml (cd ios && xcodegen). Apple ID miễn phí ký được, nhưng phải re-sign mỗi 7 ngày. Tính năng join hotspot một chạm cần Hotspot Configuration capability, tức tài khoản trả tiền. Không có thì app hiện mật khẩu hotspot để bạn tự vào tay.

Bước 3, setup trong app gồm 4 bước và app tự kiểm tra từng bước: pair board qua Bluetooth, join Wi-Fi của board rồi vào Control Center chọn Screen Mirroring ESP32 Agent, bật AssistiveTouch để app tự calibrate con trỏ, cuối cùng nhập endpoint và key (lưu trong Keychain) rồi chọn vision model từ danh sách model của endpoint.

Bước 4, gõ task. Ví dụ Open Settings and go to Wi-Fi, bấm Start. Dừng từ Dynamic Island hoặc quay lại app. Task đã lưu thì chạy được qua Siri, Shortcuts, widget, Control Center.

Ai nên thử, dùng vào việc gì

Rõ nhất là dân nghiên cứu agent và computer-use. Cần một môi trường mobile thật để benchmark planner/actor thì đây là setup rẻ nhất tôi từng thấy: 7 đô cho phần cứng, phần còn lại là điện thoại bạn đang có.

Nhóm thứ hai là dev app iOS muốn test flow tự động. App ghi lại mọi run trên máy: replay từng bước với tap và swipe vẽ đè lên, export screenshot, action và annotation qua Runs → open a run → ⋯ → Export trace để agent khác phân tích. Có cả batch export và copy qua USB. Cái này tiện cho việc tạo dataset huấn luyện hoặc debug mô hình.

Nhóm thứ ba, mấy ai thích automation kiểu điện thoại tự làm việc mà không muốn mở developer account hay vọc jailbreak. Chỉ cần chấp nhận đánh đổi: trong lúc agent chạy, Wi-Fi của máy bận cho hotspot, màn hình bị mirror liên tục.

Ưu, nhược, và mấy chỗ cần biết trước

Ưu điểm lớn nhất là kiến trúc gọn. Board làm đúng một việc (nhận AirPlay, chuyển tiếp, giả HID), app làm phần còn lại. Không có server trung gian, không có máy tính treo nền. Prompt nằm dạng text thuần trong prompts/ và bundle vào app, sửa xong rebuild là xong, không phải hack qua UI.

Hạn chế thì README nói khá thẳng. Cần Mac với Xcode để flash board và build app một lần, dù lúc chạy không cần. Apple ID miễn phí thì 7 ngày phải ký lại, hơi phiền nếu dùng thường xuyên. Bản XIAO test là bản thường, tác giả ghi rõ không phải Sense hay Plus, và board khác thì should work chứ không đảm bảo. Chuyện con trỏ chuột tương đối phải calibrate cũng là nguồn lỗi tiềm tàng khi màn hình thay đổi độ sáng hay có app can thiệp.

Về license: MIT, thoáng, dùng thương mại được. Độ trưởng thành: repo mới 6 ngày tuổi, có CI, có test cho phần host, nhưng đây vẫn là đồ chơi cho dev chứ chưa phải sản phẩm. Tài liệu khá đủ cho setup cơ bản, còn phần legacy thì đẩy sang docs/legacy.md. README có một cảnh báo nên đọc kỹ: chỉ làm theo hướng dẫn trong README, đừng chạy lệnh từ issue hay comment, kiểu one-liner PowerShell iex(irm ...), vì không phải từ maintainer.

Một chi tiết nhỏ mà tôi thấy đáng ghi nhận: dự án phát triển với nvidia/Qwen3.8-Flash-Next-NVFP4 chạy trên hai DGX Sparks. Tức tác giả test với model cỡ lớn thật, không phải mấy model nhỏ gọn cho vui.

So với lựa chọn khác

Mấy hướng tiếp cận computer-use trên mobile thường dựa vào Appium/XCUITest, tức cần build test runner và developer account, hoặc dùng accessibility API trong app mình viết. Cách của repo này lạ ở chỗ nó không đụng vào app nào cả, chỉ giả lập input ở tầng HID. Đổi lại nó chậm hơn và phụ thuộc vào việc nhận diện màn hình qua vision model. Không có lựa chọn nào tôi biết chắc là tương đương hoàn toàn, nên không so sánh sâu hơn.

Nếu bạn có sẵn một con Mac treo 24/7 và thích UxPlay, bản legacy vẫn còn đó. Nhưng ý tưởng bỏ hẳn cái máy tính ra khỏi vòng lặp là thứ khiến repo này đáng thử. 7 đô cho một board, một lần build, và một môi trường agent chạy trên thiết bị thật. Đó là mức giá rẻ bất ngờ cho một bài test computer-use tử tế. Repo ở đây: onehumanbeing/esp32-iphone-agent.

Đăng ngày 20/10/2026
Giang Na
Về tác giả: Giang Na
Người lập ra blog từ 2015 với những bài về Blogspot. Giờ tập trung vào cách đưa AI vào việc thường ngày, theo hướng thực dụng và dễ làm theo.

Giang Na

Người lập ra blog từ 2015 với những bài về Blogspot. Giờ tập trung vào cách đưa AI vào việc thường ngày, theo hướng thực dụng và dễ làm theo.