Files
reterminal-dm4/chromium-setup/BUZZER-CONTROL-SIMPLE.md

312 lines
6.8 KiB
Markdown

# 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.