{"id":51025406,"url":"https://github.com/adeondev/ds4wifi","last_synced_at":"2026-06-21T19:01:56.685Z","repository":{"id":364437638,"uuid":"1267925913","full_name":"adeondev/ds4wifi","owner":"adeondev","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-13T01:40:35.000Z","size":1080,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-13T03:22:55.147Z","etag":null,"topics":["android","controller","ds4","ds4windows","emulation","gamepad","kotlin","low-latency","python","vgamepad","vigembus","wifi"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adeondev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-13T01:30:57.000Z","updated_at":"2026-06-13T03:04:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/adeondev/ds4wifi","commit_stats":null,"previous_names":["adeondev/ds4wifi"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/adeondev/ds4wifi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adeondev%2Fds4wifi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adeondev%2Fds4wifi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adeondev%2Fds4wifi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adeondev%2Fds4wifi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adeondev","download_url":"https://codeload.github.com/adeondev/ds4wifi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adeondev%2Fds4wifi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34622271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","controller","ds4","ds4windows","emulation","gamepad","kotlin","low-latency","python","vgamepad","vigembus","wifi"],"created_at":"2026-06-21T19:01:55.931Z","updated_at":"2026-06-21T19:01:56.677Z","avatar_url":"https://github.com/adeondev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"logo.png\" alt=\"DS4Wifi Logo\" width=\"200\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eDS4Wifi Controller\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eUse seu DualShock 4 sem fio — do seu celular Android para o PC.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#features-en\"\u003e\u003cimg src=\"https://img.shields.io/badge/Platform-Windows%2010%2B-0078D6?style=flat-square\u0026logo=windows\" alt=\"Windows 10+\"\u003e\u003c/a\u003e\n  \u003ca href=\"#features-en\"\u003e\u003cimg src=\"https://img.shields.io/badge/Platform-Android-3DDC84?style=flat-square\u0026logo=android\u0026logoColor=white\" alt=\"Android\"\u003e\u003c/a\u003e\n  \u003ca href=\"#tech-stack-en\"\u003e\u003cimg src=\"https://img.shields.io/badge/Python-3.10%2B-3776AB?style=flat-square\u0026logo=python\u0026logoColor=white\" alt=\"Python 3.10+\"\u003e\u003c/a\u003e\n  \u003ca href=\"#tech-stack-en\"\u003e\u003cimg src=\"https://img.shields.io/badge/Kotlin-2.0-7F52FF?style=flat-square\u0026logo=kotlin\u0026logoColor=white\" alt=\"Kotlin\"\u003e\u003c/a\u003e\n  \u003ca href=\"#license-en\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-green?style=flat-square\" alt=\"MIT License\"\u003e\u003c/a\u003e\n  \u003ca href=\"#tech-stack-en\"\u003e\u003cimg src=\"https://img.shields.io/badge/Protocol-TCP%2FJSON-FF6F00?style=flat-square\" alt=\"TCP/JSON\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/ViGEmBus-Required-critical?style=flat-square\" alt=\"ViGEmBus Required\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Latency-Optimized-brightgreen?style=flat-square\" alt=\"Low Latency\"\u003e\n\u003c/p\u003e\n\n---\n\n## Idiomas / Languages\n- [Português (Brasil)](#versão-em-português)\n- [English](#english-version)\n\n---\n\n## Versão em Português\n\n### Descrição\n\nO DS4Wifi permite que você use o seu celular Android como uma ponte sem fio para conectar seu controle DualShock 4 ao computador. Ao conectar o controle físico no celular via USB ou Bluetooth, o DS4Wifi transmite os comandos através da rede local (ou via cabo usando ADB reverse) para o computador, onde um controle virtual de PS4 é criado através do driver ViGEmBus.\n\nO projeto é composto por duas partes principais:\n\n| Componente | Localização | Descrição |\n|-----------|----------|-------------|\n| **Android App** | `android/` | Aplicativo em Kotlin que lê os comandos do controle conectado ao celular e envia via TCP |\n| **PC Server** | `pc/` | Servidor em Python com interface em terminal (Rich) que recebe os pacotes e emula o controle de PS4 |\n\nO computador reconhece o dispositivo como um DualShock 4 padrão, o que significa que funciona com compatibilidade total nos jogos, incluindo vibração física repassada do PC de volta para o controle conectado ao celular.\n\n### Funcionalidades\n\n- Emulação completa de DualShock 4 (botões, analógicos, gatilhos e direcional).\n- Transmissão de comandos em tempo real por rede local ou cabo USB (via ADB reverse).\n- Suporte a vibração nativa em jogos compatíveis.\n- Interface simples estilo terminal no servidor de PC com suporte a inglês, português e espanhol.\n- Leitura do nível de bateria do controle exibida tanto no celular quanto no dashboard do PC.\n- Otimização de latência usando canais assíncronos em Kotlin e TCP_NODELAY.\n- Executável autônomo (.exe) para o servidor do PC, sem necessidade de instalar o Python.\n\n### Requisitos\n\n#### Computador (PC)\n- Windows 10 ou mais recente.\n- Driver do ViGEmBus instalado no sistema.\n- Python 3.10+ (apenas se for rodar o código-fonte manualmente).\n\n#### Celular (Android)\n- Android com suporte a USB OTG.\n- Um controle DualShock 4.\n\n#### Conexão\n- Opção A: Cabo USB ligando o celular ao PC (usando ADB reverse para menor latência).\n- Opção B: Celular e PC conectados na mesma rede sem fio (WiFi).\n\n### Como Instalar\n\n#### Servidor no PC\n\n**Opção 1 (Executável pré-compilado):**\nExecute o arquivo `DS4WifiServer.exe` localizado dentro da pasta `pc/`. Não é necessário instalar nenhuma outra dependência além do driver ViGEmBus.\n\n**Opção 2 (Código fonte):**\n```bash\n# Instale as dependências necessárias\npip install vgamepad rich\n\n# Inicie o servidor\npython pc/server.py\n```\n\n#### Aplicativo Android\n\nCompile o código do projeto usando o Gradle ou abra a pasta no Android Studio:\n```bash\ncd android\n./gradlew assembleDebug\n```\nDepois, instale o arquivo APK gerado no seu aparelho.\n\n### Como Usar\n\n1. Certifique-se de ter instalado o driver do ViGEmBus no Windows.\n2. Conecte o controle DualShock 4 ao celular via cabo OTG ou Bluetooth.\n3. Conecte o celular ao computador:\n   - Se for usar WiFi: Garanta que ambos estão na mesma rede.\n   - Se for usar cabo: Ative a depuração USB e rode o servidor do PC, que fará o redirecionamento de porta automaticamente.\n4. Execute o `DS4WifiServer.exe` no computador (ou rode via script Python).\n5. Escolha o idioma no console do PC e inicie o servidor.\n6. Abra o aplicativo DS4Wifi no celular. Ele tentará se conectar de forma automática. Caso a conexão falhe, ele repetirá o processo a cada 2 segundos até conseguir parear.\n\n---\n\n## English Version\n\n### Description\n\nDS4Wifi allows you to use your Android phone as a wireless bridge to connect your DualShock 4 controller to your PC. By connecting the physical controller to the phone, DS4Wifi streams the input packets over the local network (or via USB cable using ADB reverse) to the computer, where a virtual PS4 controller is created using the ViGEmBus driver.\n\nThe project is split into two components:\n\n| Component | Location | Description |\n|-----------|----------|-------------|\n| **Android App** | `android/` | Kotlin application that captures gamepad events and streams them over a TCP socket |\n| **PC Server** | `pc/` | Python server with a terminal interface (Rich) that receives the packets and emulates a virtual DualShock 4 |\n\nGames see a native DualShock 4 device, meaning full compatibility, including rumble support sent back from PC games directly to the controller on your phone.\n\n### Features\n\n- Complete DualShock 4 emulation (buttons, axes, triggers, and D-pad).\n- Real-time streaming over local WiFi or USB cable (via ADB reverse).\n- Native rumble/vibration feedback support.\n- Clean terminal UI for the PC server with English, Portuguese, and Spanish language options.\n- Real-time controller battery level reporting displayed on both client and server UIs.\n- Latency optimizations using Kotlin Channels and TCP_NODELAY.\n- Pre-compiled standalone executable (.exe) for the PC server.\n\n### Requirements\n\n#### PC\n- Windows 10 or newer.\n- ViGEmBus driver installed.\n- Python 3.10+ (only required if running from the source code).\n\n#### Android\n- Android device with USB OTG support.\n- DualShock 4 controller.\n\n#### Connection\n- Option A: USB connection using ADB reverse (recommended for lowest latency).\n- Option B: Both devices connected to the same local WiFi network.\n\n### Installation\n\n#### PC Server\n\n**Option 1 (Pre-compiled Executable):**\nRun the `DS4WifiServer.exe` file located inside the `pc/` folder.\n\n**Option 2 (Source Code):**\n```bash\n# Install dependencies\npip install vgamepad rich\n\n# Run the server\npython pc/server.py\n```\n\n#### Android App\n\nBuild the project from source:\n```bash\ncd android\n./gradlew assembleDebug\n```\nThen install the generated APK file on your device.\n\n### Usage\n\n1. Ensure the ViGEmBus driver is installed on Windows.\n2. Connect your controller to the phone via Bluetooth or USB OTG.\n3. Connect the phone to the computer (either over WiFi or via USB debugging cable).\n4. Run `DS4WifiServer.exe` on your PC.\n5. Select your language in the terminal prompt and start the server.\n6. Open the DS4Wifi app on your phone. It will attempt to connect automatically, retrying every 2 seconds if the server is not ready yet.\n\n---\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|-----------|\n| **Android App** | Kotlin, Coroutines, VibratorManager API |\n| **PC Server** | Python, vgamepad, Rich, PyInstaller |\n| **Communication** | TCP sockets with JSON payloads |\n| **Gamepad Driver** | ViGEmBus (virtual DualShock 4) |\n\n---\n\n## Project Structure\n\n```\nDS4Wifi/\n├── android/              # Android app (Kotlin)\n│   ├── app/              # Main application module\n│   ├── build.gradle.kts  # Project build config\n│   └── ...\n├── pc/                   # PC server (Python)\n│   ├── server.py         # Main server script\n│   ├── DS4WifiServer.exe # Pre-built executable\n│   └── ...\n├── logo.png              # Project logo\n└── README.md             # This file\n```\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n```\nMIT License\n\nCopyright (c) 2026 DS4Wifi Contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadeondev%2Fds4wifi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadeondev%2Fds4wifi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadeondev%2Fds4wifi/lists"}