6.8 KiB
6.8 KiB
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
echo 1 | sudo tee /sys/class/leds/usr-buzzer/brightness
Turn Buzzer OFF
echo 0 | sudo tee /sys/class/leds/usr-buzzer/brightness
Check Buzzer Status
cat /sys/class/leds/usr-buzzer/brightness
0= OFF1or255= ON
Basic Control Methods
Method 1: Command Line (Simple)
Single Beep (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
Double Beep:
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):
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:
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:
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:
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:
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)
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)
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)
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)
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:
# Run the test script
ssh guard "/tmp/test_buzzer.sh"
Or copy and run locally:
scp guard:/tmp/test_buzzer.sh ./
chmod +x test_buzzer.sh
./test_buzzer.sh
Important Notes
- Requires sudo: All buzzer control commands require root privileges
- Simple on/off: The buzzer can only be turned ON or OFF - no volume or frequency control
- Location: Bottom right corner of the screen
- Use case: Alerts, notifications, system events
Troubleshooting
Buzzer Not Working
-
Check device exists:
ls -la /sys/class/leds/usr-buzzer/ -
Test manually:
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 -
Check permissions:
ls -la /sys/class/leds/usr-buzzer/brightness # Should show: -rw-r--r-- (requires sudo to write) -
Verify current state:
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 1instead ofsleep 0.2) - Check kernel messages:
dmesg | grep -i buzzer
Examples
Example 1: Simple Alert Function
#!/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
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 guideFLASK-BUZZER-CONTROL.md- Flask web API for buzzer controlstarwars_buzzer.sh- Star Wars theme example script
Summary
The buzzer is simple to control:
- Path:
/sys/class/leds/usr-buzzer/brightness - Values:
0= OFF,1= ON - Requires:
sudoprivileges - Control: Write
1to turn on,0to turn off
That's it! Simple and straightforward.