How to auto-load kernel module when peripheral

Woody Wu narkewoody at gmail.com
Tue Mar 31 02:08:56 EDT 2015


On 31 March 2015 at 13:04, Adam Lee <adam8157 at gmail.com> wrote:
> On Tue, Mar 31, 2015 at 12:27:50PM +0800, Woody Wu wrote:
>> Hi,
>>
>> I want my usb-serial converter can be automatically ready to use after
>> it plugged into an USB port.  Currently I have to manually do
>> 'modprobe ftdi_sio' before use it, otherwise, no module will be loaded
>> and there is no a /dev/ttyUSB0 appearing.
>>
>> I am using mdev instead of udev in this embedded system, and full
>> pathname of mdev had already put in /proc/sys/kernel/hotplug file.  I
>> also already added a line into my mdev.conf:
>>   ttyUSB*         root:tty 660
>>
>> To make it clear, the problem is when I inserted the convert, I did
>> not see /dev/ttyUSB0 was created and 'lsmod' also not list the
>> 'ftdi_sio' module.  If I check the kernel message at the time of
>> inserting the device, I can see:
>>
>> [   43.425000] usb 1-1: new full speed USB device number 2 using s3c2416-ohci
>> [   43.585000] usb 1-1: New USB device found, idVendor=0403, idProduct=6001
>> [   43.585000] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
>> [   43.585000] usb 1-1: Product: FT232R USB UART
>> [   43.585000] usb 1-1: Manufacturer: FTDI
>> [   43.585000] usb 1-1: SerialNumber: A900aMbV
>>
>> How do I do?  Thanks in advance!
>
> https://wiki.gentoo.org/wiki/Mdev#Notes
>
> "mdev unlike udev does not support auto-modules loading thus you will
> need to use /etc/conf.d/modules(depends on your distro) and put there
> all the modules like you used to load."
>

Many thanks for the hint.   But then I find my mdev actually support
this feature, which is a BusyBox version of mdev.  The source of of
its mdev.c has something blow:

 * $envvar=regex format is useful for loading modules for hot-plugged devices
 * which do not have driver loaded yet. In this case /sys/class/.../dev
 * does not exist, but $MODALIAS is set to needed module's name
 * (actually, an alias to it) by kernel. This rule instructs mdev
 * to load the module and exit:
 *    $MODALIAS=.* 0:0 660 @modprobe "$MODALIAS"
 * The kernel will generate another hotplug event when /sys/class/.../dev
 * file appears.

Then I just tried with success!   Thanks you anyway!

-woody



More information about the Kernelnewbies mailing list