How To Control the WowWee Alive Elvis From An External PC

This the first of four articles about adding a "parasitic" microcontroller to the WowWee Elvis Alive that allows control of this device from an external PC via a serial interface. The external PC is also the source for the audio for the Elvis Alive speakers. This hack allows the Elvis Alive to either function in its original "Elvis Alive" mode or in the new "parasitic" mode of being controlled externally. Once you perform all the surgery to the Elvis Alive main CPU board, you can reinstall it and still (if all goes well) have a completely functioning unit! The only sacrifice in the original "Elvis Alive" mode is a cost in battery power since the new circuitry will still be present. So, the AC adapter is recommended, or you can add an external switch to turn off power to the added microcontroller board if you wish. The image below shows the modified main board reinstalled along with the added custom microcontroller board mounted to its right. All images for this four part article can be downloaded in a higher resolution from here ( ).

Installed interface with parasite processor

A WORD OF CAUTION! I only paid $60 for my Elvis Alive (including shipping) so if you are not accomplished at throwing together electronic parts for fun, and paid full price for your Elvis, I would not recommend this hack to you.

This first article stands on its own to provide an external interface for Elvis Alive for anyone's microcontroller to do the controlling. The main requirement for a controller would be a sufficient number of I/O lines (@3.3 Volts) to run the interface. Also included in this article is a "lite" version of the interface which does not allow keeping the original "Elvis Alive" mode but requires just a 34 pin ribbon cable.

The second article will cover building the added micro controller board. The third article will cover the C software for the microcontroller. The fourth article will cover custom Windows PC software to be driven by a MIDI music editor using embedded audio files. This will be used to create and play new performances for the modified Elvis Alive.

For the curious who do not want to wait for article 2, the microcontroller chosen for my version of this hack is the PIC18F4620 with 33 I/O lines, a 32 MHZ clock (without using any external components), 64K of EPROM memory, almost 4K bytes of RAM, 1K bytes of EEPROM, several external interrupts, one USART for serial communications, and an additional serial interface for later expansion via a SPI or I2C interface. You can get the pdf's for this chip as well as the C18 compiler used to develop the C software for this hack free from the site. At stated above, you can certainly make your own choice for a microcontroller with similar capabilities and use the C-Source from future article three as a guideline to write your own control software if needed. So article 1 of this hack is generic. Articles 2 and 3 will be specific to this hack. For Step 4 the PC Windows software should be generic as long as the hack still uses a serial interface for control and the serial commands are the same.

Now for the particulars. This hack involves removing from the base the main board that contains the CPU, cutting 8 traces, gluing two 16 pin DIPs and a DPDT relay upside down to the main board ("dead bug" style), touch soldering about 50 wires to the main board including a ribbon cable. The ribbon cable will connect to the "parasitic" microcontroller board which also holds a RS-232 converter chip, and a local voltage regulator. Urr, not so bad right? If this is not your cup of tea, then you will probably want to check out the articles on this site for a hack that only involves working through the memory card interface. This other hack will allow you to still create custom sequences for you Elvis Alive without performing this "surgery" but the results are more limited. My goal is eventually add more sensory input and to have some greater level of interaction of the device with its environment other than the IR sensors already in place. The schematic for this interface is below.

The list of the items needed build the interface is as follows:

      2 - 74HC157       (16 pin DIP, 4 x (2 to 1 multiplexer))
      1 - DPDT 5V Relay (DIP style)
      2 - 10K 1/4 watt resistors
      2 - .1 uf capacitor (DIP mount preferred)
      1 - 2N2222 transistor
      1 - small signal diode such as a 1N4148
      1 - 2 pin connector to PC board (to power the added microcontroller board, in step 2 )
      1 - 34 pin cable  (I used an old floppy cable from an obsolete PC)
      30 gauge wire wrap wire
      22 gauge hookup wire for connecting power (red and black colors) 
      Silicone glue (aquarium sealant or similar)
      wire wrap tool, soldering iron, solder, X-acto blade, etc

For the "lite" version, a 34 pin ribbon cable and a two wire power connector to go to the microcontroller board will do the job!


Okay, now for the surgery! Open up Elvis by removing all the screws on the bottom of the base other than the battery compartment screws. You can refer to the excellent article on this RoboCommunity site (The Elvinator) that describes the complete disassembly of this unit. After removing all the screws, you can lay the bust down in back of the upright base. You will need to pull off some wires hot glued in place and maybe cut one cable tie to allow enough slack in the wiring to completely lay down the bust. Unplug all the connectors going to the main CPU board, then unscrew and remove this board from the base. I numbered the connectors with a marking pen when I first removed them, but the color coding and pin arrangements are unique enough that this is probably not necessary for most people.

Note that if mounting devices "dead bug" style on circuit boards in too crude for you, you can maybe move these devices to the added circuit board in step 2 or just go with the "lite" version. I just wanted to make sure the higher frequency signal lines did not get corrupted by sending them off board and back again for the normal Elvis Alive operation. In addition this allows this first step to stand on its own and still have a working Elvis Alive. This also reduces the number of signals in this interface so that a smaller surplus 34 pin ribbon cable can be used.


Lay the just extracted main board down on a soft surface such as a folded up towel with the memory card interface sticking up and proceed to cut the 6 signal traces (A,B,C,D,E,F) shown in the picture below. These traces connect to the CPU pins (5,63,64,65,66,and 55). I used a x-acto blade and just made many repeated short strokes. You definitely want to avoid cutting any thing else doctor. These six signals do the following:

        signal A (CPU Pin 5)  - CE line enables/disables the control signals from the CPU
                   to the motors
        signal B (CPU Pin 63) - START1 line enables communication with the SNAD01 
                   converter on the main CPU board.
        signal C (CPU Pin 64) - START2 line enables communication with the SNAD01
                   converted in the head.
        signal D (CPU Pin 65) - CLOCK line to clock the data to/from both the SNAD01 A/D
        signal E (CPU Pin 66) - DIO line is for data to/from both the SNAD01 A/D converters.
        signal F (CPU Pin 55) - routes the external audio input (front audio jack) to the

STEP 3: 

Locate a length of these traces (except F, we will get it off of a connector pin), out from the CPU where they can be scrapped free of their protective covering. Use something dull like a small screw driver or an instrument that is pointed but not too fine of a point. You want to make repeated scrapes with it over the targeted area of trace until about 1/4 of an inch length is exposed (you see shiny copper) but not cut the trace. Make the exposed trace areas not adjacent to each other (staggered) so that shorts are less likely in the next step.

STEP 4: 

Cut Six 1 foot lengths of wire wrap wire and remove 1/4 inch of insulation from one end. Using tape to hold each wire in place where the line can be soldered to the exposed trace, solder each of these wires to the main CPU board at the exposed traces for A,B,C,D,E. In some cases you may need to re-scrape after attempting to solder since the protective covering can burn back over the area. Touch solder the wire for trace F onto the soldered joint for the third pin of the 8 pin yellow connector (J14). This pin is labeled "out_sel" on the board and is shown in picture #1.

STEP 5: 

Cut six more 1 foot lengths of wire wrap wire and remove 1/16 inch of insulation from one end. Add some solder to the pads next to the CPU pins for these six signals and then touch solder these six wires to these 6 CPU pads on pins 5,63,64,65,66,55.

STEP 6: 

Flip the CPU board over and place it on top of the edge of something (a book, table, etc) so that the memory card interface can fit over the edge pointing down and the main CPU board can lay flat with the top side up. Locate the traces labeled G1/2 and H1/2 in the picture below and cut them where indicated. Scrap 1/4 inch length of the protective covering from the trace on each side of the cut and solder four more 1 foot wire wrap wires to these 4 locations (each side of cuts). These signals are used by the CPU to turn off power to extraneous circuitry and the speaker amplifier for power savings (or for when some parasitic processor is attempting to take control!).

STEP 7: 

Using the silicone glue, glue the 74HC157 #1 and the DPDT relay with their "legs" up in the air (dead bug style) in the areas (shown in the picture above) next to the central chip which is the flash memory. Glue a 10K 1/4 watt resistor to the PC board near the relay with its leads bent up for wire wrapping later. Also glue the 74HC157 #2 in the small area above the 8 pin yellow connector (J14) on the lower right corner of the board. You may want to bend in (or cut off) pins 9,10,11,12,13,14 on this second '157 so that these unused pins are out of the way and do not touch each other. Place this board aside for drying overnight. Be sure and remember where PIN 1 is on all of these glued devices and maybe mark them with a marking pen.

STEP 8: 

After the glue dries, you can to run at least 10 of the 12 wires soldered to the CPU pads and the traces on the back of the board through the two central holes in the board where the CPU resides. These holes were convenient to locate these wires where the "dead bugs" are installed instead of going around the outside of the board. You may want to label them after you pull them through with tape so you can easily know where they go. Any that do not fit will just have to go around the outside of the board.

STEP 9: 

Determine the correct pins on either the relay or the two 74HC157's where these wires should go according to the schematic shown above and cut them to allow enough slack to still reach these devices. Remove about 1/4 inch of insulation using the wire wrap tool and wire wrap this short length to the correct pin for all 16 of these attached wires (from front and back) according to the schematic. Once all the wiring is complete and tested later you can add a little solder to make these connections more permanent.

STEP 10: 

Add the diode to the relay (if needed, some relays already have a diode on board) by soldering it across the coils pins observing the correct polarity. This is a small signal diode so you should be able to fit it easily if the coil pins are both located on one end of the relay. Solder the transistor's collector to the relay's ground coil so the transistor can be bent out of the way. The transistor on my setup just hangs off the relay by the single lead but make sure it will not get any movement that will cause it to short out something. You may want to silicone it in place after every thing is wired.

STEP 11: 

Extract 2 wires from the 34 pin ribbon cable wire about 6 inches long. There is extra wire but just keep about 12 inches of the ribbon cable intact from the one connector without the in-cable wire flip and this will be used later. Use these 2 wires to pull power for the relay's coil from the largest capacitor of the main CPU board. The lead of the capacitor attached to the cross hatched area on the main board is ground. Leave room to add the 22 gauge power wires for the added microcontroller board you will build later.

STEP 12: 

Add power to the 74HC157 #1 also using two wires from extra wire pulled off the 34 pin ribbon cable. Touch solder them to the location (I) in the picture using the identified polarity.  Add a 10K pull-up to PIN 1 from power on the '157. I was able to make loops in the resistor's leads and suspend it across the require pins of the DIP. This will keep Elvis as himself until you add the new CPU to override it. Also add a .1uf capacitor between Vdd and Vss (PINS 8,16). I used a DIP form factor capacitor that could also be glued "legs up" to the end of this chip but you could still just hang a disk between leads or glue one flat to the board with the leads sticking up for wire wrapping. It's not pretty but it works if you are careful about not causing shorts.

STEP 13: 

Add power, ground, and the PIN 1 signal of the first 74HC157 to the pins on the second 74HC157 next to the yellow (J14) connector. You can run wire wrap wires over from the first '157. Add another .1uf disk capacitor across power and ground to this chip.

STEP 14: 

Again, lay the CPU board down with the card interface up and towards you. Line up the 34 pin ribbon cable (cut to about 12 inches in length) with the end connector about 2 inches out from the right edge of the board. Pin 1 of the ribbon cable, the red wire should be away from you and the memory card board that sticks up (See picture below). Beginning with pin 1, separate the ribbon cable into a group of 11, 6, and 4 wires to go to connectors J45 (10 pin white) ,J44 (6 pin yellow) , J47 (5 pin white) on the CPU card. Note that 11 wires are needed in the first group because pin 5 is not used. You can fold over the groups of wires to line up with bottom of the connectors you will be touch soldering them to. DO NOT SOLDER ANYTHING TO THE CONNECTOR PINS ON THE TOP SIDE, just the underside since you will be plugging the connectors back in when you reinstall this board! After cutting each group to a good length to reach the connectors, remove about 1/16 of an inch of insulation from the wires. Add an extra amount of solder to each soldered connector pin and then touch solder the correct wires in place per the schematic. 

STEP 15: 

Run the remaining single wires from the ribbon cable to the correct pins of the two encoder connectors (J55 & J78), to the two 74HC157's and to the relay.

STEP 16: 

Cut two 14" length 22 gauge wires (colors RED and BLACK preferred) and remove 1/4 inch of insulation from each. Solder one end of the wires around the same leads of the largest capacitor that the relay power was pulled from. Again, the cross hatched lead is ground and use the black wire for this. Connect the other ends of these wires to a connector suitable for sending 5.5V power to the circuit board you will build in the next step (article 2).

Check your wiring 5 or 6 times, check for shorts 5 or 6 times, then remount the CPU board in the base. It always amazes me how much I can miss wire something right under my own nose! Reattach all the connectors. Check for any cables that might get in the way of the mechanics and use some cable ties if needed. Power it on and Elvis Alive should still be Elvis Alive! 

If you were successful, sit back and relish in the first step of your accomplishment. If not successful, sorry ,maybe you should have done the memory card hack. Go back and check your wiring again and also look for shorts again.

Pictures of my completed board are shown below. Not pretty but functional!

This completed interface has the following signals. All signals are @3.3 Volts. All but 22,24,and 25 are inputs.

Pin   Signal Name
5 Unused
22 DIO

Here's an explanation of how this interface is used.

When the ELVIS ALIVE MODE signal is set high, Elvis is his old self. This signal is pulled high with a 10K resistor so that everything functions normally without anything plugged into this interface. When the ELVIS ALIVE MODE signal is pulled low (Parasite Mode), the 74HC157's switch all the signals of the traces you cut from the on board CPU to the external CPU. One of the signals switched is the Chip Enable for the on board 74HC574's which is switched to being a High level which disables the '574s. These chips drive all the motor control signals for the Elvis Alive.  When these chips become disabled, Elvis essentially becomes paralyzed at this point and in his own words "leaves the building". So always set the ELVIS ALIVE MODE signal low before the external microcontroller's signals become outputs (keep in high impedance mode until used). Also return them to high impedance mode when returning to Elvis Alive mode.

All the motor control outputs act in toggled pairs to run the 10 different motors forward or backwards. The motor signals are all active high and should be run in a clocked duty cycle to control the speed. The duty cycle for the stock Elvis Alive was observed to be about 130HZ. For the controller in my hack I will divide the control of this into 1/10th of a cycle so my main control loop will run about 1300 times per second.

The limits for these motors must be observed by the control software to know when to stop. Otherwise the stripped gear noises may become unpleasant for some motors. This is where the existing onboard A/D converters can also be utilized for 8 of the motors. The onboard SNAD01A A/D chip has a 250KHz conversion rate with 8 bits accuracy. It is similar enough to the SNAD01B,C versions that the pdf specification for the later versions can be used for programming them. ( It can be found here at I never could locate a pdf for the (A) version of this chip. Just remember to initialize the 4 bits of the SNAD01 control register to all 1's (my experience). Otherwise, the results are the same as documented. The 4 signals DIO, START1, START2, and CLOCK are used to read both of these A/D chips. There is one on the main board and one in the head. The DIO line is special in that it is used as bi-directional to both send commands and receive the data. This is why a relay is used to switch this signal between modes instead of the 74HC157's like the other control signals. So in order to read the A/D's externally, the relay must also be activated and to do this you would set the DIO/AD01 POWER signal to high.

The second set of contacts on the relay are not wasted and are used to switch power back on to the A/D converters and to the audio amplifier since the on board CPU will turn this power off if it cannot control the unit (because the interface cuts off the control signals). This is also useful to do an initial reset to the A/D's by turning power off and sending all other input signals to the A/D's to a low level for a short time (1-2 seconds).

There are encoders on two of the motors for head up/down and swing movements instead of A/D feedbacks. The HEAD UP/DN ENCODER OUT and HEAD SWING ENCODER OUT signals for these encoders are the only two outputs from this interface other than the DIO signal. These are just clock signals that must be counted to be useful so sending them to interrupts on the added microcontroller would be a good way to keep track of these two motor movements. In addition there are four limit switches for these two motors that are read from one of the A/D converters. These read 255 as OFF and 0 as ON. You must perform an initialization sequence in your microcontroller code using these switches to calibrate your encoder counters. Then you can stop movement before you reach these switches using your encoder counters.

The AUDIO OUT signal is set to high to route the front audio jack input to the speakers. So this can act as a audio mute when needed. And I might add that you can get a BIG BOOMING voice from these speakers from a computer verses the weak voice put out by the stock unit.

The Lite Version of This Interface

The last picture below is the "Lite" version schematic using just a 34 pin ribbon cable. The only difference in this interface version's signals is that the ELVIS ALIVE MODE signal is no longer present so the stock Elvis has left the building and he ain't coming back. I did wire up this "lite" version as well and it does work. All you will need to do is cut the 8 traces shown by the red lines in the pictures, add a two pin power connector off the large capacitor for your controller board described above in step 16 and solder the 34 ribbon cable lines to the board per the schematic. Remember to keep the orientation of the cable as described above in step 14. Note that the C, D, and E traces can instead be soldered to pins on the bottom of J21. Also the H-2 trace can instead be solderd to a pin on the bottom of J73 and the G-2 trace can instead be soldered to a pad that resides on the bottom of the board near J73. So you can reduce the number of traces to two that you have to scrape clean to solder wires to (just A and B). Just use your ohmmeter to verify the correct spots. This puts all the ribbon cable connections to the bottom of the CPU board which makes for a neater and a safer hack.


 Just When you think you're finished you get pulled back in! I was preparing to make a demo video and did some cleanup on my microcontroller code including removing a serial bootloader. The 2 second delay in the bootloader was doing me the service of hiding one more modification. It turns out that the Elvis Alive CPU pins reading the encoders do not always act as benign inputs unless you stop Elvis in his tracts about two seconds into his startup sequence when he is initializing his encoders. Stopping him any later results in the encoders intermittantly being pulled high by the Elvis CPU pins which prevents the added microcontroller from being able to read them. The end result is no changes for the regular interface since the microcontroller code can just wait for the encoder inputs to start clocking before cutting Elvis off during the startup sequence. However, if you are attempting the "Lite" version of this interface it will also be neccessary to cut the two traces between the Elvis Alive CPU and the encoder inputs (J,K) shown in the picture below. This makes a total of 10 traces to cut for this "lite" interface. My suspicion is these CPU pins are part of a port that is being reinitialized as a whole for another purpose and these pins have to be toggled between uses.


roschler's picture

One word, awesome! :)

-- roschler

RetroPlayer's picture

Excellent article, Evilis!

GWJax's picture

Nice hack Evilis! and thanks for the putting my link in your article! Your interface is diffrent than what I have planed but it's good to have diffrent aproaches to these hacks.. heck when Retro and I finnish all of our hacks to it this will be the place to come to for diffrent ways to change the Elvis. I am working on nother Elvis hack that only plays songs with a touch of a btton and no remote needed. I am doing this hack for someone that has seen the full Elvinator article and he wanted me to do this hack for him so of course I said OK. hehehe I just can't say no to people, I guess thats my downfall haha.
Looking foward to seeing the rest of the articles..


Diego's picture

Hi Evilis!,

First of all, i would like to thank you for your article, really brilliant.

One question, is it possible to do the same with the wowwee chimpanzee?



defwheezer's picture

Diego said: Hi Evilis!, First of all, i would like to thank you for your article, really brilliant. One question, is it possible to do the same with the wowwee chimpanzee? Regards Diego


See this thread:


A Harbinger of the Robot Apocalypse?

Maybe not, but would be freaky to first hear of the Robot Apocalypse from this type of animatronic feed reading robot head!

RSS feed reading robotic chimp-machine hybrid made from a wowwee chimp head and a seriazer WL parasite board. 

Others have covered the general hackings of the chimp, but here I add realistic mouth movement synced to an automated RSS feed reader.

Mouth animations are done using the viseme stream data which encodes mouth shape and phenome length. This in turn used to control a servo in the jaw. TTS stream from an RSS feed updated in realtime. For this demo the keywords were robot and drone.

Evilis's picture

That's a pretty sweet setup. I don't see how you could get jaw movements any better synchronized with an automated voice. Impressive!

Mister Jellyfish's picture

Thanks, Evilis, and thanks to this whole community I have just joined for all of your great insights. Please allow me to introduce myself. I lead a magnificent crew to build interactive art for Burning Man, the largest outdoor art festival in the world that takes place here in Nevada. Some of my previous works, including "U-Me: The Unfortunate Monkey Experience" that hacked a Wowwee Chimp are located at my website here: . I have started a new page at for next year's project we have already started on that will apply many of your hacks to the Wowwee Elvis. It's called "Georgie Boy: Fallen Queen of Broadway". I hope you enjoy it and look forward to posting videos of the audio/midi interactions of the characters.

Well, I've got lots more reading and catching up to do before I can have any intelligent conversation about this stuff. Much gratitude indeed!

Evilis's picture

Fantastic Mr. Jellyfish!

I am so very pleased to see all the shared discovery and collaboration of this group contribute to of all things a performance art piece at Burning Man! I hope it speeds your project along as it did mine.

It is so impressive what your group has done from what I saw on your web site. The scale of it all is tremendous! If I could help in any way please let me know.


Mister Jellyfish's picture

Right on, Evilis! We will be scaling it down in size compared to this last event. 42 Volunteers got a little hard to manage but no regrets considering what we accomplished. Georgie Boy will be a lot more up close and personal, as I want participants to see and interact with the animatronic nuances and subtleties. It will be like the sickest, most deranged distortion of a Disney or Chuck E. Cheeses experience so people just walk away laughing, shaking their heads saying "Man, that is some fucked up shit".

Do you have an interest in attending Burning Man one day yourself, Evilis?

Hi also to GW Jax who I personally blame for proving that the stripped down head of Elvis would be perfect for this project. Please don't be mad at me for overlaying that flaming audio over your video of the naked "King" but it was the perfect proof of concept for my crew.

Evilis's picture

Mr. Jellyfish

You had me at sickest and most deranged. A twisted version of the animatronic figure of Abraham Lincoln at Disneyland was going through my head when I saw that video. I would be willing to donate a couple of Elvis heads with fully modified electronics for your project if you are interested. I have a total of 10 heads so they can be spared. You could then create the sequences using a MIDI sequencer, store the resulting controller and audio files on a USB drive, and then just send the name of the sequence to play to the head over a serial interface. I would of course leave the rest of the head customization to your group. Let me know if this would be of any help and we can exchange contact info through the private mail on this site. And yes I am definitly interested in seeing Burning Man.

Mister Jellyfish's picture

That, dear sir, is an offer I can't refuse! Thank you! I'll PM you with some more inside-information, where I hope you would consider responding with a phone number as I would love to have a conversation with you about just how strange and wonderful such a collaboration could become and how well received it will be at Burning Man 2011.

jofi's picture

amazing !
I will try the lite version for myself.
huge thanks to Evilis and GW Jax

GWJax's picture

jofi said: amazing ! I will try the lite version for myself. huge thanks to Evilis and GW Jax

Great the lite version is what you need for your project.. Please post a photo or video of your mod here when your finished with it so the other members can see what was done with Evilis's mod please..




Evilis's picture

One necessary correction that I have not included in the articles if you are going to use the Version 1.1 that uses the VMUSIC2 module is as follows:

[Tie trace G on the Elvis Alive CPU board (after the trace is cut) to 3.3V instead of wiring that point to the 34 pin connector.]

The Version 1.1 firmware no longer uses this line to switch from Elvis Alive mode to PC Elvis mode and it must be tied high in order for the A/D converters on the Elvis Alive CPU card to function.

I plan to publish an upgrade before too long which will also fix a few minor bugs. The most significant bug is that some times the calibration values are not written to the EEPROM because the interrupts were not disabled at the moment the EEPROM write takes place. The other bug fixes are primarily tweaks to get the auto calibration to work better and to get the auto calibration to work if you decide to remove Elvis' skin (see GWJax's video with the skin removed).

Coldblackice's picture

Fantastic article! Wow.

Evilis and Jax, how do you figure out how what/where/how the signals are on the board? I would love to understand the process of 'reversing' the board, and learning trace-by-trace where each signal is and what it does. I realize something like this probably takes a lot of background knowledge in EEngineering with years of experience, but if you could even dumb down a simple step-by-step explanation for my mortal mind, so that I could "mimic" the process for myself and see/feel the jubilation of determing "Ahh... that trace right there must be the X signal, because it controls the jaw!"

Did that make sense? In other words, could you give me a quick run-down of the steps you took to be able to understand how the boards work and especially how you found where/what each of the signals were, to bring you to the point where you can masterfully pull the signal "strings" like a marionette doll?

I'm guessing there's some other key test equipment involved in learning how the board works and which traces are what signals other than a multimeter?

Or is it just a matter of putting your multimeter on certain spots on the board, pressing a button on the controller, and then monitoring the voltage throughpout on that spot to determine which motor/body part it's moving?

Sorry for the novel, I've just been anxious to learn about this mystical reversing process for years that you electronic gods unleash upon skinned Furbies/Robosapiens/Elvii :)

Please enlighten, even if I can just have a taste of that success of learning on "my own" by deciphering a trace on the board and figuring it out what it is, finding the ones with signals, and then figuring out how to manipulate and control them.

Thanks for all your service and information you divulge to us and the community!

Evilis's picture

Greetings ColdBlackIce

Thank you for your kind comments!

Most of the initial "leg work" was done by Jax and another member Retroplayer to determine what main components were on the circuit boards and to define what wires did what. In the case of the Elvis head it was very fortunate that almost all the wires coming off the main card holding the microcontroller had some sort of identifying label. These labels and the knowlege that all the outputs to control the motors were just 3.3 V logic signals, reduced the amount of discovery necessary. If was easy to identify the two 3.3 volt logic gate chips on this main CPU card that feed these labeled signals on the main CPU board to the motors via the connectors. So all it takes to control the motors is to cut the traces from the Elvis microcontroller to these logic gate chips and replace the signals with outputs from your own microcontroller. To also use the analog converters on this card which read all the motor positions I had to do some leg work on my own. I did some web surfing and was fortunate to locate a hardware/software spec sheet for a part number close to the one on the CPU card and after alot of trial and error (with my microcontroller wired up to an A/D chip on the Elvis card) I was able to read the inputs from these A/D chips. There were only 2 or three other signals that had to be figured out and these were mainly signals that the ELvis microcontroller shut down different circuits to save power for running on batteries. This was mostly figuring out that the circuit did not have power when my microcontroller was in control but it did have power when the Elvis microcontroller had control. So a big step for me was to do the hack as switchable so that the Elvis microcontroller could be switched back in to debug those remaining signals. The logic gate chips I mentioned above that carry the motor control signals have tri-state outputs. This made it easy to use similar chips from my microcontroller to do this switching.

But all of what I have just described is just a basic understanding of digital logic, microcontrollers and programming. You need to know what you can connect to what without burning anything up. You also need a sense of how much you can get a particular microcontroller to do under a real-time load. Its not something you learn overnight. It comes mostly from experience fueled by a desire to learn by "tinkering around" with whatever you have available. You start small and get bigger as you go. Scholastic knowlege is important. If nothing else it teaches you to learn on your own. I do have a EE BS degree and MS degree but so much of that was about theory and not about practical applications. Although this tuition paid knowlege does help alot on the not burning anything up part. If you don't break what your trying to figure out, with patience you cannot fail. I think the biggest resources you must have to do these things is alot of desire to learn and the drive and patience to do so.

The Elvis head is kind of a "perfect storm" of something to hack. It has simple digital outputs and simple analog inputs. Most of which were even labled! Its just a matter of putting the microcontroller in the middle to send and receive these in whatever format works for you. I think its wonderfull that we live at a time when you can take a 6 dollar microcontroller chip and control 30 signals like this just for the fun of it. And the internet is such a big resource. It informed me from Jax's and Retroplayer's work that the Elvis head was out there just waiting to be hacked! 75% of the signal information I needed was wonderfully documented by these two members. So another big item on the list of things you need to do is sharing what you know with others. It will pay you back.

You will also need to have a multimeter, an oscilliscope, and a logic analyser. I need a logic analyser but have just used a microcontroller and some custom software to act as one. The logic analyser would have definitly saved me some time in working with the A/D converters on the Elvis. All of these tools are pretty inexpensive these days. Then of course you need a project to motivate you to learn. It can be small for starters. Google alot, you will find something. Then get bigger. The knowlege will grow like a snowball rolling down hill! Lately, I've been wanting to take on building a Quad-Copter platform for a flying robot but I've been too busy building a garage with a slide-off roof observory on top. Oh yeah, time and energy. You need lots of time and energy. :)

So in short, just enjoy learning. You will never stop and you will always have the patience to do so.

Good luck to you in your future hacking!

GWJax's picture

Nice note Evilis, I think that pretty much sums up the question. I just love the way you explain things like this. Very clear and precis on the subject presented to you..

I have bought another Elvis that I'm going to re-due the Elvinator project once it arrives. I have been thinking about the Jaw action and how it's hard to control with speed and small movements. If I'm correct there are 2 I/O connections for Jaw Up and Jaw Down. In order for this to work with a MCU, I think the the A/D chip in the head needs to be by-passed for this section so the MCU can read the analog circuit and give it a better degree of motion verses the digital output. I'll have to experiment with the new one and find this out. If it does work better I'll post my finding here and on in a new article so you may make the needed changes to your circuit if you wish and if it works.


Evilis's picture

Its good to hear from you Jax. I truely hope you and yours are doing better than when I last heard.

On the mouth movements, I've had some good success lately with a mod I did for Mr. Jellyfish when he was running skinless. I had previously depended on the skin to act as a spring to pull the mouth up after it was opened with the Jaw down command. I made a change to the micro C code to automatically output the Jaw up command after a Jaw Dn command terminates. The speed used for the Jaw up was made adjustable for him via a MIDI controller value (just another command into the serial port).

In addition to the above change, I discovered a software tool written by Microsoft to produce mouth movements in thier talking characters for Windows XP. One was an antimated paper clip as I recall. The tool was a free download so I checked it out, deciphered its output and was able to create a VB program that uses its output to automatically create the Elvis mouth movements as well as add and edit all the face movements. I am very pleased with the results. I've been meaning to write another article on it here but I keep finding too many other things to do. If you are interested in checking it out I can email you a copy of my VB program.

Here is a link to the Microsoft tool:

The tool takes two inputs. A .wav file that contains the speech and a user typed text of what is being spoken. The output is another .wav with the linguistic info appended to the end. The linguistic info identifies each word and each phoneme being spoken as well at the start/stop time of each word and each phoneme. The VB program I wrote takes this result file as input and creates a word list that allows you to insert the facial movements (other than mouth) based on the word start times. Then you can just click to generate the mouth movements. There are several parameters that you can change to adjust the mouth movement result but I use a default set that seems to work pretty well. Of course you have to have the Elvis head hacked the way I did with the additional software change I did for Mr. Jellyfish though for it to work. However with this VB program, to create and playback complete sequences you no longer need a MIDI sequencer, or the PC Elvis code I wrote to connect the MIDI sequencer to the Elvis via the serial port. I do still create MIDI files automatically from the VB code that can still be used with a MIDI sequencer.

defwheezer's picture

GWJax said: ...I have been thinking about the Jaw action and how it's hard to control with speed and small movements... the MCU can read the analog circuit and give it a better degree of motion verses the digital output. I'll have to experiment with the new one and find this out. If it does work better I'll post my finding here and on in a new article so you may make the needed changes to your circuit if you wish and if it works. Jax

I did the same think with a Wowwee chimp head, reading the analog signal of the individual motor position potentiometers directly.  Very crude movements only (head up middle down, open and close eyes for instance).  I would go with a replacement hobby servo for any fine movement control.

Evilis's picture

I was able to get some reasonable results by having a built in calibration function to determine the limits of all movements. I include calibration values for range of motion, speed, and motor overshoot. The result was movement commands that allow you to enter a position from 0 to 10. The repeatablity is not as perfect as using a servo but for most cases I don't think this is required. Anyway it was tremendously easier to use the built in hardware as is than to break it down and re-mechanize it with servos. Just my option though.

GWJax's picture

@Evilis, I would love to get my hands on a copy of this VB program. So if you would please send it my way. If you forgot my e-mail address I can PM you that.. I'll check out the MS's mouth movement program and thanks for the input on this!!

One other thing, JellyFish is sending me another Elvis so I can re-sculpt Georgie Boy's skin and rebuild the molds for the skin but this Elvis is not hacked. Do you know if he wants me to send it to you when I'm done to do this hack or do you not have the time for this? Also did you want a skin of Georgie Boy as well? If so I'll gift you one when I'm done with them.. Also I need your address as well if you don't mind since I lost everything in the fire. I now have all my files backed up offline for a mere $40.00 per year. I wish I had done this before but that's just another learning mistake I can chalk up on my board , LOL


Evilis's picture


Great news about the re-sculpt! I know Jellyfish was having a hard time finding a replacement for you. I have already shipped him a "loaner" backup CPU/Microcontroller card set that he or someone else can install in a new bust so I think the Elvis head you are getting is covered. He will just need to run the calibration sequence after the install.

As long as your address is the same address at gmail then I still have it. If its not this then just send it to me via the private mail here. I will be interested to hear your comments. No one else has seen this yet. I finished it about 2 months ago but got busy on other stuff. I sent Jellyfish an early version that just generated the mouth movements, but he being the musician he is still prefers to use his keyboards and midi controllers.

Its good to hear you are active again.

GWJax's picture


Ya my e-mail is the same so please send it. I can't wait to see what you did and it's a great honor to be the first to view it, THANK YOU...

And thank you for sending him another board set. Just let me know how much the board set was and I'll ship you out the money via paypal if you want.

My wife was just a little bit upset about me re-doing the sculpture and molds but I told her that I enjoy it and I don't mind re-sculpting it again. I guess she is just worried about my health and how much this will take out of me. But hey I just can't stop everything because I have MS running amuck.. Right? Plus I love helping others and robots too. hehehe


Evilis's picture

No worries about the money. I donated the first set for the project and Jellyfish has promised to ship the new set back to me once the project is over. I currently have 7 working busts for a "hard to wrap your mind around this" presentation. I now have the software I wrote to create the individual sequences and download them "wirelessly" to a usb drive in each bust. I can trigger the sequences wirelessly as well. I just need to write the software to orchestrate the sequences since I've moved away from controlling them with the MIDI sequencer. I did this because for this many talking heads, the data rates for the MIDI were too great as well as the number of audio channels required. So now a short text string sent to each bust triggers the locally store audio and movements. I think I can just resort to using a Midi sequencer again but instead of each note triggering a movement, it can send the command to trigger an entire sequence. When I get the card set back from Jellyfish it will be 8 busts. And no I'm not crazy. Well maybe a little. MuHaHaHa :)

GWJax's picture

WOW!!! Now I have to see all this in action.. Make sure you video tape this and let us all see your creation. Using the wireless route to a USB Drive is brilliant and I agree with you about using the Midi to just sent a sequence to the bust and let the MCU take over from there..

BTW Do you want a Georgie Boy mask to wear on your head or the Elvis bust?? These skins as you know are a one of kind and only limited to the Georgie Boy's Crew..


Evilis's picture

I would use the Elvis bust version. I don't think I would have a use for the other. Thanks!

I just sent you the Script Elvis VB program. It requires a serial port to run it. I hope you still have one available.

GWJax's picture

Cool thanks.. My laptop does not have one but my son's computer does and he is no longer using it so I will take it from him.. hehehe

I'll let you know how it is when I convert my Elvis with your mod so I can run it. and I'll check out the source as well..


Mister Jellyfish's picture

Hi Evilis and G. W.! Great to see your thriving dialog and developments here! One thing we all share about this stuff is a drive to keep going with it-- to push the limits well beyond where others might quit.

For those following this thread, I just want to acknowledge Evilis and G W for their massively important contributions to our honorarium interactive art piece for Burning Man 2011, the largest outdoor art festival in the world. This is my fifth grant-funded installation, and our 30-member crew has done amazing things to morph and enhance the Elvis busts including pneumatic body movements, costuming, make-up, DMX computer-controlled stage lighting, scripting, programming and voice-over talent. We welcome you to check out the project web page at and to follow along on our progress blog at as we add the finishing touches for the event that takes place the last week of August.

Be well and do strange things.

Coldblackice's picture

Golly, I just want to add my thanks as well to Evilis, Jax, defwheeler, Retro, and others -- you guys are some of the most helpful, contributing, and friendly group of hacker enthusiasts on the net. Big thanks to each of you for not only your help and answers and public contributions of your very hard and time-consuming work, but especially your quick promptness in giving those answers!

I nearly receive answers to my neophyte questions before I can even finish asking them! Rest assured, I'm using this information on a Elvisish project of my own which I look forward to writing up and sharing with the community. I'm excited! I humbly think this is going to be big WoW(wee!) factor! :)

GWJax's picture

@ Coldblackice,

NP that is what this community is here for. I can't wait to see your project in the making. When you open up a new thread please post the link here so we can find it quick.. Good luck with your project and if there is anything we can do for you just ask away and we'll try to answer it for you..

Happy Hacking,


Goldenshuttle's picture

This is a work of a genius...i saw a computer controlled Elvis selling on Ebay at 900$...i hope it is you the seller bcoz yu desreve a reward for this smart effort..

Evilis's picture

Greetings Goldeshuttle,

That was not my Elvis on Ebay. I will have to watch to see if another ever shows up. That's certainly intriguing.

As far as my design goes, it was my design but it was based on all the information shared by others here on Robocommunity with just a little more digging for answers on my own. But thanks for the complement.

buffalo gal's picture

Can you please email me instructions on how to change a tribot remote to operate the Elvis Live? or where I can get a WowWee Elvis microphone remote?