A reverse-engineered controller for the Chatman toy
Project description
🟡 Chatman Controller
A reverse-engineered controller for the Chatman toy, allowing you to bring it back to life! Originally designed as a USB-connected talking assistant for kids, Chatman is no longer supported by its manufacturer — but that doesn't mean it's useless. This project lets you control its LED matrix, eye, hand, and antenna movements using Python.
🎉 Features
- ✅ Control Chatman's LED matrix (3x8) in real time
- 👁️ Move eyes, hands, and antenna
- 🖥️ GUI (
chatman_gui.py) for easy control - 🧑💻 CLI (
chatman_cli.py) for scripting or automation - 🔌 USB HID communication with the Chatman device
🧠 Why This Exists
The official Chatman software and website are now discontinued, leaving the hardware unsupported. This project reverse-engineers the USB commands sent to the toy, allowing anyone to repurpose it — whether for fun, education, or building a retro-styled virtual assistant.
🚀 Getting Started
1. Clone the Repository
git clone https://github.com/your-username/chatman-controller.git
cd chatman-controller
2. Install Dependencies
Install required packages using:
pip install -r requirements.txt
This includes:
hidapifor USB HID communication
3. Connect Your Chatman Toy
Make sure your Chatman device is plugged into a USB port before launching the app.
🖥️ Running the GUI
python chatman_gui.py
This will launch a control panel where you can:
- Toggle the LED matrix (3x8 grid)
- Choose eye, hand, and antenna movement
- See the resulting hex code for your LED configuration
If the device fails to connect, an error will be shown.
🔧 Running the CLI
You can control Chatman directly from the terminal using the CLI tool chatman_cli.py.
▶ Interactive Mode
Run without arguments or use --interactive to enter an interactive session:
python chatman_cli.py
In this mode, you'll be prompted to choose eye, hand, and antenna movements, as well as LED values for Chatman's face.
▶ One-Time Command Mode
Provide movement and LED values directly via command-line arguments:
python chatman_cli.py --eyes EYES_OPEN --hands HANDS_UP --antenna ANTENNAS_OUT --leds FF 00 AA
-
--eyes: Choose from:
EYES_CLOSED,EYES_ONE_THIRD_OPEN,EYES_TWO_THIRDS_OPEN,EYES_OPEN,NO_MOVEMENT
-
--hands: Choose from:
HANDS_DOWN,HANDS_ONE_THIRD_UP,HANDS_TWO_THIRDS_UP,HANDS_UP,NO_MOVEMENT
-
--antenna: Choose from:
ANTENNAS_IN,ANTENNAS_CENTER,ANTENNAS_OUT,NO_MOVEMENT
-
--leds: Provide 3 hexadecimal values for the face LEDs:
- e.g.,
--leds FF 00 AA
- e.g.,
▶ No Reset Option
If you don’t want to reset Chatman on startup, use the --no-reset flag:
python chatman_cli.py --no-reset --eyes EYES_OPEN --hands HANDS_UP --antenna ANTENNAS_CENTER --leds 00 FF 00
💡 You typically only need to reset Chatman once — usually on the first command after plugging it in. After that, you should use
--no-reset.
🛠️ Extend This Project
Here are a few fun ideas:
- 🎙️ Add voice control
- 🤖 Use a local LLM or OpenAI API to turn it into a chat-based assistant
- 🎵 Make it dance to music by analyzing sound
🙌 Credits
Created by Mohammed N. Almadhoun Email: mohelm97@gmail.com Feel free to fork, improve, or reach out if you’ve built something cool with it!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chatman_controller-0.1.0.tar.gz.
File metadata
- Download URL: chatman_controller-0.1.0.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
122ab94cc214e79491b09d823badfe43c310d6975cd229aa3a0c2cbedf4f657b
|
|
| MD5 |
b7601586a6e5f3fa78d1f6095a15f304
|
|
| BLAKE2b-256 |
739b4c05e8675cf046d1bbd7e740fd0d3cea497638cb5adab62d78550da96324
|
File details
Details for the file chatman_controller-0.1.0-py3-none-any.whl.
File metadata
- Download URL: chatman_controller-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37a40accfa9ab17bb0a965e725f438197f33eeef4dc124e9f03dc247b85de941
|
|
| MD5 |
1414f253780682fb848c7a1aad3d70bd
|
|
| BLAKE2b-256 |
7e33c47e1cb8bf57bf2c0a27f06c28332a47accaa7e40933aadf4efce00d69ad
|