# Change to open source firmware

**URL:** <https://forum.onefinitycnc.com/t/change-to-open-source-firmware/23347>\
**Category:** Firmware (BB Buildbotics) (Discontinued)\
**Created:** [November 14, 2023, 4:14am UTC](https://forum.onefinitycnc.com/t/change-to-open-source-firmware/23347 "2023-11-14T04:14:05Z")\
**Posts on this page:** 1\
**Showing post:** 14

<div class="post-metadata">

**Author:** ![349iq2345](https://avatars.discourse-cdn.com/v4/letter/3/bb73d2/32.png) [@349iq2345](https://forum.onefinitycnc.com/u/349iq2345)\
**Post date:** [November 15, 2023, 3:03pm UTC](https://forum.onefinitycnc.com/t/change-to-open-source-firmware/23347/14 "2023-11-15T15:03:50Z")

</div>

Hey Lars,

> [@lars](#):
>
> Need to switch to a newer raspberry image since stretch it no longer available in the repositories so I used buster to build that one.

Just like with [Debian](https://en.wikipedia.org/wiki/Debian), on [Raspbian](https://en.wikipedia.org/wiki/Raspberry_Pi_OS) the older _[releases](https://www.debian.org/releases/)_ are moved to the _[archive](http://archive.debian.org/debian/dists/)_ site, where they remain available (and installable). Raspbian archived sources are available at [raspbian archive](https://downloads.raspberrypi.com/raspbian/archive/) and the SD card images at [raspbian/images](https://downloads.raspberrypi.com/raspbian/images/) (from 2012’s Raspbian „Wheezy" on 🙂 ). On Debian archive, they even have the [first Debian that I used](http://archive.debian.org/debian/dists/Debian-0.93R6/) 🙂)

> [@lars](#):
>
> There was also some issue with compiler mismatch with the old kernel release for bbserial but that only affected the kernel setup and not the model build.

That’s what I meant with the [bbserial](https://github.com/OneFinityCNC/onefinity-firmware/blob/master/src/bbserial/bbserial.c) kernel module being “hardwired to an ancient kernel release”. It’s a dirty hack that was never replaced by a serious solution by the [buildbotics main developer](https://buildbotics.com/about/). Further integration of the kernel module into the OS was dropped as soon the serial interface to the AVR Mainboard that it provides did work. You know that: Once you get something to work, you stop working on it. Problem is, with the present situation of being “hardwired” to an ancient kernel source, you can’t compile this module if you updated the system’s kernel to a recent version, and if you don’t have this kernel module working and running, **you have no CNC controller, but just a Raspberry Pi, with a CNC User interface that does not find the AVR mainboard with the CNC driver hardware**.

On [Debian](https://en.wikipedia.org/wiki/Debian)/[Raspbian](https://en.wikipedia.org/wiki/Raspberry_Pi_OS) (and its derivatives like [Ubuntu](https://en.wikipedia.org/wiki/Ubuntu)), the only serious solution for a separate [kernel module](https://en.wikipedia.org/wiki/Loadable_kernel_module#Linux) like the [bbserial](https://github.com/OneFinityCNC/onefinity-firmware/blob/master/src/bbserial/bbserial.c) module is to integrate it into [Dynamic Kernel Module Support (DKMS)](https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support) so that the module is recreated automatically after every kernel package update on the system. And it would be necessary to make ‘bbserial’ and ‘onefinity-firmware’ or ‘bbctrl-firmware’ each a proper [Deb](https://en.wikipedia.org/wiki/Deb_(file_format)) package (which is still not the case ☹) that _have their package dependencies defined_, and be installed, deinstalled, upgraded or even downgraded with [apt](https://en.wikipedia.org/wiki/APT_(software)). How one can learn to do this is explained in debian.org/doc/ → **[Introduction into Debian Packaging](https://www.debian.org/doc/devel-manuals#packaging-tutorial)** and of course debian.org/doc/ → **[Debian Policy](https://www.debian.org/doc/devel-manuals#policy)[#Binary packages](https://www.debian.org/doc/debian-policy/ch-binary.html)** has to be observed.

Note that when you use [Raspberry Pi OS (formerly “Raspbian”)](https://en.wikipedia.org/wiki/Raspberry_Pi_OS) on a Raspberry Pi hardware, instead of some other [Debian-derived OS](https://en.wikipedia.org/wiki/List_of_Linux_distributions#Debian-based), you benefit of the **proprietary packages** raspberrypi-kernel, raspberrypi-bootloader, and raspberrypi-sys-mods, that are not part of free and open source Raspberry Pi OS, but that get fetched from the repository defined in `/etc/apt/sources.list.d/raspi.list`. Those packages are not fetched from Raspberry Pi OS repositories (like [http://mirrordirector. **raspbian.org** /raspbian/](http://mirrordirector.raspbian.org/raspbian/) and [http://archive. **raspbian.org** /raspbian/](http://archive.raspbian.org/raspbian/) as defined in `/etc/apt/sources.list`, but from the repository of the Raspberry Pi Foundation at [http://archive. **raspberrypi.org** /debian/](http://archive.raspberrypi.org/debian/).

[raspbian.org](http://raspbian.org) is not [raspberrypi.org](http://raspberrypi.org)!

> [@lars](#):
>
> I haven’t tried it out yet, need to get a spare raspberry pi3 to use for development.

I got one a few monthes ago but it was the last one available at that time. But why not use [Raspberry Pi 4](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/). Since it has much more graphics capability, it could show the camotics 3D toolpath simulation which the Pi 3 can’t do (provided the mesa 3d acceleration graphics drivers get installed)

 ![3D_Toolpath_Preview](https://us1.discourse-cdn.com/flex022/uploads/onefinitycnc/original/3X/1/7/17b9ec8f540e6e6d42931cb29c89fd4c6e9c0724.jpeg)  
_Image: In order to see the 3D toolpath simulation, it is necessary to use the User Interface from a remote computer that has more graphics capabilities (and some 3D graphics drivers installed). This simulation is not shown on a HDMI monitor directly connected to the Buildbotics/Onefinity CNC Controller._

> [@How long will original controller be available](https://forum.onefinitycnc.com/t/how-long-will-original-controller-be-available/17882/18):
>
> [One user reports](https://forum.buildbotics.com/viewtopic.php?f=6&t=295&p=923#p921) that he **was able to successfully build** the [Buildbotics firmware](https://github.com/buildbotics/bbctrl-firmware) sources on the [Raspberry Pi 400](https://www.raspberrypi.com/products/raspberry-pi-400/) ([Pi 4](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/) based). So I would see no reason why it wouldn’t work with [Onefinity firmware](https://github.com/OneFinityCNC/onefinity-firmware) sources too – and benefit of both upgrading the hardware to a Raspberry Pi 4 **and** upgrading the [Raspberry Pi OS](https://en.wikipedia.org/wiki/Raspberry_Pi_OS) to a recent version as well.

See also [Why the Raspberry Pi \<= 3 is slow](https://forum.onefinitycnc.com/t/how-long-will-original-controller-be-available/17882/22#why-the-raspberry-pi-3-is-slow-1).

---

_[View the full topic](https://forum.onefinitycnc.com/t/change-to-open-source-firmware/23347)._
