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?
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.
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.
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
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.
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.
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.
Sure that sucks 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, 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.