Template:3rd party drivers: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(don't mess up Sundtek with Kernel driver disadvantages, it's totally different than nvidia drivers too so naming it in the same context is just wrong.)
 
(14 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<div style="padding: 1px 2px 1px 2px; background-color: #ffeaa5; border: solid 1px #ffeaa5; font-size:-1;">
<div style="padding: 1px 2px 1px 2px; background-color: #ffeaa5; border: solid 1px #ffeaa5; font-size:-1;">
Sometimes a manufacturer forks v4l-dvb all on their own and writes a driver for their device so they can claim Linux support.
Why you SHOULD NOT want a device with 3rd party KERNEL drivers:


== In-Kernel 3rd party Drivers ==
Sometimes a manufacturer forks v4l-dvb all on their own and writes a driver for their device so they can claim Linux support. That's great and all, but sadly, you will sooner or later end up in tears.


===Advantages:===
Sometimes there is another v4l-dvb fork, think multiproto, em28xx-new or s2-liplianin. These either get merged into v4l-dvb or are eventually forgotten. Sometimes a user has written a patch for a particular device, but the patch for whatever reason is not incorporated in v4l-dvb. And sometimes the manufacturer creates their own closed-source driver, like nVidia does for graphics chips.
# It's possible your device will work.. for the moment.
# If the manufacturer provides open source drivers with an acceptable license, volunteers could technically implement this code in the Linux kernel for true support. However.. :


===Disadvantages:===
Whatever the cause, all these are not part of v4l-dvb. Sooner or later the user or manufacturer might stop supporting these, but the Linux kernel will move on. When that happens, you have a few options:
# The quality of the code (if open, there are also cases where you just get a binary blob) too often just isn't good enough and there's still too much work to be done to make the device work. There was probably a reason the manufacturer didn't just send their patches to the linux-media mailinglist.
# Depending on what exactly the manufacturer did, you may have to reinstall the drivers every time your kernel is updated.
# When the manufacturer stops updating the drivers, the drivers will quickly refuse to install as newer kernels are released.


In case a manufacturer provides open source drivers the patches can be sent to the linux-media mailinglist [mailto:majordomo@vger.kernel.org?body=subscribe%20linux-media Linux-Media Mailing List] (LMML). Keep in mind however that if the license isn't compatible with the Linux kernel or the quality of the code isn't good enough, these will not become a part of the Linux kernel.<br />
1. Stick with your current kernel for ever and ever. Not recommended.<br />
2. Create and submit a patch for v4l-dvb to support the device that does get incorporated in v4l-dvb. Unless you're a programmer, you may not be able to.<br />
3. Hire someone else to do that. May be expensive.<br />
4. Buy a new device. Oh, you probably shouldn't have bought this one in the first place.<br />


NOTE:
You can contact the [mailto:majordomo@vger.kernel.org?body=subscribe%20linux-media Linux-Media Mailing List] (LMML) and see if perhaps there is a developer who would be willing to borrow your device to create support for it. No guarantees though.
As linux media drivers are character based, drivers can be also written using libfuse's character device in userspace example.
If written that way, an out-of-kernel driver can be written, which fully integrates to udev without the disadvantage of closed source or incompatibility to other drivers. Such driver would rely on kernel ''fuse'' and ''character device in user space'' support as well as libfuse.


== Closed source userspace drivers (Sundtek) ==
In the end, you should (sadly) generally not buy these.

===Advantages:===

# Same driver works with different Linux versions
# No need to reinstall drivers when your kernel is updated.
# Drivers can be profiled easily and more accurately than in kernelspace.
# If the driver crashes, it won't crash the system or kernel, only the driver and applications using the driver will be affected. Userspace drivers can also be used when debugging drivers for USB host controllers, as the userspace driver can't crash the system, making debugging easier.
# If the manufacturer would stop to support the drivers, the userspace driver will still continue to work with newer Linux systems

Userspace drivers use a modern device infrastructure, Kernelspace drivers were available at a time when Linux did not support userspace drivers, Sundtek spent a substantial amount of work to make userspace drivers happen.

As a track record, most Linux distributions and many Settopboxes which were released since 2006 are supported, even open source drivers don't have such a high backward compatibility.

===Disadvantages:===

# You can't look into the sources. While this may be not a problem for end-users, in case of issues Sundtek provides a support forum.


While 3rd party Kernel drivers can easily suffer discontinued support since the Linux kernel keeps evolving and the internal Kernel API changes.
Drivers based on application level do not have that restriction these will just work since they are independent of various Linux kernel versions and do not require any recompilation (eg. Sundtek is doing this approach and supports nearly any Linux).
Independent drivers are only possible for USB (regularly since 2.6.15), PCI/e drivers can be done on application level using VFIO nowadays.
</div>
</div>

Latest revision as of 00:23, 30 October 2024

Sometimes a manufacturer forks v4l-dvb all on their own and writes a driver for their device so they can claim Linux support.

In-Kernel 3rd party Drivers

Advantages:

  1. It's possible your device will work.. for the moment.
  2. If the manufacturer provides open source drivers with an acceptable license, volunteers could technically implement this code in the Linux kernel for true support. However.. :

Disadvantages:

  1. The quality of the code (if open, there are also cases where you just get a binary blob) too often just isn't good enough and there's still too much work to be done to make the device work. There was probably a reason the manufacturer didn't just send their patches to the linux-media mailinglist.
  2. Depending on what exactly the manufacturer did, you may have to reinstall the drivers every time your kernel is updated.
  3. When the manufacturer stops updating the drivers, the drivers will quickly refuse to install as newer kernels are released.

In case a manufacturer provides open source drivers the patches can be sent to the linux-media mailinglist Linux-Media Mailing List (LMML). Keep in mind however that if the license isn't compatible with the Linux kernel or the quality of the code isn't good enough, these will not become a part of the Linux kernel.

NOTE: As linux media drivers are character based, drivers can be also written using libfuse's character device in userspace example. If written that way, an out-of-kernel driver can be written, which fully integrates to udev without the disadvantage of closed source or incompatibility to other drivers. Such driver would rely on kernel fuse and character device in user space support as well as libfuse.

Closed source userspace drivers (Sundtek)

Advantages:

  1. Same driver works with different Linux versions
  2. No need to reinstall drivers when your kernel is updated.
  3. Drivers can be profiled easily and more accurately than in kernelspace.
  4. If the driver crashes, it won't crash the system or kernel, only the driver and applications using the driver will be affected. Userspace drivers can also be used when debugging drivers for USB host controllers, as the userspace driver can't crash the system, making debugging easier.
  5. If the manufacturer would stop to support the drivers, the userspace driver will still continue to work with newer Linux systems

Userspace drivers use a modern device infrastructure, Kernelspace drivers were available at a time when Linux did not support userspace drivers, Sundtek spent a substantial amount of work to make userspace drivers happen.

As a track record, most Linux distributions and many Settopboxes which were released since 2006 are supported, even open source drivers don't have such a high backward compatibility.

Disadvantages:

  1. You can't look into the sources. While this may be not a problem for end-users, in case of issues Sundtek provides a support forum.