-
-
Save poiriersimon/eaee208ce8ea79f30b4cc7d3a078c3bc to your computer and use it in GitHub Desktop.
#Litra Glow and Litra Beam Powershell Controller | |
#Download hidapitester here : https://github.com/todbot/hidapitester/releases | |
#Based on https://www.reddit.com/r/LogitechG/comments/sacz2x/comment/j7doia4/?utm_source=share&utm_medium=web2x&context=3 | |
#Change to point to the extract folder | |
$HIDAPItesterFolderPath = "C:\Users\username\Scripts\" | |
#HIDAPItester | |
$global:HIDAPItesterPath = $HIDAPItesterFolderPath + "hidapitester.exe" | |
Function Set-HIDAPItester { | |
[CmdletBinding()] | |
param ( | |
[Parameter(Mandatory = $true)] | |
[string] $vidpid, | |
[Parameter(Mandatory = $true)] | |
[string] $OpenPath, | |
[Parameter(Mandatory = $true)] | |
[string] $output, | |
[Parameter(Mandatory = $true)] | |
[string] $usagePage, | |
[string] $HIDAPItesterPath = $global:HIDAPItesterPath | |
) | |
$null = &($HIDAPItesterPath) --vidpid $vidpid --usagePage $usagePage --open-path $OpenPath --send-output $output | |
} | |
Function Get-LitraLight { | |
[CmdletBinding()] | |
param ( | |
[switch] $Beam, | |
[switch] $Glow | |
) | |
if($Beam){ | |
$LitraRaw= &($HIDAPItesterPath) --vidpid 046d/c901 --usagePage FF43 --list-detail | |
} | |
elseif($Glow){ | |
$LitraRaw= &($HIDAPItesterPath) --vidpid 046d/c900 --usagePage FF43 --list-detail | |
}else{ | |
$LitraRaw= &($HIDAPItesterPath) --usagePage FF43 --list-detail | |
} | |
#$litraRaw | |
$i=0 | |
[Array]$LitraLights = @() | |
$LitraLight = New-Object PSObject | |
foreach($line in $litraRaw){ | |
$i++ | |
if($i -eq 1){ | |
$name = "vidpid" | |
$value = $line.split(":")[0].trim() | |
}else{ | |
$name = $line.split(":")[0].trim() | |
$value = $line.split(":")[-1].trim() | |
} | |
if(!$([string]::IsNullOrempty($name))){ | |
$LitraLight | Add-Member NoteProperty -Name $name -Value $value | |
} | |
if($i -gt 8){ | |
$i=0 | |
[Array]$LitraLights+=$LitraLight | |
$LitraLight = New-Object PSObject | |
} | |
} | |
return $LitraLights | |
} | |
function Set-LitraLight { | |
[CmdletBinding()] | |
param ( | |
[Parameter(Mandatory = $true)] | |
[string] $vidpid, | |
[Parameter(Mandatory = $true)] | |
[string] $OpenPath, | |
[ValidateRange(1, 100)] | |
[int] $Brightness, | |
[ValidateRange(2700, 6500)] | |
[int] $temperature | |
) | |
if($Brightness -gt 0){ | |
[int]$brightnessvalue = [math]::floor(31 + ($Brightness/100*368)) | |
$brightnessvalue | |
$hex = $brightnessvalue | Format-Hex | |
$hex | |
$output= "0x11,0xFF,0x04,0x4F,0x"+ $hex.HexBytes.Split(" ")[1] +",0x"+ $hex.HexBytes.Split(" ")[0] | |
Set-HIDAPItester -vidpid $vidpid -usagePage ff43 -OpenPath $OpenPath -output $output | |
} | |
if($temperature -gt 0){ | |
$hex = $temperature | Format-Hex | |
$hex | |
$output = "0x11,0xFF,0x04,0x9D,0x"+ $hex.HexBytes.Split(" ")[1] +",0x" + $hex.HexBytes.Split(" ")[0] | |
Set-HIDAPItester -vidpid $vidpid -usagePage ff43 -OpenPath $OpenPath -output $output | |
} | |
} | |
Function Start-LitraLight { | |
[CmdletBinding()] | |
param ( | |
[Parameter(Mandatory = $true)] | |
[string] $vidpid, | |
[Parameter(Mandatory = $true)] | |
[string] $OpenPath | |
) | |
$output = "0x11,0xFF,0x04,0x1D,0x01" | |
Set-HIDAPItester -vidpid $vidpid -usagePage ff43 -OpenPath $OpenPath -output $output | |
} | |
Function Stop-LitraLight { | |
[CmdletBinding()] | |
param ( | |
[Parameter(Mandatory = $true)] | |
[string] $vidpid, | |
[Parameter(Mandatory = $true)] | |
[string] $OpenPath | |
) | |
$output = "0x11,0xFF,0x04,0x1D,0x00" | |
Set-HIDAPItester -vidpid $vidpid -usagePage ff43 -OpenPath $OpenPath -output $output | |
} | |
#Exemple: | |
Write-host "All Off" | |
$lights = Get-LitraLight | |
foreach($Light in $Lights){ | |
Stop-LitraLight -vidpid $light.vidpid -OpenPath $light.path | |
} | |
Write-host "All On" | |
$lights = Get-LitraLight | |
foreach($Light in $Lights){ | |
start-LitraLight -vidpid $light.vidpid -OpenPath $light.path | |
} | |
Write-host "Beam On" | |
$lights = Get-LitraLight -Beam | |
foreach($Light in $Lights){ | |
start-LitraLight -vidpid $light.vidpid -OpenPath $light.path | |
} | |
poiriersimon
commented
Dec 19, 2023
via email
Thank you for the reply. I managed to get it working with Bluetooth, that was not the issue.
I believe it was due to these lights being brand new, and seemingly a newer iteration, or at least a different version.
I had to use the --read-input-forever of hidapitester to monitor the hex values being passed when I manually turned the lights off and on, to work out the required hex values to pass.
In case it helps anyone else:
To Turn the RGB lights ON:
Set-HIDAPItester -vidpid $vidpid -usagePage ff43 -OpenPath $OpenPath -output "0x11,0xFF,0x0A,0x4E,0x01" -HIDAPItesterPath $HIDAPItesterPath
To Turn the RGB lights OFF:
Set-HIDAPItester -vidpid $vidpid -usagePage ff43 -OpenPath $OpenPath -output "0x11,0xFF,0x0A,0x4E,0x00" -HIDAPItesterPath $HIDAPItesterPath
To Turn the White lights ON:
Set-HIDAPItester -vidpid $vidpid -usagePage ff43 -OpenPath $OpenPath -output "0x11,0xFF,0x06,0x1E,0x01" -HIDAPItesterPath $HIDAPItesterPath
To Turn the White lights OFF:
Set-HIDAPItester -vidpid $vidpid -usagePage ff43 -OpenPath $OpenPath -output "0x11,0xFF,0x06,0x1E,0x00" -HIDAPItesterPath $HIDAPItesterPath
No problem 😊. Thank you again for creating this in the first place!