Releases: Alia5/VIIPER
Release list
Dev Build v0.7.0-7-g88f66f1
Automated development build.
Changes since v0.7.0:
🐛 Fixes
- Move to wall-clock based report timestamps
🔧 Miscellaneous
- Improve device emulation efficiency
- Default to data-driven, immediate, updates
- Turn off write-batching by default
Install / Update
Windows (PowerShell)
irm https://alia5.github.io/VIIPER/main/install.ps1 | iexInstalls / updates to %LOCALAPPDATA%\VIIPER\viiper.exe
Linux
curl -fsSL https://alia5.github.io/VIIPER/main/install.sh | shInstalls / updates to /usr/local/bin/viiper
VIIPER v0.7.0
Changes since v0.6.1:
✨ New Features
- Experimental DualSense (and Edge) Emulation
- Nintendo Switch 2 Pro virtual device support
thanks to @Cookiekira
🐛 Fixes
- Fix DS4 Emulation, add metadata handling
- Fix Gyro-Stutter
- Fix Triggers
🔧 Miscellaneous
- Default server command
- Add log level alias
- Introduce golangci-lint and make linter happy
- Breaking: Go users will experience breaking changes due to renamings
Install / Update
Windows (PowerShell)
irm https://alia5.github.io/VIIPER/stable/install.ps1 | iexInstalls / updates to %LOCALAPPDATA%\VIIPER\viiper.exe
Linux
curl -fsSL https://alia5.github.io/VIIPER/stable/install.sh | shInstalls / updates to /usr/local/bin/viiper
VIIPER v0.6.1
Changes since v0.6.0:
🐛 Fixes
- WinInstall: Fix USBIP-Win2 driver detection
- Fix xbox360 capability request
- Handle usbGetStatus
- Fix LangIDs
Install / Update
Windows (PowerShell)
irm https://alia5.github.io/VIIPER/stable/install.ps1 | iexInstalls / updates to %LOCALAPPDATA%\VIIPER\viiper.exe
Linux
curl -fsSL https://alia5.github.io/VIIPER/stable/install.sh | shInstalls / updates to /usr/local/bin/viiper
VIIPER v0.6.0
Introducing libVIIPER
libVIIPER is a fully embeddable/linkable is a shared library that provides a full VIIPER USBIP server and all device-emulation code directly into your application (in Windows and/or Linux).
It is fully thread-safe and offers a pure C API, so it does work with every language that can utilize Cs FFI (C, C++, C#, Rust, Go, etc...).
Examples are provided for C and C#
To demonstrate, a minimal example is provided below.
This is all you need to emulate an exemplary Xbox 360 controller in software that is indistinguishable from real hardware.
USBServerConfig conf = { .addr = "localhost:3245" };
USBServerHandle serverHandle = 0;
NewUSBServer(&conf, &serverHandle, logCallback);
uint32_t busID = 0;
CreateUSBBus(serverHandle, &busID);
Xbox360DeviceHandle deviceHandle = 0;
CreateXbox360Device(serverHandle, &deviceHandle, busID, /*autoAttach=*/true, 0, 0, 0);
SetXbox360RumbleCallback(deviceHandle, rumbleCallback);
uint64_t frame = 0;
Xbox360DeviceState state = {0};
while (running) {
frame++;
state.Buttons = XBOX360_BUTTON_A;
state.LT = (uint8_t)((frame * 2) % 256);
state.RT = (uint8_t)((frame * 3) % 256);
state.LX = (int16_t)(20000.0 * sin(frame * 0.02));
state.LY = (int16_t)(20000.0 * cos(frame * 0.02));
SetXbox360DeviceState(deviceHandle, state);
_sleep(16);
}
// CloseUSBServer handles cleanup of the device handles for you.
CloseUSBServer(serverHandle);You can learn more from the documentation here
Changelog:
✨ New Features
- Windows: Add Tray Icon
- libVIIPER
🔧 Miscellaneous
- Windows: Update install script / USBIP-Driver
- Update dotnet 8.0 -> 10
Install / Update
Windows (PowerShell)
irm https://alia5.github.io/VIIPER/stable/install.ps1 | iexInstalls / updates to %LOCALAPPDATA%\VIIPER\viiper.exe
Linux
curl -fsSL https://alia5.github.io/VIIPER/stable/install.sh | shInstalls / updates to /usr/local/bin/viiper
VIIPER v0.5.0
Changelog for Version 0.5.0
Changes since v0.4.1:
✨ New Features
- Add auto update
- Breaking: Support XInput subtypes
thanks to @sanjay900 #10
Install / Update
Windows (PowerShell)
irm https://alia5.github.io/VIIPER/stable/install.ps1 | iexInstalls / updates to %LOCALAPPDATA%\VIIPER\viiper.exe
Linux
curl -fsSL https://alia5.github.io/VIIPER/stable/install.sh | shInstalls / updates to /usr/local/bin/viiper
VIIPER v0.4.1
Changelog for Version 0.4.1
Changes since v0.4.0:
✨ New Features
- SECURITY: Authenticated/Encrypted API
- Unauthenticated is still possible on localhost-only.
- (Breaking) Remote clients are required to use auth/encryption
- Generated Clients have NO API-Change except for the ability to create clients with "password"
🔧 Miscellaneous
- Remove C API client
- Configurable write batching time
VIIPER v0.4.0
Changelog for Version 0.4.0
Changes since v0.3.2:
✨ New Features
- DS4 Emulation
🐛 Fixes
- Windows: Install-Script: Fix updating
🔧 Miscellaneous
- Windows: log to file in autorun config
VIIPER v0.3.2
Changelog for Version 0.3.2
Changes since v0.3.1:
✨ New Features
- Windows: Detect gui launches and auto-run server in BG
🐛 Fixes
- Fix busCreate with id 0 not choosing next free bus
- Windows-Install: Fix VIIPER server closing upon terminal close
🔧 Miscellaneous
- Linux install script: handle updates more gracefully
VIIPER v0.3.1
Changelog for Version 0.3.1
Changes since v0.3.0:
🐛 Fixes
- Fix install scripts and docs
VIIPER v0.3.0
Changelog for Version 0.3.0
Changes since v0.2.2:
✨ New Features
- Add "ping" endpoint
- Add install command / scripts
- Breaking: Use int16 instead of int8 for mouse relative actions (dx, dy, wheel, pan)
🐛 Fixes
- Fix excessive CPU usage
- Disable nagles algorithm
- Fix: free bus IDs not getting re-used