Skip to content

abdullah-albanna/rusbmux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

109 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚠️ Work in Progress


rusbmux is a drop-in replacement for usbmuxd, written in Rust.

It lets you communicate with Apple devices without requiring usbmuxd to be installed or running system-wide.

Why?

usbmuxd must be installed and running as a system daemon to communicate with Apple devices.

That creates friction:

  • You can’t easily ship a self-contained binary
  • You depend on system services you don’t control
  • Cross-platform distribution becomes painful

Sometimes you just want to ship a program that just... works.

What rusbmux does differently

rusbmux removes the daemon dependency while staying compatible with existing tooling:

  • Portable
  • Can run as a daemon or non-daemon (no sockets)
  • Can be Used directly as a library by existing usbmuxd clients
  • No separate installation step
  • Android support

Roadmap

Core

  • Protocol framing (encode/decode usbmux packets)
  • Clean error handling
  • Logging + debug mode

Device Management

  • Track connected devices
  • Handle device unplug safely
  • Support multiple devices at once

Connection

  • Raw USB packet parser
  • Per-connection state (sequence numbers, etc.)
  • Multiplex multiple connections
  • Clean connection shutdown
  • Timeout handling

Compatibility

  • Support old and new device protocol versions
  • Test against multiple iOS versions

Security

  • Safe storage of pair records (on disk/on memory)

Performance

  • Benchmark
  • Reduce memory allocations as much as possible
  • Optimize packet parsing/encoding/decoding

Commands

  • ListDevices
  • Connect
  • Listen
  • ListListeners
  • ReadPairRecord
  • ReadBUID
  • SavePairRecord
  • DeletePairRecord

Lib

  • Public Rust API
  • An rusbmux provider for idevice
  • FFI for other languages

Platforms

  • Linux
  • macOS
  • Android
  • FreeBSD
  • Windows (not sure about this)

Arch

  • x86_64
  • 32-bit
  • ARM

About

A drop-in usbmuxd replacement in Rust that works without a system daemon.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages