With its Bluetooth Connection, Furby Connect is updated frequently with new surprises, like songs. When the antenna glows, this means Furby has something new to show you in the Furby Connect World app. Furby loves to share kid-friendly videos.
First things first: My Furby Connect "Dee-Koh" is safe and has not been harmed in the making of this. There is no need for physical access to the Furby in order to perform these kinds of hacks. This projects aims to reverse engineer / "hack" Furby Connect's Bluetooth Low Energy protocol, graphics and audio format and eventually find a way to execute own code on Furby.
This information is for educational purposes only. By using the provided data, you agree to solely take risks for damaging your hardware. You may brick your Furby when interfacing with it in unwarranted ways and you will almost certainly void your warranty when applying this knowledge. See LICENSE.md for details.
The Furby Connect contains two (or more) microcontrollers, one from GeneralPlus which appears to be in control of movement, the LCD eyes and speech; and another one from Nordic Semiconductor which does all of the Bluetooth Low Energy (also called Bluetooth Smart) communication. I don't know which models exactly since I did not have the heart to open one up (and they're also kind of expensive), but I would assume there is a GPL16XXXX series processor inside.
Furby can be interacted with using stand-alone controls or while connected to the Android / iOS App "Furby Connect World", which takes full control of Furby's movement and speech and sends updates it pulls from Hasbro's servers at Amazon AWS.
This project mostly consists of documentation of Furby's protocol, his peculiarities, trivia and several software tools that may come in handy when deciphering Furby's secrets. There is also a KiCad schematic of the insides of Furby's sleep mask in the sleepmask
directory and more schematics may follow. However, it is not this project's goal to completely reverse engineer all of Furby's electronics.
This project contains reverse-engineered documentation for different elements of Furby Connect:
"fluffd" exists to make interacting with and controlling Furby Connect via BLE from your Linux, macOS, FreeBSD or Windows computer simpler. Thanks to its client-server model, it can also easily be used on something like a Raspberry Pi. fluffd requires either builtin Bluetooth Low Energy (e.g. the one integrated into Raspberry Pi 3) or a USB Bluetooth 4.0 (or higher) adapter.
"fluffd" is based on node.js and uses noble in the background. You will need node.js version 7.0 or later in order to run fluffd.
fluffd
directory on the command lineudev
development files installed. On Debian-based distributions, install libudev-dev
using apt install libudev-dev
as root / with sudo.npm install
to download and install all dependenciesfluffd
directory on the command linenpm install
to download and install all dependenciesnpm install xpc-connection
to install XPC Connection bindings for node.js. XPC is macOS-specific, so this is not required on other platforms.Make sure bluetooth is enabled and unblocked, and that your operating system's bluetooth daemon (e.g. BlueZ on Linux) is running. On most Linux distributions, you can achieve this by executing
rfkill unblock bluetooth
systemctl start bluetooth
Launch fluffd using
node fluffd.js
This will scan for devices advertising as "Furby" and connect to them. You can then take command using fluffd-client or using fluffd's HTTP API.
If you only want to look at the services and characteristics Furby exposes via its BLE GATT hierarchy, you can look at those using
node fluffd.js introspect
fluffd exposes a simple HTTP API for sending commands on port 3872. You can now open fluffd-client/index.html
in your favorite web browser to take control of Furby Connect. Most menu items should be self-explanatory. See the DLC flashing documentation for information on DLC-related commands.
Furby's emotional state can be defined as a vector of the following properties:
where each of these values is an integer between 0 and 100. For instance, when feeding furby by tapping his tongue, his Fullness increases by a value of 5, which automatically decays over time.
During my explorations I have found several clear references to the following Furby Connect Personalities:
However, since none of these personalities seem to be openly accessible by treating Furby in different ways (like with the 2012 Version Furbies), it appears that they will be added later on.
My speculation here is that Hasbro might want to sell "masks" for Furby Connect. Metaphorically, it makes perfect sense to have "putting on a mask" meaning "changing your personality". Also, I have found references to a "Mask" that doesn't appear to be the sleep mask in the App. But most importantly, when dissecting the sleep mask, I found a PCB with space for an SO-8 IC (probably an SPI EEPROM?) and test points on the back.
After going to sleep, Furby will keep advertising his BLE connection. This means you can wake Furby up even with the sleep mask on or send him updates while he appears to be asleep. He only really shuts off after being disconnected from the App and asleep for a few minutes, but by maintaining the BLE connection you can also keep him awake until the batteries run out.
Even though the name is listed in the Furby Connect World app, and even though it should exist in the regular pattern of possible two-syllable Furby names, you cannot name your Furby Connect "Tay-Tah".
Here is a list of things you can try to elicit more details about Furby's inner workings:
If you have any information on the following (or different) subjects, I'd be very interested in hearing from you: