-
-
Save antonmry/8bf2d07db75df538c385bfa1cd6d5cf2 to your computer and use it in GitHub Desktop.
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>Label</key> | |
<string>litra-auto-on</string> | |
<key>ProgramArguments</key> | |
<array><string>/Library/LaunchDaemons/litra-auto-on.sh</string></array> | |
<key>RunAtLoad</key> | |
<true/> | |
</dict> | |
</plist> |
#! /bin/bash | |
# Download both files and https://github.com/todbot/hidapitester to /Library/LaunchDaemons/ | |
# Execute the following commands to launch it on login | |
# sudo chown root:wheel /Library/LaunchDaemons/litra-auto-on.plist | |
# sudo chmod o-w /Library/LaunchDaemons/litra-auto-on.plist | |
# sudo launchctl load -w /Library/LaunchDaemons/litra-auto-on.plist | |
# For test it: | |
# launchctl start litra-auto-on | |
# tail -f /var/log/system.log | |
# Use 046D/C900 for older models | |
model="046D/C901" | |
# Change to your own path | |
hidapitester="/Library/LaunchDaemons/hidapitester" | |
log stream --predicate 'subsystem contains "com.apple.UVCExtension" and composedMessage contains "Post PowerLog"' | while read LOGLINE | |
do | |
[[ "${LOGLINE}" == *"On;"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c,0x01" | |
[[ "${LOGLINE}" == *"Off;"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c" | |
done |
For Macbook air m2 @sonoma this variation is working for me
log stream --predicate 'eventMessage contains "Cameras changed to"' | while read LOGLINE
do
# OFF
[[ "${LOGLINE}" == *"appEffects: []"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c"
# ON
[[ "${LOGLINE}" == *"appEffects: [ControlCenterAp"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c,0x01"
done
I am on an M1 on Sonoma, and I am not getting anything to work. Like someone mentioned before, it will automatically turn on both on login and when starting the camera, but it seems to do that even with the script disabled. It never turns off. My logs look like this for on, then off:
So I have my script looking like so:
log stream --predicate 'eventMessage contains "Cameras changed to"' | while read LOGLINE
do
# ON
[[ "${LOGLINE}" == *"changed to [ControlCenterApp.VideoCamera"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c,0x01"
# OFF
[[ "${LOGLINE}" == *"changed to [:]"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c"
done
I even confirmed that the eval command definitely works, but for some reason, I am having trouble detecting that log for off. Do I need an escape character for the :
perhaps?
Anyone else have any luck?
The script I am using (ijcarson1's one above) started working correctly after rebooting the computer a couple of times. No idea why.
I think I finally got it for my setup (MacBook Pro M1 Ultra)
I used this script:
log stream --predicate 'eventMessage contains[c] "cameras changed to "' | while read LOGLINE;
do
# ON
[[ "${LOGLINE}" == *"changed to [ControlCenterApp.VideoCamera"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c,0x01";
# OFF
[[ "${LOGLINE}" == *"changed to [:]"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c";
done
Note: I added [c]
for case insensitivity (that is what was breaking between off and on), and I made sure to run these to reset:
launchctl stop litra-auto-on
sudo launchctl load -w /Library/LaunchDaemons/litra-auto-on.plist;
sudo launchctl load -w /Library/LaunchDaemons/litra-auto-on.plist;
# the next line errors, so not positive if it is necessary or not
sudo launchctl bootstrap system /Library/LaunchDaemons/litra-auto-on.plist
launchctl start litra-auto-on
Hope this helps someone!
Hi Everybody,
Just a note that we have now integrated official support for Litra Lights being turned automatically on/off in the October 2023 release of GHub. This version will roll out to all users over the next week or two.
Excellent news! Thank you Aron & Logitech engineering team. Quick question - will this be supported in LogiOptions + as well or do we have to install both GHub for the Litra and logioptions+ separately for other devices?
This is only supported in GHub right now.
Thanks for adding this feature to GHub!
Now all I need is to be able to manually turn it off using one of the programmable keys in my Logitech MX Keys. @aronrosenberg Are you looking to enable that feature?
You should already be able to assign Litra actions to a G key, just look for it under the assignments section for your keyboard.
I missed the part where you said you had a MX Keys. That device is currently only supported in Options+ which does not have the Litra auto-on/off functionality at this time.
Ideally there will only be one software for everything but I can live with having the auto on/off in GHub, if I'm able to have Smart actions for the light in Options+ to toggle it on/off manually, which are missing.
@aronrosenberg Nice that this is now supported by Logitech G-Hub. Is there any progress with a native Apple Silicon version that doesn't require Rosetta?
I enjoyed the feature in G-Hub but unfortunately G-Hub also caused lots of problems with my Yeti Mic. https://www.reddit.com/r/LogitechG/comments/oypw43/logitech_ghub_update_breaks_blue_yeti_mic/
The version in https://gist.github.com/antonmry/8bf2d07db75df538c385bfa1cd6d5cf2?permalink_comment_id=4723193#gistcomment-4723193 worked well for me, except that it would turn on whenever my phone came near my computer (i.e. the continuity camera logs triggered the light to turn on). This was the script I have that is working well. Note the addition of bundleNames
:
model="046D/C900"
hidapitester="/Library/LaunchDaemons/hidapitester"
log stream --predicate 'eventMessage contains[c] "cameras changed to "' | while read LOGLINE;
do
# ON
[[ "${LOGLINE}" == *"changed to [ControlCenterApp.VideoCamera"*"bundleNames"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c,0x01";
# OFF
[[ "${LOGLINE}" == *"changed to [:]"* ]] && eval "$hidapitester --vidpid $model --open --length 20 --send-output 0x11,0xff,0x04,0x1c";
done
Just managed to get mine running - had to start and stop the service a few times and then it just started working. Weird.