https://github.com/shubham0x13/ffbeast-wheel-webhid-api
WebHID based API for FFBeast Wheel
https://github.com/shubham0x13/ffbeast-wheel-webhid-api
api ffb ffbeast force-feedback usb-hid wheel
Last synced: 5 months ago
JSON representation
WebHID based API for FFBeast Wheel
- Host: GitHub
- URL: https://github.com/shubham0x13/ffbeast-wheel-webhid-api
- Owner: shubham0x13
- License: mit
- Created: 2026-01-02T16:27:51.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-01-15T07:35:58.000Z (5 months ago)
- Last Synced: 2026-01-15T14:24:41.347Z (5 months ago)
- Topics: api, ffb, ffbeast, force-feedback, usb-hid, wheel
- Language: C
- Homepage: https://shubham0x13.github.io/ffbeast-wheel-webhid-api/
- Size: 147 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FFBeast Wheel WebHID API
A TypeScript WebHID-based API for communicating with [FFBeast](https://ffbeast.github.io/) force feedback wheel controllers directly from the browser.
This library is a TypeScript rewrite of the original C/C++ API, adapted to use the [WebHID API](https://developer.mozilla.org/en-US/docs/Web/API/WebHID_API) for browser-based applications. The original C/C++ source code is available in the [`reference_cpp`](https://github.com/shubham0x13/ffbeast-wheel-webhid-api/tree/main/reference_cpp) directory for reference.
> **Note:** This API includes additional helper methods and properties not present in the original C/C++ implementation, such as `readAllSettings()`, `positionDegrees`, `torqueNormalized`, and more for convenience.
## Features
- 🎮 **Direct wheel communication** via WebHID (no drivers or native apps required)
- 📊 **Real-time device state** - position, torque, firmware version
- ⚙️ **Full settings control** - effect settings, hardware settings, GPIO, ADC configurations
- 🔧 **Direct force feedback control** - spring, constant, and periodic forces
- 📡 **Event-driven architecture** - subscribe to device state changes
- 🔒 **Type-safe** - full TypeScript support with comprehensive types
## Documentation
📚 **[Full API Documentation](https://shubham0x13.github.io/ffbeast-wheel-webhid-api/)**
## Browser Support
> **Note:** Supported in all modern Chromium-based browsers (e.g., Chrome, Edge, Opera, Brave, etc).
| Browser | Supported |
| -------------- | --------- |
| Chromium-based | ✅ |
| Firefox | ❌ |
| Safari | ❌ |
## Installation
```bash
npm i @shubham0x13/ffbeast-wheel-webhid-api
```
## Quick Start
```typescript
import { WheelApi } from "@shubham0x13/ffbeast-wheel-webhid-api";
const wheel = new WheelApi();
wheel.on("stateReceived", (state) => {
console.log("Position:", state.positionDegrees);
console.log("Torque:", state.torqueNormalized);
});
wheel.on("deviceConnected", (device) => {
console.log("Connected to:", device.productName);
});
// Connect to the wheel (opens browser device picker)
await wheel.connect();
// Cleanup when done
await wheel.disconnect();
wheel.destroy();
```
## Requirements
- Node.js >= 20.19.0
- A Chromium-based browser with WebHID support
- An FFBeast wheel controller
## License
This project is licensed under the [MIT License](./LICENSE)