Complete hardware and software reverse engineering documentation for the 3irobotix CRL-200S vacuum robot motherboard.
- Motherboard Hardware - PCB reverse engineering, component identification, connector pinouts
- Lidar Sensor - 3irobotix Delta-2D protocol, interfacing, and visualization
- Sensor Integration - Complete sensor inventory, test scripts, hardware-software mapping
- Software & Firmware - TinaLinux system, processes, ADB configuration
- System Architecture - Dual-processor design, communication, boot sequence
- Installed Software - Complete software inventory, services, binaries, cloud connectivity
- SLAM Configuration - Google Cartographer analysis, sensor fusion, mapping parameters
- Map Storage & Cloud Upload - Map storage structure, WebSocket upload protocol, log evidence
- Remote Access & Security - Manufacturer remote execution capabilities, rtty reverse tunnel, security analysis
- Debugging Guide - ADB setup, serial console, troubleshooting
# Install ADB (macOS)
brew install android-platform-tools
# Connect USB cable to J50 debug port
# Power on device (wait ~20 seconds for boot)
adb wait-for-device
# Enable persistent ADB connection (IMPORTANT!)
adb shell "touch /mnt/UDISK/debug_mode"
# Access device shell
adb shell
# On your computer (external test)
python3 Research/Lidar/scan.py
# Or via motherboard UART (find correct port)
adb shell "cat /dev/ttyS1 | hexdump -C"
# System information
adb shell "uname -a && free -h && df -h"
# List processes
adb shell "top -bn1"
# View logs
adb shell "logread | tail -50"
Component | Part Number | Description |
---|---|---|
Main CPU | AllWinner A33 | ARM Cortex-A7 Quad-Core @ 1.2GHz |
Motor MCU | GigaDevice GD32F103 | ARM Cortex-M3 @ 108MHz (real-time control) |
RAM | Nanya NT5CC256M16EP-EK | 512 MB DDR3L |
Flash | Macronix MX30LF2G18AC-TI | 2 Gbit NAND |
PMIC | X-Powers AXP223 | 21-channel power management |
WiFi | Realtek RTL8189ETV | 802.11n |
Lidar | 3irobotix Delta-2D | 360Β° laser distance sensor |
Connector | Function | Pins | Pitch |
---|---|---|---|
J50 | Debug/ADB Port | 5 (SHD) | 1.0mm |
J17 | Lidar Sensor | 5 (PH) | 2.0mm |
J24, J27 | Wheel Motors | 2 (PH) | 2.0mm |
J25, J26 | Wheel Encoders + Sensors | 16 (SHD) | 1.0mm |
J16 | Vacuum Pump | 4 (PH) | 2.0mm |
J15 | Rolling Brush | 2 (XH) | 2.5mm |
J5 | Front IR Sensors | 8 (GH) | 1.25mm |
- Distribution: TinaLinux Neptune 2.0.0 (OpenWrt-based)
- Kernel: Linux 3.4.39 (Nov 12, 2021)
- Init System: procd (OpenWrt init)
- Filesystem: OverlayFS (read-only base + writable overlay)
AllWinner A33 (Main):
- High-level robot control
- Lidar/SLAM processing
- WiFi connectivity
- User interface
GD32F103 (Motor Controller):
- Real-time motor control
- Encoder reading
- IR sensor monitoring
- Safety functions
Communication: UART (ttyS1 or ttyS3, protocol being reverse engineered)
/usr/sbin/Monitor
- Robot state monitoring/usr/sbin/wifiManager
- Network management/bin/adbd
- ADB debugging daemon
- β Hardware component identification
- β PCB connector mapping
- β Lidar protocol reverse engineering
- β TinaLinux system analysis
- β ADB persistence fix discovered
- β Boot sequence documentation
- β Sensor test scripts (wheel motors, suction)
- π UART port assignment (Lidar vs MCU)
- π GD32F103 communication protocol
- π GPIO pin mapping
- π Motor control command set
- Identify Lidar UART port on motherboard
- Reverse engineer GD32F103 protocol
- Create motor control library
- Port Lidar reading to run on motherboard
- Build unified robot control API
Problem: Device appears briefly then disconnects
Root Cause: Missing debug mode flag
Solution:
adb wait-for-device
adb shell "touch /mnt/UDISK/debug_mode"
# Connection now persists across reboots
Details: See Software.md
Problem: Device powers off after boot when running motherboard without sensors
Root Cause: /usr/sbin/Monitor
process detects missing sensors and triggers safety shutdown
Solution:
adb wait-for-device
adb shell "touch /mnt/UDISK/PowerOn"
# Bypasses sensor checks for development/testing
Details: See Debugging-Guide.md
cd Research/Lidar
python3 scan.py # Real-time polar plot
cd Research/Wheel
# Upload code.py to CircuitPython board
# Test PWM motor control
cd Research/Suction
# Upload code.py to CircuitPython board
# Test PWM + digital activation
cd Research/Controller
python3 control.py # List USB HID devices
- ADB: Android Debug Bridge (
brew install android-platform-tools
) - Python 3: For test scripts (
brew install python3
) - Serial Terminal: screen, minicom, or CoolTerm
- Optional: Logic analyzer for protocol analysis
- USB-to-TTL adapter (FTDI, CH340, CP2102) for serial console
- USB cable (data, not charge-only) for ADB
- Multimeter for hardware tracing
- Logic analyzer (recommended for UART analysis)
Document | Description |
---|---|
Motherboard README | PCB photos, component list, connector details |
Software.md | OS, processes, services, ADB configuration |
System Architecture | Processor roles, communication, boot sequence |
Installed Software | Complete software inventory, cloud servers |
SLAM Configuration | Google Cartographer configuration analysis |
Map Storage | Map storage, cloud upload, log evidence |
Remote Access & Security | Remote execution, rtty tunnel, security analysis |
Debugging Guide | ADB setup, serial access, troubleshooting |
Sensors | Sensor inventory, test scripts, integration |
Lidar | Protocol spec, wiring, Python implementation |
Device Logs | Log analysis, map upload evidence |
This is a reverse engineering documentation project. Contributions welcome:
- Hardware discoveries: New components, pin mappings, schematics
- Software analysis: Protocol details, service functions, binary analysis
- Test results: UART captures, GPIO tests, sensor data
- Code: Libraries, control interfaces, custom firmware
Goal: Complete open-source documentation and control stack for the 3irobotix CRL-200S platform.
See LICENSE file for details.
- Enable ADB:
adb shell "touch /mnt/UDISK/debug_mode"
- Serial Console: 115200 baud on J50 (pins 3=TX, 4=RX, 2/5=GND)
- System Info:
adb shell "cat /etc/openwrt_release"
- All Docs: Browse
/Research/
directory
Build Date: November 12, 2021 Target: astar-parrot/generic