Loading...
.pkg installer and run it./usr/local/bin/. It does not set up anything to keep it running or start it automatically: that's the next step. sudo nano /Library/LaunchAgents/com.bitfocus.usb-relay.plist <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.bitfocus.usb-relay</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/bitfocus-buttons-usb-relay-headless</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/bitfocus-usb.err</string>
<key>StandardOutPath</key>
<string>/tmp/bitfocus-usb.out</string>
</dict>
</plist>-buttonsAddress and the address as extra <string> entries inside ProgramArguments.Ctrl+O, Enter, then Ctrl+X). sudo chown root:wheel /Library/LaunchAgents/com.bitfocus.usb-relay.plist
sudo chmod 644 /Library/LaunchAgents/com.bitfocus.usb-relay.plistCmd+Shift+G, type /usr/local/bin/, select bitfocus-buttons-usb-relay-headless, and make sure its toggle is on. launchctl bootstrap gui/$(id -u) /Library/LaunchAgents/com.bitfocus.usb-relay.plistlaunchctl list | grep bitfocus; a number in the first column is its process ID.tail -f /tmp/bitfocus-usb.outlaunchctl kickstart -k gui/$(id -u)/com.bitfocus.usb-relay; useful if it stops responding, or after plugging in a new device.xattr -d com.apple.quarantine /usr/local/bin/bitfocus-buttons-usb-relay-headlesssudo launchctl bootout gui/$(id -u) /Library/LaunchAgents/com.bitfocus.usb-relay.plist
sudo rm /Library/LaunchAgents/com.bitfocus.usb-relay.plist-accept-cert-change as an extra argument in the plist once, then remove it again afterward. What you see | What to try |
|---|---|
The relay stops as soon as you log out. | Confirm automatic login is set up: a LaunchAgent needs an active session to reach USB hardware, so it won't survive at the login screen. |
Logs show "Permission Denied" even though the process is running. | Check whether macOS quarantined the binary ( xattr -d com.apple.quarantine ...), and confirm Input Monitoring access is actually granted, not just requested. |
The relay doesn't appear in Buttons' discovered surfaces. | Confirm it's actually running (`launchctl list \ | grep bitfocus`) and that both machines are on a network that supports discovery. |
Its logs ( tail -f /tmp/bitfocus-usb.out) show an error about being unable to multicast. | The relay can't broadcast itself on the network, usually due to a VPN or a corporate network that blocks discovery traffic. Skip discovery entirely by connecting it outbound instead: see the -buttonsAddress step under Run it persistently with a LaunchAgent above. |
The relay refuses to reconnect after you replaced Buttons' HTTPS certificate. | Add -accept-cert-change to the plist's arguments once, reload it, then remove the flag again. |
USB performance is inconsistent on a headless Mac Mini. | An HDMI dummy plug (sometimes sold as a "ghost adapter") can help: it forces macOS to fully initialize its graphics stack, which some setups need for stable USB behavior. |
Was this helpful?
0 of 0 users found this page helpful