Giter VIP home page Giter VIP logo

bluefluff's Introduction

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.

Furby Connect's Eyes

What have you done?

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.

What I have achieved so far

  • Understand large parts of Furby's BLE communication protocol
  • Open a secret debug menu in Furby's LCD eyes
  • Control Furby's actions, antenna color and LCD backlight
  • Control Furby's emotions by setting his hungriness, tiredness, wellness etc. levels.
  • Get information on Furby's sensor states including the antenna joystick, tickle / pet sensors and accelerometer
  • Update Furby with the official update "DLC" files from Hasbro or with my modified versions of those
  • Insert my own audio content into DLC files

What I haven't tried yet

  • Getting code execution on the Furby Connect
  • Controlling the content of Furby's LCD eyes. I know that this is possible and should be technically easy to achieve, but I haven't managed to bring up my own LCD animation yet.
  • Using Furby's sleep mask connector to inject own code, LCD graphics or audio files

Why would anyone in their right mind do that?

  • Answer the deeper questions of Furby life
  • Because I can
  • Furby Connect is way too cool and technologically advanced to just be a kid's toy
  • Pave the way for developers and artists that want to use Furby outside of its designated use cases. I envision something like an IoT Version that manages your lighting and room temperature. Anyone?

Project description

Disclaimer

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.

General

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.

Documentation

This project contains reverse-engineered documentation for different elements of Furby Connect:

  • Furby's Bluetooth: Furby Connect uses Bluetooth Low Energy to transmit commands, sensor data and updates to and from the Furby Connect World app.
  • GeneralPlus bluetooth commands / responses: Commands that make Furby say and do things, change his antenna color or mood and responses to those commands as well as sensor data reports.
  • Action Sequences: Information on actions and an organized list of Furby's thousands of different actions (incomplete for now).
  • Nordic Bluetooth Commands / Responses: List of commands and responses of the Nordic Semiconductor microprocessor
  • App Update Mechanism: The Android / iOS app downloads videos and updates for Furby in the background. I captured the app's network traffic and analyzed it.
  • Names: A list of the 129 different possible names for Furby.
  • DLC Files: Some information about the update packages and their content for Furby Connect containing LCD animations and audio.
  • How to flash your own DLC: How to create and flash your own updates to Furby

fluffd and fluffd-client

"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.

Installation on Linux

  • Make sure you have node.js installed
  • Clone this repository and navigate into the fluffd directory on the command line
  • Make sure you have the udev development files installed. On Debian-based distributions, install libudev-dev using apt install libudev-dev as root / with sudo.
  • Execute npm install to download and install all dependencies
  • If you don't want to run fluffd as root / with sudo, see the noble documentation for details

Installation on macOS

  • Make sure you have node.js installed
  • Clone this repository and navigate into the fluffd directory on the command line
  • Execute npm install to download and install all dependencies
  • Execute npm install xpc-connection to install XPC Connection bindings for node.js. XPC is macOS-specific, so this is not required on other platforms.

Start fluffd

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

Sending commands using fluffd-client

fluffd-client screenshot

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](doc/flashdlc.md) for information on DLC-related commands.

Trivia

Furby's mood

Furby's emotional state can be defined as a vector of the following properties:

  • Wellness
  • Fullness
  • Displeasedness
  • Tiredness
  • Excitedness

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.

Personalities

During my explorations I have found several clear references to the following Furby Connect Personalities:

  • DJ
  • Princess
  • Ninja
  • Pirate
  • Popstar
  • Cat

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.

Furby doesn't really sleep

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.

Missing Name

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".

The App

  • The developers' codename for the app seems to be "fluff" and their name for the interaction between Furby and the app seems to be "phygital"
  • The app is written by Exient (the same people that made Angry Birds Go! and a bunch of other mobile games) using their properietary "XGS" technology
  • The developers must have seriously questioned their life choices when writing functions like "CAnalyticsManager::ReceiveFurbyFriendshipFromPooping(int)"

Contribute

How to gather more information

Here is a list of things you can try to elicit more details about Furby's inner workings:

  • Sniff bluetooth traffic on an Android device (or iOS device) and analyze it with Wireshark
  • Use mitmproxy to intercept the app's communication with its servers (see App Update Mechanism for details)
  • Modify and flash custom DLC files in order to understand the meaning of its contents
  • Reverse engineer the GeneralPlus A1800 codec, e.g. by converting different sample files (silence, sine waves, ...) and comparing their output
  • Measure signals in Furby's crest opening and understand their meaning
  • Figure out which exact microcontrollers Furby is using. This would probably mean opening one up to be sure though :(

TODO List

If you have any information on the following (or different) subjects, I'd be very interested in hearing from you:

  • How are the DLC files structured? How can we control Furby's movement during his action sequences?
  • How does the A1800 codec actually work? It appears to use some FFT processing, but how are the fourier coefficients stored?
  • Understand more Bluetooth commands and responses with all their parameters
  • A full list of action sequences. I'd be especially interested in the action that triggers the "Too Hot Chili LCD" animation, since this animation is part of the DLC file.
  • What is the sleep mask port for? Can we execute code from a ROM chip in that port?
  • Is there a firmware update functionality on the Furby Connect and how can we exploit this to execute our own code?

bluefluff's People

Contributors

araczkowski avatar atalanttore avatar beacrea avatar cvionis avatar dertobsch avatar jayasafunctionofe avatar jeija avatar pt3123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bluefluff's Issues

Cannot connect to Furby on MacOSX

I installed node 8.8.1 and this seems to go well. Only a few warnings, no errors:

npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/bluetooth-hci-socket):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"linux,android,win32","arch":"any"} (current: {"os":"darwin","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/request):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/qs):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined

added 152 packages in 6.204s

However, when I try to connect to Furby by starting "node fluffd.js" nothing seems to happen. I can open the HTTP client and send commands, but no response from Furby. What does work is connecting to Furby via NRF connect on my iPhone and getting it into debug mode via the "db" command. The Furby app also fully works.
What am I doing wrong? It cannot be my Macbook hardware because it late 2013 and therefore supports BLE.

May-doo won't connect!

image
From what I can understand the application is defaulting to the Bluetooth adapter; but I don't have one.
I installed everything according to CylMaddhatta..
I tried everything with PNPM as well as NPM; still didn't work. Tried in PS, CMD.
What can I do?

Understanding the byte array structure. Please assist.

Did I understand correctly that for making furby for example Beat Box I need to write a byte array of the following structure : {0x13,0x00,0x018,0x00,0x01,0x07} to this characteristic dab91383-b5a1-e29c-b041-bcd562613bde?

Fluffd not working on PC

Hey, Jeija, i must say, i have learned how to make my Furby connect do things, like say phrases for future app gameplay, (Shower, games, etc). BUT... the thing i rlly wanna do is put my custom images on the Furby's LCD eyes, and custom audio, but all i have is NRF connect on IOS, i've tried getting Fluffd to work on my PC, but all i get is errors, i've tried everything to get Fluffd working, and it's just not working... I would like to know if you could flash your custom audio and images to the eyes with just NRF connect, if so, then how? Any help? Thank you!

DLC Files aren't flashing

Hello. I've been recently tinkering around with my Furby and after lots of trial and error, I have been able to get the fluffd client working properly and I've been able to send specific actions, antenna colors, etc, to the Furby. I've been wanting to now add my own audio files and possibly images to the Furby, but decided to start with the audio first because it seemed much easier. Through lots of research and forum searching, I've been able to create an a18 audio file with the specific bitrate and such. I also have the tu003410.dlc file and all the Python programs for the audio. But now, I am unsure of where to go from here. I believe that I have correctly edited the inject_binary script to target the specific files but I am unsure if it worked and what to do with it using the fluffd client. Is there anyone that could give me some more specifics on what to do next?

I've supplied my inject_binary script below (and changed my real device name to just "name").

Furby Audio Example.zip

Furbys not discovered

Hi, I've started my server, but when I run node fluffd.js the Furbys isn't discovered.

I tried to log all the locale name of devices on discover:

noble.on("discover", function(peripheral) {
    console.log(peripheral.advertisement.localName)
    ....
}

But the only device discovered is my TV:

$ node fluffd.js
[TV] Samsung 6 Series (55)

Any ideas why ? Thx

Injected audio files not playing on Furby

Hey, Jeija,

Thank you very much for making such interesting project.

I have managed to flash and activate custom DLC file, however my injected audio files are not playing. I am converting via the Gadget Audio Batch converter with 16Khz WAV input as described in your project. Output is .a18 file with 16000 bps.

I have also tried all combinations of offsets.

Do you have any idea what can be wrong? What exact procedure did you use when you injected the songs?

I would appreciate any kind of help. Thanks.

Fluffd crashes on debug

I can connect to fluffd.js fine and run commands through Preprogrammed Actions in fluffd-client to Furby fine. But when I click Send button on 'Debug Screen' I get an error pop up in browser 'This page says: error: TypeError: callback is not a function'. And in command prompt I see the same error but then message: 'Unknown Peripheral edd5da2184e2' several times before getting the line: 'MaxlistenersExceededwarning: Possible Eventemitter memory leak detected. 11 write listeners added to [characteristic]. Use emitter.setMaxListeners() to increase limit. Meahwhile Furby mutter some crap about "Why so Soon" and shuts down.

Would appreciate a step in the right direction as this has taken ages to get to this stage! I'm guessing Im doing something stupid with not using debug mode correctly?

Cheers

image

image
image

The Furby Connect World App is being discontinued

It was inevitable, Furby Connect isn't making Hasbro any money anymore so it would make a lot of sense to take it offline. However when I found out that this exists, it gave me hope.
What if we could make an application that could keep the Furby Connect experience alive forever?
What if we could modify Furby connect to give it more content than what Hasbro was willing to give us?
What if we could finally get rid of all of those damn fart jokes?
Basically what I'm thinking of is a full desktop application (.exe/.app/whatever) build of bluefluff for Windows, Mac OS, and Linux. This build would have fixes for problems in the github repository, and give normal people like me an easier time flashing a DLC file to my Purple Furby Connect to make it play the Completion ending of FNaF 6.
I do not have the sufficient amount of experience to make this a reality, but I posted this here in the hopes that someone who reads this can. To anyone reading this, have a great day. To anyone who wants to embark on this endeavor, good luck.

Issue building on Ubuntu 19.10

Tried to paste in the relevant sections with errors while anonymizing as possible. Thank you again for your work on this project. Really enjoyable modifying Furbies <3.

python make g++ libudev-dev are all installed.

node -v
v13.5.0

Not sure what to try given these errors.

../src/BluetoothHciSocket.cpp: In static member function ‘static void BluetoothHciSocket::Init(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’:
../src/BluetoothHciSocket.cpp:128:82: error: no matching function for call to ‘v8::FunctionTemplate::GetFunction()’
128 | luetoothHciSocket").ToLocalChecked(), tmpl->GetFunction());
| ^

bluefluff-master/fluffd/node_modules/bluetooth-hci-socket/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack at ChildProcess.emit (events.js:305:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 5.3.0-24-generic
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /bluefluff-master/fluffd/node_modules/bluetooth-hci-socket
gyp ERR! node -v v13.5.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/xpc-connection):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/bluetooth-hci-socket):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] install: node-gyp rebuild
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

Missing Name - Theory

Even though the name is in the list 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".

I suspect this is due to profanity filtering. "Tay-Tah" when sounded out in spanish would be "Teta" which is similar to saying "boob" in spanish.

BlueotoothHCI dont compile in linux.

Hi Jeija. When I execute npm install, I have a compilation error in BluetoothHciSocket.

gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/node-gyp/lib/build.js:190:23)
gyp ERR! stack at ChildProcess.emit (events.js:193:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:255:12)
gyp ERR! System Linux 5.2.1-arch1-1-ARCH
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/neocop/src/bluefluff/fluffd/node_modules/bluetooth-hci-socket
gyp ERR! node -v v11.15.0
gyp ERR! node-gyp -v v5.0.2
gyp ERR! not ok

I'm using archlinux x86_64. Thank you

Don't go above action 128 for Input 33

Not really an issue, but a warning for others who are playing around. 33,0,0,129 and up will result in Furby getting stuck in a glitch loop. Sleep mask on/off will break them out of it.

DO NOT send 33,0,0,131, this will crash the Furby hard, you'll have to pull the batteries/power.
https://youtu.be/xH1DomoyQV8

Error when installing fluffd under Ubuntu

Trying to get fluffd working under Linux I successfully installed node.js under Ubuntu using:

$ sudo apt install curl
$ curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
$ sudo apt-get install -y nodejs

When I check the version:
$ node -v
I get:
v7.10.1

All seems fine. However, when I try to install fluffd from the fluffd directory:
$ npm install
I get the following error:

node-pre-gyp ERR! Tried to download: https://github.com/tessel/node-usb/releases/download/1.2.0/usb_bindings-v1.2.0-node-v51-linux-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v51 ABI) (falling back to source compile with node-gyp)

This ends up in a build error.
When I check the link to the usb bindings, they appear to be indeed unavailable:
https://github.com/tessel/node-usb/releases/
The bindings for or v51 (needed for nodejs 7.x) appear to be under v1.3.0. instead of 1.2.0, but no Linux versions to be found.

Where can I find these bindings?

Still working?

Hey! I was wondering if this still works. I know it's an old project but before i start wasting my time again trying to upload my own audio file and failing again i wanted to know if it's still at all possible. Thanks!

windows version

just asking if there is a windows version becouse i dont have access to a linux or a mac system.

Loading DLC causes Furby to crash

Upon flashing the DLC, which works successfully, the DLC slot displays a 2 for downloaded but not activated. When I try loading the slot, the Furby freezes for about 10 seconds before shutting down. Is there a way to prevent this and what may be causing it?

No compatible USB Bluetooth 4.0 device found!

After executing node fluffd.js I get the error:

C:\Users\...\bluefluff-master\fluffd\node_modules\bluetooth-hci-socket\lib\usb.js:70
    throw new Error('No compatible USB Bluetooth 4.0 device found!');
    ^

Error: No compatible USB Bluetooth 4.0 device found!
    at BluetoothHciSocket.bindUser (C:\Users\...\bluefluff-master\fluffd\node_modules\bluetooth-hci-socket\lib\usb.js:70:11)
    at BluetoothHciSocket.bindRaw (C:\Users\...\bluefluff-master\fluffd\node_modules\bluetooth-hci-socket\lib\usb.js:28:8)
    at Hci.init (C:\Users\...\bluefluff-master\fluffd\node_modules\noble\lib\hci-socket\hci.js:101:35)
    at NobleBindings.init (C:\Users\...\bluefluff-master\fluffd\node_modules\noble\lib\hci-socket\bindings.js:82:13)
    at Noble.<anonymous> (C:\Users\...\bluefluff-master\fluffd\node_modules\noble\lib\noble.js:57:24)
    at processTicksAndRejections (internal/process/task_queues.js:75:11)

I tried it on Lenovo ThinkPad T580 also on a macbook air 2014 and I get the same error. Both devices seem to have a compatible Bluetooth 4.0. Is it mandatory to have an USB Bluetooth ?

Question about audio offset values

Hi, I've been enjoying this project and gotten everything I've tried to work so far, including uploading and activating DLC. However, I'm a little confused about the audio offset values shown in the dlc injector script. How would I determine what to use for a given DLC file and ensure that it doesn't overlap? I don't exactly understand where the numbers come from, and why the offsets are shown broken out into x * y + z. I feel like I'm probably missing something a little more straightforward. I think I could use the examples shown for the DLC file shown, but how do you arrive at those values to begin with, and what do each of those 3 numbers mean? Injecting audio is the last thing I'd really like to get working.
Thanks for all your work on this, it has been really fun!

Missing Modules

I've been trying to get fluffd to work all day and I keep getting error after error. I've tried on windows and had no luck, and now I'm trying on a fresh install of linux mint. Upon executing npm install it says that all the modules are inside a symlinked module. Any ideas for what might be wrong?

root@honey-MS-7B86:/home/honey/Downloads/bluefluff-master/fluffd# apt install libudev-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libudev-dev is already the newest version (237-3ubuntu10.31).
0 upgraded, 0 newly installed, 0 to remove and 276 not upgraded.
root@honey-MS-7B86:/home/honey/Downloads/bluefluff-master/fluffd# npm install
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/ansi-regex
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/aproba
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/chownr
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/code-point-at
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/console-control-strings
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/deep-extend
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/delegates
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/are-we-there-yet
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/detect-libc
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/end-of-stream
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/expand-template
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/file-uri-to-path
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/bindings
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/fs-constants
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/github-from-package
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/has-unicode
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/ini
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/mimic-response
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/decompress-response
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/minimist
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/ms
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/debug
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/nan
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/napi-build-utils
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/node-abi
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/noop-logger
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/number-is-nan
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/is-fullwidth-code-point
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/pump
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/rc
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/set-blocking
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/simple-concat
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/simple-get
npm WARN skippingAction Module is inside a symlinked module: not running move [email protected] node_modules/string_decoder
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/strip-ansi
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/string-width
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/tunnel-agent
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/usb/node_modules/nan
npm WARN skippingAction Module is inside a symlinked module: not running move [email protected] node_modules/util-deprecate
npm WARN skippingAction Module is inside a symlinked module: not running move [email protected] node_modules/tar-stream/node_modules/readable-stream
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/bl/node_modules/readable-stream
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/bl
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/tar-stream
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/tar-fs
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/which-pm-runs
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/wide-align
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/gauge
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/npmlog
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/prebuild-install
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/usb
npm WARN skippingAction Module is inside a symlinked module: not running add [email protected] node_modules/bluetooth-hci-socket
npm WARN skippingAction Module is inside a symlinked module: not running remove [email protected] node_modules/winston/node_modules/logform
npm WARN skippingAction Module is inside a symlinked module: not running remove [email protected] node_modules/winston/node_modules/safe-buffer
npm WARN skippingAction Module is inside a symlinked module: not running remove [email protected] node_modules/winston/node_modules/string_decoder
npm WARN skippingAction Module is inside a symlinked module: not running remove winston-transport node_modules/winston/node_modules/winston-transport
npm WARN update-linked node_modules/noble needs updating to 1.9.1 from 1.9.1 but we can't, as it's a symlink
npm WARN update-linked node_modules/winston needs updating to 3.1.0 from 3.2.1 but we can't, as it's a symlink
[email protected] node_modules/winston/node_modules/core-util-is -> node_modules/core-util-is
[email protected] node_modules/winston/node_modules/isarray -> node_modules/isarray
[email protected] node_modules/winston/node_modules/process-nextick-args -> node_modules/process-nextick-args
[email protected] node_modules/winston/node_modules/winston-transport/node_modules/safe-buffer -> node_modules/safe-buffer
[email protected] /home/honey/Downloads/bluefluff-master/fluffd
└─┬ [email protected]
└─┬ [email protected]
└── [email protected]

npm WARN optional Skipping failed optional dependency /noble/xpc-connection:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]
npm WARN [email protected] No repository field.
root@honey-MS-7B86:/home/honey/Downloads/bluefluff-master/fluffd#

No sound in uploaded DLC

Hi guys! Tried to upload several DLC from list #32 , but when I go through 75 input, Furby makes moves, shows something in the eyes, but without any sound. What am I doing wrong?
I upload DLC going through all steps described here in docs. It uploads successfully, I got 3 for slot in the DLC debug list. It shows new moves and graphic, but without sound :(

Fluffd finds furby and connects, then fails

Hello everyone, first time post here. I am having an issue, fluffd seems to find the furby and connect but then fails. I have the following js error when attempting to execute:

EDIT: I should mention that I am running this on Ubuntu 17.10

~/Furby/bluefluff-master/fluffd$ sudo node fluffd.js
info: Discovered Furby: da8db8039617
/home/llama/Furby/bluefluff-master/fluffd/fluffcon.js:234
let characteristicUUIDs = Object.values(FURBY.CHARACTERISTIC);
^

TypeError: Object.values is not a function
at /home/llama/Furby/bluefluff-master/fluffd/fluffcon.js:234:36
at Peripheral. (/home/llama/Furby/bluefluff-master/fluffd/node_modules/noble/lib/peripheral.js:38:7)
at Peripheral.g (events.js:292:16)
at emitOne (events.js:96:13)
at Peripheral.emit (events.js:188:7)
at Noble.onConnect (/home/llama/Furby/bluefluff-master/fluffd/node_modules/noble/lib/noble.js:187:16)
at emitTwo (events.js:106:13)
at NobleBindings.emit (events.js:191:7)
at NobleBindings.onLeConnComplete (/home/llama/Furby/bluefluff-master/fluffd/node_modules/noble/lib/hci-socket/bindings.js:223:8)
at emitMany (events.js:127:13)

toimage.py TypeError: integer argument expected, got float

Hi,
on my ubuntu box, when I'm trying to do:

python toimage.py tu003150.dlc

I have:
Opening tu003150.dlc Traceback (most recent call last): File "toimage.py", line 21, in <module> im = Image.new("RGB", (WIDTH, math.ceil(dlcsize / 0x30)), "white") File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 2022, in new return Image()._new(core.fill(mode, size, color)) TypeError: integer argument expected, got float

the fix - convert to int:
int(math.ceil(dlcsize / 0x30))

pull request is on the way

PS
this project is awesome - thx :)

Does any command exist to independently control mouth open/close?

Playing around with my old Connect, and planning to code a sound detection program to have the Furby “speak” sounds and voices straight from an audio device. To do this, though, I need to control the mouth open/close switch. The Connect’s Test Mode has a section for controlling mouth open/close, and there exists a command input to control LCD on/off, so maybe there is hope. I don’t know if Jeija’s list of inputs is finished, or comprehensive, so I’m turning this into an issue.

furby often disconnects. fluffd shows noble warning unknown peripheral.

first i'd like to say thanks for putting this up on github, i purchased two furbies before christmas just for fooling around with the intention of completing some bluetooth sniffing. you beat me to it!.

on to the question.. i noticed that often that fluffd will lose connection to the furby and when i review the console, i see noble warning: unknown peripheral myfurby UUID. the funny thing is that it's the same furby so why does noble find it the second time?

also when this occurs, often you can drop out of fluffd, using ctrl-c states "closing connection" but stalls..

any ideas?

Outdated Libraries being Called upon

It appears that the main reason that people have been having trouble getting fluffd to work is due to outdated libraries being called. Dropping to the minimum node version can allow it to work, but even then I have found that it does not always build.

I have been working on this project as a means to learn programming so I have been unable to discover where the bluetooth-hci-socket is called upon. It can be replaced with bluez for node, but I have personally started focusing on rewriting the code into python with updated libraries, though updating it to use bluez is probably easier if someone knows what they are doing.

Alternate power for Furbies

First, thank you! I have had so much fun using everything in here!

In a comment here: #5 (comment) you mentioned:

Use fresh batteries or a lab power supply, don't use rechargeables!

I'm curious how you powered it and if you used a lab power supply.

Cant open fluffd/dont know what app it is

I install node.js and check my bluetooth is on, on my windows 10 PC and I open mode.js and type node fluffd.js what I found from a video and it doesnt work so if I could have any help that will be very nice.

Furby is connected to computer, yet html isnt working?

my Furby is connected to my computer, yet the fluffd request generator isn't working? I have the command prompt open, and whatever I try to send doesn't go through. the only thing that showed up on the cmd prompt has been
verbose: Sending antenna command to all Furbies, params: {"red":"0","green":"0","blue":"255"}
verbose: Sending antenna command to all Furbies, params: {"red":"0","green":"0","blue":"255"}
verbose: Sending antenna command to all Furbies, params: {"red":"0","green":"0","blue":"255"}
verbose: Sending antenna command to all Furbies, params: {"red":"0","green":"0","blue":"255"}
verbose: Sending antenna command to all Furbies, params: {"red":"0","green":"0","blue":"255"}
but none of those showed up on my furby?

Cannot complete flashing DLC

I tried testing flashing of DLC on both Ubuntu Linux and Windows 10. Both ran into the same issue. The DLC appears to be flashing. After a couple of minutes, there is an error and flashing does not complete. The debug screen registers 2M1 indicating incomplete flash for slot 1. I tested it with both tu003150.dlc and tu003410.dlc files un-modified. Anybody getting this to work?

I did delete all of the old DLC files on the furby as recommended in the docs.

fluffcon.js Errors?

I'm fairly new to the whole Bluetooth end of things but I think I have Node/Noble set it right since the test and examples in the Noble install seem to be working.

On Windows 10 when I go to run fluffd I get:

D:\Furby\bluefluff-master\fluffd\fluffcon.js:234
let characteristicUUIDs = Object.values(FURBY.CHARACTERISTIC);
^

TypeError: Object.values is not a function
at D:\Furby\bluefluff-master\fluffd\fluffcon.js:234:36
at Peripheral. (D:\Furby\bluefluff-master\fluffd\node_modules\noble\lib\peripheral.js:38:7)
at Peripheral.g (events.js:291:16)
at emitOne (events.js:96:13)
at Peripheral.emit (events.js:188:7)
at Noble.onConnect (D:\Furby\bluefluff-master\fluffd\node_modules\noble\lib\noble.js:148:16)
at emitTwo (events.js:106:13)
at NobleBindings.emit (events.js:191:7)
at NobleBindings.onLeConnComplete (D:\Furby\bluefluff-master\fluffd\node_modules\noble\lib\hci-socket\bindings.js:21
2:8)
at emitMany (events.js:127:13)

Any ideas or is this something on my end?

Possible list of all current DLC files

Assuming the DLC files all end in zero, this appears to be a list of all current DLC files, can't help but wonder if there is a pattern:

  • tu002350.dlc
  • tu002560.dlc
  • tu002770.dlc
  • tu002880.dlc
  • tu003000.dlc
  • tu003150.dlc
  • tu003410.dlc
  • tu003550.dlc
  • tu010040.dlc
  • tu010110.dlc
  • tu010160.dlc
  • tu010390.dlc
  • tu010530.dlc
  • tu010600.dlc
  • tu010950.dlc
  • tu011010.dlc
  • tu011090.dlc
  • tu011100.dlc
  • tu011840.dlc
  • tu011880.dlc
  • tu011920.dlc
  • tu011940.dlc
  • tu012640.dlc
  • tu012700.dlc
  • tu012720.dlc
  • tu012750.dlc
  • tu012760.dlc
  • tu012770.dlc

Original DLC files distributed by Hasbro

Hi, I got a furby connect recently so I don't have any of the DLC files which were distributed by Hasbro through the world connect app. The app doesn't let me access these files anymore. Is there a way to get these files somehow? Is it already on the github repo somewhere?

error: Error while connecting: Error: Connection Rejected due to Limited Resources (0xd)

I ran into this issue when trying to connect to my Furby Connect using a Dell Chromebook 13 running crouton.

From the noble github:

Adapter specific known issues:

Intel Dual Band Wireless-AC 7260 (Intel Corporation Wireless 7260 (rev 73)) : Error: Connection Rejected due to Limited Resources (0xd)

You need to stop scanning before trying to connect in order to solve this issue.

This is an easy fix in fluffd.js

after this line:

winston.log("info", "Discovered Furby: " + peripheral.uuid);

add this line:
noble.stopScanning();

Unable to send dlc

I tried every node version after 6.9. Up to like 7.4. Anything above 6.9 files on windows 10 64 fails to build. So go to 6.9 run with the harmony switch and it will load. When try to send the dlc to it, the app crashed and throws an error. No error log is generated. I purchased the same adapter as you said you used, also bought two off the usb site support list. each fails Other versions of node fail to build. node cant download files for usb, etc.. MSbuild failes.. Here is the output with node 6.9 Any ideas please?
c:\bluefluff\fluffd>node --harmony fluffd.js
verbose: Sending flashdlc command to all Furbies, params: filename=custom.dlc, dlcfile=\bluefluff\fluffd
info: Discovered Furby: fe8ea12cb20d
info: Connected to Furby
debug: Read all fluff characteristics
verbose: generalPlusWrite: 00
verbose: GP notification: 2100000001000000
verbose: GP notification: 2100010001000000
verbose: generalPlusWrite: 00
verbose: generalPlusWrite: 00
verbose: Sending flashdlc command to all Furbies, params: filename=custom.dlc, dlcfile=\bluefluff\fluffd
verbose: generalPlusWrite: 500000000002637573746f6d2e646c630000
verbose: GP notification: 2402
info: FlashDLC: Got Ready to Receive
c:\bluefluff\fluffd\fluffaction.js:162
throw err;
^

ReferenceError: err is not defined
at c:\bluefluff\fluffd\fluffaction.js:162:12

c:\bluefluff\fluffd>

Error while connecting

This what happens after running node fluffd.js
info: Discovered Furby: <furby_mac> error: Error while connecting: Error: Connection Rejected due to Limited Resources (0xd)
Any ideas?

Android support?

I don't have a computer or apple device how do i hack my furby from my s4?

Windows

I don't see any instructions for Windows. Does this only work for Linux and Mac

I can't install xpc-connection

The first command to install works fine but when I do it with xpc-connection its different and the version of node I'm using 16.13.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.