# reTerminal DM4 Buzzer Test Guide ## Overview The reTerminal DM4 has a built-in buzzer located at the bottom right corner of the screen. The buzzer is controlled via the Linux LED subsystem and can be used for system alerts and notifications. ## Buzzer Device Location - **Sysfs Path**: `/sys/class/leds/usr-buzzer` - **Control Method**: LED brightness control (0 = off, 1 = on) - **Type**: Active buzzer (on/off control) ## Quick Test Methods ### Method 1: Simple On/Off Test ```bash # Turn buzzer ON echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness # Turn buzzer OFF echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness ``` ### Method 2: Single Beep ```bash # Beep for 0.2 seconds echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness sleep 0.2 echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness ``` ### Method 3: Double Beep ```bash # Double beep pattern 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 ``` ### Method 4: Rapid Beeps ```bash # 5 rapid beeps for i in {1..5}; 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 ``` ## Complete Test Script A comprehensive test script is available on the device at `/tmp/test_buzzer.sh`. To use it: ```bash # Run the test script /tmp/test_buzzer.sh ``` Or create your own script: ```bash #!/bin/bash # Buzzer test script for reTerminal DM4 BUZZER_PATH='/sys/class/leds/usr-buzzer' echo 'Testing reTerminal DM4 Buzzer' echo '==============================' echo '' # Test 1: Single beep echo 'Test 1: Single beep (0.2 seconds)' echo 1 | sudo tee $BUZZER_PATH/brightness > /dev/null sleep 0.2 echo 0 | sudo tee $BUZZER_PATH/brightness > /dev/null sleep 0.5 # Test 2: Double beep echo 'Test 2: Double beep' for i in 1 2; do echo 1 | sudo tee $BUZZER_PATH/brightness > /dev/null sleep 0.1 echo 0 | sudo tee $BUZZER_PATH/brightness > /dev/null sleep 0.1 done sleep 0.5 # Test 3: Long beep echo 'Test 3: Long beep (0.5 seconds)' echo 1 | sudo tee $BUZZER_PATH/brightness > /dev/null sleep 0.5 echo 0 | sudo tee $BUZZER_PATH/brightness > /dev/null sleep 0.5 # Test 4: Rapid beeps echo 'Test 4: Rapid beeps (5 beeps)' for i in {1..5}; do echo 1 | sudo tee $BUZZER_PATH/brightness > /dev/null sleep 0.05 echo 0 | sudo tee $BUZZER_PATH/brightness > /dev/null sleep 0.05 done echo '' echo 'Buzzer test complete!' ``` ## Using Timer Trigger (Advanced) The buzzer can also use the timer trigger for automatic beeping patterns: ```bash # Set timer trigger echo timer | sudo tee /sys/class/leds/usr-buzzer/trigger # Set delay_on and delay_off (in milliseconds) echo 100 | sudo tee /sys/class/leds/usr-buzzer/delay_on echo 100 | sudo tee /sys/class/leds/usr-buzzer/delay_off # Disable timer trigger (return to manual control) echo none | sudo tee /sys/class/leds/usr-buzzer/trigger ``` ## Checking Buzzer Status ```bash # Check current brightness (0 = off, 1 = on) cat /sys/class/leds/usr-buzzer/brightness # Check max brightness cat /sys/class/leds/usr-buzzer/max_brightness # Check current trigger cat /sys/class/leds/usr-buzzer/trigger ``` ## Integration Examples ### Python Script ```python #!/usr/bin/env python3 import time BUZZER_PATH = '/sys/class/leds/usr-buzzer/brightness' def buzzer_on(): with open(BUZZER_PATH, 'w') as f: f.write('1') def buzzer_off(): with open(BUZZER_PATH, 'w') as f: f.write('0') def beep(duration=0.2): buzzer_on() time.sleep(duration) buzzer_off() # Test beep(0.2) # Single beep time.sleep(0.5) beep(0.1) # Short beep time.sleep(0.1) beep(0.1) # Short beep (double beep) ``` ### Bash Function Add to your `~/.bashrc`: ```bash # Buzzer control function buzzer() { local action=${1:-status} local BUZZER='/sys/class/leds/usr-buzzer/brightness' case $action in on) echo 1 | sudo tee $BUZZER > /dev/null echo "Buzzer ON" ;; off) echo 0 | sudo tee $BUZZER > /dev/null echo "Buzzer OFF" ;; beep) local duration=${2:-0.2} echo 1 | sudo tee $BUZZER > /dev/null sleep $duration echo 0 | sudo tee $BUZZER > /dev/null ;; status) local state=$(cat $BUZZER) echo "Buzzer is: $([ $state -eq 1 ] && echo 'ON' || echo 'OFF')" ;; *) echo "Usage: buzzer {on|off|beep [duration]|status}" ;; esac } ``` Then use: ```bash buzzer beep 0.2 # Single beep buzzer on # Turn on buzzer off # Turn off buzzer status # Check status ``` ## Troubleshooting ### Buzzer Not Working 1. **Check device exists:** ```bash ls -la /sys/class/leds/usr-buzzer/ ``` 2. **Check permissions:** ```bash # You need sudo to control the buzzer sudo echo 1 > /sys/class/leds/usr-buzzer/brightness ``` 3. **Check kernel messages:** ```bash dmesg | grep -i buzzer ``` 4. **Verify GPIO/device tree:** ```bash # Check if buzzer is in device tree ls /proc/device-tree/ | grep -i buzz ``` ### No Sound from Buzzer - The buzzer is a simple active buzzer - it should make a continuous tone when ON - If no sound, check physical connections (buzzer may be damaged) - Verify the device is powered on - Check if buzzer is disabled in device tree or kernel config ## Notes - **Buzzer is simple**: It can only be ON or OFF - no frequency control - **Requires sudo**: Writing to sysfs requires root privileges - **Location**: Bottom right corner of the screen - **Use case**: System alerts, notifications, error indicators - **Not for audio**: The buzzer cannot play music or complex sounds - only simple beeps ## Related Documentation - See `AUDIO-CONFIGURATION-REPORT.md` for complete audio system information - reTerminal DM4 User Manual for hardware specifications