Aiph5u
(Aiph5u (not affiliated with Onefinity))
July 13, 2024, 6:39pm
24
Hey Dave,
…the ‘onefinity-firmware ’ package is the only package on the Raspberry Pi OS system inside the Onefinity Controller that is not packed as ‘.deb ’ package and therefore cannot simply be downgraded with ‘apt-get install onefinity-firmware=1.0.9’, which would have been very helpful when Onefinity abandoned and withdraw the 1.1x branch and told people they need to reflash the entire OS on the SD card.
Usually it is never necessary to overwrite (re-flash) a Raspberry Pi OS installation (except if the SD card fails). Today, all Unixoid Operating Systems have smart package management systems . Usually unixoid operating systems have an uptime of monthes, even years, and are updated while they run – including occasionally necessary downgrade of a package. On Debian -derived systems like the Raspberry Pi OS, this is the Advanced Package Tool (APT) system which deals with deb packages.
But it’s not trivial to pack a package as deb file, not only you have to learn debian policy, but you first also would need to integrate the bbserial kernel module into the Dynamic Kernel Module Support (DKMS) system so that it is automatically re-built on any kernel upgrade. Currently it is hardwired to an ancient kernel source and as soon you upgrade the kernel, the bbserial module ceases to work and the Onefinity System cannot access the AVR mainboard with the stepper drivers anymore. This is why you are stuck with a Raspbian operating system of 2017 with all the security issues that came up since then.
The ‘bbserial.ko’ kernel module is what lets the Raspberry Pi communicate with the AVR board with its stepper drivers etc… If it is not compiled for the installed kernel version, you have no CNC controller but just a Raspberry Pi.
The buildbotics-based Onefinity Controller works as you can see in the circuit diagram here . On the software side, the user interface is a web interface that runs in a chromium browser on top of a Raspberry Pi OS or on any web browser on a computer you connect remotely via Ethernet or Wifi. The CNC commands input by the user are sent from the Raspberry Pi 3B to the AVR mainboard through a synchronous serial communications interface that the buildbotics author implemented as a bbserial.ko kernel module through the Raspi GPIO pins now called SERIAL_TX, SERIAL_RX and SERIAL_CTS. On the AVR mainboard, the AVR microcontroller controls the four Texas Instruments DRV8711 stepper drivers over the
step{X,Y,Z,A},
dir{X,Y,Z,A},
motor enable, and
motor fault inputs.
On the original Buildbotics controller, which evolved a bit further ([1] , [2] ), these control ports are accessible from the outside over a a 15-pin Auxiliary motor control port . This allows you to drive any external stepper driver, including closed-loop drivers. Unfortunately on the Onefinity hardware fork, you don’t have this 15-pin auxiliary port.