Sound Error when Installing Old mbed Expansion on New m3pi

Hi… Thanks for your help in advance -I’m a first time poster and a mech. engineer that is new to robotics in general.

I’ve been tasked with repairing a robot that is (was) being used for clinical testing -the original designer is no longer reachable; my effort is to repair only (no mods). The set up is m3pi/mbed/wixel/xbox controller/Windows; programmed with Visual Studio, presumably compiled via mbed online compiler. The xbox is only used to drive and initiate 7 distinct sounds.

The original robot failed. Exact cause unknown; likely user charging error -smoke observed from a motor during operation. Shorting observed on 3pi base w/o expansion installed and w/o powering unit on; LEDs flicker and a motor gets extremely hot.

New m3pi purchased. New batteries purchased, charged, and installed. Old and programmed mbed/wixel/expansion installed onto new 3pi base (was hoping that there was no controller damage). It almost worked! I now have full control of the motors thru the xbox controller/Windows program/Wixel(s). But the 7 distinct sounds activated from different xbox controller buttons no longer work.

All sound/music calls are answered with a single error tone and the error “BAD DATA B3” on the 3pi LCD. Proceeding drive controls change the error to “BAD DATA C5” or “C6”, depending on the direction -BUT the robot continues to drive as if the error was not displaying.

The only version of the operating program is being used to call the sounds; I am not aware of any potential changes. The programming on the mbed and Wixel was not altered.

So what changed? Is there a chance that the expansion board and components could also be damaged (it doesn’t seem like it due to the normal robot driving)? Could there be a firmware change on the new 3pi base, and can I restore it to the old version? Where can I find a directory of 3pi error codes? Where should I begin?

Soldering the Wixel sockets and programming the mbed for the new expansion board is an option, but it is all new to me and will take a while. Additionally, there seems to be no damage to the previous expansion board, so I am not convinced the same issue will not be present.

I can attach code, but it hasn’t changed -and due to the xbox/wixel/Visual Studio it is scattered in various sections.

Thanks Again!!!



I am sorry you are having problems with your m3pi. It is possible that your original mbed and wixel were also damaged with the base 3pi. However, since you are able to command the new 3pi to drive with them, they might be ok.

At this point, it would probably be best to simplify the system to determine the issue. You might try writing a simple program for the mbed that sends commands to the 3pi to play music. You can find a command list and the source code for the serial slave program in the “Serial slave program” section of the 3pi user’s guide. If you get stuck, you can post your code here, and I would be happy to take a look at it and give pointers.

- Jeremy

Thanks for the reply.

Simplifying the system sounds like a great step. I am working on programming the new mbed/expansion that was also purchased. This is a great exercise that I am working in parallel.

However, if I simplify this expansion board/assembly I will lose the configuration on this set up. Is there a way to retrieve and save the configuration on the mbed and wixel prior to this troubleshooting? I have not found the compiled code; do you know what file type I should searching?

Also, is there anything I can do just to the 3pi to troubleshoot? Can you confirm that there was not some kind of firmware upgrade, or hardware change with this new unit? I’ve already tested the sound and features of the board independently -all ok.

Where can I find the 3pi error codes (e.g. B5)? I’ve searched the user manual…

Thanks again.


I am not familiar with a way to retrieve the program from the mbed; however, you should not need to modify the old mbed and Wixel. Instead, I recommend removing those controllers from the expansion board and programming the new mbed controller that came with the m3pi to send serial commands for playing music to the 3pi (without a Wixel).

When using the online mbed compiler, it produces a .bin file to load onto the mbed device. The .bin file should have the same name as the program name.

If you have already verified that the speaker on the new 3pi works, I do not think you need to troubleshoot the device further, but you should try sending serial commands to it to see if all the functions work.

Depending on how old your 3pi is, there might have been changes to the device. The last update to the serial slave program was about 3 years ago. If you post pictures of your 3pi or tell me the serial number on the bottom of the 3pi, I might be able to tell you when it was manufactured.

The value you get after bad data is not an error code. It is the byte received by the 3pi and corresponds with a serial command. As I mentioned in my previous post, you can find a command list and the source code for the serial slave program in the “Serial slave program” section of the 3pi user’s guide, including B5 (and B3).

- Jeremy

Thanks for the reply… I hadn’t considered programming the new mbed on the old expansion board.

I’ve attached a pic of the bottom of the broken 3pi. Additionally I’ve included the Windows GUI, and my results of searching for the .bin file that you mentioned. I was not able to find that type of file, but I did find a .pdb (Program Database Debug) -so I’m starting to doubt that this was compiled via the online mbed compiler??

I am continuing to attempt to program the new mbed for simple sounds, but I am hoping that the serial number of the older unit will provide some insight…

Thanks again,


I looked in our system, and the serial number on the older 3pi corresponds with the most up-to-date version. There should not be any difference between the two 3pi robots.

Some mbed devices make the .bin file accessible. You might try connecting the old mbed to a computer and see if you can find the .bin file inside of it (the device should appear as a hard drive when connected to a computer).

It is possible that the original program for the mbed is on the previous programmers online mbed account. You might try contacting the previous person working on the project so you can gain access to the source code.

- Jeremy