Thursday May 25, 2017

Furby Hacking 101

Author: Wayne Eggert
Date: 09/20/2009

Introduction
Furbies are a kids toy that was made by Tiger Electronics and were made popular during Christmas 1998.  They were a must-have item and although they only retailed for around $30 each, like many must-haves their prices were driven up as supplies couldn't meet demand.  I was introduced to them via my Aunt, who had an entire Furby Family at her disposal -- we would visit her and she would have 5 or 10 Furbies all talking to eachother at the same time.  Maybe that's why I hadn't decided to tear one apart before this year!

As I'm writing this it is presently 2009, so 11 years since the original Furby came out makes it an antique in computer years!  This project will mostly center around the original Furby since there's tons of information on the web about their mechanics and even a reverse engineered schematic!  Lucky us!
Furby Hacking

 

Why Hack a Furby?
Good question.  As I've been looking around for Furby hacking info I have seen a few negative comments posted on those sites saying things like "I can think of a million better things to do with my time".  To that I say, who cares!  Everyone likes something different, and while some people enjoy spending hours upon hours sitting in front of a TV watching football games during football season, some people choose to use that time differently.

Who'd want to spend hours hacking a kids toy?  Well, how about someone interested in learning how to make kids toys by dissecting existing toys and discovering how they work?  Or someone interested in robotics, video games or the computer field.  The same types of individuals who help bring you the gadgets you use on a daily basis like an iPhone or LCD television.  That's who!


What Can I Hack?
Furbies are made up of many analog sensors.  Switches, a light sensor, microphone, speaker, motor, gears and cams, IR transimitter and IR receiver, and more!  The "brains" of the Furby are in the integrated chips that are on the PCB board (PCB board).  So when you cover the light sensor and the Furby goes to sleep, that's part of the code executing on the IC (integrated chip) sensing via the analog light sensor that the light has changed and executing the code that makes Furby go to sleep.

Unfortunately the CPU is covered with some type of epoxy blob, which is often the case when companies want to prevent reverse engineering.  So you can't dump the code off the chip or in any way change any code that the Furby executes.  You can, however, wire up your own IC to the sensors or wire up some components in combination with the existing sensors to make them work slightly differently.


Removing The Fur/Skin
Okay, you know how at the end of some TV shows and movies they say "no animals were harmed during the making of this film?"  That's not going to be the case for your beloved Furby.  So if your Furby is like a family member, then by all means stop now -- you don't want to witness any more of these pages.  We're going to be cutting wires and soldering, there's little hope of putting your Furby friend back together in pre-hacking condition.

The Furby Autopsy website has been around for just about as long as the original Furbies have.  I'm not sure that it's been updated very much in recent years, but it's a good resource with a lighter comical take on ripping open a Furby that was pushing up daises anyway.  The site also has a pretty good explanation of how to remove the Furby's skin and still have a chance of sewing him back together if you decide to turn back.

You can also follow my steps below if you don't plan on putting the Furby back together:

Step 1: Remove batteries so Furby doesn't try to talk you out of dissecting it.

Step 2: Yank fur/fabric out some around the tail and you should see a spot with stitches.  You can snip the stitches or just poke a hole through and you should see a wire tie.  The wire tie runs through a fabric pocket the entire circumference of the Furby and holds his clothes on.  Just stick your scissors in the pocket and cut along the Furby's perimeter.

Step 3: You should now be able to start pulling the fabric up over the Furby's body.  Some areas will have glue holding the fabric to the plastic body of the Furby.  You can just work your fingers between the plastic and fabric to free the fabric from the glue.  Be careful at the ears since the thin plastic rods (ear bones) are sewn directly to the fabric.  We don't plan on putting the Furby's clothes back on, but we also don't want to break the ears.

Step 4: You should now have a naked Furby.  Except all the cool stuff is inside a plastic shell.  So use a small phillips head screwdriver to unscrew the screws holding the shell together.  There's a microphone tucked away in the shell, so be gentle seperating the two halves and pop the microphone out with a small flathead screwdriver or by gently pulling on its wires.

Great.. What Am I Looking At?
You're looking at all the cool electronic sensors and components that make up a Furby.  Again the Furby Autopsy site comes in handy -- they have pictures of the guts from their dissection.  This is what yours should look like.  If it doesn't then it's possible you have a Furby Baby or a later generation Furby.

Here are some more pictures of the inside of my Furby.  This is after I unconnected and/or cut a few of the wires to begin playing with sensors:

Furby FrontFurby Closeup MotorFurby BackFurby Back (bottom)Furby Left SideFurby Right Side


Anatomy of a Furby
Kelly Heaton's Anatomy of The Furby webpage has simply AWESOME drawings of the Furby's anatomy and mechanics.  A Furby was complete disassembled and the parts hand drawn in what is truly a work of art.  Of specific interest is the cam shaft and gear assembly.  You can see the gears in the 3rd picture above and on Kelly's website there's an exploded view of all the pieces making up this assembly that really helps us understand the parts without having to tear ours Furby's gears apart.  You'll find a good explanation of the sensors on the Furby Autopsy site.

Here's a quick breakdown of the various input sensors:

"Pet Switch" on the Furby's back microswitch
Inversion switch (senses Furby was turned upside down)
tilt switch
Tummy switch mounted on top of front speaker custom switch (two pieces of metal that touch)
Tongue Switch microswitch
Cam Home Switch custom switch (two pieces of metal that touch)
Light Sensor light dependent resistor (LDR)
IR Receiver infared receiver
"Hearing" Mechanism
microphone (approx 0.33in)
Reset Button microswitch
IR Encoder / Motor position switch
infared LED / disc with slots / infared receiver

And here are the outputs:

Talking / Voice speaker (approx 1.25in)
Moving parts - ears, eyes, mouth, etc DC motor / cam and gear assembly
IR Sender (talk to other Furbies) infared LED

What's really cool about this original 1998 design of the Furby is a single motor drives all the moving parts using a very clever cam shaft / gear assembly.  The rest of the sensors (switches, silicon photodiode, infared receiver, infared transmitter, tilt sensor, etc) are all good sensors in their own right, but they're standard sensors that have an affect on voltages and the CPU then reads the voltage changes and executes code accordingly.


Furby Schematics
When playing with and fixing electronics, a schematic makes a world of difference.  Normally if you go to hack a toy you aren't going to find any schematics unless someone else has reverse engineered the toy.  Luckily the toy has been out a while and was very popular amongst tinkering individuals and a man named Chris Brown created a schematic from his hard work.  I've found the schematic posted on quite a few sites, but have yet to find an official website for Chris Brown otherwise I would link his site here.  Anyway, do check out the Furby Schematic to get a better understanding of how the electronic components are hooked together.  We don't know what code the CPU runs and don't really have any chance of hacking into the CPU, but we can get a pretty good understanding of how things work based on how the components are hooked up and "guess" at how the CPU is responding to the various inputs based on how the Furby acts in different circumstances.


More To Come
That's it for right now!  I wanted to get some of my research posted.  So far I've added a volume control using a potentiometer between the speaker wires.  I plan on operating the motor with an external control since the cam shaft and gear assembly are the more interesting parts of the toy to me.  But I will try hooking up some of the other sensors too soon and post my progress.


---- Update 12/10/2009 ----

Playing around with SN754410NE (improved L293 H-Bridge Driver)
I finally had a chance to play around with an SN754410NE H-Bridge chip I had purchased off of eBay a few weeks ago.  This chip allows you to switch the direction of a motor via software.  The way it works is the chip is hooked up to your microcontroller (in my case I'm using an Arduino Duemilanove) and based on the voltage you send to a few of the SN754410NE input pins, it sets current to flow one way or the other (effectively like swapping postive and ground wires on a motor).  You can then set the motor to run forward or reverse via code that is changing the voltage on the SN754410NE's input pins.

Since the Furby only has 1 motor, it relies on a pretty nifty cam system for movement.  So if you want the Furby to move its beak you find the position in the cam sequence where Furby opens his beak.  Then you reverse the motor so Furby closes his beak.  If you also control the speed of the motor you can then sync the beak movement to words.  Puppeteers in Furby Land has some more info on how this worked from a Furby development perspective.

So great.. if you have an H-Bridge Driver and hook it up through your microcontroller you can control the motor to go forward & reverse.  But this doesn't help you figure out where in the cam system you are.  That's where the cam home switch (on the back of the Furby) and IR encoder / motor position switch come into play.

The cam home switch is normally open (meaning its two metal contacts don't touch), but when the motor makes a full revolution, the metal contacts are connected.  So you can tell when the motor is in "home" position based on when there's voltage across the cam home switch's wires.  In addition there is also an "IR encoder" that consists a gear/disc that has slots through it, an infared LED and infared receiver.  The infared LED sits on one side of the slotted disc and the infared receiver sits on the other side.  As the disc spins, it causes the receiver to either see infared light (through the slot) or get blocked from seeing the infared light and the IR receiver will correspondingly get a postive voltage or no voltage.  So in doing this, it's acting as an optical encoder that you can use to count the number of pulses from the home position (found using the cam home switch).

I hooked all of this up to the Arduino and am able to find the home position on the Furby, advance roughly to the correct amount of pulses to perform a movement & then run the Furby's motor forward & then reverse in a loop to produce the motion.  I used the 74LS14 Hex Schmitt Trigger IC chip as described here.  My issue is I'm counting more than 200 pulses (roughly 1000-1100) before hitting the home switch and resetting the number of pulses.. and it's not very exact.  Over time if I run an action the motor starts creeping into a different set of movements (so I'll first have Furby speaking some, then he'll start adding ear movements into it and over time it'll move fully out of the speaking position on the cam to the ear position).  So I will need to play around with it some more and figure out what I'm not doing right -- it could be too high or low of a resistor or the ambient light affecting things.  Or maybe if performing the same action over and over a non-hacked Furby will also have this happen.. that might be something else to test.

If I do figure out how to get a much more precise movement of the Furby going I will document and post code here.  First I'd like to get it to the point that I'm counting pulses correctly & it's not slipping into another movement.  Then I'd like to have a way to control how fast the beak opens and closes so I could eventually give Furby a sentence to say and he would open and close his mouth at different speed based on the words.  That's how I think internally the out-of-box code is working on the Furby.  They aren't just opening and closing his mouth at the same rate when he speaks... the beak is sync'd to the words.  So the faster or slower the words the faster or slower his beak opens.  That will be my short-term goal for right now.  If I can do that, I can then look into adding a sound chip of my own and reading some of the other sensors and mimicking some of the behavior that a normal Furby would respond to.  Then maybe get the Arduino out of the picture and instead replace the Arduino with a dedicated microcontroller IC and essentially have replaced the Furby's original microcontroller with my own.  That'd be neat... and entirely possible.  But I'll be happy just with understanding a little more of how this furry creature works for now =)

Resources
Furby Autopsy: Hacking
http://www.phobe.com/furby/hacking.html

Hack Furby
http://hackfurby.homestead.com/

Anatomy of The Furby
http://alumni.media.mit.edu/~kelly/Furby/anatomy.htm

Hacking Newer "2005" Furbies
http://eecue.com/log_archive/eecue-log-505-New_Furby_Hacking___Part_1___Skinning.html

Dissecting a Furby
http://mechatronics.mech.northwestern.edu/design_ref/other/Furby_dissect.html




Comments:
say so
Posted 12/31/12 10:18PM by Anonymous Techdoser
i dont know how to program it to say what i want it to say. how do you do that.
Re: My Furby's tilit sensor
Posted 01/08/11 6:50PM by AceBHound
The tilt sensor is on the right-hand side of the Furby when viewing him from the front. It's possible a wire came loose inside the Furby and if you removed the Furby's skin you could visibly see the broken connection. Otherwise could just be a malfunctioning tilt sensor that would need to be replaced, but that would be quite a bit of work to tear the critter apart to get to the circuit board that the tilt sensor is soldered on, remove the existing tilt sensor and solder in a new one. Might be an interesting weekend project if you're at all technical & want to learn about electronics -- otherwise replacement Furbies are available on eBay relatively inexpensively nowadays.
My Furby's tilt sensor "died"...
Posted 01/03/11 8:33PM by Luposian
I can't get him to ever wake up, except either by a hard reset (he forgets everything) or holding his tongue sensor down and shaking him vigorously upside down and side to side (or some combination of shaking thereof).

A soft reset only wakes him long enough to tell me he's going back to sleep!

Help!
Hacking furby movements
Posted 01/27/10 5:21PM by Anonymous Techdoser
I have used a small servo (controlled by a basic stamp) hacked directly to the large facial movement gear in the furby head for much better, exact control to simulate waking, taking, and sleeping behaviors. This is a more extreme surgery, but does not suffer from drift like you are having with using the built in electric motor to drive the face.

http://www.youtube.com/watch?v=Fb84_p28zz0
Re: arduino
Posted 11/20/09 6:03AM by AceBHound
Greetings owlish -- yes that is definitely a possibility since if you replace the original PCB you can use the Furby's sensors however you like with whatever microcontroller you want. Someone actually worked some on connecting the Furby's sensors to an Arduino here -- http://retrointerfacing.com/?p=373. I actually bought an Arduino earlier this year and was planning on hooking up some of the sensors to it, documenting my progress & posting some code. Found out that I will need some additional ICs for the motor control though. The Arduino can't reverse the voltage (which is needed to spin the motor in reverse) so you need an H-bridge IC hooked up to the Arduino (http://en.wikipedia.org/wiki/H-bridge). They're relatively cheap ICs to buy. I plan on doing this in the near future and will post results.
arduino
Posted 11/18/09 5:52PM by owlish
do you know if there's any way to replace the IC and PCB with an arduino?