Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What is AMBEServer?

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.

Quick Start

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.

Options

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

Product ID Override (-o)

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.

FTDI Latency Timer

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.

Running as a Service

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.

Testing

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.

Troubleshooting

"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)

Acknowledgments

Thanks to:

  • G4KLX - original AMBEServer
  • NH6Z / K7VE / DL5DI - AMBEServer improvements
  • TEAM6061 - RESETSOFTCFG/TEAM6061 Edition
  • N80HU - Makefile inspiration

License

GPL 2.0 or later. See original code.

About

Modified AMBEServer with DVMEGA AMBE 3000 support

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages