Hans wrote:
What is best practise for binary kernel modules?
Avoid them. There is no substitute for being able to see the code.
Having to build kernel modules for each and every kernel configuration that your customers use is going to cost you a lot of time and money. Discuss the problem with the device manufacturer - they might not be aware of the problems that this is causing you. They probably think they've done you a big favour by providing software for their device... Do they provide documentation with which you could write a new Open Source driver to avoid the binary modules? (Some don't.)
For next generation hardware, evaluate alternative devices which do not require you to ship binary kernel modules with your boards. If your company supplies a number of different boards, consider developing one with Open Source markets in mind (i.e. no binary kernel modules) and submit patches to the kernel lists for the board. This will give you a good indicator of how much your support overhead might reduce, allowing you to make the tradeoff between sticking with your current supplier or using an alternative device.
If you're stuck with the device for the forseeable future, consider partnering with one or more Embedded Linux distros. That way, you reduce the number of kernels that you have to support. However, this would of course reduce your potential customer base. For a generic CPU board, customers often have their own preference for which distro (or home grown variant) they want to use. It all depends on who your customers are.
The bottom line is that the cost of a device is made up of software costs as well as the cost of the hardware device itself.