# Simple Buzzer Control Guide - reTerminal DM4 ## Overview The reTerminal DM4 has a built-in buzzer that can be controlled for alerts and notifications. The buzzer is located at the bottom right corner of the screen. ## Quick Start ### Turn Buzzer ON ```bash echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness ``` ### Turn Buzzer OFF ```bash echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness ``` ### Check Buzzer Status ```bash cat /sys/class/leds/usr-buzzer/brightness ``` - `0` = OFF - `1` or `255` = ON --- ## Basic Control Methods ### Method 1: Command Line (Simple) **Single Beep (0.2 seconds):** ```bash echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.2 echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness ``` **Double Beep:** ```bash for i in 1 2; do echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.1 echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.1 done ``` **Long Beep (1 second):** ```bash echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 1 echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness ``` ### Method 2: Python Script **Simple Python Control:** ```python import subprocess import time BUZZER_PATH = '/sys/class/leds/usr-buzzer/brightness' def buzzer_on(): """Turn buzzer ON""" subprocess.run(['sudo', 'tee', BUZZER_PATH], input='1', text=True) def buzzer_off(): """Turn buzzer OFF""" subprocess.run(['sudo', 'tee', BUZZER_PATH], input='0', text=True) def beep(duration=0.2): """Play a beep for specified duration (in seconds)""" buzzer_on() time.sleep(duration) buzzer_off() # Usage beep(0.2) # Short beep beep(0.5) # Medium beep beep(1.0) # Long beep ``` **Blinking Pattern:** ```python def beep_pattern(count=3, on_time=0.1, off_time=0.1): """Blink buzzer multiple times""" for _ in range(count): buzzer_on() time.sleep(on_time) buzzer_off() time.sleep(off_time) # Usage beep_pattern(3, 0.1, 0.1) # 3 quick beeps ``` ### Method 3: Bash Function Add to your `~/.bashrc`: ```bash buzzer() { local action=$1 local duration=${2:-0.2} local BUZZER='/sys/class/leds/usr-buzzer/brightness' case $action in on) echo 1 | sudo tee $BUZZER > /dev/null ;; off) echo 0 | sudo tee $BUZZER > /dev/null ;; beep) echo 1 | sudo tee $BUZZER > /dev/null sleep $duration echo 0 | sudo tee $BUZZER > /dev/null ;; *) echo "Usage: buzzer {on|off|beep [duration]}" ;; esac } ``` Then use: ```bash buzzer on # Turn on buzzer off # Turn off buzzer beep 0.2 # Beep for 0.2 seconds buzzer beep 0.5 # Beep for 0.5 seconds ``` --- ## Common Patterns ### Success Alert (2 short beeps) ```bash for i in 1 2; do echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.1 echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.1 done ``` ### Error Alert (3 fast beeps) ```bash for i in 1 2 3; do echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.05 echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.05 done ``` ### Warning Alert (1 long beep) ```bash echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.5 echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness ``` ### Notification (1 short beep) ```bash echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.2 echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness ``` --- ## Using the Test Script A test script is available at `/tmp/test_buzzer.sh` on the device: ```bash # Run the test script ssh guard "/tmp/test_buzzer.sh" ``` Or copy and run locally: ```bash scp guard:/tmp/test_buzzer.sh ./ chmod +x test_buzzer.sh ./test_buzzer.sh ``` --- ## Important Notes 1. **Requires sudo**: All buzzer control commands require root privileges 2. **Simple on/off**: The buzzer can only be turned ON or OFF - no volume or frequency control 3. **Location**: Bottom right corner of the screen 4. **Use case**: Alerts, notifications, system events --- ## Troubleshooting ### Buzzer Not Working 1. **Check device exists:** ```bash ls -la /sys/class/leds/usr-buzzer/ ``` 2. **Test manually:** ```bash echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness # Wait a moment - you should hear the buzzer echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness ``` 3. **Check permissions:** ```bash ls -la /sys/class/leds/usr-buzzer/brightness # Should show: -rw-r--r-- (requires sudo to write) ``` 4. **Verify current state:** ```bash cat /sys/class/leds/usr-buzzer/brightness # 0 = off, 1 or 255 = on ``` ### No Sound from Buzzer - Check if buzzer is physically present and working - Verify the device is powered on - Try a longer duration (e.g., `sleep 1` instead of `sleep 0.2`) - Check kernel messages: `dmesg | grep -i buzzer` --- ## Examples ### Example 1: Simple Alert Function ```bash #!/bin/bash alert() { echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.3 echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness } # Use it alert ``` ### Example 2: Python Notification System ```python import subprocess import time def notify(message_type): BUZZER = '/sys/class/leds/usr-buzzer/brightness' patterns = { 'info': (1, 0.1), # 1 beep, 0.1s 'success': (2, 0.1), # 2 beeps, 0.1s each 'error': (3, 0.05), # 3 fast beeps 'warning': (1, 0.5), # 1 long beep } count, duration = patterns.get(message_type, (1, 0.2)) for _ in range(count): subprocess.run(['sudo', 'tee', BUZZER], input='1', text=True) time.sleep(duration) subprocess.run(['sudo', 'tee', BUZZER], input='0', text=True) time.sleep(0.1) # Usage notify('success') # 2 short beeps notify('error') # 3 fast beeps ``` --- ## Quick Reference | Action | Command | |--------|---------| | Turn ON | `echo 1 \| sudo tee /sys/class/leds/usr-buzzer/brightness` | | Turn OFF | `echo 0 \| sudo tee /sys/class/leds/usr-buzzer/brightness` | | Check Status | `cat /sys/class/leds/usr-buzzer/brightness` | | Single Beep | `echo 1 \| sudo tee /sys/class/leds/usr-buzzer/brightness && sleep 0.2 && echo 0 \| sudo tee /sys/class/leds/usr-buzzer/brightness` | --- ## Related Documentation - `BUZZER-TEST-GUIDE.md` - Detailed testing guide - `FLASK-BUZZER-CONTROL.md` - Flask web API for buzzer control - `starwars_buzzer.sh` - Star Wars theme example script --- ## Summary The buzzer is simple to control: 1. **Path**: `/sys/class/leds/usr-buzzer/brightness` 2. **Values**: `0` = OFF, `1` = ON 3. **Requires**: `sudo` privileges 4. **Control**: Write `1` to turn on, `0` to turn off That's it! Simple and straightforward.