Pwr communication failed at reg 0: I2C read word failed: [Errno 121] Remote I/O error

My controller has recently stopped working with the following error:
Pwr communication failed at reg 0: I2C read word failed: [Errno 121] Remote I/O error

I’ve reached out to support on this and they recommended trying a different raspberry pi 3b. I had one on hand and tried that but still had the same error. Support then said the next step was to replace the entire controller (a $500 part).

Given that the device is only about 1.5 years old (I ordered on 2/23/2021 but it didn’t ship until 6/30/2021), I really don’t want to spend another $500 on a new controller. Does anyone have any suggestions on what I could try to resolve this?

Hey Jason,

Is it possible that you have sources of EMI near to the controller?

1 Like

While not impossible, I didn’t have anything running other than lights (on a different circuit).

Hey Jason,

do you have wood dust inside the Controller?

If you disconnect everything (stepper motors, probe, network) except the display, does the error persist?

“I2C read word failed: [Errno 121] Remote I/O error” is not a specific error. It just indicates that something disturbs the communication on the i2c bus. Here the error is triggered by the Pwr.py module which gets the information about the voltages from the AVR mainboard.

A disturbance of i2c communication can have many causes, including bad solder joints, contacts corrosion, EMI, or fluctuations of the voltage due to wood dust inside the power switch, buildup of wood dust on the mainboard (wood dust has less resistance than air) or due to shorts of stepper cables inside the rails.

You could reseat the 40-pin GPIO ribbon cable at both ends, try to see if the contacts are corroded.

Be sure if you open the controller to clean the inside, that it is disconnected from power (just switching it off is not enough!) and that you are ESD-safe, i.e. that you put it on a grounded antistatic mat and that you wear an antistatic wrist strap.

1 Like

Hi Aiph5u,

There is dust in the controller. I’ll try giving it a good cleaning and report back. Once I’ve cleaned it, I’ll also disconnect all connections other than monitor and let you know what happens.

Looks like I am going to need the new controller. I took everything out and there is a burnt spot on one of the circuit boards.

Hey Jason,

on which board? Where exactly is it? Would you mind showing me a photo of it?


Hopefully this helps. It’s charred next to the connector with 2 red wires coming out.

1 Like

Hey Jason,

can’t see it clearly on your photos, is it Q3 (arrow) that burned up on your board? If so, Q3 is a 2N7002.

You seem to have a Rev. 4 board, is that right?

The controller needs to be replaced.

1 Like

I can’t make out what it says mine due to the char, but it’s in the same location as Q3 on the picture you provided.

My board is rev 3.

1 Like

Yes, I can see that now since I opened it up to clean it. It just really hurts to have to spend another $500 on a machine that’s only 1 1/2 years old.

Hey Jason,

I’ve looked up what Q3 is in the circuit diagram. The Q2/Q3 and the big white 5.1 Ω resistor are part of a circuit that the TinyAVR on the left of it uses to report the “Shunt Overload” indicator. The TinyAVR talks to the Raspberry Pi via i2c bus.

By the way, I would avoid to let that much wood dust fly around. Before it affects the controller, it certainly will harm your ball screws which are incompatible with wood dust

1 Like

So does that mean that this caused the i2c error, or did the i2c error cause this?

I normally try to keep dust under control and regularly clean off my work surfaces (including the ball screws).

I wasn’t aware of how much dust was in the controller until I opened it all the way up to clean it today.

Seems like it would be beneficial if the controller box had some sort of filter medium on the intake to help prevent dust build up.

Hey Jason,

The i2c error means that the Raspberry Pi can’t talk to the TinyAVR.

I have some idea for this but I would need to design and 3D print it, for which I lack time :frowning:

Jason,

Some folks ordered early on and then upgraded their controllers to something different. There could be one or two for sale in the used department. Search the forum for anyone talking about a controller upgrade and PM them.

Try Layne Mims (hopefully spelled correctly)

Here are a few pic’s of my setup. Not a spec of dust on my controller. Dust kills electronics!




4 Likes

Would be real nice if you offered parts instead of requiring the full unit replacement.

You have some upgrade options and you make a product to allow people to make things, would be nice if you also allowed makers to repair their system at this level too. You were part way there with suggestion he try another RPi, but came up short by not offering your individual components for sale. Now he’s looking at a lot of E-waste and expense.

My 2¢.

2 Likes

Hey Atroz, hey all,

I also think that the AVR mainboard and other components should be given as spare parts, if e.g. the Onefinity controller case and the power supply are not defective.

But a mainboard exchange is nothing for normal consumers. But it should be offered for professionals / repair shops.

However, the AVR mainboard is likely to be the most expensive part of the whole Onefinity controller.

Hey Jason, hey all,

Sure that sucks :frowning: I was a little surprised that’s so expensive. If you buy the Onefinity Controller together with a Onefinity machine, it is much less (comparison machine without controller/with controller: $382.50 USD (however included in a Sale Price for a machine))

With $500 USD plus tax, for a Onefinity Controller as a spare part, you are already at the price for a new Buildbotics Controller (of which the Onefinity Controller is a hardware fork) with power supply for $568.00 - $628.00 USD. Unfortunately it is not available at the moment.

Sure it would run with the Onefinity, it is a universal CNC Controller. It evolved a bit further ([1], [2]), but some of its restrictions still remain compared to more professional CNC controllers.

But now it has nice new features like programmable G-code macros, remappable I/O ports, 5 V I/O (instead of 3.3 V), G-code is editable in the controller display, more VFDs supported, 0-10 V analog spindle control added (besides PWM and ModBus), better Modbus debugging, WiFi has an external antenna (on the Onefinity, WiFi is enclosed in the case which acts as faraday cage :frowning:) , and it has a 15-pin Auxiliary motor control port which provides access to the step{X,Y,Z,A}, dir{X,Y,Z,A}, motor enable, and motor fault inputs to the four motor drivers. These lines provide the ability to bypass the internal motor drivers and control external drivers. This allows you to attach closed-loop stepper drivers like this one and to drive closed-loop stepper motors on the Onefinity classical series (like the Elite Series do).

The Onefinity Controller has these lines internally too, but there is no access to these.