I just succesfully sent the first bytes from a rpi 3b+ Circle program to a windows com port with a bluetooth stack that I have written mostly from scratch. I will, in the upcoming months, make the source code, as well as my mods to Circle, and a number of other interesting additions to Circle, public. In due time.
Right now I just want to take a deep breath. It has been a very hard month of sleepless nights and horrible frustration trying to understand the bluetooth core specs, reverse engineering linux drivers, and generally banging my head against a wall, repeatedly, until finally the wall gave way to my bruised and battered head.
Although I have almost 50 years of programming experience, nothing I have ever done before has been this difficult, and that includes managing teams of 60+ engineers, owning 3+ million lines of source code, or being part of one of the most successful software projects in the history of computing. Nothing has compared to the difficulty of getting things working on these little computers.
I only started with, got my first Arduino, in January of this year. Since then I have been through dozens of mpu's and controllers, and followed a thousand leads, to get to this one point. And I am not done.
I will post more later. But for now, there are two things I would like to do. First I need to thank a few organizations and people, not necessarily in order of importance, but moreso in the order I encountered them on this journey
- the arduino foundation, without which I would have never even become involved
- fellis from [email protected]
for the HSL which led to a few months of max3421 stuff, and from which I learned the basics.
- Paul Stoffregen who is a force unto himself. The teensy changed my life. I remain amazed at what this man has accomplished.
- dwelch, who laid a nice trail of breadcrumbs for a beginner like me to follow. He didn’t have to, and I thank him for taking the time to lay it out in a series of steps
- Chris Marin, who’s Placid project was an important stepping stone to getting me to Circle, and, of course ...
- rst … what can I say. That you conceived of, and implemented, Circle, is right up there with Paul’s work. Amazing.
You guys are the best, and the brightest, programmers I’ve ever seen.
Not that Circle is without a few warts and bumps. In addition to the (completely reworked) bluetooth stack, I have (completely reworked) created an i2s audio device that has input, as well as output, added a mini-uart serial port, and combined dwelch’s, cmarrin’s, and rst’s bootloaders into one piece of code that also uses fat32 to “flash” the rpi, either from serial, ethernet, tftp, or http. Oh, and I added some simple scripts for building Circle on Windows to make this beautiful codebase more accessible to everybody.
As I said, I will be making the source for all of this public at some point. But after trying to figure out the BT specs, and (re) implementing HCI, L2CAP, SDP, and RFCOMM, and finally getting a few bytes to go from an rPi, over the air to a Windows SPP com port, today, at this moment, all I can say is “yay”.