265 lines
5.9 KiB
Markdown
265 lines
5.9 KiB
Markdown
# 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
|