Skip to content
Worix
BrowsePublish
Log inSign Up

Carrera HYBRID BLE Controller

Control Carrera HYBRID RC cars (by Sturmkind) via BLE. Use when user wants to drive, steer, control lights, write text with, or reverse-engineer Carrera HYBR...

73 downloads
Free
Reviewed

Carrera HYBRID BLE Controller

Control Sturmkind Carrera HYBRID RC cars via BLE from any Linux machine with Bluetooth.

Requirements

  • Python 3.10+, bleak (BLE), bless (MITM proxy)
  • Linux with BlueZ and a BLE-capable adapter
  • Install: pip install bleak bless

Protocol

20-byte packets sent every ~50ms via Nordic UART TX (6e400002-b5a3-f393-e0a9-e50e24dcca9e):

BF 0F 00 08 28 00 [GAS] [STEER] 86 00 72 00 02 FF [LIGHT] 00 00 00 00 [CRC8]
ByteFunctionValues
6Gas0xDF=idle, higher=forward (wraps 0xFF→0x00→0x11=max), lower=reverse
7Steering0x00=center, 0x01-0x7F=right, 0x81-0xFF=left
14Light0x82=on, 0x80=off
19CRC-8Poly=0x31, Init=0xFF over bytes 0-18

Scripts

scripts/carrera_drive.py — Drive Controller

# Basic commands
python3 scripts/carrera_drive.py forward [gas] [duration_ms]
python3 scripts/carrera_drive.py back [gas] [duration_ms]
python3 scripts/carrera_drive.py left [gas] [duration_ms]
python3 scripts/carrera_drive.py right [gas] [duration_ms]
python3 scripts/carrera_drive.py spin [gas] [duration_ms]
python3 scripts/carrera_drive.py light_on
python3 scripts/carrera_drive.py light_off
python3 scripts/carrera_drive.py demo
  • gas: 1-50 (default 40)
  • duration_ms: milliseconds (default 3000)
  • Edit ADDRESS in script to match your car's BLE address

Telegram Remote Control

Send inline button messages for interactive control:

⬆️ Vorwärts  |  ⬇️ Rückwärts
↩️ Links      |  ➡️ Rechts
🔄 Spin!      |  🏁 Demo
💡 Licht AN   |  🌑 Licht AUS

On callback car_forward, car_back, etc. → run the corresponding carrera_drive.py command.

Calibration

At Gas=20, Steer=80: one full circle ≈ 7100ms. Adjust timing for your surface/car.

Finding Your Car

python3 -c "
import asyncio
from bleak import BleakScanner
async def scan():
    devices = await BleakScanner.discover(5)
    for d in devices:
        if 'HYBRID' in (d.name or ''):
            print(f'{d.name} @ {d.address}')
asyncio.run(scan())
"

Protocol Details

See references/protocol.md for full reverse-engineering notes and MITM capture analysis.

Download

ZIP package — ready to use

Skill Info

Creator
marcel030
Downloads
73
Published
Mar 15, 2026
Updated
Mar 16, 2026