The software setup (not the code themselves) for the whole ISOBlue system is a little complicated. The ISOBlue software uses a
Bitbake build environment. Currently, I use a manufacturer-supplied (
Toradex) build environment with additions of ISOBlue needed patches and software packages. There are still a bit of work for me to do to make the software deployment easier for everybody by writing down documentations as well as getting a straightforward bitbake building environment setup for ISOBlue. It will be there but it is not there yet.
The quickest solution is this: I will share a flashable image that you could flash your board with all the ISOBlue2 stuff and play with it. The image is the same as the one that all deployed ISOBlue2s are using but with different ISOBlue2 identifications. After flashing the image (before rebooting or anything), you might need to temporarily disable can-watchdog.service. This systemd service monitors CAN activities and suspend the ISOBlue once the activity is absent. If the system suspends, the only way to wake it up is via CAN activities. The intention is to automate the machine data collection process since the ISOBlue2 can suspend and be woken up automatically.
Once your ISOBlue2 is running, it should log all CAN frames locally onto the SSD. You probably don't need to be worried about it sharing your data online since your board does not have a cell module. There is one thing you need to verify though: you need to somehow download kafka_can_consumer.py from the repo (use v1.1-dev branch, and it might be better if you clone the whole repo instead of just a file since the script uses a schema that resides in one folder above it) and run it to see if the CAN frame loggers are running correctly. If you see a stream of timestamp, PGNs, and data payload, then the ISOBlue2 is definitely logging.
Remember this image is fully loaded, meaning that it has all the libraries need and is trying to log GPS data, misc. debug information along with systemd services to start/restart pretty much all the programs. If you just want to set up ISOBlue to log CAN frames without all the other stuff running, it is definitely achievable given that you have some experience in embedded systems, git, and autotools. You can use the following as a very brief tutorial and some pointers:
2) Install and set up
JDK (required by Kafka).
3) There are 3 ways that you could set your board as a CAN frame logger:
- If you want to save some time and have a quick prototype, you could just install can-utils and run candump as a logger and redirect the candump output to a file.
- I would say take a look at this documentation, write a bare minimum program, make it and run it for logging CAN frames.
- This way uses my program; it derives from the bare minimum with the addition of librdkafka for message distribution and avro-c for data serialization. If you are interested in using my program as well as the data logging scheme, you would need to install these two libraries first. Just a quick explanation on the data logging scheme, the current ISOBlue2s run an instance of Kafka broker natively. The logger programs log the data first, uses avro to serialize the data (mainly to reduce the data size) and then produces onto a Kafka topic managed by the broker. Each Kafka topic can be viewed as an append-only data queue. Details on Kafka can be found here. After you have some background on this, please proceed to step 4.
4) Download
Kafka onto your board and run zookeeper and broker.
Tutorials can be found here.
5) Go to the isoblue2 repo, switch to the v1.1-dev branch, and go to the producer directory. Run configure and make. The executable you are interested in should be in the kafka_can_log folder. Run it with the right flags along with the kafka_can_consumer.py script in the consumer directory, you should be able to see ISOBUS messages if the board is correctly connected to the ISOBUS on the machine.
The isoblue2 repo also contains some handy udev rules. For instance,
70-isoblue-can.rules gives aliases to CAN interfaces and
80-wakeoncan.rules set up wake on CAN feature automatically during boot.
We were worried about this too initially. However, for one experiment that we ran on one of the Case combines, for the length of 60 days, all logged data (CAN frames, GPS data, and misc) occupy approximately 70GB. It is not that much but the size might depend on the model type of the machine.
Hopefully this helps. The tutorial might be quite brief and let me know if you have any questions. I will post the link to the image tomorrow.
Regards,
Yang