Giải thíchĐăng ngày: 5 phút đọc

Vì sao cổng Gỡ lỗi không dây đổi liên tục và cách xử lý

Cổng Gỡ lỗi không dây đổi mỗi lần bật lại hoặc khởi động lại máy. Giải thích lý do, cách tìm cổng bằng adb mdns services và cách giữ cổng cố định bằng adb tcpip.

Cổng của Gỡ lỗi không dây thay đổi mỗi lần bạn bật nó lên, kể cả sau khi khởi động lại điện thoại, vì Android chọn ngẫu nhiên một cổng trống cho adbd thay vì dùng cổng cố định 5555 như trước. Đây là chủ ý thiết kế, không phải lỗi. Ghép nối vẫn giữ nguyên, bạn chỉ cần biết cổng mới, và có ba cách: nhìn trên màn hình, để adb mdns services tìm giùm, hoặc dùng một công cụ tự tìm như ADB Kit.

Ba con số dễ nhầm

Màn hình Gỡ lỗi không dây có hai cổng khác nhau, cộng thêm cổng 5555 của kiểu cũ:

CổngHiện ở đâuDùng choCó đổi không
Cổng kết nốiĐịa chỉ IP và cổng ở đầu màn hình Gỡ lỗi không dâyadb connectĐổi mỗi lần bật
Cổng ghép nốiTrong hộp thoại Ghép nối thiết bị bằng mã ghép nốiadb pairĐổi mỗi lần mở hộp thoại
5555Không hiệnadb tcpip kiểu cũCố định, mất sau khi khởi động lại

Nhầm cổng ghép nối với cổng kết nối là lỗi phổ biến nhất. adb connect vào cổng ghép nối sẽ thất bại.

Vì sao Android làm vậy

  • Tránh cổng dễ đoán. Cổng 5555 của adb tcpip ai cũng biết, nên công cụ quét mạng thường dò nó. Một cổng ngẫu nhiên trong dải cao (thường 30000 đến 45000) khó bị dò hơn.
  • Tránh xung đột. Cổng được cấp phát động sẽ không trùng với ứng dụng khác đang dùng.
  • Có mDNS để tìm lại. Android quảng bá dịch vụ _adb-tls-connect._tcp trên mạng nội bộ. Máy tính hay ứng dụng không cần biết trước cổng, chỉ cần hỏi mạng.

Cổng mới được chọn khi: bạn bật lại Gỡ lỗi không dây, điện thoại khởi động lại (và bạn bật lại), hoặc máy đổi mạng Wi-Fi rồi bật lại.

Cách 1: ADB Kit tự tìm cổng (trên chính điện thoại)

ADB Kit kết nối tới adb của chính điện thoại qua Gỡ lỗi không dây. Bạn không bao giờ gõ cổng:

  1. Ghép nối một lần ở tab Home bằng Bắt đầu ghép nối và mã trong thông báo.
  2. Khi bạn bật lại Gỡ lỗi không dây, ADB Kit tra dịch vụ trên mạng, thấy cổng mới và tự kết nối lại.
  3. Nếu kết nối rớt khi bạn đang dùng, chỉ cần nhấn Kết nối lại.

Điều này cũng áp dụng cho điện thoại khác bạn đã thêm bằng Thêm máy: nếu cổng của máy đó đổi, ADB Kit tìm lại máy theo tên dịch vụ hoặc địa chỉ trước khi kết nối.

Cách 2: adb mdns services trên máy tính

Từ platform-tools bản 30 trở lên, adb tự liệt kê thiết bị đang quảng bá:

adb mdns check
adb mdns services

Kết quả có dạng:

List of discovered mdns services
adb-R58N12ABCDE-x1Yz9q  _adb-tls-connect._tcp  192.168.1.20:41237

Sau đó kết nối:

adb connect 192.168.1.20:41237

Với thiết bị đã ghép nối, adb trên máy tính thường tự kết nối khi thấy dịch vụ này, nên đôi khi bạn chỉ cần chạy adb devices. Nếu adb mdns check báo không có mDNS, hãy thử biến môi trường ADB_MDNS_OPENSCREEN=1 trước khi khởi động adb server, hoặc kiểm tra tường lửa có chặn UDP 5353 không.

Mạng công ty, Wi-Fi khách và router bật AP isolation thường chặn mDNS. Khi đó bạn quay về cách đọc cổng trên màn hình.

Cách 3: cố định cổng 5555 bằng adb tcpip

Sau khi đã kết nối (qua USB hoặc qua Gỡ lỗi không dây), bạn có thể bảo adbd nghe thêm trên cổng cố định:

adb tcpip 5555
adb connect 192.168.1.20:5555

Cái giá phải trả:

  • Không mã hóa, không cần ghép nối. Ai trên cùng mạng cũng thử kết nối được, chỉ còn hộp thoại "Cho phép gỡ lỗi USB?" ngăn lại.
  • Mất sau khi khởi động lại. Bạn phải chạy lại adb tcpip 5555, thường từ máy tính.
  • Trên Android 11+ vẫn cần Gỡ lỗi không dây hoặc USB để chạy lệnh đầu tiên.

ADB Kit cũng có Kết nối bằng địa chỉ IP trong Cài đặt, để kết nối tới 127.0.0.1:5555 trên máy Android 10 trở xuống sau khi bạn đã chạy adb tcpip 5555 từ máy tính. Với Android 11+, cứ dùng Gỡ lỗi không dây và để ứng dụng tự tìm cổng là đơn giản và an toàn hơn. So sánh chi tiết trong adb tcpip và Gỡ lỗi không dây.

Câu hỏi thường gặp

Có cài đặt nào để chọn cổng cố định cho Gỡ lỗi không dây không? Không. Android không có tùy chọn nào để chọn cổng, mỗi lần bật là một cổng do hệ thống cấp.

Cổng đổi thì có phải ghép nối lại không? Không. Ghép nối gắn với khóa của thiết bị, không gắn với cổng.

Tại sao adb devices hiện hai dòng cho cùng một máy? Một dòng là IP:cổng bạn tự adb connect, dòng kia là tên mDNS adb tự kết nối. Chạy adb disconnect cho dòng thừa.

Connection refused sau khi bật lại? Bạn đang dùng cổng cũ. Xem sửa lỗi Connection refused.

Tóm lại

Cổng đổi là để an toàn hơn. Đừng cố "khóa" nó, hãy dùng công cụ biết tìm cổng: adb mdns services trên máy tính, hoặc ADB Kit ngay trên điện thoại. Chỉ dùng adb tcpip 5555 trên mạng bạn tin tưởng, và tắt nó bằng cách khởi động lại máy khi xong việc.