Skip to content

Instantly share code, notes, and snippets.

@antonmry
Last active May 29, 2024 03:14
Show Gist options
  • Save antonmry/8bf2d07db75df538c385bfa1cd6d5cf2 to your computer and use it in GitHub Desktop.
Save antonmry/8bf2d07db75df538c385bfa1cd6d5cf2 to your computer and use it in GitHub Desktop.
This is script to auto on/off a Logitech light when the webcam is on/off in Mac. It requires hidapitester
<?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
@aronrosenberg
Copy link

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.

@Agusum
Copy link

Agusum commented Oct 27, 2023

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.

@patrickrushton
Copy link

@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?

@timtrinidad
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment