A web-based control and recording interface for the Uniden Bearcat BC125AT/UBC125XLT scanner. This project provides:
- A FastAPI backend for communicating with the scanner over USB
- A real-time web UI for controlling keys, channels, backlight, and automatic recording
- Automatic audio recording based on squelch state
- Recording toggle (enable/disable) via the frontend
- Works on Linux with Python ≥ 3.10
Ensure your system is running Python 3.10 or later:
python3 --version
If the output shows Python 3.10.x or newer, you're good.
cd ~/Documents/GitHub
git clone <repo-url>
cd uniden-linux-controller
sudo apt update
sudo apt install python3-venv
This project requires PortAudio for audio support. On Ubuntu, you need to install the system libraries before installing Python dependencies:
sudo apt update
sudo apt install -y portaudio19-dev libasound2-dev
python3 -m venv venv
Activate it:
source venv/bin/activate
pip install -e .
- Turn on the BC125AT/UBC125XLT
- Ensure it is scanning or idle
- Plug in the USB cable after the scanner is powered on (helps avoid detection issues)
- (You can list USB devices with
ls /dev/ttyACM*.) - Run
sudo usermod -aG dialout $USER - Restart your computer to make sure the changes take effect.
- After restarting, verify that your user is in the
dialoutgroup by running:groups. You should seedialoutlisted among the groups.
Run:
uvicorn scanner_api:app --host 0.0.0.0 --port 5000 --log-level warning
--host 0.0.0.0 allows access from other devices on the network
- Web UI: http://0.0.0.0:5000/ or http://127.0.0.1:5000/
Before recording, ensure that you have selected the correct audio input for your line-in in Linux sound settings.
For reference, I have configured my system as follows:
Line-in threshold: 20%
Scanner volume: 6
This helps prevent the input from being overdriven and ensures clean recordings.
If /dev/ttyACM0 does not appear, run:
echo "1965 0017 2 076d 0006" | sudo tee -a /sys/bus/usb/drivers/cdc_acm/new_id
- Real-time scanner status (screen, squelch, mute, frequency, modulation, tone)
- Full keypad emulation
- Channel jumping
- Backlight control
- Automatic audio recording when squelch opens
- Recording toggle via frontend checkbox
- Modular FastAPI backend
Serial communication with the scanner is handled using the excellent Bearcat Python library by fruzyna.
