# Ruida Rust – Open Source Ruida Laser Controller Interface
**Ruida Rust** is an open-source toolkit in Rust for controlling laser cutting/engraving machines that use Ruida DSP controllers. It enables you to send jobs to your laser, move the laser head, adjust settings, and integrate your laser cutter into custom workflows – all without needing proprietary software. Ruida Rust provides a command-line interface, Rust library API, and bindings for other languages (actually Python, soon C/C++, .Net and Java) to suit a variety of use cases.
## Features
- **Ethernet Control:** Connects to Ruida controllers over network (UDP) to upload cut/engraving jobs, eliminating the need for RDWorks or LightBurn for sending files.
- **Full Laser Control:** Start, pause, and stop jobs from your PC. Manually jog axes (X, Y, Z, U) from software, set origin, frame outlines, and even fire test pulses.
- **Status Monitoring:** Query the machine’s status – see if it’s idle or running, get current head coordinates, and check safety interlocks (like door or water flow sensors).
- **Cross-Platform CLI:** Use the `ruida` command-line tool on Windows, Linux, or macOS for scripting and direct control. Example: `ruida jog x+` or `ruida send job.rd`.
- **Rust Library:** Incorporate laser control into Rust applications via our crate. The library abstracts the Ruida protocol into easy-to-call methods.
- **Python Bindings:** Automate your laser with Python. Import the `ruida_rust` Python module (built with PyO3) to send files or move the laser head in just a few lines of code.
- **WebAssembly (WASM):** Build and run the core library in WebAssembly for potential use in web apps or Electron/Tauri desktop apps, opening possibilities for browser-based laser control interfaces.
- **Extensible Design:** The architecture allows adding new front-ends or integrations. (Planned: a simple GUI app, Inkscape plugin, REST API server, and more – see the [Roadmap](#roadmap).)
## Getting Started
### 1. Requirements
- A Ruida-based laser cutter controller (e.g., RDC6442, RDC6445, RDC6332, etc.) connected via Ethernet (or USB for later versions).
- Rust (if building from source) or download a pre-built binary from Releases.
- For network use: your computer and the Ruida controller must be on the same IPv4 network. By default, Ruida controllers use IP `192.168.1.100` with subnet mask `255.255.255.0`. You may need to set your PC’s IP to e.g. `192.168.1.2` to communicate. This can be configured in your OS network settings.
### 2. Installation
#### Using Pre-built Binaries (Coming Soon)
Download the appropriate binary for your OS from the [Releases](../../releases) page. Extract it and you’ll have a `ruida` (or `ruida.exe`) ready to use.
On Linux/macOS, you may need to give it execute permission: `chmod +x ruida`. On Windows, just double-click or add the folder to your PATH.
#### Using Cargo (Rust)
If you have Rust installed, you can build from source:
```bash
cargo install ruida