mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Add product code for GL703 0x1869
This commit is contained in:
8
Cargo.lock
generated
8
Cargo.lock
generated
@@ -344,9 +344,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hermit-abi"
|
name = "hermit-abi"
|
||||||
version = "0.1.11"
|
version = "0.1.12"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8a0d737e0f947a1864e93d33fdef4af8445a00d1ed8dc0c8ddb73139ea6abf15"
|
checksum = "61565ff7aaace3525556587bd2dc31d4a07071957be715e63ce7b1eccf51a8f4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
@@ -689,9 +689,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.17"
|
version = "1.0.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0df0eb663f387145cab623dea85b09c2c5b4b0aef44e945d928e682fce71bb03"
|
checksum = "410a7488c0a728c7ceb4ad59b9567eb4053d02e8cc7f5c0e0eeeb39518369213"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ rusb = "^0.5.5"
|
|||||||
gumdrop = "^0.8.0"
|
gumdrop = "^0.8.0"
|
||||||
dbus = { version = "^0.8.2", features = ["futures"] }
|
dbus = { version = "^0.8.2", features = ["futures"] }
|
||||||
dbus-tokio = "^0.5.1"
|
dbus-tokio = "^0.5.1"
|
||||||
tokio = { version = "0.2.19", features = ["rt-threaded", "macros"] }
|
tokio = { version = "0.2.4", features = ["rt-threaded", "macros"] }
|
||||||
|
|
||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
serde_derive = "1.0"
|
serde_derive = "1.0"
|
||||||
|
|||||||
@@ -77,12 +77,14 @@ Fan mode toggling requires a newer kernel. I'm unsure when the patches required
|
|||||||
|
|
||||||
**Supported:**
|
**Supported:**
|
||||||
|
|
||||||
- GX502 (Tested on GX502GW)
|
- GX502 (product 0x1866) (Tested on GX502GW)
|
||||||
|
|
||||||
**Please help test or provide info for:**
|
**Please help test or provide info for:**
|
||||||
|
|
||||||
- GA502 (attempts to use same profile as GX502GW)
|
- GL703(0x1869), GA502 (attempts to use same profile as GX502GW)
|
||||||
- GL753 (attempted support from researching 2nd-hand info, multizone may work)
|
- GL553(0x1854) GL753 (attempted support from researching 2nd-hand info, multizone may work)
|
||||||
|
|
||||||
|
If the USB product ID is 0x1866 or 0x1869 then the per-key profile with hotkeys *should* work - 0x1866 is tested as this is what I have.
|
||||||
|
|
||||||
## Wireshark captures
|
## Wireshark captures
|
||||||
|
|
||||||
|
|||||||
15
src/aura.rs
15
src/aura.rs
@@ -54,7 +54,7 @@ pub fn aura_brightness_bytes(brightness: u8) -> [u8; 17] {
|
|||||||
/// - 01 = breathe (can set two colours)
|
/// - 01 = breathe (can set two colours)
|
||||||
/// - 02 = cycle (through all colours)
|
/// - 02 = cycle (through all colours)
|
||||||
/// - 03 = rainbow
|
/// - 03 = rainbow
|
||||||
/// - 04 = rain
|
/// - 04 = rain (byte 9 sets random colour)
|
||||||
/// - 05 = random keys, red, white, turquoise
|
/// - 05 = random keys, red, white, turquoise
|
||||||
/// - 06 = pressed keys light up and fade
|
/// - 06 = pressed keys light up and fade
|
||||||
/// - 07 = pressed key emits laser
|
/// - 07 = pressed key emits laser
|
||||||
@@ -137,8 +137,14 @@ impl From<SetAuraBuiltin> for [u8; LED_MSG_LEN] {
|
|||||||
msg[7] = settings.speed as u8;
|
msg[7] = settings.speed as u8;
|
||||||
msg[8] = settings.direction as u8;
|
msg[8] = settings.direction as u8;
|
||||||
}
|
}
|
||||||
|
SetAuraBuiltin::Rain(settings) => {
|
||||||
|
msg[4] = settings.colour.0;
|
||||||
|
msg[5] = settings.colour.1;
|
||||||
|
msg[6] = settings.colour.2;
|
||||||
|
msg[7] = settings.speed as u8;
|
||||||
|
msg[9] = settings.colour2.2;
|
||||||
|
}
|
||||||
SetAuraBuiltin::Breathe(settings) => {
|
SetAuraBuiltin::Breathe(settings) => {
|
||||||
msg[3] = 0x01;
|
|
||||||
msg[4] = settings.colour.0;
|
msg[4] = settings.colour.0;
|
||||||
msg[5] = settings.colour.1;
|
msg[5] = settings.colour.1;
|
||||||
msg[6] = settings.colour.2;
|
msg[6] = settings.colour.2;
|
||||||
@@ -150,8 +156,7 @@ impl From<SetAuraBuiltin> for [u8; LED_MSG_LEN] {
|
|||||||
SetAuraBuiltin::Cycle(settings) | SetAuraBuiltin::Disco(settings) => {
|
SetAuraBuiltin::Cycle(settings) | SetAuraBuiltin::Disco(settings) => {
|
||||||
msg[7] = settings.speed as u8;
|
msg[7] = settings.speed as u8;
|
||||||
}
|
}
|
||||||
SetAuraBuiltin::Rain(settings)
|
SetAuraBuiltin::Highlight(settings)
|
||||||
| SetAuraBuiltin::Highlight(settings)
|
|
||||||
| SetAuraBuiltin::Laser(settings)
|
| SetAuraBuiltin::Laser(settings)
|
||||||
| SetAuraBuiltin::Ripple(settings) => {
|
| SetAuraBuiltin::Ripple(settings) => {
|
||||||
msg[4] = settings.colour.0;
|
msg[4] = settings.colour.0;
|
||||||
@@ -271,7 +276,7 @@ impl Default for BuiltInModeBytes {
|
|||||||
rainbow: <[u8; LED_MSG_LEN]>::from(SetAuraBuiltin::Rainbow(
|
rainbow: <[u8; LED_MSG_LEN]>::from(SetAuraBuiltin::Rainbow(
|
||||||
SingleSpeedDirection::default(),
|
SingleSpeedDirection::default(),
|
||||||
)),
|
)),
|
||||||
rain: <[u8; LED_MSG_LEN]>::from(SetAuraBuiltin::Rain(SingleColourSpeed::default())),
|
rain: <[u8; LED_MSG_LEN]>::from(SetAuraBuiltin::Rain(TwoColourSpeed::default())),
|
||||||
random: <[u8; LED_MSG_LEN]>::from(SetAuraBuiltin::Disco(SingleSpeed::default())),
|
random: <[u8; LED_MSG_LEN]>::from(SetAuraBuiltin::Disco(SingleSpeed::default())),
|
||||||
highlight: <[u8; LED_MSG_LEN]>::from(SetAuraBuiltin::Highlight(
|
highlight: <[u8; LED_MSG_LEN]>::from(SetAuraBuiltin::Highlight(
|
||||||
SingleColourSpeed::default(),
|
SingleColourSpeed::default(),
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ pub enum SetAuraBuiltin {
|
|||||||
#[options(help = "rainbow cycling in one of four directions")]
|
#[options(help = "rainbow cycling in one of four directions")]
|
||||||
Rainbow(SingleSpeedDirection),
|
Rainbow(SingleSpeedDirection),
|
||||||
#[options(help = "random pattern mimicking raindrops")]
|
#[options(help = "random pattern mimicking raindrops")]
|
||||||
Rain(SingleColourSpeed),
|
Rain(TwoColourSpeed),
|
||||||
#[options(help = "random pattern of three preset colours")]
|
#[options(help = "random pattern of three preset colours")]
|
||||||
Disco(SingleSpeed),
|
Disco(SingleSpeed),
|
||||||
#[options(help = "pressed keys are highlighted to fade")]
|
#[options(help = "pressed keys are highlighted to fade")]
|
||||||
|
|||||||
15
src/core.rs
15
src/core.rs
@@ -53,8 +53,13 @@ pub(crate) struct RogCore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl RogCore {
|
impl RogCore {
|
||||||
pub(crate) fn new(laptop: &dyn Laptop) -> Result<RogCore, AuraError> {
|
pub(crate) fn new(
|
||||||
let mut dev_handle = RogCore::get_device(laptop.usb_vendor(), laptop.usb_product())?;
|
vendor: u16,
|
||||||
|
product: u16,
|
||||||
|
led_endpoint: u8,
|
||||||
|
key_endpoint: u8,
|
||||||
|
) -> Result<RogCore, AuraError> {
|
||||||
|
let mut dev_handle = RogCore::get_device(vendor, product)?;
|
||||||
dev_handle.set_active_configuration(0).unwrap_or(());
|
dev_handle.set_active_configuration(0).unwrap_or(());
|
||||||
|
|
||||||
let dev_config = dev_handle.device().config_descriptor(0).unwrap();
|
let dev_config = dev_handle.device().config_descriptor(0).unwrap();
|
||||||
@@ -63,7 +68,7 @@ impl RogCore {
|
|||||||
for iface in dev_config.interfaces() {
|
for iface in dev_config.interfaces() {
|
||||||
for desc in iface.descriptors() {
|
for desc in iface.descriptors() {
|
||||||
for endpoint in desc.endpoint_descriptors() {
|
for endpoint in desc.endpoint_descriptors() {
|
||||||
if endpoint.address() == laptop.key_endpoint() {
|
if endpoint.address() == key_endpoint {
|
||||||
debug!("INTERVAL: {:?}", endpoint.interval());
|
debug!("INTERVAL: {:?}", endpoint.interval());
|
||||||
debug!("MAX: {:?}", endpoint.max_packet_size());
|
debug!("MAX: {:?}", endpoint.max_packet_size());
|
||||||
debug!("SYNC: {:?}", endpoint.sync_type());
|
debug!("SYNC: {:?}", endpoint.sync_type());
|
||||||
@@ -83,8 +88,8 @@ impl RogCore {
|
|||||||
Ok(RogCore {
|
Ok(RogCore {
|
||||||
handle: dev_handle,
|
handle: dev_handle,
|
||||||
initialised: false,
|
initialised: false,
|
||||||
led_endpoint: laptop.led_endpoint(),
|
led_endpoint: led_endpoint,
|
||||||
keys_endpoint: laptop.key_endpoint(),
|
keys_endpoint: key_endpoint,
|
||||||
config: Config::default().read(),
|
config: Config::default().read(),
|
||||||
virt_keys: VirtKeys::new(),
|
virt_keys: VirtKeys::new(),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -28,7 +28,13 @@ type EffectType = Arc<Mutex<Option<Vec<Vec<u8>>>>>;
|
|||||||
// DBUS processing takes 6ms if not tokiod
|
// DBUS processing takes 6ms if not tokiod
|
||||||
pub async fn start_daemon() -> Result<(), Box<dyn Error>> {
|
pub async fn start_daemon() -> Result<(), Box<dyn Error>> {
|
||||||
let laptop = match_laptop();
|
let laptop = match_laptop();
|
||||||
let mut rogcore = RogCore::new(&*laptop).map_or_else(
|
let mut rogcore = RogCore::new(
|
||||||
|
laptop.usb_vendor(),
|
||||||
|
laptop.usb_product(),
|
||||||
|
laptop.led_endpoint(),
|
||||||
|
laptop.key_endpoint(),
|
||||||
|
)
|
||||||
|
.map_or_else(
|
||||||
|err| {
|
|err| {
|
||||||
error!("{}", err);
|
error!("{}", err);
|
||||||
panic!("{}", err);
|
panic!("{}", err);
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ pub(crate) fn match_laptop() -> Box<dyn Laptop> {
|
|||||||
let device_desc = device.device_descriptor().unwrap();
|
let device_desc = device.device_descriptor().unwrap();
|
||||||
if device_desc.vendor_id() == 0x0b05 {
|
if device_desc.vendor_id() == 0x0b05 {
|
||||||
match device_desc.product_id() {
|
match device_desc.product_id() {
|
||||||
0x1866 => {
|
0x1869 | 0x1866 => {
|
||||||
info!("Found GX502 or similar");
|
info!("Found GX502 or similar");
|
||||||
return Box::new(LaptopGX502::new());
|
return Box::new(LaptopGX502::new());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user