Watch
1
0
Fork
You've already forked Lighthouse
0
mirror of https://github.com/ShayBox/Lighthouse.git synced 2026-10-04 15:34:17 +00:00
Virtual reality basestation power management in Rust
  • Rust 87.4%
  • C 12.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-16 19:20:16 -04:00
.github/workflows 2.1.0 - V2 Channel Management 2026-09-16 19:20:16 -04:00
include 2.1.0 - V2 Channel Management 2026-09-16 19:20:16 -04:00
src 2.1.0 - V2 Channel Management 2026-09-16 19:20:16 -04:00
tests 2.1.0 - V2 Channel Management 2026-09-16 19:20:16 -04:00
.gitignore 1.1.0 - Maintenance 2023-03-17 00:49:06 -04:00
build.rs Optional C FFI ABI (#16) 2026-08-24 03:18:29 -04:00
Cargo.lock 2.1.0 - V2 Channel Management 2026-09-16 19:20:16 -04:00
Cargo.toml 2.1.0 - V2 Channel Management 2026-09-16 19:20:16 -04:00
cbindgen.toml Optional C FFI ABI (#16) 2026-08-24 03:18:29 -04:00
LICENSE Initial commit 2021-03-18 08:53:06 -04:00
README.md 2.1.0 - V2 Channel Management 2026-09-16 19:20:16 -04:00
rustfmt.toml 1.1.1 - Maintenance 2023-08-31 05:48:18 -04:00

Lighthouse

Virtual reality basestation power management in Rust

Usage

Usage: lighthouse [OPTIONS]

Options:
  -s, --state <STATE>              V1: [OFF|ON] | V2: [OFF|ON|STANDBY] (omit both action flags to show status)
  -c, --channel <CHANNEL>          V2 only: set channel frequency (1-16)
  -b, --bsid <BSID>...             V1: Basestation BSID (Required) | V2: Bluetooth Device Identifier (Optional)
  -v, --verbose...                 Increase logging verbosity
  -q, --quiet...                   Decrease logging verbosity
  -t, --timeout <TIMEOUT>          Request timeout in seconds [default: 10]
      --retries <RETRIES>          Number of write attempts per basestation [default: 3]
      --retry-delay <RETRY_DELAY>  Delay between write attempts in seconds [default: 2]
  -h, --help                       Print help

V1 Basestations require an 8 character BSID found on the device to work.

V2 Basestations do not require BSID. But you can specify their MAC address as BSID to manage a specific device.

Examples

Showing status of lighthouses within range:

Run without action flags to scan for basestations and show their power state and channel:

$ lighthouse
2025-08-24T21:14:58.528048Z  INFO lighthouse: Starting scan on hci0...
2025-08-24T21:15:33.543205Z  INFO lighthouse: LHB-6DC32F38 [hci0/dev_E2_5A_B0_E4_97_AD]: ON, Channel 5

Power state and channel are read from the device, so this only works on V2 basestations with firmware that supports reading. Older firmware shows N/A for values it cannot report.

Setting a V2 lighthouse channel:

V2 basestations support channels 1-16. Use different channels to reduce interference between multiple basestations:

$ lighthouse --channel 5
$ lighthouse -c 3 --bsid "E2:5A:B0:E4:97:AD"

Turning a V1 lighthouse on:

Find the BSID at the back of the device.

$ lighthouse --state on --bsid aabbccdd
$ lighthouse --state on --bsid aabbccdd --bsid eeff0011
$ lighthouse --state on --bsid aabbccdd,eeff0011

Turning on any V2 lighthouses within range:

$ lighthouse --state on

Turning on a specific V2 lighthouse:

Run once with verbose parameters to find the MAC address for each lighthouse:

$ lighthouse -vv --state off

This will show the device path or MAC address within square brackets, looking something like this:

2025-02-28T22:14:58.528048Z  INFO lighthouse: Found 'LHB-6DC32F38' [hci0/dev_E2_5A_B0_E4_97_AD]
2025-02-28T22:15:33.543205Z  INFO lighthouse: LHB-6DC32F38 [hci0/dev_E2_5A_B0_E4_97_AD]: OFF

Use the ID shown in the square brackets in the previous command as the bsid to manage a specific lighthouse:

$ lighthouse --state on --bsid "hci0/dev_E2_5A_B0_E4_97_AD"
# or
$ lighthouse --state on --bsid "E2:5A:B0:E4:97:AD"
$ lighthouse --state on --bsid "E2:5A:B0:E4:97:AD" --bsid "hci0/dev_A1_B2_C3_D4_E5_F6"
$ lighthouse --state on --bsid "E2:5A:B0:E4:97:AD","hci0/dev_A1_B2_C3_D4_E5_F6"

macOS

Enable the Bluetooth permission for your terminal. You can do the latter by going to System Preferences → Security & Privacy → Privacy → Bluetooth, clicking the '+' button, and selecting 'Terminal' (or iTerm or whichever terminal application you use).