I am trying to find an appropriate driver for a USB WiFi adapter that is reported by lsusb as

0bda:a811 Realtek Semiconductor Corp.

On WikiDevi it is described as "Realtek RTL8811AU Wireless 802.11ac 1x1 USB 2.0".

There are multiple repositories that seem to provide drivers for RTL8811AU, for example this one (it is based on this one that claims to support rtl8811AU). However, I would like to check the compiled module if it supports the device before trying to install it into the kernel (it is someone else's system that I am trying to mess with).

From searching online I concluded that it should be enough that the output of modinfo command for the driver module return a line of the kind

alias:          usb:v0BDApA811d*dc*dsc*dp*ic*isc*ip*in*

which would contain the correct vendor ID (0BDA) and the correct product ID (A811).

How reliable is this method of checking compatibility of drivers with devices? Is this how the kernel selects the driver?

Is the exact match of both vendor and device IDs necessary? For example, I tried first installing rtl8812au-dkms package with apt-get (on Ubuntu). However, the output of modinfo 8812au | grep A811 was

alias:          usb:v7392pA811d*dc*dsc*dp*ic*isc*ip*in*

-- the device ID is ok, but the vendor ID does not match. Does it mean that this driver will not work with this device?

  • Please run modprobe -rv 8812au then modprobe -v 8812au does the module load correctly? – GAD3R Feb 17 at 19:19
  • @GAD3R, are you asking about the module from rtl8812au-dkms? I tried these commands, there were no messages except "insmod /lib/modules/4.13.0-32-generic/updates/dkms/8812au.ko". – Alexey Feb 17 at 20:23
up vote 1 down vote accepted

This method is reliable, that is how the kernel (or udev and kmod) chooses a module to load: when a new device appears (including at boot time, when all devices are probed), it looks for a module with a modalias matching the device descriptor.

If modinfo lists an alias for a module which matches your device, then that means the module claims to support the device. In your case, the module supports devices matching 7392:A811 (and perhaps others which don’t match your grep), but not your device, so it appears rtl8812au-dkms won’t be much help (at least in its current state)... The Linux USB registry is currently offline, so I can’t check any further. Note that aliases are a first level of filtering, and don’t absolutely guarantee support — modules use their own probe functions when they initialise, and those can use other pieces of information. See this question for more details, and the kernel documentation for information on everything which can feature in an alias.

(The similarity in identifiers does suggest the driver could support your device too, so you could try adding the ids to the module to see what happens.)

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.