Welcome to Synthiam!

The easiest way to program the most powerful robots. Use technologies by leading industry experts. ARC is a free-to-use robot programming software that makes servo automation, computer vision, autonomous navigation, and artificial intelligence easy.

Get Started
Asked — Edited

Control Ubtech Alpha Servos With The Ez-B V4?

Hello, I have a question .

I have these servos in my robot and have now bought the EZ-B V4.

But if it does not get to work, can the Ez b control these servos?

The servos are all connected and the controller only has 1 cable

User-inserted image


Upgrade to ARC Pro

Harnessing the power of ARC Pro, your robot can be more than just a simple automated machine.

Can you post more details:

Servo brand and model ?


Product/Kit details ?
Hey, thanks for your answer.

It is the Ubtech Alpha s1

Data of the servo:

UBTECH Alpha 1S Robot Parts Digital servo UBT-12HC


Model UBT-12HC
Communications: Serial communication
Speed: 6.5V: 0.238sec / 60 ° 8.5V: 0.198sec / 60 °
Torque: 6.5V: 8kg.cm 8.5V: 12kg.cm
Gear: Copper alloy gear
Bearing: Ball Bearings
Angle range: 0-180 °, Adjustable
Dimensions (mm): 44 * 22.5 * 29
Weight (g): 42
Amount of operating voltage (V): 7.4V
Stable Current: 2.5A
Operating temperature range: 0-55 ?
Protection: Over Voltage, Over Current
Dead bandwidth (no reaction zone): 0
Feedback: Position / angle feedback
If there's a data sheet for the serial communication protocol, then it would be an easy implementation as a plugin. Post the datasheet and I'll take a look.
I can't find the datasheet that contains communication protocol. Can anyone else find it? Maybe ubtech customer support has it
There is no contact to get with ubtech.there is not even a forum.
Can not find anything to unfortunately:( That's a shame I was so happy to test my ezb.
Is it possible to read the datasheet of the servo via the Ubtech Pc software?
not with the standard program from alpha1 and 2
this is the only link i can google.

Does the Alpha 1 Series PC communication proto continue to help?
i didn get any contact with UB on there site or FB or skype.they dont just respond.


Does the Alpha 1 Series PC communication proto continue to help?
No, that is for communicating with the controller, not the servos.

I have also ubtech times now hopefully they have an answer. Or do you have any idea Dj Sures?
Which data do we need exactly?


Which data do we need exactly?

Serial protocol for the servos.

And that is not enough?
Sorry for the questions I'm newbie

User-inserted image
No, that is not enough. Most servos use a standard communication method called PWM (see hte servo tutorial in the learn section of the web site). These are custom servos that use Serial communication, and probably a proprietary instruction set. Dynamixel servos also do this, but they publish the instruction set so DJ was able to write a plugin. For anyone to write a plugin for these, we need the data rate and other connection properties, and the instructions and responses of the communication protocol.

Very unlikely UB is going to provide this.

Okey, I have no hope.
Then I'll have to resell the Ubtech again:(

what is it what you try to do ?

he wanted to use the UB servo's on ezbv4 ?
or does he wanted to make a robot ?
@Nomad... He wants to control those servos with the ezb4... But without the communication protocol he won't be able to...
Have received an answer from Ub:

Hi Andy , that information is confidential and we can´t share it.
amazing you get respons from UB witsh adres did you use if i may ask.
YES: D I wrote a message today at noon on Facebook page and 2 hours later I had the answer
yes they have a few FB off UB
The protocol can easily be reverse engineered using a logic analyizer. I use saleae logic 16
after getting 2 reasonably cheap ubtech Alpha 2 robots I'd also love to be able to use ezb to control them

I've been able to find the following,

For the time being here is a summary of the finds:

the communication is at 115,200bps
packages are send separately by servo; it doesn’t seem to be a bulk send instruction
the package has the following structure:
byte 1 and 2 = preamble = 0xFA 0xAF
byte 3 = servo ID
byte 4 = Command; for go to command we have = 0x01; we will try to find some other commands shortly
byte 5 8 = Command parameters; for command = 0x01 (go to) they are:
byte 5 = position = 120 + desired position in degrees
byte 6 = duration = duration in ms / 20
byte 7 = 0x00 (? we don’t know what this is yet)
byte 8 = 0x01 (? we don’t know what this is yet)
byte 9 = checksum = sum(byte 3 through 8) mod 256
byte 10 = closure = 0xED (from END?)
the servo returns one byte that seems to contain something specific to the ID of the servo (for ID 1 it answers with 0xAB, for 5 it answers with 0xAF; the content could be a status information where each bit has a meaning, similar to the status packet in the Dynamixel protocol

https://www.thanksbuyer.com/ubtech-alpha1s-digital-servo-built-in-avr-develop-board-6v-9v-ubt12hb-55166Protocol analysis method:(need robot)

FA AF 01 04 00 00 00 00 05 ED switch on led light
FA AF 01 04 01 00 00 00 06 ED switch off led light
Write servo:FA AF id 01 angle ? ? ? SUM ED
Servo response:FA AF id AA ? ?real angle sum ED
Read data:FA AF id 02 00 00 00 00 SUM ED
Present experiment order (CD order is modification servo ID.)
Order can do experiments in 01..FF sequence.
Frame header:FA AF;frame ender:ED,SUM=ID+order+parameter,get the lowest 1 byte
Frame header (2 byte) ID(1 byte) order(1 byte) parameter (4 byte) SUM(1 byte)frame ender(1 byte)
Communicaton protocol format (length:10 byte)
Initialization,electricity is on.And then separate it and control single servo with computer TTL.
Connect computer TTL serial to the servo port.The computer (sscom32 serial software) can record it to the file when playing robot.
Protocol analysis method:(need robot)

Modify ID:FA AF ID CD 0 newid 0 0 SUM ED

being able to control this LED eye with ezb would also be very cool ( https://alexsonea.com/2017/11/19/jimu-led-light-breakdown/ ) unfortunately I don't have the skills to create a plugin, but would be more than happy donate some $ to someone who can
Dj can you do something with it?
I can. I won’t be able to test but I can whip something up. Stay tuned
thanks DJ, more than happy to test whatever you come up with
Thank you DJ you are the best
hey one question yet these servos run but without problems with the Ez-b v4?
User-inserted image


hey one question yet these servos run but without problems with the Ez-b V4?

They should. From what I could find, they are 7.4v, so OK to use a 2s LiPo battery (recommended for EZ-B) to drive them directly from an EZ-B without worrying about alternate power or voltage regulators.

i tested these servo's today.wiht a lipo 1300 mah you do some 12 minites
then your batt is empty.if you want to build a complete robot you need a batt,
aleast 2500 mah

nomad - what servos are those? 12 minutes is not very long!
i forgot the robot has a 2800 mah batt.
Hello Nomad I'm just building my EZb in an almost same robot. Do you have more videos? Can you let him go? If so, can I get the script?
he's charging now.i try the walk later and post a video.
you will need to adjust a lot.all standard jd have to go.
and make your own.
Ok thanks , i am excited to look the Video
here an update metal robot.you can choose for original jd movement do,
you have to adjust everything.also calibrate everthing with the levers and horns,
off.the problem with raising arms is solved,found that one.
now hope i get the walking and sit down and so.

User-inserted image
The frame assigned to the STOP action in Auto Position has his arms raised.

Edit the frame that is assigned to the STOP action and move his arms into the position that you wish.

Locate the name of the frame that is assigned to STOP action...
User-inserted image

Edit that frame...
User-inserted image
hi dj

i found this .sofar ok but walking will be really diff.
Andy/Nick anyone... can you try this? This is a quick script i created to test moving the servos based on the info you provided. I'll use this as an EZ-Script test before making it a plugin.

1) Connect the servos to the UART #0 TX
2) Power the servos with appropriate power


# Move Alpha 2 servo attempt using UART
# Connect signal of the Alpha 2 servo to UART #0 TX port
# Moves the servo set for ID #0

DefineArray($data, 10)

$data[0] = 0xfa
$data[1] = 0xaf
$data[2] = 0x00 # servo ID 0
$data[3] = 0x01 # command: goto
$data[4] = 120 # Position: We will modify this value in the loop
$data[5] = 100 # MS/20 duration? no idea
$data[6] = 0x00
$data[7] = 0x01
$data[8] = 0 # we calculate checksum in the loop
$data[9] = 0xed

UartInit(0, 0, 115200)


# some random position to try moving to
$data[4] = 120 + getrandom(10, 100)

print("Moving to position " + $data[4])

# calculate checksum
$data[8] = ($data[2] + $data[3] + $data[4] + $data[5] + $data[6] + $data[7]) % 256

UartWriteBinary(0, 0, $data)

# pause for 2 seconds between movements

Great robot!

I love the work you're doing and the community's help with your project.

Hi DJ,

I should be able to test out the script tonight, sorry for the late reply just got back from holidays.

Hi DJ,

Great news the script works, tested on ubtech servo's for alpha 2 and the Jimu robot set

thank you so much for taking the time to create a plugin for these servos I really appreciate it

Okay, can you try something for me? I’ll need to know the range. The documentation says it’s 120+position. The maximum value is 255.

So does that mean the position is between 120 and 255?

Can you remove the GetRandom() and change it to some values to find the max and min positions values for me?
both servos can move from 0 - 252
Interesting, so adding +120 to the desired position from the documentation is incorrect?
yes it appears so, I inputed the values directly into $data[4] anything above 253 actually comes up with an error
is there a tutorial how to do this what you did with the servo nick777 ?
Hi Nomad,

all I did is connect the positive and negative of the servo to D0 and the control wire to TX from uart0
ah i can use D23 too the control wire is the signal white wire ?too TX
yes I meant signal wire
what do i need to adjust in the script from dj?
i have an alpha2 too and a metal robot.
got it .i have 151 to 216 not alpha2 but the mettal robot

User-inserted image


what do i need to adjust in the script from dj?
i have an alpha2 too and a metak robot.


The script was just for testing. DJ is going to write a plugin based on the results. You don't need to do anything with the script and should not use it.

Thanks so much DJ, can't wait to give it a try tonight

did you open your alpha 2.?
Hi DJ,

just had an opportunity to try the plugin but can't get it to work

added the plugin to a new project with the following settings
Hardware uart0 two virtual servos checked V1 and V2
plugin shows Connected Events UART 0 @ 115200bps
added a Movement Panel and added the 2 virtual servos
tried moving the servos but nothing happens?

the script still works fine

running windows 10 with latest updates
1) The id’s of the servos are V1 and V2? They need to match. In the test code I sent earlier, the ID was 0 (zero). Can you try with that servo again, on V0?

2) What Movement Panel did you add?

3) the plugin removed the 120+position as we discussed. To clarify, in your testing you also removed the 120+? So you tested with 0 and 252? Not adding 120 to anything?

4) Also, can you try it with only one Servo?
1) the id's on the servos are 1 and 2, I changed your test script to match. I don't have any servos with id 0

2) I tried both

3)yes I removed the 120 from your script and inputed the values from 0 - 252 directly into $data[4]

4) have tried both servos separately no difference

also noticed that once I remove the Ubtech plugin from a project and try to add it again it crashes the plugin on startup and the only way to get it to load again is by restarting windows. Unfortunately I was unable to get a screen shot of it last night, will post later.

I will load ARC on a another computer and try that just in case

Nomad, have you had a chance to try the plugin ?
Okay thanks. I’m trying in the dark here without servos to test with, so thanks for your patience!
alan said not to use it?


alan said not to use it?

I said that you should let others help with the test script and wait for the plugin. We are now talking about the plugin. You should try it.

Nick, can you try the plugin with only one V port selected. Meaning, only attempt to move one servo. And, use this script...



ServoRandom(v2, 10, 100)



And tell me if the servo moves using the plugin and this script - thanks!
@Nick - any word on the updated plugin?
Hi DJ,

Sorry no, been away from home on business since last Thursday, back Friday will be able to test then.

I’d be more than happy to send you a Jimu robot kit with servo’s from amazon if it would make things easier ? Just email me a shipping address

Either way I’ll do the tests you’ve asked for by Friday

Let’s try the plugin first. I had a few mistakes that I didn’t notice when I first published it. Thanks for the offer though.
Hi DJ,

The plugin works great, had problems initially with it crashing on startup but this seems to be resolved after a windows reload

tested so far with 3 different types of ubtech servos chained together, working really well.

I know I'm pushing my luck but a feature request would be to add an option to read a set of linked servos and get it to automatically generate a frame in the auto-position plugin, my reason for requesting this is to make it easier for younger kids to be able to use it to make robot skits.

Thanks again, now I just to give the Alpha 2 an EZB brain transplant

Latest update fixes a crash of ARC when adding the control with ez-b already connected.
Cool, I just got a 16 servo Jimu robot off ebay.
It needs an EZ Robot upgrade!
They make a set to build a humanoid robot, but it can't hear, see or talk.
If I want it to walk forward then I need to make my own walk cycle for it.
It can't move its head and no lights for eyes.
I just really wanted the 16 servos to use for another EZ Robot!
If they sold these sets with an EZ Robot brain and a camera they would have something super cool.
It would still need a few more servos so it could look around and hands to pick things up.
Glad I have a JD robot, he does everything right out of the box.
Contact ubtech and let them know:)
South Africa
Andy627 did you get the Ubtech servos to work. ? I want to do the same thing
So if I understand we can replace all the alpha 1 electronics with your board and have a fully custom alpha?
Hi guys:

I am thinking how would I use the IOTiny with this and I only see this line on wiring:

"all I did is connect the positive and negative of the servo to D0 and the control wire to TX from uart0 " (guess this is with the EZ-B V4)

Do we have specific info on how to do the following with the IoTiny:

"This plugin requires the RX signal wire of the servo be connected to TX of the selected UART or digital port (if Software UART is selected)"

I dont mind buying some EZ-B but I rather stick with a way to use IoTiny if possible.
The help in the plugin explains how to use it with iotiny. Simply use any of the digital ports for the connection. And specify the correct port in the plugin. Read the blue question marks and the plugin help beside options and it’ll make senses
thanks I will acquire a couple of boards... probably with the board in my hand it will be obvious
[color=#442e5f][size=3][font=OpenSans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"]hi raullapeira

[color=#442e5f][size=3][font=OpenSans, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji]do you have any video about this project with the ubt robot?

Hi all guys ! I see that the alpha 1S issue is intriguing many people . I have it  and of  course I'd like to control it by ezb v4. 
I need to know more about interfacing its servos. I saw there's a plug-in and some hardware information.
I need to know, (I hope somebody in the forum has experienced these matters) :

Hardware : I'm attaching a photo, where 4  3-pin JST plugs can be seen. I think each of them drives  , by 4 independent serial buses, some  of the servos .
 Which  pins are  +,-, rx/tx pin ? how to connect these 4 buses to ezb ? I saw in the forum a simple scheme, but more detail is needed.

Software: the plug-in I found in this  forum is designed for  such 4-bus hardware , so to control , by ezb, each servo separately ?

User-inserted image
I downloaded the plug in. It's an old PC, with win 7, non recent ezb version. I got this error. User-inserted image

What's going on ?
Update the ARC.

What's going on?

It looks like the plugin uses a more recent or non existent class/object in an older ARC version. 

Keep your ARC updated, is a good recipe to avoid trivial issues.
Is the last ezb release (jan 2019) compatible with win 7 ? if not, I might have a problem with this old PC.
#96   — Edited
Ptp is correct. In order to add new features, the software continues to grow. 

The latest ARC beta will technically run on Windows 7 but it’ll give a warning because it’s not recommended. Windows 7 was discontinued by Microsoft and no longer supported. This means new features of ARC are absolutely impossible to be supported in Windows 7 because Microsoft doesn’t support it.

*note: do not duplicate post.
#97   — Edited
Yes, I got the warning you say in the win 7 PC, but everything seems to work. 
I intend to test  alpha 1S servos with ezb v4. The servo plugin seems to work.  Now I have only this old PC available for this test.
I need information about the hardware connection  of those 16 servos to ezb. I asked for this in another post. Can you help  ?
Wish I could help - but i do not have a servo or that robot to test with. In this conversation thread, there is someone way way up there who had a link to someone who reverse engineered the protocol. Maybe they showed how to connect the wires? I also believe Nink got them working, as he stated above. I would recommend browsing this conversation thread. There's 92 comments on that developed this thread - with great help i hope
I posted in this thread a photo of the  robot controller, showing  4 JST plugs connecting  to 4 serial buses to the servos. The servos  work connected to a common line, addressed  by their specific address , the way  it happens in a serial I2C  bus. 
Somebody has certainly tested this connection, but I don't know how to communicate with him. I hope he will reply to this post.
It isn't i2c. It's UART, as stated everywhere in this thread AND the plugin description. All you need to do is identify the Data, GND and Power wires of the servo connector. Follow the instructions on the ubtech plugin page here: https://synthiam.com/Software/Manual/UBTECH-Alpha-Servos-UBT-12HC-16022

If you read this conversation thread as i stated, you will find that there is a link that discusses the ID's and how it works. You will need to put a little leg work in to get it rock'n. Each servo has an ID. The lowest ID is 1. I'm sure the UB Tech software shows what ID is for what servo. If not, you'll have to experiment and try.

Connect them as described by the plugin. To the UART that you choose and power and gnd. I don't have a servo, but it would be pretty easy to look and see what wires are for what. Or, use google to research and find it. That's all i can do to help
I know it's not I2C. I meant that those servos work on a common bus (like I2C  does), instead of  individual connections like usual PWM servos.

I think  all the 16 servos should  work  on  a single control  line. I'll study the  plugin information , looking for details., i.e.:

1) Direct connection of one digital or UART ezb port to a single servo control  line, with  16 servos on it ?
2)Control wire is bi-directional.  What happens if ezb sends bytes to servos while servos themselves are sending bytes on the control line ?) 

I hope that experienced members could explain . In lack of information , I'll look at the control pins   with an oscilloscope a let everybody know.
Yes one control line can control all 16 of the servos all at once.
The timing is set so the servos and the EZ Robot board always send and receive at the right times.
You can use the IO Tiny with a camera to make this robot do much more than it could before.
#103   — Edited
Thanks, mcsdaver. 
Alpha robot has 4 jst plugs with  4 separate 3-wire cables to the servos (as you can see in  a previous post of mine). I think they are separated only for mechanical convenience of wiring, but probably they are all connected together in the pcb. I see no logic reason to control several groups of servos independently  by the controller.
 I assume that the ezb v4  (uart or digital pin)  can drive the common line of all the 16 ubtech servos.
Do you know which jst pins are +,-, rx/tx ?
I don't have the same servos that you have, so I am not sure how to connect them to the V4 or IO Tiny.
Yah - they would be separated for mechanical reasons. The left side is probably one wire and the right side is another wire. But they all group together at the same place to the same connections on the PCB.

I looked around and can't seem to find any info on which wire is + or GND or signal. I'm guessing you can figure it out by looking at the board OR probing the connector with a volt meter
#106   — Edited
I discovered the voltages with a volt  meter:   7,5 v power is  center oin , one side is GND, other side is 5 V (control wire, high logic level ).
I connected one of the jst plugs and tested the ezb plugin . It was able , by the real time control in the frame screen,  via UART and  V3,V4,V5, the 3 servos of one arm. The other plugs are probably for the other arm and the two legs.
The movement is  slow and weak. Those servos, when operated from their controller, are quite fast and strong.
I made an action with 2 different frames alternating ,  pausing for of 500 ms, but it doesn't work. The servos  remain in one of the frames.
I haven't found in this thread  someone who has done such tests. I'd like to hear from  someone who did .
I hope that  DJ could have one servo and some time to do a test , to understand what happens.
#107   — Edited
Hi all, 
here is my research and what I found :

Baud rate:115200
Data bit:8
Flow control:NONE TTL multi-layer connection,shared-bus
Feedback:position:deviation adjustment,version information

Serial parameter:115200,8,n,1,1

Protocol analysis

// FA AF 01 04 00 00 00 00 05 ED switch on led light // no LED on mine
// FA AF 01 04 01 00 00 00 06 ED switch off led light// no LED on mine
RESPONSE AA + id // not tried yet as I cannot see with my proto board

FC CF {id} 01 00 00 00 00 {sum} ED            // not tried yet 
RESPONSE FC CF {id} {V-1} {V-2} {V-3} {V-4} {sum} ED
this can be used to check if servo exist in a loop "for id"

MOVE servo
// FA AF {id} 01 {angle} {time} {T1} {T2} {sum} ED whre T1=0 and T2= {time}= TIME to execute in ms / 20 0 to 255(FF) ie 5.12 second to execute
RESPONSE AA + id // not tried yet as I cannot see with my proto board

// FA AF {id} 02 00 00 00 00 {sum} ED // not tried yet
REPONSE FA AF {id} 00 {angle} 00 {real} {sum} ED // not tried yet as I cannot see with my proto board

// FA AF {id} D2 00 00 {A1} {A2} {sum} ED where A1 adjValue/256 and A2 adjValue%256  // not tried yet
RESPONSE FA AF {AA + id} 00 00 00 00 {sum} ED

// FA AF {id} D4 00 00 00 00 {sum} ED   // not tried yet
RESPONSE FA AF {AA + id} D4 00 00 {A1} {A2} {sum} ED where A1 adjValue/256 and A2 adjValue%256

All works now, just think to cross wire in the daisy chain, else GND become DATA on next servo and block all transmission....
Unknown Country
hey guys, just wondering if this protocol will be compatible with this old UBTech servos... I think those are Pre-Alpha version servos...

Any hint? Thanks!
Only one way to find out:)  Give it a try!
Unknown Country
#110   — Edited
I have some Arduino, SN74LS241N (for communications though one wire), Dynamixel control board and some raspberry Pi around.
Any hint how to try it? 
Those motors I commented about are from the UBTECH ALPHA MINI robot, which came later than the Alpha 1 and 2, hopefully they use the same code!

there are no updates for win7