Vô hiệu hóa sạc USB


22

Vì một số lý do không liên quan đến thời lượng pin, tôi cần phải vô hiệu hóa việc sạc pin khi máy chủ USB được kết nối với điện thoại của tôi (Nexus 4 đã root). Nhìn qua trên internet ( link1 , link2 ), có vẻ như tôi nên sửa đổi một tệp hệ thống. Tôi đã tìm thấy một loạt các tệp thú vị nằm trong đó /sys/class/power_supply/battery/sys/class/power_supply/usbđó có thể là những tệp phù hợp để được sửa đổi để đạt được việc vô hiệu hóa sạc USB (ví dụ /sys/class/power_supply/usb/present 0/1).

Có ai đã thử một cái gì đó như thế (điều khiển sạc usb qua phần mềm và sửa đổi các tệp hệ thống như vậy)? Đó là cách tốt nhất để sửa đổi các tập tin hệ thống? Tôi nên sử dụng shell adb hoặc công cụ khác?

Tôi đã thử ứng dụng "khám phá root" để sửa đổi các tệp đó, tuy nhiên khi tôi sửa đổi một tệp (sau khi thay đổi quyền của nó), nó sẽ tự động được giữ lại giá trị ban đầu.


2
Mặc dù điều này có thể hoặc không thể đóng góp cho câu hỏi, tôi tò mò về lý do tại sao bạn muốn tắt sạc USB.
dotVezz

Những gì tôi có ở đây là một cái gì đó tương tự như một hệ thống nhúng: điện thoại (PHỤ KIỆN USB) và một phần cứng (USB HOST), được kết nối qua USB. Pin điện thoại cung cấp phần cứng kèm theo thông qua một kết nối cụ thể (Vdd). Tuy nhiên, USB HOST được cho là cung cấp (hoặc sạc) điện thoại thông qua dòng VBUS của USB. Điều tôi muốn tránh là một vòng sạc giữa điện thoại và phần cứng kèm theo. Mặc dù phần cứng kèm theo là HOST, nhưng nó là điện thoại Android cung cấp cho toàn bộ hệ thống. Hy vọng lời giải thích của tôi đã rõ ràng với bạn.
STiLLeN

2
/ sys là một hệ thống tệp ảo trong đó kernel hiển thị các nút và chuyển đổi để thay đổi và tra cứu cấu hình kernel. Bạn không thể thay đổi quyền truy cập tập tin. Tôi đoán điện thoại nexus của bạn đã được mở khóa và root. Mạch sạc có thể dựa trên chip Maxim có thể được cấu hình. Có các hạt nhân thay đổi có sẵn cho phép ghi đè phát hiện để sạc điện. Điều ngược lại cũng nên có thể. Bạn có thể cần phải vá và biên dịch lại kernel.
ce4

1
Hạt nhân Franco cho nexus 4 cho phép sạc nhanh, nguồn có sẵn. có lẽ bạn có thể xem nó và tìm ra cách tắt nó đi: github.com/franciscofranco
ce4

Câu trả lời:


7

Tôi vừa thử và thấy rằng bạn cần sửa đổi một tệp:
sys/class/power_supply/usb/device/charge

nội dung mặc định của nó là '1' có nghĩa là 'bật sạc', bạn cần đặt thành '0' để 'vô hiệu hóa tính phí'

$ su

$ echo 0 > /sys/class/power_supply/usb/device/charge

Tôi đã thử nghiệm trên Nexus 4 và nó hoạt động thành công.


Tôi có thể xác nhận rằng nó echo 0 > /sys/class/power_supply/battery/charging_enabledhoạt động với tôi, trên Sony Z1 Compact với CM11. Cám ơn rất nhiều! :)
seanlano

Xin lưu ý rằng giao diện / sys là ảo và không tiếp tục khởi động lại
kevinf

3
adb shell dumpsys battery set ac 0; dumpsys battery set usb 0;

2

Tôi không chắc liệu nó có hoạt động với bộ sạc điện thoại cụ thể của bạn hay không, nhưng thường với các dây cáp truyền cả nguồn và dữ liệu, có các dây riêng biệt bên trong cáp để cấp nguồn và dữ liệu.

Tôi không đặc biệt quan tâm đến việc xé bộ sạc điện thoại của mình để xác nhận ý tưởng của mình, nhưng bạn có thể thử tước một phần của cáp, xác định và cắt dây điện bên trong cáp và quấn lại bằng băng keo điện.

Có thể có một cách dễ dàng hơn để làm điều này, nhưng tôi không biết về nó.


Có 4 chân trong USB nói chung - 2 cho nguồn 5v và 2 cho dữ liệu.
NoBugs

1
Nếu bạn cắt Vbus và Ground, nó cũng sẽ ngăn các dòng dữ liệu hoạt động. Kết nối cáp USB được phát hiện từ nguồn điện (xem đầu nối A, các chân nguồn dài hơn một chút để chúng sẽ kết nối trước).
diidu

1

Tôi khá chắc chắn rằng đó không phải là thứ bạn có thể thay đổi trong phần mềm vì điện thoại sẽ sạc khi cắm vào cổng USB của máy tính. Bạn có thể cần phải làm bẩn tay và rút ngắn một hoặc hai kết nối trên chính điện thoại.


Có nó cũng có thể được thực hiện thông qua phần mềm. Nhìn vào ứng dụng này để biết điểm dừng Nexus 4 đã root
STiLLeN

1

Bạn có thể sử dụng adb shell dumpsys pin đặt usb 0; // để vô hiệu hóa sạc USB và

vỏ adb dumpsys pin đặt usb 1; // để bật sạc USB


1
Điều này là dễ dàng, nhưng tiếc là nó không vô hiệu hóa tính phí. Nó chỉ làm cho nó trông giống như nó bị vô hiệu hóa.
diidu

0

Bạn có thể giải quyết vấn đề trong phần cứng bằng cách sửa đổi các chân ở phía đầu nối micro-USB. Một cách rõ ràng là không kết nối Chân số 1 (VBUS) và cách khác là nối đất Chân số 4 (ID) để giả vờ máy chủ (PC) của bạn là một thiết bị OTG. Nếu bạn làm điều đó, bạn phải ngắt kết nối Pin # 1 (VBUS) nếu không, cả hai, nếu không cả hai, thiết bị của bạn sẽ bị cháy.

Đối với giải pháp dòng lệnh, bạn chỉ cần tìm đúng /sys/...tệp (phụ thuộc thiết bị) để chơi. Nhưng như đã đề cập, bạn cần quyền truy cập ghi và quyền root để thay đổi những điều này và bất cứ điều gì bạn làm sẽ chỉ kéo dài cho đến khi khởi động lại hoặc thay đổi thiết bị ngoại vi USB tiếp theo.


2
Các giải pháp phần cứng được đề xuất là không chính xác. Hầu như mọi điện thoại Android ngoài kia đều có một thiết bị USB được cấp nguồn từ máy chủ USB (ví dụ: máy tính xách tay), do đó hoạt động ở chế độ Phụ kiện. Nếu bạn cắt đường VBUS, giao tiếp dữ liệu USB sẽ ngừng hoạt động. Tôi đã thử nghiệm điều này bản thân mình. Tôi sẽ nói tương tự cho cách khác (pin ID) mặc dù tôi đã không kiểm tra nó. Bạn đã đúng về giải pháp phần mềm, tuy nhiên không phải tất cả các điện thoại Android đều có các /sys/...tệp cần thiết để làm như vậy (Nexus 4 có, Nexus 5 không). Một giải pháp khác là thay đổi hành vi của trình điều khiển sạc vào kernel.
STiLLeN

0

Tương tự như op, Host của tôi được kết nối qua USB cũng được kết nối dưới dạng pin giả. Không thể đơn giản sử dụng cáp USB và không có pin, android sẽ không khởi động và usb cũng không cung cấp đủ dòng điện.

Bạn không thể sửa lỗi này trong phần mềm vì Android sẽ sử dụng Vbus trong khi khởi động. Trừ khi bạn cũng muốn hack mã bootloader.

Mạch sạc cần được sửa đổi để tránh sạc usb so với vòng lặp điện áp pin.

Tôi đã xác nhận trên Galaxy S3, nó yêu cầu bus 5V để kích hoạt dữ liệu (d + d-), đây là một phần của chuẩn USB.

OTG có thể giải quyết vấn đề bằng điện nhưng sau đó các quy tắc máy khách không chính xác. Ngoài ra điện thoại này có thể OTG và sạc (tôi sử dụng cáp y + gamepad)

Chỉnh sửa tài liệu tham khảo: https://forum.xda-developers.com/showthread.php?t=1863303


Sẽ cập nhật khi tôi tìm ra các thay đổi mạch sạc
kevinf

0

Tôi hỏi đồng nghiệp của tôi, một chuyên gia về trình điều khiển pin. Trên Nut Pro 2 của chúng tôi, có phiên bản kernel là 4.4,21, nút bật / tắt sạc pin là : /sys/class/power_supply/battery/input_suspend.


0

bạn luôn có thể sử dụng một diode shottky giữa pin 1 với mặt chặn về phía phụ kiện. bằng cách đó, chân người ta nhận được tín hiệu 5v để giao tiếp hoạt động, nhưng sẽ KHÔNG có dòng điện chạy từ điện thoại đến điện thoại của bạn. hoặc nếu bạn muốn nó theo cách khác chỉ cần đặt diode theo hướng khác.


-1

Không, không thể trên các thiết bị chưa được root. Nó sử dụng Cài đặt. Hệ thống với ADB_ENABLED, nhưng ADB_ENABLED là Cài đặt hệ thống an toàn mà ứng dụng không thể thay đổi.

Có, nó có thể được thực hiện trên điện thoại đã root.

Cần phải có sự cho phép của ERIC.WRITE_SECURE_SETTINGS. Tôi biết bạn sẽ hỏi tôi làm như thế nào: Đây là liên kết cho một ứng dụng tương tự: https://play.google.com/store/apps/details?id=com.jim2&hl=vi


1
Điều gì đã ADB_ENABLEDlàm với sạc USB? Ứng dụng bạn liên kết có cho phép tắt sạc USB không?
Dan Hulme

Ứng dụng này cho phép bạn tắt tính năng sạc usb sau khi bạn thay đổi cài đặt bảo mật.
Ravindra Sahay

"Loại"? Các bước để làm theo là gì?
Dan Hulme
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.