Hello Marc ( @marckleinebudde ),
First of all, I would like to express my gratitude for everything you do for the open-source community to advance CAN development in Linux and beyond. Your work has been invaluable.
I have a question and would highly appreciate hearing your expert opinion on it (and of course, welcome thoughts from anyone else in the community as well).
With the CAN bus, everything in Linux is now very clear, unified, and beautifully standardized—largely thanks to your efforts.
However, when it comes to the LIN bus, which is conceptually close (it also operates with up to 8 data bytes and an identifier), the situation is a bit of a mess. Everyone tries to invent their own proprietary thing, and there is no unified open-source transport protocol like gs_usb is for CAN.
Right now, I am working on a combined hardware adapter featuring both CAN FD and a LIN interface. On the physical level, it is straightforward.
However, when it comes to reporting raw LIN data back to the host PC, it is completely unclear which open-source protocol to follow to avoid creating yet another non-standard custom solution.
What are your thoughts on implementing native LIN encapsulation support right into the gs_usb protocol specification? This could immediately establish a clean, universal standard for open-source adapters like Candlelight.
Initially, I had an idea to wrap LIN frames and their service metadata (errors, timings, etc.) into CAN messages on the fly.
Interestingly, I recently came across Kvaser's Linux driver implementation (linlib.c / linboot.h), which is dual-licensed under GPLv2 and BSD-new. They already do exactly this—controlling the LIN transceiver and passing bus status through specialized, masked CAN frames. Could this Kvaser layout be considered as a baseline for an open-source standard?
linlib.zip
In general, what is the current vision and roadmap for the LIN bus within the Linux kernel subsystem? Maybe some work or a unified specification already exists and I just haven't found it yet?
If so, please point me in the right direction. I am starting to feel overwhelmed by the sheer number of custom implementation paths, and an expert opinion would help me clear this block.
For reference, the active fork of CANgaroo maintained by Schildkroet (https://github.com/Schildkroet/CANgaroo) now properly supports multichannel CAN FD adapters (even on Windows) and the author is currently working on the LIN display wrapper.
However, there is still a noticeable gap on the transport protocol level providing the raw data for analysis.
Looking forward to hearing your thoughts!
Best regards,
Oleksii
can-module.com
Hello Marc ( @marckleinebudde ),
First of all, I would like to express my gratitude for everything you do for the open-source community to advance CAN development in Linux and beyond. Your work has been invaluable.
I have a question and would highly appreciate hearing your expert opinion on it (and of course, welcome thoughts from anyone else in the community as well).
With the CAN bus, everything in Linux is now very clear, unified, and beautifully standardized—largely thanks to your efforts.
However, when it comes to the LIN bus, which is conceptually close (it also operates with up to 8 data bytes and an identifier), the situation is a bit of a mess. Everyone tries to invent their own proprietary thing, and there is no unified open-source transport protocol like gs_usb is for CAN.
Right now, I am working on a combined hardware adapter featuring both CAN FD and a LIN interface. On the physical level, it is straightforward.
However, when it comes to reporting raw LIN data back to the host PC, it is completely unclear which open-source protocol to follow to avoid creating yet another non-standard custom solution.
What are your thoughts on implementing native LIN encapsulation support right into the gs_usb protocol specification? This could immediately establish a clean, universal standard for open-source adapters like Candlelight.
Initially, I had an idea to wrap LIN frames and their service metadata (errors, timings, etc.) into CAN messages on the fly.
Interestingly, I recently came across Kvaser's Linux driver implementation (linlib.c / linboot.h), which is dual-licensed under GPLv2 and BSD-new. They already do exactly this—controlling the LIN transceiver and passing bus status through specialized, masked CAN frames. Could this Kvaser layout be considered as a baseline for an open-source standard?
linlib.zip
In general, what is the current vision and roadmap for the LIN bus within the Linux kernel subsystem? Maybe some work or a unified specification already exists and I just haven't found it yet?
If so, please point me in the right direction. I am starting to feel overwhelmed by the sheer number of custom implementation paths, and an expert opinion would help me clear this block.
For reference, the active fork of CANgaroo maintained by Schildkroet (https://github.com/Schildkroet/CANgaroo) now properly supports multichannel CAN FD adapters (even on Windows) and the author is currently working on the LIN display wrapper.
However, there is still a noticeable gap on the transport protocol level providing the raw data for analysis.
Looking forward to hearing your thoughts!
Best regards,
Oleksii
can-module.com