I used the ArduIMU v1.7 code, and the ArduPilot 2.6.2 code (it was freshest at the time).
ArduIMU
-----------------
#define BOARD_VERSION 2 // 1 For V1 and 2 for V2
#define GPS_PROTOCOL 2 // 1 - NMEA, 2 - EM406, 3 - Ublox We have only tested with Ublox
//yes i set the EM406 here
#define PRINT_GPS 1 //Will print GPS data
#define PRINT_BINARY 1 //Will print binary message and suppress ASCII messages (above)
ArduPilot
------------------
in void setup..
#if GPS_PROTOCOL == 3
Serial.begin(THIRTY_EIGHT_K_BAUD);
#endif
AP_config.h
#define SHIELD_VERSION 1 // Old (red) shield versions is 0, the new (blue) shield version is 1, -1 = no shield
//0-2
#define AIRSPEED_SENSOR 1 // (boolean) Do you have an airspeed sensor attached? 1= yes, 0 = no.
//0-3
#define GPS_PROTOCOL 3 // 0 = NMEA, 1=SIRF, 2=uBlox, 3 = ArduIMU, 4 = MediaTek, 5 = Simulated GPS mode (Debug), -1 = no GPS
//yes i set to 3 for the IMU here (you would think they would have made them common, oh well)
//0-4 Ground Control Station:
#define GCS_PROTOCOL 0 // 0 = Standard ArduPilot (LabVIEW/HappyKillmore), 1 = special test, 2 = Ardupilot Binary(not implemented), 5 = Jason's GCS, -1 = no GCS (no telemtry output)
Simply compiled, and loaded to each board using a sparkfun.com FTDI basic board, then assembled per ArduPilot manual (wiki), using the optional IMU instead of thermopiles link (second pict, with shield one).
Same setup, just replaced the xBlox with a EM406A.
I did use X-CTU to configure my xbees per the blog post Chris had done (along with note gleened from ladyada).
(i will upload these also, rx is computer side, tx is plane/whatever side)
I am also uploading my putty.log
Yeah, silly me, i just set putty to serial with 38400,n,8,1,none and enable logging (heck i run a 50k line scroll back usually <G>).
http://dynx.net/ArduPilot/
Disclaimer: I have a plane with only 1 wing, it does not fly, this code untested in flight. If you load and your bird ends up looking like a pug-nosed dog (or worse).. "use at your own risk..".
It is meant to show that even guys with older hardware can still play (especially the EM406 guys).
Comments
My 406 stopped working with both ardupilot and imu. So I gave up and bought a UAV dev board and guess what, the 406 just worked with the UDB.
After further investigation I found that the imu and arupilot code will not reinitialize the 406 once it has dropped to a certain unknown state. To avoid wasting time investigating, Ken has provided the reset code for the 406.
Run his code and then your 406 will work with IMU or ArduPilot. The code is here
http://diydrones.com/profiles/blogs/putting-your-em406-gps-back-in