automates ADB management in Windows, ensuring ADB listens to all TCP (no USB!) devices, handles configurations, and restarts if killed
pip install adbkonnekt
Tested against Windows / Python 3.11 / Anaconda / BlueStacks / LdPlayer / MeMu
ADB
https://developer.android.com/tools/releases/platform-tools
from konfigleser import write_config_file
import sys
import subprocess
# Use a config file:
r"""
[DEFAULT]
outputfolder = C:\stdoutstderradblog
adb_path = C:\ProgramData\chocolatey\lib\adb\tools\platform-tools\adb.exe
shell = False
window_style = Maximized
timeout_check_if_proc_running = 30
kill_running_adb = True
is_alive_sleeptime = 0.05
check_if_alive = True
restart_when_killed = True
auto_connect_devices = True
max_port_number = 5555
adb_port = 5037
adb_executables_to_kill = ('hd-adb.exe', 'adb.exe')
sleep_after_connection_attempt = 0.1
sleep_after_starting_the_process = 1
daemon = False
priority = high
listen_on_all_ports = True
min_port = 5550
no_auto_connect = (8080, 8000, 8888, 1433, 1521, 3306, 5000, 5432, 6379, 27017, 27018, 8443, 3389)
ignore_exceptions = True
new_connection_interval = 30
update_shared_devices_info = 30
"""
# Parameters:
# - adb_path (str): Path to the ADB executable.
# - outputfolder (str): Path to the folder where the output logs will be stored.
# - timeout_check_if_proc_running (Union[int, float]): Timeout duration in seconds to check if the process is running.
# - window_style (Literal['Hidden', 'Maximized', 'Minimized', 'Normal']): Window style for the ADB process.
# - kill_running_adb (bool): Flag to kill any running ADB instances before starting. Default is True.
# - is_alive_sleeptime (Union[int, float]): Time in seconds to sleep while checking if the ADB process is alive.
# - check_if_alive (bool): Flag to check if the ADB process is alive. Default is True.
# - restart_when_killed (bool): Flag to restart ADB if it gets killed. Default is True.
# - auto_connect_devices (bool): Flag to automatically connect devices. Default is True.
# - max_port_number (int): Maximum port number for adb scan. Default is 5555 - ADB scans only one port, and, because
# of that, you get a great speed up .
# - adb_port (int): ADB port number. Default is 5037.
# - adb_executables_to_kill (tuple[str]): Tuple of ADB executable names to kill. Default is ("hd-adb.exe", "adb.exe").
# - sleep_after_connection_attempt (Union[int, float]): Sleep time in seconds after attempting a connection to a client.
# - sleep_after_starting_the_process (Union[int, float]): Sleep time in seconds after starting the ADB process.
# - daemon (bool): Flag to run ADB in daemon mode. Default is False. (if start_server_mode is True -> always daemon)
# - priority (Literal["realtime", "high", "above normal", "normal", "below normal", "low"]): Priority level for the
# ADB process. Default is "above normal".
# - shell (bool): Flag to use shell when starting ADB. Default is True.
# - listen_on_all_ports (bool): Flag to listen on all ports. Default is True. -> fast [re]connect
# - min_port (int): Minimum port number to consider for connections. Default is 5550.
# - no_auto_connect (tuple[int]): Tuple of port numbers to not auto-[re]connect. (HTML, SQL ...)
# - ignore_exceptions (bool): Flag to ignore exceptions and continue execution. Default is True.
# - new_connection_interval (Union[int, float]): Time in seconds to wait between checking new connections. Default is 30. / 0 disables it
# - update_shared_devices_info (Union[int, float]): Time in seconds to update the shared memory dict to get the devices information.
# or a dict and convert it to a config file
adbexe = r"C:\ProgramData\chocolatey\lib\adb\tools\platform-tools\adb.exe"
cfgdata = {
"DEFAULT": {
"outputfolder": "C:\\stdoutstderradblog",
"adb_path": adbexe,
"shell": False,
"window_style": "Maximized",
"timeout_check_if_proc_running": 30,
"kill_running_adb": True,
"is_alive_sleeptime": 0.05,
"check_if_alive": True,
"restart_when_killed": True,
"auto_connect_devices": True,
"max_port_number": 5555,
"adb_port": 5037,
"adb_executables_to_kill": ("hd-adb.exe", "adb.exe"),
"sleep_after_connection_attempt": 0.1,
"sleep_after_starting_the_process": 1,
"daemon": False,
"priority": "high",
"listen_on_all_ports": True,
"min_port": 5550,
"no_auto_connect": (
8080,
8000,
8888,
1433,
1521,
3306,
5000,
5432,
6379,
27017,
27018,
8443,
3389,
),
"ignore_exceptions": True,
"new_connection_interval": 30,
"update_shared_devices_info": 30,
}
}
savepath = "c:\\adb_connection_config.ini"
write_config_file(d=cfgdata, filepath=savepath)
# run the init_file in a subprocess, it creates a completely detached process with powershell (needs elevated/admin rights!!),
# that means you can close this python script here after you see the other console running
p = subprocess.Popen(
[
sys.executable,
r"C:\ProgramData\anaconda3\envs\a0\Lib\site-packages\adbkonnekt\__init__.py", # path is different on your pc
savepath,
],
)
print(p)
# After running the script, you can have access to all device information by using
# from sharedbuiltinmutables import MemSharedDict
# emulatordata = MemSharedDict({}, name="ADBDEVICES", size=4096000)
# print(emulatordata)
# You don't have to be in the same env, even different versions of Python will work.
Metadata
Release files for adbkonnekt 0.14
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| adbkonnekt-0.14.tar.gz | 14.7 kB | Without provenance | Details for adbkonnekt-0.14.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| adbkonnekt-0.14-py3-none-any.whl | Python 3 | none | any | Details for adbkonnekt-0.14-py3-none-any.whl |
Total release size: 30.5 kB
Release files / adbkonnekt-0.14.tar.gz
| Download URL | adbkonnekt-0.14.tar.gz |
|---|---|
| Size | 14.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0307eaf40901219495948c400bba60bc564d00da67cfd8ed583f10e5e7f34c2b
|
|
BLAKE2b-256 checksum How to use checksums |
215e2b0dc022b0d09f9d647261c122998c9d6c76b3677549431064efd0901689
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.7
|
Release files / adbkonnekt-0.14-py3-none-any.whl
| Download URL | adbkonnekt-0.14-py3-none-any.whl |
|---|---|
| Size | 15.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
95e075f35cf188e7496c37479a41cfba84a5b9d96ac585d9dee97008253c3989
|
|
BLAKE2b-256 checksum How to use checksums |
7953e900e45d8c7a79dcf44340d16cad8d762074685b21c7cb90de0863cd4413
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.7
|
Security for adbkonnekt 0.14
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.