Initial monorepo — everything BlackRoad in one place
bin/ 230 CLI tools (ask-*, br-*, agent-*, roadid, carpool) scripts/ 99 automation scripts fleet/ Node configs and deployment workers/ Cloudflare Worker sources (roadpay, road-search, squad webhooks) roadc/ RoadC programming language roadnet/ Mesh network (5 APs, WireGuard) operator/ Memory system scripts config/ System configs dotfiles/ Shell configs docs/ Documentation BlackRoad OS — Pave Tomorrow. RoadChain-SHA2048: d1a24f55318d338b RoadChain-Identity: alexa@sovereign RoadChain-Full: d1a24f55318d338b24b60bad7be39286379c76ae5470817482100cb0ddbbcb97e147d07ac7243da0a9f0363e4e5c833d612b9c0df3a3cd20802465420278ef74875a5b77f55af6fe42a931b8b635b3d0d0b6bde9abf33dc42eea52bc03c951406d8cbe49f1a3d29b26a94dade05e9477f34a7d4d4c6ec4005c3c2ac54e73a68440c512c8e83fd9b1fe234750b898ef8f4032c23db173961fe225e67a0432b5293a9714f76c5c57ed5fdf35b9fb40fd73c03ebf88b7253c6a0575f5afb6a6b49b3bda310602fb1ef676859962dad2aebbb2875814b30eee0a8ba195e482d4cbc91d8819e7f38f6db53e8063401649c77bb994371473cabfb917fb53e8cbe73d60
This commit is contained in:
111
bin/blackroad-rgb-hardware-detector.sh
Normal file
111
bin/blackroad-rgb-hardware-detector.sh
Normal file
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env bash
|
||||
# ============================================================================
|
||||
# BLACKROAD OS, INC. - PROPRIETARY AND CONFIDENTIAL
|
||||
# Copyright (c) 2025-2026 BlackRoad OS, Inc. All Rights Reserved.
|
||||
#
|
||||
# This code is the intellectual property of BlackRoad OS, Inc.
|
||||
# AI-assisted development does not transfer ownership to AI providers.
|
||||
# Unauthorized use, copying, or distribution is prohibited.
|
||||
# NOT licensed for AI training or data extraction.
|
||||
# ============================================================================
|
||||
# blackroad-rgb-hardware-detector.sh
|
||||
# Detect RGB LEDs, GPIO, and lighting hardware on Raspberry Pis
|
||||
|
||||
set +e
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
PINK='\033[38;5;205m'
|
||||
MAGENTA='\033[0;35m'
|
||||
BOLD='\033[1m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${BOLD}${PINK}"
|
||||
cat << "EOF"
|
||||
╔══════════════════════════════════════════════════════════════════════════╗
|
||||
║ ║
|
||||
║ 💡 BLACKROAD RGB HARDWARE DETECTOR 💡 ║
|
||||
║ ║
|
||||
║ Finding Real Physical Lights & LEDs on Your Cluster ║
|
||||
║ ║
|
||||
╚══════════════════════════════════════════════════════════════════════════╝
|
||||
EOF
|
||||
echo -e "${NC}"
|
||||
|
||||
detect_pi_hardware() {
|
||||
local name=$1
|
||||
local user=$2
|
||||
local key=$3
|
||||
local ip=$4
|
||||
|
||||
echo -e "\n${BOLD}${YELLOW}━━━ $name ($ip) ━━━${NC}\n"
|
||||
|
||||
# Build SSH command
|
||||
if [[ -n "$key" && -f "$HOME/.ssh/$key" ]]; then
|
||||
SSH_CMD="ssh -i $HOME/.ssh/$key -o ConnectTimeout=5 -o StrictHostKeyChecking=no ${user}@${ip}"
|
||||
else
|
||||
SSH_CMD="ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no ${user}@${ip}"
|
||||
fi
|
||||
|
||||
# 1. Check Pi model
|
||||
echo -e "${PINK}Hardware Info:${NC}"
|
||||
$SSH_CMD "cat /proc/device-tree/model 2>/dev/null || echo 'Unknown Pi model'"
|
||||
|
||||
# 2. Check GPIO availability
|
||||
echo -e "\n${PINK}GPIO Status:${NC}"
|
||||
$SSH_CMD "ls -la /sys/class/gpio/ 2>/dev/null | head -5 || echo 'GPIO not accessible'"
|
||||
|
||||
# 3. Check for GPIO libraries
|
||||
echo -e "\n${PINK}GPIO Libraries:${NC}"
|
||||
$SSH_CMD "which gpio 2>/dev/null && echo '✓ WiringPi installed' || echo '✗ WiringPi not found'"
|
||||
$SSH_CMD "python3 -c 'import RPi.GPIO' 2>/dev/null && echo '✓ RPi.GPIO available' || echo '✗ RPi.GPIO not found'"
|
||||
$SSH_CMD "python3 -c 'import gpiod' 2>/dev/null && echo '✓ gpiod available' || echo '✗ gpiod not found'"
|
||||
$SSH_CMD "python3 -c 'import lgpio' 2>/dev/null && echo '✓ lgpio available' || echo '✗ lgpio not found'"
|
||||
|
||||
# 4. Check for LED devices
|
||||
echo -e "\n${PINK}LED Devices:${NC}"
|
||||
$SSH_CMD "ls /sys/class/leds/ 2>/dev/null || echo 'No LED devices found'"
|
||||
|
||||
# 5. Check for I2C (for addressable LEDs)
|
||||
echo -e "\n${PINK}I2C Devices:${NC}"
|
||||
$SSH_CMD "ls -la /dev/i2c-* 2>/dev/null || echo 'No I2C devices'"
|
||||
|
||||
# 6. Check for SPI (for LED strips)
|
||||
echo -e "\n${PINK}SPI Devices:${NC}"
|
||||
$SSH_CMD "ls -la /dev/spidev* 2>/dev/null || echo 'No SPI devices'"
|
||||
|
||||
# 7. Check for NeoPixel/WS2812 libraries
|
||||
echo -e "\n${PINK}LED Strip Libraries:${NC}"
|
||||
$SSH_CMD "python3 -c 'import rpi_ws281x' 2>/dev/null && echo '✓ rpi_ws281x available' || echo '✗ rpi_ws281x not found'"
|
||||
$SSH_CMD "python3 -c 'import neopixel' 2>/dev/null && echo '✓ neopixel available' || echo '✗ neopixel not found'"
|
||||
|
||||
# 8. Check for Pironman case (has RGB LEDs!)
|
||||
echo -e "\n${PINK}Pironman RGB Case:${NC}"
|
||||
$SSH_CMD "ls -la /dev/oled* 2>/dev/null && echo '✓ Pironman OLED detected' || echo '✗ No Pironman hardware'"
|
||||
$SSH_CMD "i2cdetect -y 1 2>/dev/null | grep -E '(48|4a)' && echo '✓ RGB controller detected' || echo '✗ No RGB controller'"
|
||||
|
||||
# 9. Test GPIO pin access
|
||||
echo -e "\n${PINK}GPIO Pin Test:${NC}"
|
||||
$SSH_CMD "cat /sys/kernel/debug/gpio 2>/dev/null | head -10 || echo 'Debug GPIO not accessible (need root?)'"
|
||||
|
||||
# 10. Check user permissions
|
||||
echo -e "\n${PINK}User Permissions:${NC}"
|
||||
$SSH_CMD "groups | grep -E '(gpio|spi|i2c)' || echo 'User not in GPIO groups'"
|
||||
$SSH_CMD "ls -la /dev/gpiomem 2>/dev/null || echo 'gpiomem not accessible'"
|
||||
|
||||
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
}
|
||||
|
||||
# Detect all Pis
|
||||
detect_pi_hardware "Octavia" "pi" "id_octavia" "192.168.4.81"
|
||||
detect_pi_hardware "Alice" "pi" "" "192.168.4.49"
|
||||
detect_pi_hardware "Lucidia" "pi" "br_mesh_ed25519" "192.168.4.38"
|
||||
detect_pi_hardware "Aria" "pi" "br_mesh_ed25519" "192.168.4.82"
|
||||
|
||||
echo -e "\n${BOLD}${GREEN}Hardware detection complete!${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}Next steps:${NC}"
|
||||
echo " 1. Install GPIO libraries if needed"
|
||||
echo " 2. Add user to gpio group: sudo usermod -a -G gpio pi"
|
||||
echo " 3. Test LED control"
|
||||
Reference in New Issue
Block a user