Frequently Asked Questions
- Is this free software?
- Yes. As in "Beer" and as in "Speech". It is released under the terms of
GPLv3 (see the COPYING file which should be included with this software)
- Can we use it in our product?
- Subject to the conditions of GPLv3, yes. You can optionally hire me to
customize and provide support for the code. See the
contact page for how to get in touch
- Why "kplex"?
- Originally it was called "mplex", but that's the name of an mpeg stream
multiplexer for linux. changing only one letter of the name simplified
changing the file names. And "kplex" scores loads in french scrabble.
- Do you have a git repository?
- Yes but not a public one. That will change one day, probably after I've
written a hacking guide to the code. Any version of kplex currently on
github was not put there by me and probably isn't up to date
- How can I contribute code?
- Send me a patch but please don't be disappointed/angry if I don't include
- How else can I help?
- Send me a link to a page describing how you use kplex
- Are you planning to support Raymarine seatalk?
- The code was written for an earlier version of kplex but it wasn't included
in a "production" release for a number of reasons which might make support
difficult. These included:
The code may at some point be revived but if it is, it won't be guaranteed to
- Requirement for additional hardware to convert seatalk to rs232
- Problems with handling of parity errors in many serial to USB converters.
Kplex's interpretation of seatalk relies on correct handling of parity errors.
- Difficulty of writing data to the network. To do collision avoidance
"correctly" requires real time processing which intriduces a significant level
of complexity for the user. Reading is rather easier with less chance of chaos
on the seatalk bus.
- Lack of data. I only have data from my own seatalk network. Conclusions
I draw regarding timing and ordering of data sent out by various sorts of
instrument may not generalize to other Raymarine products
- Does this run on a raspberry pi?
- Yes. Note the 3.3v weirdness of the serial interface though if not using
serial to usb adaptors.
- Why is kplex so heavily multithreaded when the target systems are raspberry
pis and laptops?
- Multithreading suits the program's structure and allows blocking I/O without
using poll/select and without resorting to non-portable event notification
mechanisms like epoll or kqueue. Plus when it was first written I was
thinking that I hadn't written anything with pthreads for a while...
- Filtering etc. uses linear searches with linked lists. Isn't that
- Typically target systems have few network interfaces and filter lists don't
extend into hundreds of rules. The lack of fixed overheard associated with
hash tables makes linear search more efficient for the common case. I'd throw
in a gag about it being distressing if N is over C, but that's the kind of
crossover humour that rarely goes down well.
- Can I use this to bridge to a tablet using just my laptop?
- Not exactly. kplex does not create a wireless access point, it just uses
a linux computer's existing wireless interfaces. If you want to create a
wireless access point using a linux system, check out hostapd. An
Alternative may be to use ad hoc networking to connect to your wireless
device (The comar box does this).