AMBEServer is a background service that connects an AMBE 3000 USB dongle (DVMega, DV3000, TEAM6160 USB Voco, etc.) to applications.
If your AMBE dongle doesn't work out of the box because it boots into the wrong mode, this is the server for you.
Start the server with your AMBE dongle plugged in:
sudo AMBEserver
By default this listens on UDP port 2460 and uses /dev/ttyUSB0 at 460800 baud. Your software connects to it automatically.
AMBEserver [-d] [-r] [-s speed] [-p port] [-i tty] [-m] [-v] [-x] [-o] [-h]
| Option | Description | Default |
|---|---|---|
-i tty |
Serial port for your AMBE dongle | /dev/ttyUSB0 |
-s speed |
Serial port speed | 460800 |
-p port |
UDP port to listen on | 2460 |
-d |
Run in the background | off |
-r |
Hardware reset via GPIO (Raspberry Pi hats only) | off |
-m |
Allow multiple UDP clients | off |
-o |
Force AMBE3000R identity (see below) | off |
-x |
Verbose logging (repeat -xx for more detail) |
off |
-v |
Show version and exit | |
-h |
Show this help and exit |
Some AMBE boards (like the TEAM6160 USB Voco) report themselves with a different name. If your software says it can't find an AMBE dongle, try:
sudo AMBEserver -o
This makes your dongle identify as an AMBE3000R.
For clean voice audio, the USB-to-serial chip's latency timer must be set to 1ms. The default is 16ms, which causes noticeable audio delay.
If you run AMBEServer as root (via sudo or a systemd service), this is handled automatically.
If you see a warning like this on startup:
AMBEserver: WARNING: FTDI latency timer is NOT set to 1ms.
Voice audio may be delayed. Fix with:
sudo sh -c 'echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer'
Run the suggested command once, or install the udev rule to make it permanent:
sudo cp 99-ftdi-latency.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
Then unplug and replug your USB dongle.
AMBEServer is designed to run as a systemd service. Here's a basic unit file:
[Unit]
Description=AMBE3000 DV3000 Server
After=network.target
[Service]
ExecStart=/usr/bin/AMBEserver
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Save as /etc/systemd/system/ambeserver.service, then:
sudo systemctl daemon-reload
sudo systemctl enable ambeserver
sudo systemctl start ambeserver
Check status with sudo systemctl status ambeserver.
A test tool (AMBEtest5.py) is included to verify your AMBE dongle is working correctly. Plug in your dongle and run:
python3 AMBEtest5.py -s /dev/ttyUSB0
This runs a full test suite: stress testing, error recovery, concurrent encode/decode, edge-case audio frames, and latency measurement.
Quick check — run just the latency test:
python3 AMBEtest5.py -s /dev/ttyUSB0 --latency
Test over UDP (server must be running):
python3 AMBEtest5.py -i 127.0.0.1 -c 20
See AMBEtest5.md for full documentation of all test options.
"Could not initialize the DV3K" — The server can't talk to your dongle. Check:
- Is the dongle plugged in?
- Is the serial port correct? (
-i /dev/ttyUSB0) - Is another program already using the port?
- Try the hardware reset option:
sudo AMBEserver -r
Audio is choppy or delayed — Set the FTDI latency timer to 1ms (see above).
"Permission denied" on the serial port — Add your user to the dialout group, or run as root:
sudo usermod -aG dialout $USER
Then log out and back in.
Check server stats — Send SIGUSR1 to see packet counts:
sudo kill -USR1 $(pidof AMBEserver)
Thanks to:
- G4KLX - original AMBEServer
- NH6Z / K7VE / DL5DI - AMBEServer improvements
- TEAM6061 - RESETSOFTCFG/TEAM6061 Edition
- N80HU - Makefile inspiration
GPL 2.0 or later. See original code.