steelseries: Add support for Rival 3 Wireless

This commit is contained in:
Gaël PORTAY 2022-04-21 11:42:51 +02:00 committed by Gaël PORTAY
parent 3c30072b77
commit 508922c20c
8 changed files with 1197 additions and 5 deletions

View File

@ -7,10 +7,15 @@ This plugin allows to update firmware on SteelSeries gamepads:
* Stratus Duo
* Stratus Duo USB wireless adapter
* Proton
* Rival 3 Wireless
SteelSeries gaming mice support is limited by getting the correct version
number. These mice have updatable firmware but so far no updates are available
from the vendor.
SteelSeries Rival 100 gaming mice support is limited by getting the correct
version number. These mice have updatable firmware but so far no updates are
available from the vendor.
This plugin supports the following protocol IDs:
* com.steelseries.sonic
## GUID Generation
@ -32,6 +37,11 @@ updates, and is reset automatically to new firmware after flashing.
The device is not upgradable and thus requires no vendor ID set.
### Wireless Mice
The mouse switch button underneath must be set to 2.4G, and its 2.4G USB
Wireless adapter must be connected to host.
## Vendor ID Security
The vendor ID is set from the USB vendor, in this instance set to `USB:0x1038`

View File

@ -10,12 +10,14 @@
#include "fu-steelseries-device.h"
#include "fu-steelseries-gamepad.h"
#include "fu-steelseries-sonic.h"
static void
fu_plugin_steelseries_init(FuPlugin *plugin)
{
fu_plugin_add_device_gtype(plugin, FU_TYPE_STEELSERIES_DEVICE);
fu_plugin_add_device_gtype(plugin, FU_TYPE_STEELSERIES_GAMEPAD);
fu_plugin_add_device_gtype(plugin, FU_TYPE_STEELSERIES_SONIC);
}
static void

View File

@ -1,5 +1,6 @@
/*
* Copyright (C) 2021 Denis Pynkin <denis.pynkin@collabora.com>
* Copyright (C) 2022 Gaël PORTAY <gael.portay@collabora.com>
*
* SPDX-License-Identifier: LGPL-2.1+
*/
@ -13,6 +14,8 @@ fu_steelseries_device_type_from_string(const gchar *name)
return FU_STEELSERIES_DEVICE_GAMEPAD;
if (g_strcmp0(name, "gamepad-dongle") == 0)
return FU_STEELSERIES_DEVICE_GAMEPAD_DONGLE;
if (g_strcmp0(name, "sonic") == 0)
return FU_STEELSERIES_DEVICE_SONIC;
return FU_STEELSERIES_DEVICE_UNKNOWN;
}
@ -23,6 +26,7 @@ fu_steelseries_device_type_to_string(FuSteelseriesDeviceKind type)
return "gamepad";
if (type == FU_STEELSERIES_DEVICE_GAMEPAD_DONGLE)
return "gamepad-dongle";
if (type == FU_STEELSERIES_DEVICE_SONIC)
return "sonic";
return "unknown";
}

View File

@ -1,5 +1,6 @@
/*
* Copyright (C) 2021 Denis Pynkin <denis.pynkin@collabora.com>
* Copyright (C) 2022 Gaël PORTAY <gael.portay@collabora.com>
*
* SPDX-License-Identifier: LGPL-2.1+
*/
@ -11,7 +12,8 @@
typedef enum {
FU_STEELSERIES_DEVICE_UNKNOWN = 0,
FU_STEELSERIES_DEVICE_GAMEPAD,
FU_STEELSERIES_DEVICE_GAMEPAD_DONGLE
FU_STEELSERIES_DEVICE_GAMEPAD_DONGLE,
FU_STEELSERIES_DEVICE_SONIC,
} FuSteelseriesDeviceKind;
FuSteelseriesDeviceKind

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
/*
* Copyright (C) 2022 Gaël PORTAY <gael.portay@collabora.com>
*
* SPDX-License-Identifier: LGPL-2.1+
*/
#pragma once
#include <fwupdplugin.h>
#define FU_TYPE_STEELSERIES_SONIC (fu_steelseries_sonic_get_type())
G_DECLARE_FINAL_TYPE(FuSteelseriesSonic, fu_steelseries_sonic, FU, STEELSERIES_SONIC, FuUsbDevice)
struct _FuSteelseriesSonicClass {
FuUsbDeviceClass parent_class;
};

View File

@ -12,6 +12,7 @@ shared_module('fu_plugin_steelseries',
'fu-steelseries-common.c',
'fu-steelseries-device.c',
'fu-steelseries-gamepad.c',
'fu-steelseries-sonic.c',
],
include_directories : [
root_incdir,

View File

@ -5,6 +5,12 @@ GType = FuSteelseriesDevice
Summary = An optical gaming mouse
Icon = input-mouse
# Rival 3 Wireless
[USB\VID_1038&PID_1830]
Plugin = steelseries
GType = FuSteelseriesSonic
Icon = input-mouse
[USB\VID_1038&PID_1430]
Plugin = steelseries
GType = FuSteelseriesGamepad