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ổng | Hiện ở đâu | Dùng cho | Có đổ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ây | adb connect | Đổi mỗi lần bật |
| Cổng ghép nối | Trong hộp thoại Ghép nối thiết bị bằng mã ghép nối | adb pair | Đổi mỗi lần mở hộp thoại |
| 5555 | Không hiện | adb 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 tcpipai 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._tcptrê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:
- 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.
- 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.
- 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 servicesKết quả có dạng:
List of discovered mdns services
adb-R58N12ABCDE-x1Yz9q _adb-tls-connect._tcp 192.168.1.20:41237Sau đó kết nối:
adb connect 192.168.1.20:41237Vớ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:5555Cá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.