Created
April 16, 2026 05:14
-
-
Save cyyself/0fd2bcea11ffc4038a7bbef4e8ad8a11 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from pych9329 import HIDController, SerialTransport, CH9329 | |
| import time | |
| PASSWORD = "123456" | |
| def xiaomi_devmode(controller): | |
| # assume it's already in settings | |
| # press arrow down 3x to enter my device menu | |
| for i in range(3): | |
| controller.press("down") | |
| controller.press("enter") | |
| # press arrow down 4x to select os version | |
| for i in range(4): | |
| controller.press("down") | |
| for i in range(7): | |
| controller.press("enter") | |
| # enter password | |
| time.sleep(0.2) | |
| controller.write(PASSWORD) # password | |
| controller.press("enter") | |
| # now return to settings menu | |
| def xiaomi_adb(controller): | |
| # press arrow down to additional settings | |
| for i in range(24): | |
| controller.press("down") | |
| controller.press("enter") | |
| # press arrow down to developer options | |
| for i in range(18): | |
| controller.press("down") | |
| controller.press("enter") | |
| for i in range(18): | |
| controller.press("down") | |
| controller.press("enter") | |
| # press arrow down to usb debugging | |
| def enter_password(controller): | |
| controller.write(PASSWORD) # password | |
| time.sleep(0.4) | |
| def oneplus_devmode(controller): | |
| # press arrow down to about phone | |
| for i in range(17): # about phone | |
| controller.press("down") | |
| controller.press("enter") | |
| time.sleep(0.1) | |
| for i in range(7): | |
| controller.press("down") | |
| controller.press("enter") | |
| time.sleep(0.1) | |
| for i in range(10): | |
| controller.press("enter") | |
| time.sleep(0.1) | |
| controller.write(PASSWORD) # password | |
| # assume in the devmode menu, you should restart to return to settings menu then run oneplus_adb | |
| def oneplus_adb(controller): | |
| # press arrow down to developer options | |
| for i in range(16): # system and updates | |
| controller.press("down") | |
| controller.press("enter") | |
| time.sleep(0.1) | |
| for i in range(8): | |
| controller.press("down") | |
| controller.press("enter") | |
| time.sleep(0.1) | |
| for i in range(14+4): | |
| controller.press("down") | |
| controller.press("enter") | |
| time.sleep(0.05) | |
| for i in range(2): | |
| controller.press("right") | |
| controller.press("enter") | |
| def get_config(transport): | |
| ch9329 = CH9329(transport) | |
| config = ch9329.get_config() | |
| print(config) | |
| def enter_aftersale_page(controller): | |
| controller.press("space") | |
| time.sleep(0.5) | |
| # now at lock screen | |
| controller.press("tab") | |
| controller.press("tab") | |
| controller.press("space") | |
| time.sleep(0.5) | |
| # now at emergency call screen, input 1 to select the input box | |
| controller.press("tab") | |
| controller.press("tab") | |
| controller.press("tab") | |
| controller.press("space") | |
| time.sleep(0.5) | |
| controller.press("backspace") | |
| controller.press("backspace") | |
| time.sleep(0.5) | |
| controller.write("*#899#") | |
| time.sleep(1) | |
| def enter_settings_password(controller): | |
| # scroll down the notification bar | |
| controller.dragRel(0, 100) | |
| time.sleep(0.5) | |
| # move to settings icon and click | |
| controller.moveRel(209, 0) | |
| time.sleep(0.5) | |
| controller.moveRel(0, -40) | |
| time.sleep(0.1) | |
| controller.click() | |
| time.sleep(1) | |
| # Create HID controller | |
| with SerialTransport(port='/dev/cu.usbserial-1130', baudrate=115200) as transport: | |
| controller = HIDController(transport, screen_width=1916, screen_height=2160, mouse_mode="relative") | |
| controller.keypress_hold_time = 0.007 | |
| #get_config(transport) | |
| # step 0: enter settings password | |
| enter_aftersale_page(controller) | |
| enter_settings_password(controller) | |
| # step 1: enter devmode | |
| #enter_password(controller) | |
| #oneplus_devmode(controller) | |
| # step 2: turn on adb | |
| enter_password(controller) | |
| oneplus_adb(controller) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment