Skip to content

deltaflyer/pyfurbycomm

Repository files navigation

pyfurbycomm

Python library for interacting with Hasbro Inc's third-generation Furbys (2012–2015), primarily the Furby Boom. It provides are ultrasonic communication stack, similar to the legacy iOS / Adroid app, which allows you to interact with your Furby.

Repo-URL

Join the development, by forking us from https://github.com/deltaflyer/pyfurbycomm

What

This project provides a Python wrapper and utilities to send and receive the ultrasonic command messages used by Furby Boom devices so you can build desktop or server-side applications that interact with these toys.

Supported features and roles

  • Get Furby's health state
  • Send Furby commands - examples:
    • Give him snacks
    • Play with him
    • Make him throw up. (not nice).
    • Mimic Furby 2 Furby communication
  • Not supported yet: decode Furby's answers (command and event replies)

Target

  • Third generation Furby (2012–2015), mostly Furby Boom.

Why

After the official mobile apps (Android / iOS) were removed from app stores, this library enables developers and hobbyists to implement applications that interact with Furby devices using the same ultrasonic communication layer the official apps used.

Important safety / compatibility notes

  • Ultrasonic audio: this library generates signals in an ultrasonic frequency band that are typically inaudible. Playing these signals at high volume or through inappropriate speakers may still damage hearing or hardware. Use at your own risk — no warranty.
  • Microphones: many consumer microphones and mobile devices apply low-pass filtering that removes ultrasonic frequencies. Such devices may not be able to receive Furby ultrasonic signals and therefore will not work with this library.

Acknowledgements

Thanks to BlueSyncLine / bluesyncline.gitlab.io for the original low-level ultrasonic implementation and data that made this project possible.

License

This project is licensed under the MIT License. See LICENSE.txt for details.

Quick start

We provide a scrips to build Python wheels for specific Python versions containing native extensions:

  • Fedora 42 (x86_64): Python 3.13 - build_python313_wheel.sh
  • Ubuntu 20.04(x86_64): Python 3.8 - build_python38_wheel.sh

Examples interacting with Furby Boom using Fedora 42 x86_64

# Install SDL2 for interacting with Audio hardware
sudo dnf install -y SDL2
# Build the wheel Python package using Docker
./build_python313_wheel.sh
# Setup a Python venv and install Python package
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
pip install dist/pyfurbycomm-0.1-cp313-cp313-linux_x86_64.whl --force-reinstall

Now, you can start Interacting with Furby. Start Furby and ensure that its batteries are charged.

Example 1 - send Furby a crunchy snack

from furby_boom_api import get_furby_api
from furby_boom_commands import *
api = get_furby_api()
api.send_command(Food.LIKE_CRUNCH)

Example 2 - get the Furby's health state

from furby_boom_api import get_furby_api
api = get_furby_api()
state = api.get_furby_state(5000)

For asynchronous usage, use the async_get_furby_state / async_send_command coroutines.

Help wanted

Currently, this Python lib has no Python API support for decoding ultrasonic answers from Furby yet. Thus, Furby's answers cannot be returned back to Python. When having this feature in place, we could build:

  • build a Furbish to English real-time translator
  • implement complex state transitions in a Python app
  • implement a protocol wrapper enabling Furby2Furby communication over TCP/IP. (like a Furby SIP phone?)

Links

Trademark

"Furby" is a trademark of Hasbro, Inc. This project uses the name for identification and informational purposes only and is not affiliated with, sponsored by, or endorsed by Hasbro.

About

Python-enabled ultrasonic communication stack for 3rd Gen Furby

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors