ARRIS CM2000 Brushless Gimbal

photo 1

With many compact brushless gimbal systems hitting the market, I decided to test out the new ARRIS CM2000 brushless GoPro gimbal. The gimbal is available to purchase from hobby-wing for $250 with the purchase of a $50 off coupon. I placed my order with EMS shipping on May 2nd and my order was shipped out on May 10th, arriving to Arizona on May 15th.

The gimbal was packaged in a branded cardboard box protected within another box.


Inside the box the gimbal, CD and strap were loosely packed, but undamaged. A mini USB cable (not included) is required to program the gimbal.


The CD contains the FTDI drivers, SimpleBGC software, PDF manual and a short video clip recorded from the test flight. The test video is matched to the corresponding number labeled on the gimbal and the CD.


The gimbal and CD are individually numbered to correspond with the test flight footage. Four rubber dampers hold the top and bottom 2mm carbon plates together, protecting the control board and isolating it from vibrations. The power cable uses a JST connector and each motor is wired to the control board with a 3 pin servo cable. The IMU is mounted just beside the GoPro on the base plate, and it is soldered to the control board with several thin-flexible wires. A long signal cable is included to manually control the pitch and roll of the gimbal from a receiver or flight controller. The top plate has two 5mm wide slots seperated 50mm center to center. It also has a centered 40mm square hole pattern with another set of two 40mm spaced holes shifted forward about 5mm from center.


The pitch motor seems to be upgraded from the pictures on the product page. The new motor is slightly larger, but should provide more torque. It appears to be of higher quality than the pitch motor on the product page. The gimbal is assembled primarily with nylon hardware. The bolts appear to be collected from miscellaneous hardware as many of the bolts vary in size or are shortened.


Removing the top plate from the rubber dampers reveals the control board. At the front are the manual control pins and mini USB port. To the left the IMU cables are directly soldered to the board. The motor and power connections are located at the back of the board. Nylon bolts are used at each corner of the control board, but only two of the bolts are secured into place with a nut.


The board I received functions well, but appears to be defective. Judging by the removal of pin A2 from the board and the rerouting of a cable to the micro controller,  it would appear that the trace for the manual pitch control was damaged and had to be replaced by a wire This is an intentional design modification. The reason for the addition of this cable is to provide compatibility with the SimpleBGC v1.3 firmware. This firmware is not designed to work with this board, which is why the board is modified by Hobby-Wing for compatibility.


Everything was already setup and functioned quite well after powering up the gimbal for the first time. The original PID settings on my board were as follows:

Roll – P: 24   I: 0.29   D: 11   Power: 83   Poles: 14

Pitch – P: 15   I: 0.32   D: 4   Power: 64   Poles: 16-Inverted

After looking at the motors it would appear that each has 12 poles, so I began by correcting this setting in the software. After experimenting with the software, I ended up modifying the PID settings as follows, however, some additional tuning may still be necessary:

Roll – P: 26   I: 0.32   D: 10   Power: 86   Poles: 12

Pitch – P: 20   I: 0.30   D: 4   Power: 68   Poles: 12-Inverted

Those settings worked for a while, but then I had some oscillations. Now I’m using these settings:

Roll – P: 20   I: 0.32   D: 6   Power: 82   Poles: 12

Pitch – P: 16   I: 0.22   D: 3   Power: 58   Poles: 12-Inverted

For additional tuning and programming information, I recommend consulting the simpleBGC downloads page.

Note: Although this gimbal uses SimpleBGC firmware, it appears that the firmware installed to the board is a “nulled” or pirated firmware. Therefore, it can’t be updated with the latest version of SimpleBGC. I see no indication that Hobby-Wing has purchased the copyrights to this software, however, after having spoken to them they insist that they were unaware of this problem and will consult the supplier of their controllers about this issue. If you would like to donate to the SimpleBGC project contact Aleksey Moskalenko at

Ultimately, I am very impressed with this gimbal. The gimbal is strong and well constructed. It performs very well compared to a servo gimbal, however, I found that there are some disadvantages to brushless gimbal technology. Brushless gimbals have much less torque than a traditional servo gimbal, therefore, they may begin self-induced oscillations during aggressive maneuvers if not properly tuned or balanced. Since the gimbal must use a feedback system with an IMU to maintain stability, it is vital that all vibrations are removed from the gimbal, but this gimbal’s included dampers do a great job at handling that. The movements are very smooth and can quickly react to disturbances.


  • Solid construction
  • Excellent vibration isolation
  • Well balanced and tuned out of the box
  • Great attention to the testing and assembly of each product
  • Much faster response and smoother operation than a traditional servo gimbal
  • Great customer support


  • Less torque than a traditional servo gimbal
  • Motors operate at an audible high frequency

More updates, including flight test videos, will be posted to this page when I finish testing my settings…

Custom MultiWii Motor Mixes

Although the standard MultiWii firmware offers an abundance of multirotor mixes, some less common designs remain absent. Modifying the firmware to support custom mixes is rather easy and allows for a wide range of frame options. I will first start by introducing the concept behind the motor mixes and an example mix of a quadcopter with an x orientation.

The way a motor mix works is by specifying the magnitude of the forces that should be applied to each motor. Motors that are placed farther away from the center of gravity will require a greater amount of thrust to travel the same distance as a motor that has been placed near to the center of gravity. Where this can become tricky is when determining the rudder magnitudes of a frame that is not symmetrical diagonally across the center of gravity. However, the easiest rule to follow is to assume that half of the rotors will spin clockwise and the other half will spin counter-clockwise with equal and opposing magnitudes.

First begin with a grid that resembles the one shown below. The green box symbolizes the flight controller at the center of gravity. The origin of the grid is assumed to be at the flight controller with the orange boundary outlining a box that is 1 unit from the flight controller on each side (1/4 unit spaces).


Begin by placing the motors around the flight controller, red represents a clockwise spinning rotor and blue represents a counter-clockwise spinning rotor. Each motor should be placed roughly within the bounds of the orange box such that the x and y coordinates of each motor are about +/- 1 unit from the fight controller.


Using the grid as an aid, determine the magnitude of the pitch, roll and yaw mix by measuring the coordinates of the motor. For example, the mix for this quadx would be:

#if def QUADX
motor[0] = PIDMIX(-1,+1,-1); //REAR_R
motor[1] = PIDMIX(-1,-1,+1); //FRONT_R
motor[2] = PIDMIX(+1,+1,+1); //REAR_L
motor[3] = PIDMIX(+1,-1,-1); //FRONT_L

The syntax of the mix would be as follows:

*Be aware of the sign change!

“motor['motor number'] = PIDMIX( ‘- X-Coordinate’, ‘- Y-Coordinate’, ‘Rotation (‘clockwise ‘-’, counter-clockwise’+’)’);

Here is an example of a custom V6 hexacopter motor mix:


#ifdef HEX6V
motor[0] = PIDMIX(+5/4,-1,+5/4); //FRONT_L
motor[1] = PIDMIX(-1 , 0,+1 ); //MID_R
motor[2] = PIDMIX(+3/4,+1,+3/4); //REAR_L
motor[3] = PIDMIX(+1 , 0,-1 ); //MID_L
motor[4] = PIDMIX(-5/4,-1,-5/4); //FRONT_R
motor[5] = PIDMIX(-3/4,+1,-3/4); //REAR_R

You may notice that the yaw magnitudes are not equal to + or – 1. This is because the frame is not symmetrical diagonally across the center of gravity. If + or – 1 was used for the rudder mix, then the aircraft would sweep very wide during turns as if the frame was rotating about a point to the rear of the aircraft where the two outer arms would intersect. For this mix, the magnitude of the rudder is equal to that of the roll magnitudes, causing the aircraft to yaw about its center.

Another point worth mentioning is the number assigned to each motor of the mix. MultiWii is capable of handling up to eight motors. These motors must each be wired to a specific pin on the flight controller and their assignments can be completely arbitrary. If the controller is labeled with pins M0-M7, then the motor number of each mix will directly correspond to these pins. However, if the board is only labeled with the digital pin numbers, then the mix must be defined accordingly:

For flight controllers assigned the “PROMINI” designation, such as boards with an ATMEGA328 or ATMEGA 168:

Motor 0 = Digital Pin 9

Motor 1 = Digital Pin 10

Motor 2 = Digital Pin 11

Motor 3 = Digital Pin 3

Motor 4 = Digital Pin 6

Motor 5 = Digital Pin 5

Motor 6 = Analog Pin A2

Motor 7 = Digital Pin 12

For flight controllers assigned the “MEGA” designation, such as boards with an ATMEGA1280 or ATMEGA2560:

Motor 0 = Digital Pin 3

Motor 1 = Digital Pin 5

Motor 2 = Digital Pin 6

Motor 3 = Digital Pin 2

Motor 4 = Digital Pin 7

Motor 5 = Digital Pin 8

Motor 6 = Digital Pin 9

Motor 7 = Digital Pin 10


Here is one final example of a custom frame mix for a U or crescent shaped hexacopter:


#ifdef HEX6U

motor[0] = PIDMIX(+1,-1,+1); //FRONT_L
motor[1] = PIDMIX(-1 , 0,+1); //MID_R
motor[2] = PIDMIX(+1/2,+1,+1/2); //REAR_L
motor[3] = PIDMIX(+1 , 0,-1 ); //MID_L
motor[4] = PIDMIX(-1,-1,-1); //FRONT_R
motor[5] = PIDMIX(-1/2,+1,-1/2); //REAR_R


There are four modifications that must be made in order to implement the custom mix into the MultiWii code:

1) Each of the mixes written above must be added to the ‘Output‘ tab at about line 750, after the default motor mixes.

2) Add a frame definition to ‘config.h‘ such as “#define HEX6V” or “#define HEXU6

3) Add an argument to ‘def.h‘ at about line 1000 that allows for the correct model to be displayed in the GUI. You will need to choose from a pre-existing model with the same number of motors.

#elif defined(HEX6X) || defined(HEX6V) || defined(HEX6U)

#define MULTITYPE 10

4) Add an argument to ‘def.h’ at about line 1100 that allows for the correct number of motors to be defined.

#elif defined(Y6) || defined(HEX6) || defined(HEX6X) || defined(HEX6V) || defined(HEX6U)

#define NUMBER_MOTOR 6


Now that all of the code is done, select your new frame type from config.h and upload the code to the board. With irregular shaped frames that aren’t diagonally symmetrical, it is best to reduce the yaw rates on your transmitter before testing the yaw control. Yaw may be slower or result in adverse pitch or roll manipulations if the mix is not properly configured. However, adjusting the yaw magnitudes may not necessarily correct for all of the side effects. Enabling auto-leveling will help to make most of these disappear.

Review of the Fat Shark Predator FPV Goggles

Recently I decided to purchase a set of Fat Shark Predator FPV Goggles, available from hobbyking. The package, including an extra 700mAh battery, arrived promptly and in good condition.

Within the box, each item, along with the instruction manual, is packaged in plastic bags in a cardboard tray.

This set includes the video transmitter, CCD Killer video camera, TX power harness, two dipole antennas, an RCA cable for composite video input, a Turnigy 9X compatible head tracker cable, 700mAh LiPo battery and the Fatshark Predator video goggles in a nice protective hard case.

The video transmitter, although rather large at approximately 60mm x 35mm x 14mm excluding 8mm SMA connector, weighs only 17 grams. The kit includes a balance plug adapter for a 2S or 3S LiPo. The CCD Killer video camera is quite small, at about 20mm square, and weighs only 12 grams. The camera has two microphones for stereo sound and a 3.6mm IR coated 87 degree FOV lens with lens cap. The supplied cable has rather thin wires on either end that are exposed from the cable covering and terminate to a 5 pin molex connector.

The rubber eye cups fit quite well and keep out all light from the screens. Optional lenses can be purchased separately and inserted by removing the rubber eye cups. These lenses are designed for nearsighted users that have trouble viewing distant objects.

The bottom side of the goggles include a port for the head tracker output, a switch to turn on or off the receiver module and a 3.5mm headphone jack for audio out.

The right side of the goggles have a battery port and an input port for use with the supplied RCA composite cable. Atop the goggles are four buttons used for volume and channel control as well as a four position switch used for contrast and brightness adjustment. The center button can also be used to manually reset the center position of the head tracker. Along the right side of the head strap there is a convenient pocket for holding the battery in place.

The monitors of the Fatshark Predator Goggles have a 25 degree field of view, slightly smaller than the field of view offered by other products. This is my first set of FPV goggles, that being said, I had not problem with the narrower field of view. Although difficult to get a clear picture, here I attempted to show what kind of view to expect from the goggles. I can’t say it is as enveloping as I had expected, but I probably had high expectations for a type of video goggle that I had never used. It feels more like looking at a computer or television screen in a blacked out room than a theater.

The build quality exceeded my expectations and the battery life on a 700mAh battery was much better than expected, at nearly an hour per charge. I was concerned about the inability to adjust the IPD of the goggles, however, I ran into no problems there. The monitors and lenses within the goggles are designed such that they are suitable for a range of IPDs. Being a nearsighted user with a very light prescription, I had very little difficulty reading the goggles although the displays are not the most sharp with my eyesight. The goggles are convenient and easy to use as an all in one package. I have no complaints about the video quality or frame rate. I never tried to push the range of the goggles, but the supplied 100mW transmitter module and supplied dipole antennas seem to be suitable for park flying within a couple hundred feet. The functions of the head tracker work well and were easy to setup on my Turnigy 9x with ER9X firmware. Ultimately, I really like the goggles and I would recommend them.

Flashing Arduino Sketches with an ISP Programmer

If you have ever damaged your ftdi programmer or shorted a connection on your Atmel based board, it is quite possible that the only way to program the device is using an ISP programmer. This tutorial will show you how to compile and flash a binary from arduino to your Atmel processor.

First you will need to download WinAVR available from here.

After installing WinAVR, open your arduino sketch and select “verify”.

When compiling has completed navigate to the directory where the compiled binary is located. This can be found within your computer’s temporary files:

Windows XP:     C:Documents and Settings”username”Local SettingsTemp

Windows 7:     C:users”username”AppDataLocalTemp

Connect your ISP programmer and launch the command prompt. Type the first command followed by [ENTER]:

cd C:

Type the second command for which the format is:

avrdude.exe -c “programmer” -p “device” -U flash:w:”Firmware.hex”


avrdude.exe -c usbasp -p m2560 -U flash:w:ArduCopter.cpp.hex

After several minutes avrdude will complete the writing and verification of the binary followed by the message “avrdude done. Thank you.” At this point you’re done and you can unplug your programmer. Be sure not to disconnect your device in the process of uploading the firmware binary. If the process fails or you receive an error message, be sure to check the syntax of your command and check that you have correctly input the programmer name, device name and firmware file name.

 Additional information can be found here.

FPV With GoPro 2.5mm Composite Cable

First you will need to get a composite to four pin 2.5mm cable. This cable is supplied with the original GoPro, however, you can also purchase it from ebay or amazon. Be sure that the cable has a 4-pin 2.5mm jack.

Next you will need to remove the thick plastic plug from the end with the jack. This can be most easily accomplished using a hot knife or heating a hobby knife with a torch. After cutting away the black plastic you may find that the jack is encased in a separate layer of plastic that resembles wax. This can also be cut or melted away, however, if you decide to melt this away be sure not to overheat the jack because the insulation between each of the pins will burn or melt away. After removing all of the plastic, the old wires can be desoldered from the pins just make sure not to apply excessive heat. You will be left with the core of the jack, it should resemble the picture below.

Check the connections between the plug side and the wire side to be sure that they match the connections above. This can be done using a voltmeter and testing for the continuity between each of the rings and solder joints. You want to be sure that you solder the new wires to the solder joints that correspond to the diagram of the rings above.

Finally you can attach whatever plug you would like to the end of your wires, I prefer to use a 3 pin futaba connection with ground, audio and video pins. Wrap the plug in several layers of heat shrink to protect the wiring and solder connections. It can easily be attached to a video transmitter or removed when not in use.

Another option is to make the entire plug into an adapter such as the following.

Black Vortex MultiWii

LED sequence functions:

[LED A] ON: Armed

[LED A] OFF: Disarmed

[LED B] ON: Stabilize mode ON

[LED B] OFF: Stabilize mode OFF, or accelerometer not calibrated or accelerometer inclined

[LED C] ON: GPS fixed


[LED A & B] Flashing: Gyroscope and accelerometer are calibrating


Motor Assignments:

MultiWii M0 ==> Digital Pin 3 ==> BlackVortex M2
MultiWii M1 ==> Digital Pin 5 ==> BlackVortex M3
MultiWii M2 ==> Digital Pin 6 ==> BlackVortex M4
MultiWii M3 ==> Digital Pin 2 ==> BlackVortex M1
MultiWii M4 ==> Digital Pin 7 ==> BlackVortex M5
MultiWii M5 ==> Digital Pin 8 ==> BlackVortex M6
MultiWii M6 ==> Digital Pin 11 ==> BlackVortex M7
MultiWii M7 ==> Digital Pin 12 ==> BlackVortex M8

Starting at the front motor [+] or front left motor [x/v] and moving clockwise

Bi = M2, M5 Servo, M3, M6 Servo
Tri = M1, M3, M4, M6 Servo
Quad + = M1, M3, M2, M4
Quad x = M1, M3, M2, M4
Quad v = M4, M1, M2, M3
Y4 [Top/Bottom] = M1, M3, M2/M4
Y6 [Top/Bottom] = M4/M6, M3/M5, M2/M1
Hex + = M5, M3, M2, M6, M4, M1
Hex x = M1, M3, M5, M2, M4, M6
Hex v = M6, M1, M2, M3, M4, M5
X8 [Top/Bottom] = M1/M8, M3/M6, M2/M5, M4/M7
Octo + = M5, M3, M6, M4, M7, M1, M8, M2
Octo x = M5, M3, M6, M4, M7, M1, M8, M2
Octo v = M8, M1, M2, M3, M4, M5, M6, M7
Vtail = M1, M3, M2, M4′


Serial Telemetry:

- For APC220 use the following settings:

#define SERIAL_COM_SPEED 57600 //Default is ’115200′
#define SERIAL_PORT 3 //Default serial port ’0′, Alternative ’3′

- For bluetooth use the following settings:

#define SERIAL_COM_SPEED 115200 //Default is ’115200′
#define SERIAL_PORT 3 //Default serial port ’0′, Alternative ’3′

- Setting the serial port to ’3′ will redirect all USB telemetry data.

- The APC220 functions at a 57600 baud. Therefore, it is incompatible with the 115200 baud of multiwii config. Wireless telemetry is currently only supported by the latest beta release of MultiWii WinGUI. The sensor refresh rate must be set to 10Hz or lower to properly acquire data.



MultiWii Black Vortex



Change Log:

7/18/12 -  Updated to MultiWii 2.1.

7/07/12 - Updated to release candidate 2.1 r964. Support for wireless serial telemetry (WinGUI Only).

7/04/12 - Updated to release candidate 2.1 r949. New frame types. Support for wireless serial telemetry (WinGUI Only).

07/02/12 - *BETA* Updated to release candidate 2.1 r949. Pre-release beta, serial telemetry has not yet been ported. New frame types.

06/11/12 – *BETA* Updated to dev_20120606 and fixed gimbal servo jitter.

Serial telemetry on port 3 is partially working. For APC220 use MultiWiiConf dev 20120606 [57600 Baud].

06/03/12 – *BETA* Updated to dev_20120528 (As of now, not all features may be fully supported)

Changes in the serial communication protocol may leave port 3 telemetry broken until I can modify multiwiiconf. WinGui may not currently support the latest serial communication protocol.

05/03/12- Support for Camera Gimbal Stabilization *Known Jitter*

04/18/12 – Added support for Serial Telemetry on Port 3 (Successfully tested using APC220 and WinGUI)

04/09/12 – Added Usercode and Relay Trigger

04/08/12 – Fixed I2C address error in MultiWii 2.0.

03/30/12 – Updated code to official MultiWii 2.0 release.


More information about MultiWii can be found here.

2-axis GoPro Gimbal v3.0

This is a another 3D printed 2-axis GoPro gimbal. It is a prototype made to support the Gopro while mounted inside of the polycarbonate enclosure. The mounts are designed to work with the Xaircraft DIY frames. The roll mechanism works on a rail system and a series of gears that take the +/- 90 degrees of servo travel and rotate the inner ring by +/- 55 degrees. The pitch mechanism is directly driven from the servo. The mount is made to use Xaircraft rubber rings for vibration dampening. If you would like to see the mount resigned to meet alternative specifications you can contact me with dimensions at The mount is currently in the prototype stages because, unfortunately, due to the complexity of the 3D print, Shapeways will not apply a volume discount to the amount of material being printed and the price to print the model is therefore twice as expensive.

Purchasable from my shop at Shapeways.

This gimbal is currently in the beginning stages of development, the latest version can be downloaded here.

12/27/2012 – This model’s development has been discontinued. For my latest gimbal, see here.


The following items are not included and must be purchased separately:

[Qty. 2] 9G EXI Digital Metal Geared Servo

[Qty. 2] 3x7x3 Ceramic Ball Bearing


You will also need a suitable bolt for mounting the GoPro to the gimbal. The gimbal connector is designed to fit the polycarbonate GoPro enclosure just as any other gopro mount does, however, the stock bolt handle is too long.


Assembly is fairly simple, much of the gimbal is already assembled.

1.) Insert the roll bearing into the inner ring.

2.) Insert the 35 tooth gear into the roll bearing with the 10 tooth gear facing away from the bearing. Be sure that the roll ring is properly centered along the rail before the 35 tooth gear is meshed with the outside ring.

3.) Fix the 30 tooth gear to the roll servo, center the servo, and then either bolt or glue the servo to the inner ring.

4.) Insert the pitch bearing into the middle ring.

5.) Attach the pitch servo to the outer ring using either glue or bolts.

6.) Center the servo and insert the servo gear into the hole opposite the pitch bearing.

7.) Use the screw supplied with the servo to fasten the pitch servo gear to the gimbal.

8.) Insert the pitch pin opposite the pitch servo and glue it in place.

9.) Now the rubber dampers can be inserted into the gimbal mounting holes and the gimbal can be attached to the loading pipes of the frame.

More pictures of the gimbal will be posted as soon as I can manufacture a working prototype.

2-Axis GoPro Gimbal

This is a 3D printed 2-axis GoPro gimbal. It is made to support the Gopro while mounted inside of the polycarbonate enclosure. The mounts are designed to work with the Xaircraft DIY frames. The gimbal frame can be made from any half inch dowel or 12mm tube. I designed it to be compatible with the following:


9g EXI Micro Servos

12mm Carbon Tube

Required Lengths:

[Qty. 1] 126mm Tube

[Qty. 2] 120mm Tube

[Qty. 2] 70mm Tube

[Qty. 3] 40mm Tube

The plastic parts can be purchased from here.

Contact me if you require special mounts or attachments:



1/10 Traxxas Summit

Weight = 16lbs

Top Speed = 35mph



-Tekin RX8 210A ESC

-Tekin 2250kV Brushless Motor

-Integy Aluminum A-Arms

-Integy Aluminum Servo Guards

-Integy Titanium Skid Plates

-Integy Steel Roll Cage

-MIP Steel Splined CVDs

-RC4WD 8.3″ Rok Lox 4.0 Tires

-Axial 8 Hole Bead lock Wheels Black

-2x Blue LiPo 2S 7.4v 30C 5000mAh LiPo

-Novak 12T 5mm Steel Pinion