Technische Analyse & Reverse Engineering:
Der Autocue CON-FC/USB/001 ist ein professioneller Teleprompter-Fußcontroller aus dem Broadcast-Bereich. Dieser Artikel dokumentiert eine vollständige Analyse des USB-Protokolls, der Hardware und der internen Kommunikationsstruktur.
Überblick
Der Autocue CON-FC/USB/001 ist ein professioneller USB-Fußcontroller für Teleprompter-Systeme der Autocue/QTV-Serie. Das Gerät erlaubt eine analoge Steuerung der Scrollgeschwindigkeit direkt per Fußdruck.
Die Analyse wurde mittels Reverse Engineering auf einem Apple Silicon MacBook Pro durchgeführt und umfasst:
- USB-Geräteanalyse
- Baudrate-Scanning
- Reverse Engineering des seriellen Protokolls
- PWM-/Duty-Cycle-Analyse
- Bit-Rekonstruktion des Datenstroms
Hardware
Äußere Beschreibung
- Fußpedal mit Rückstellfeder
- USB-A Anschluss
- Analoge Geschwindigkeitssteuerung
- Button 1 (Reverse)
- Button 2 (programmierbar)
Platine: SB18-A
Die interne Hauptplatine trägt die Kennzeichnung SB18-A.
Zentrale Komponenten:
- STM8S003F3P6 Mikrocontroller
- FTDI FT230XS USB-UART Bridge
STM8S003F3P6 Mikrocontroller
| Merkmal | Wert |
|---|---|
| Hersteller | STMicroelectronics |
| Familie | STM8S |
| Flash | 8 KB |
| RAM | 1 KB |
| ADC | 10-Bit |
Der STM8 verarbeitet kontinuierlich den analogen Pedalwert und erzeugt daraus einen seriellen Datenstrom.
FT230XS USB-UART Bridge
Das Gerät erscheint nicht als HID-Device, sondern als virtueller serieller Port.
Vendor ID: 0x0403 Product ID: 0x6015 Typ: FT230X Basic UART Verbindung: USB 2.0 Full Speed
Wichtig:
Das Gerät kann nicht über klassische HID-Bibliotheken angesprochen werden. Die Kommunikation erfolgt ausschließlich seriell (UART / Virtual COM Port).
Kommunikationsprotokoll
Serielle Parameter
Baudrate: 9600 Datenbits: 8 Parität: None Stopbits: 1 Handshake: None Format: 8N1
PWM-kodierter Byte-Stream
Das Gerät sendet kontinuierlich:
0x00 = LOW 0x80 = HIGH
Die Scrollgeschwindigkeit ergibt sich aus dem Verhältnis der HIGH-Bytes innerhalb eines Zeitfensters.
Beispiele
Vollgas: 80 00 80 00 80 00 80 00 ... Mittlere Geschwindigkeit: 80 00 80 00 00 00 80 00 ... Leichter Druck: 00 00 80 00 00 00 00 80 ... Kein Druck: 00 00 00 00 00 00 00 00 ...
Python-Codebeispiel
import serial
PORT = "/dev/cu.usbserial-D306MX9F"
BAUD = 9600
ser = serial.Serial(PORT, BAUD, timeout=0.05)
while True:
raw = ser.read(64)
if raw:
print(raw)
Fazit
Der Autocue CON-FC/USB/001 verwendet keinen klassischen HID-Ansatz, sondern einen ungewöhnlichen PWM-kodierten seriellen Datenstrom auf Basis eines FTDI-UART-Interfaces.
Die Analyse zeigt, dass sich professionelle Teleprompter-Fußcontroller mit vergleichsweise einfacher Hardware nachbauen oder in moderne HID-/Bluetooth-Lösungen überführen lassen.
Gerade für eigene Spezialcontroller oder moderne Fuß-Scrollrad-Konzepte ergeben sich daraus interessante Möglichkeiten.
Reverse Engineering the Autocue CON-FC/USB/001 USB Foot Pedal Controller
Author: Martin Lohr / MGL Videoservices
Date: May 2026
Category: Broadcast Technology, Hardware Analysis
Overview
The Autocue CON-FC/USB/001 is a professional USB foot controller designed for teleprompter software, specifically for the Autocue/QTV product line. It has been used in broadcast environments for many years and allows variable teleprompter scroll-speed control via foot pressure — without requiring the operator to remove their hands from the script.
This article documents a complete technical analysis of the device, performed through reverse engineering of the USB protocol on a MacBook Pro (macOS 26 / Apple M1 Pro).
Hardware
External Description
- Form factor: Foot pedal with spring-return mechanism
- Connection: Fixed USB-A cable
- Controls:
- Main pedal (analog, spring-loaded)
- Button 1 (direction reverse) – on older models
- Button 2 (programmable)
- Note: Newer revisions only include a single button
PCB: SB18-A
The internal PCB is labeled SB18-A and contains two primary ICs.
Chips & Function
IC 1: STMicroelectronics STM8S003F3P6
| Feature | Value |
|---|---|
| Manufacturer | STMicroelectronics |
| Family | STM8S (8-bit microcontroller) |
| Full designation | STM8S003F3P6 |
| Package | TSSOP-20 |
| Flash | 8 KB |
| RAM | 1 KB |
| ADC | 10-bit, up to 5 channels |
| Clock speed | up to 16 MHz (internal) |
| PCB manufacturing code | E4 / PHL / 618 Y |
The STM8S003F3P6 acts as the main processor. It continuously reads the analog value of the pedal potentiometer through its internal 10-bit ADC and encodes the measured value as a PWM-style signal into a serial byte stream.
IC 2: FTDI FT230XS
| Feature | Value |
|---|---|
| Manufacturer | FTDI |
| Type | USB-to-UART bridge |
| Package | SSOP-16 |
| USB Vendor ID | 0x0403 |
| USB Product ID | 0x6015 |
| Maximum baud rate | 3 Mbit/s |
| Serial number | D306MX9F |
The FT230XS converts the STM8 UART stream into a USB-compatible serial connection and appears as a virtual COM port.
USB Identification
Device Class: USB CDC / Virtual COM Port Vendor ID: 0x0403 (FTDI) Product ID: 0x6015 (FT230X) Manufacturer: FTDI Interface: FT230X Basic UART Connection Type: USB 2.0 Full Speed
Important for developers: the controller does not behave as a HID device. Communication is only possible via serial interfaces such as pyserial or libftdi.
Communication Protocol
Serial Parameters
Baud rate: 9600 baud Data bits: 8 Parity: None Stop bits: 1 Handshake: None Format: 8N1
PWM-Encoded Byte Stream
The device continuously transmits either 0x80 or 0x00. Scroll speed is encoded through the duty cycle of the byte stream.
0x00 = LOW 0x80 = HIGH
Examples
Full speed: 80 00 80 00 80 00 80 00 ... Medium speed: 80 00 80 00 00 00 80 00 ... Light pressure: 00 00 80 00 00 00 00 80 ... No pressure: 00 00 00 00 00 00 00 00 ...
Code Example (Python)
import serial
import time
from collections import deque
PORT = "/dev/cu.usbserial-D306MX9F"
BAUD = 9600
WINDOW_MS = 200
MAX_80_SEC = 160
byte_window = deque()
def calc_speed():
now = time.time()
cutoff = now - WINDOW_MS / 1000.0
while byte_window and byte_window[0][0] < cutoff:
byte_window.popleft()
if not byte_window:
return 0.0
highs = sum(1 for _, b in byte_window if b == 0x80)
high_sec = highs / (WINDOW_MS / 1000.0)
return min(high_sec / MAX_80_SEC, 1.0)
ser = serial.Serial(PORT, BAUD, timeout=0.05)
while True:
raw = ser.read(64)
if raw:
now = time.time()
for b in raw:
byte_window.append((now, b))
speed = calc_speed()
print(f"Speed: {speed*100:.1f}%")
Possible Applications
- Teleprompter speed control
- Browser scrolling
- Video timeline scrubbing
- Presentation control
- Custom foot-operated interfaces
Tools & Methodology
- Python 3.13
- pyserial 3.5
- macOS System Information
- PCB inspection
- Systematic baud-rate scanning
- PWM ratio analysis
- Bit reconstruction analysis
MGL Videoservices – Vienna | mglvideo.at / teleprompterservice.at

