Become a sponsor to Uwe Vogt
Running CAN and CAN FD on a Mac is the mission of the MacCAN project. Many companies offering multifarious CAN hardware and CAN software, but only few of them provide a driver for macOS.
In the absence of a CAN driver for my Mac, I started to develop an OS X user-space driver for my PEAK USB-to-CAN dongle a few years ago. The driver has achieved a high degree of stability, not least because of its test coverage of about 425 test cases, but it is closed source for various reasons.
For my CAN adapters from other manufacturers, I have launched open-source projects for the development of user-space drivers and basic utilities. Not all features are implemented yet and not all device variants are supported. It is still a hard work until the drivers will be feature-complete and will have reached the required stability. The projects also share many common code parts that need be kept in sync.
I pursue a kind of test-first approach: 1st creating test cases for a new function, 2nd executing the test cases on the Windows system against the original driver from the adaptor vendor, and 3rd developing the new function on the Mac and running the test cases as long as no test case fails anymore. To run the complete regression test suite for all my CAN adapters on all my systems, it takes a whole Saturday afternoon and sometimes longer.
Last but not least, Apple introduced the new M1 chip for its hardware. This means for me that I have to buy a new Mac with the M1 chip to provide and test the drivers for this architecture.
Short-term Tasks
Of course, this includes root causing and bug fixing. I still make mistakes after all these years of programming.
Medium-term Goals
As for any other software project, the objectives for the MacCAN project are feature completeness as well as code quality and stability. To achieve this, the code must be tested, tested, and tested again. For this, the projects cannot use a remote CI/CD system. For regression testing, two CAN adapter connected to the test computer and an additional CAN adapter connected to a neutral computer (as traffic generator for stress tests) is required. Testing of the MacCAN drivers is very time consuming and causes hardware costs.
A long-term Vision
Since I started my own development of CAN software, I have been pursuing the goal of a multi-vendor, cross-platform CAN adapter API. Because the OEM APIs are not compatible to each other, I have defined a CAN Interface Wrapper specification. A loader library, which in turn loads a selected wrapper library, is in the pipeline for macOS, Windows and possibly Linux, and will be made public soon. This repo will then also contain the regressions test suite.
A future vision of the MacCAN project is the development of beautiful macOS Apps with SwiftUI. A basic CAN Monitor App that can be extended by add-ons, for example to record CAN traces in different formats, to launch client Apps for visualizing CAN data, a script engine to automate CAN test sequences, etc.
Benefits
Your Benefits
You contribute to the development and the testing of the code to make it more and more stable. The MacCAN community will be happy about that. Also, if you want, you can run CAN on your Mac and develop beautiful CAN applications for the Mac based on a stable driver respectively library.
Depending on the amount of your donation (and assuming your consent), I will mention you on my blog, follow you on GitHub and Twitter, link you with your avatar image on my GitHub Pages site, and announce your donation on social media (Twitter and LinkedIn).
My Benefits
These projects are developed and maintained in my spare time. I make my living through freelance projects.
If you support me with a small or generous donation, I can finance my hardware costs and spend more time on my open-source projects. Or I can give up my freelance work completely.
Featured work
-
mac-can/RusokuCAN.dylib
macOS® Driver and SDK for TouCAN USB Interfaces from Rusoku
C++ 5 -
mac-can/SerialCAN
Library for CAN-over-Serial-Line Interfaces (SLCAN Protocol)
C 32 -
mac-can/PCBUSB-Monitor
CAN Monitor App for macOS®
C 4 -
mac-can/PCBUSB-Wrapper
macOS® Wrapper Library for PCAN-USB Interfaces from Peak-System
C++ 2 -
mac-can/KvaserCAN-Library
macOS® Driver and SDK for USB CAN Interfaces from Kvaser
C++ 14
$1 a month
Select- Every dollar counts ❤️
$5 a month
Select- I can publish one HowTo instruction including a code snippet as a gist.
Your Benefits:
- I will mention you on my blog (under the category "Sponsors").
$10 a month
Select- I can plan and track the tasks for the next month in the project board.
Your Benefits:
- I will mention you on my blog (under the category "Sponsors").
- I will follow you on GitHub and Twitter (if you have an account).
$50 a month
Select- I can write one section of the documentation (API reference) in the project Wiki.
Your Benefits:
- I will mention you on my blog (under the category "Sponsors").
- I will follow you on GitHub and Twitter (if you have an account).
$100 a month
Select- I can implement one new or one missing feature or replace a workaround with a resilient solution.
Your Benefits:
- I will mention you on my blog (under the category "Sponsors").
- I will follow you on GitHub and Twitter (if you have an account).
- I will link you with your avatar image on my GitHub Pages site (on the "About" page).
$500 a month
Select- I can spend one Saturday afternoon to extend and to run the test suite. (One day I will make the test suite public, I promise!)
Your Benefits:
- I will mention you on my blog (under the category "Sponsors").
- I will follow you on GitHub and Twitter (if you have an account).
- I will link you with your avatar image on my GitHub Pages site (on the "About" page).
$1,000 a month
Select- I can start / continue to work on a CAN Monitor App with SwiftUI (with a monthly workload of around 12 hours).
Your Benefits:
- I will mention you on my blog (under the category "Sponsors").
- I will follow you on GitHub and Twitter (if you have an account).
- I will link you with your avatar image on my GitHub Pages site (on the "About" page).
- I will link you with your avatar image on my GitHub Pages site (on the "Home" page).
$5,000 a month
Select- I can start / continue to work on higher-layer protocols like ISO/TP, UDS, CANopen (with a monthly workload of around 60 hours).
Your Benefits:
- I will mention you on my blog (under the category "Sponsors").
- I will follow you on GitHub and Twitter (if you have an account).
- I will link you with your avatar image on my GitHub Pages site (on the "About" page).
- I will link you with your avatar image on my GitHub Pages site (on the "Home" page).
- I will announce your donation on social media (Twitter and LinkedIn).
$12,000 a month
Select- I can finally stop freelancing and fully focus on open-source projects😎 (to make CAN and CAN FD available on Mac, of course).
Your Benefits:
- I will mention you on my blog (under the category "Sponsors").
- I will follow you on GitHub and Twitter (if you have an account).
- I will link you with your avatar image on my GitHub Pages site (on the "About" page).
- I will link you with your avatar image on my GitHub Pages site (on the "Home" page).
- I will announce your donation on social media (Twitter and LinkedIn).