How to force a proprietary driver to load on startup?

I've been having some problems with the driver for a wireless NIC supplied with the 3.0.0 kernel. I've compiled and installed the proprietary driver for it, so that I can switch it once the system has booted with:

# Remove the driver included with the kernel
sudo modprobe -r rtl8192cu
# Use the proprietary driver
sudo modprobe 8192cu

The module locations are

  • rtl8192cu : /lib/modules/3.0.0-12-generic/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
  • 8192cu (proprietary driver): /lib/modules/3.0.0-12-generic/kernel/drivers/net/wireless/8192cu.ko

I know these are probably very basic questions, but I'd like to know about the following:

  1. Why is the system using the driver included with the kernel ? Is it because its path has some kind of priority? Or because it is included by default with the kernel?
  2. Is blacklisting the rtl8192cu module the right way to make the propietary 8192cu module load at startup?
  3. Is there any other way to make the system automatically load the proprietary driver by default?

Solution 1:

Since it is included with the kernel as a module, unless you blacklist the old module, it is loaded at the boot time because of having a device using that module. After installing an other driver, you need to blacklist the old one.

Blacklisting is the right way. But you should add the new module to /etc/modules file.