Skip to content

Ewooral/ew-plug

Repository files navigation

ew-plug

Cross-platform desktop network command center for USB cellular modems (4G/5G dongles) and portable travel routers. Open-core.

Built for remote software engineers, digital nomads, and enterprise power-users across Europe, the Americas, and Africa who demand absolute bandwidth optimization, advanced network security, and automated carrier workflows. Replaces bloated, legacy carrier software with an intelligent, hardware-agnostic dashboard.

Built with Tauri v2 + React + TypeScript + Rust.

Features

  • Dashboard — modem detection, signal, network info, OS-synced connect/disconnect, live data usage, auto-reconnect with backoff
  • SMS — inbox, compose, send, delete; modal detail view; desktop notifications on new arrivals
  • USSD — dial codes, multi-step recipes (build your own for any carrier), saved one-tap favourites, friendly error translation, auto-recovery from stale sessions
  • Calls — dial / answer / hang up, global ringing banner + ringtone across all views, persisted call history (last 100)
  • Contacts — read the SIM phonebook, search by name or number, one-tap call / SMS
  • Secure Nomad VPN — import any WireGuard .conf, manage profiles, auto-connect the tunnel the moment the modem comes online so no packet leaves unencrypted
  • PIN unlock — for SIMs locked at boot
  • Cross-platform — Linux first (uses ModemManager via mmcli so it coexists with NetworkManager); Windows / macOS via direct AT-command serial path
  • Brand-aligned theming — Brand / Dark / Light, persisted across sessions
  • Free & offline — no cloud APIs, no telemetry, no subscriptions

Platform feature matrix

The Rust binary compiles on Linux, macOS, and Windows. The user-facing feature set varies by platform because some pieces require OS-specific daemons (ModemManager, NetworkManager) that only exist on Linux.

Feature Linux Windows macOS
Modem detection (AT)
ModemManager (mmcli) backend
NetworkManager-driven connect/disconnect
SMS / USSD
Voice call dial / answer / hang up
Voice call audio hardware-dep ⚠️ hardware-dep + Mobile Partner hardware-dep ⚠️
Secure Nomad VPN (WireGuard) ❌ planned ⚠️ if wireguard-tools installed via Homebrew
SIM phonebook import ✅ (debug-mode MM)
Advanced telemetry (RSRP/RSRQ/SINR/Cell ID)
mDNS device discovery
Live data usage from /proc/net/dev ⚠️ partial ⚠️ partial
Auto-reconnect ⚠️ basic ⚠️ basic
App auto-pause of NM autoconnect n/a n/a

Voice call audio is hardware-dependent everywhere. Most cheap USB dongles (Huawei E173 and friends) don't expose audio over USB so you can dial and hear nothing. Modems with USB Audio Class (Quectel EC25/EM12, certain ZTE) route audio natively on every OS.

Install (Linux, Debian / Ubuntu)

One-line install — the -latest.deb URL always points at the most recent build:

curl -L -o /tmp/ew-plug.deb https://cdn.ewooral.com/apps/ew-plug-latest.deb
sudo apt install -y /tmp/ew-plug.deb

Or pin a specific version:

curl -L -o /tmp/ew-plug.deb https://cdn.ewooral.com/apps/ew-plug_0.1.0_amd64.deb
sudo apt install -y /tmp/ew-plug.deb

After install, launch from Activities as ew-plug or run ew-plug from a terminal. Browse all binaries at ewplug.ewooral.com/download.

macOS / Windows: binaries are on the way. Build from source via the Quick Start below in the meantime.

Quick Start

# Prerequisites: Node.js, pnpm, Rust toolchain

# Clone and install
git clone https://github.com/Ewooral/ew-plug.git
cd ew-plug
pnpm install

# Run in development mode
pnpm tauri dev

Linux

You may need serial port permissions:

sudo usermod -aG dialout $USER
# Log out and back in

Building

pnpm tauri build

Produces platform-specific installers in src-tauri/target/release/bundle/.

License

MIT

About

Cross-platform USB modem manager — SMS, USSD, data connection, signal monitoring. Built with Tauri v2 + React + Rust.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors