Introducción
En esta entrada veremos los módulos que hacen funcionar los dispositivos de un Acer Aspire V3-571G con debian wheezy.
Tarjeta Ethernet:
Haciendo un «lspci |grep Ethernet« obtenemos la siguiente salida:
02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57785 Gigabit Ethernet PCIe (rev 10)
En este caso la tarjeta ethernet es una «Broadcom Corporation NetLink BCM57785«.
Ahora comprobamos cuál es el módulo que maneja la tarjeta Ethernet, la salida de «dmesg |grep Ethernet« es la siguiente:
[ 2.091331] tg3 0000:02:00.0: eth0: attached PHY is 57765 (10/100/1000Base-T Ethernet) (WireSpeed[1], EEE[1])
El módulo utilzado es tg3, ahora vemos más información de este módulo con «modinfo»:
Filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/net/ethernet/broadcom/tg3.ko firmware: tigon/tg3_tso5.bin firmware: tigon/tg3_tso.bin firmware: tigon/tg3.bin version: 3.121 license: GPL description: Broadcom Tigon3 ethernet driver author: David S. Miller (davem@redhat.com) and Jeff Garzik (jgarzik@pobox.com) srcversion: 2C0612B625ED801314F6D8D depends: libphy intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions parm: tg3_debug:Tigon3 bitmapped debugging message enable value (int)
Gracias a la salida de modinfo podemos ver la ubicación del módulo «/lib/modules/3.2.0-4-amd64/kernel/drivers/net/ethernet/broadcom/tg3.ko«, también podemos ver la versión en la que se encuentra, en este caso utiliza la versión 3.121.
La tarjeta de red ethernet funciona correctamente con este módulo.
Tarjeta de red inalámbrica:
Comprobamos la tarjeta wifi con «lspci |grep Wireless«:
03:00.0 Network controller: Atheros Communications Inc. AR9462 Wireless Network Adapter (rev 01)
Buscamos el nombre del módulo que controla la tarjeta:
root@debian:/# basename `readlink /sys/class/net/wlan0/device/driver/module` ath9k
El resultado nos muestra que el módulo que se encarga de la tarjeta inalámbrica es «ath9k«
Mostramos información del módulo:
root@debian:/# modinfo ath9k filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko license: Dual BSD/GPL description: Support for Atheros 802.11n wireless LAN cards. author: Atheros Communications depends: ath9k_hw,ath9k_common,mac80211,ath,cfg80211 intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions parm: debug:Debugging mask (uint) parm: nohwcrypt:Disable hardware encryption (int) parm: blink:Enable LED blink on activity (int) parm: btcoex_enable:Enable wifi-BT coexistence (int) parm: ps_enable:Enable WLAN PowerSave (int)
La ubicación del módulo ath9k es «/lib/modules/3.2.0-4-amd64/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko«, como podemos observar, el módulo necesita tiene dependencias «ath9k_hw,ath9k_common, etc»
La tarjeta inalámbrica funciona correctamente con este módulo.
Lector de tarjetas:
Buscamos con «lspci | grep «Memory Card»« y nos muestra el siguiente resultado:
02:00.1 SD Host controller: Broadcom Corporation NetXtreme BCM57765 Memory Card Reader (rev 10)
Buscamos el nombre del módulo encargado de hacer funcionar el lector de tarjetas.
root@debian:/# basename `readlink /sys/class/mmc_host/mmc0/device/driver/module` sdhci_pci
«sdhci_pci« es el nombre del módulo encargado de hacer funcionar el lector de tarjetas.
A continuación mostramos información de dicho módulo:
root@debian:/# modinfo sdhci-pci filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/mmc/host/sdhci-pci.ko license: GPL description: Secure Digital Host Controller Interface PCI driver author: Pierre Ossman <pierre@ossman.eu> depends: sdhci,mmc_core intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions
El módulo necesita los módulos «sdhci,mmc_core« para poder funcionar (ambos ya instalados).
La ubicación del módulo es «/lib/modules/3.2.0-4-amd64/kernel/drivers/mmc/host/sdhci-pci.ko»
El lector de tarjetas funciona correctamente.
WebCam Integrada:
Con la orden «dmesg |grep WebCam« encontramos el nombre del módulo que hace funcionar la WebCam integrada.
[ 10.754636] uvcvideo: Found UVC 1.00 device HD WebCam (04f2:b337)
Mostramos información acerca del módulo:
root@debian:/# modinfo uvcvideo filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/media/video/uvc/uvcvideo.ko version: 1.1.1 license: GPL description: USB Video Class driver author: Laurent Pinchart srcversion: D98F2662940320480ED2E6A depends: videodev,usbcore,media intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions parm: clock:Video buffers timestamp clock parm: nodrop:Don't drop incomplete frames (uint) parm: quirks:Forced device quirks (uint) parm: trace:Trace level bitmask (uint) parm: timeout:Streaming control requests timeout (uint)
El módulo se encuentra en su versión 1.1.1, además tiene dependencias «videodev,usbcore,media«, la ubicación del módulo es /lib/modules/3.2.0-4-amd64/kernel/drivers/media/video/uvc/uvcvideo.ko
La webcam funciona correctamente.
Tarjetas Gráficas:
Buscamos información acerca de las tarjetas gráficas del equipo con la ejecución «lspci |grep -i vga«.
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) 01:00.0 VGA compatible controller: NVIDIA Corporation Device 1140 (rev a1)
Se encuentran 2 tarjetas gráficas, una NVIDIA y otra Intel. Buscamos información de los módulos correspondientes:
root@debian:/# basename `readlink /sys/class/graphics/fb0/device/driver/module` drm
Una vez encontrado el módulo drm, necesitamos más información acerca de los módulos que hacen funcionar cada tarjeta gráfica.
root@debian:/# ls /sys/class/drm/controlD64/device/driver/module/drivers/ pci:i915 pci:nouveau
Encontramos 2 módulos, «i915« y «nouveau«.
Buscamos información del módulo «nouveau«:
root@debian:/# modinfo nouveau filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/gpu/drm/nouveau/nouveau.ko license: GPL and additional rights description: nVidia Riva/TNT/GeForce author: Stephane Marchesin depends: drm,drm_kms_helper,ttm,mxm-wmi,i2c-core,button,wmi,video,power_supply,i2c-algo-bit intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions
Como podemos ver, este módulo es el encargado de hacer funcionar la tarjeta gráfica NVIDIA, su ubicación es /lib/modules/3.2.0-4-amd64/kernel/drivers/gpu/drm/nouveau/nouveau.ko y en sus dependencias se incluye el módulo drm nombrado anteriormente.
Ahora buscamos información acerca del módulo «i915«:
root@debian:/# modinfo i915 filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/gpu/drm/i915/i915.ko license: GPL and additional rights description: Intel Graphics author: Tungsten Graphics, Inc. license: GPL and additional rights depends: drm,drm_kms_helper,i2c-core,video,button,i2c-algo-bit intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions
Este módulo es el encargado de hacer funcionar la tarjeta gráfica Intel, su ubicación es /lib/modules/3.2.0-4-amd64/kernel/drivers/gpu/drm/i915/i915.ko y en sus dependencias también se incluye el módulo drm nombrado anteriormente.
Ambas tarjetas gráficas funcionan correctamente.
Tarjeta de Sonido:
Buscamos con la orden «lspci |grep Audio« los dispositivos de sonido disponibles.
00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04)
El dispositivo de audio encontrado es Intel, procedemos a buscar el módulo que lo hace funcionar.
root@debian:/# basename `readlink /sys/class/sound/card0/device/driver/module` snd_hda_intel
Buscamos información del módulo encontrado:
root@debian:/# modinfo snd_hda_intel filename: /lib/modules/3.2.0-4-amd64/kernel/sound/pci/hda/snd-hda-intel.ko description: Intel HDA driver license: GPL depends: snd-hda-codec,snd-pcm,snd,snd-page-alloc intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions
La ubicación de módulo es /lib/modules/3.2.0-4-amd64/kernel/sound/pci/hda/snd-hda-intel.ko , esté módulo tiene dependencias.
La tarjeta de sonido funciona correctamente con este módulo.
Entrada Auriculares
Con la orden «dmesg |grep Headphone« buscamos información del dispositivo de entrada de auriculares:
root@debian:/# dmesg | grep Headphone [ 13.548966] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input16
Obtenemos información acerca de este dispositivo, es el dispositivo de entrada 16 por lo que buscamos el módulo que se encarga de hacerlo funcionar.
root@debian:/# basename `readlink /sys/class/input/input16/device/device/driver/module` snd_hda_intel
Como resultado nos muestra que el módulo encargado de hacer funcionar el dispositivo de entrada de auriculares es «snd_hda_intel«, el módulo encargado de hacer funcionar la tarjeta de sonido.
El dispositivo funciona correctamente.
Entrada Micrófono
Con la orden «dmesg |grep Mic« buscamos información del dispositivo de entrada de micrófono:
root@debian:/# dmesg | grep Mic [ 13.548850] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input15
Obtenemos información acerca de este dispositivo, es el dispositivo de entrada 15 por lo que buscamos el módulo que se encarga de hacerlo funcionar.
root@debian:/# basename `readlink /sys/class/input/input15/device/device/driver/module` snd_hda_intel
De nuevo nos muestra que el módulo encargado de hacer funcionar la entrada de micrófono es «snd_hda_intel«
la entrada funciona correctamente.
Bluetooth:
Buscamos módulos bluetooth con lsmod:
root@debian:/# lsmod |grep -i bluetooth bluetooth 119455 12 btusb,ath3k,bnep,rfcomm
Encontramos el módulo llamado bluetooth y buscamos información sobre él.
root@debian:/# modinfo bluetooth filename: /lib/modules/3.2.0-4-amd64/kernel/net/bluetooth/bluetooth.ko alias: net-pf-31 license: GPL version: 2.16 description: Bluetooth Core ver 2.16 author: Marcel Holtmann srcversion: 98975FF7263AA1C4428085F depends: rfkill,crc16 intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions parm: disable_esco:Disable eSCO connection creation (bool) parm: disable_ertm:Disable enhanced retransmission mode (bool) parm: enable_mgmt:Enable Management interface (bool) parm: enable_le:Enable LE support (bool)
La ubicación de este módulo es /lib/modules/3.2.0-4-amd64/kernel/net/bluetooth/bluetooth.ko y se encuentra en su versión 2.16 . Sus dependencias son«rfkill,crc16«.
El módulo funciona correctamente.
Módulos USB:
Buscamos dispositivos usb con lcpi:
root@debian:/# lspci |grep -i usb 00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04) 00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04) 00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
Como podemos ver, disponemos de 3 dispositivos usb. Ahora buscamos el módulo encargado de hacer funcionar dichos dispositivos.
root@debian:/# basename `readlink /sys/class/usb/hiddev0/device/driver/module` usbhid
El módulo encontrado es usbhid, a continuación con la instrucción modinfo obtendremos información de dicho módulo.
root@debian:/# modinfo usbhid filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/hid/usbhid/usbhid.ko license: GPL description: USB HID core driver author: Jiri Kosina author: Vojtech Pavlik author: Andreas Gal depends: hid,usbcore intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions
Obtenemos que dicho módulo depende de «hid,usbcore«, además de que su ubicación es /lib/modules/3.2.0-4-amd64/kernel/drivers/hid/usbhid/usbhid.ko
Todos los dispositivos usb funcionan correctamente.
Ratón Touchpad
Buscamos información acerca del ratón, esta vez utlilizamos «dmesg | grep mouse«:
[ 9.834332] psmouse serio1: synaptics: Touchpad model: 1, fw: 7.4, id: 0x1e0b1, caps: 0xd04773/0xa40000/0xa0400
Obtenemos que el módulo encargado de hacer funcionar el touchpad se llama «psmouse«, buscamos la ubicación del módulo usando find /lib/modules/ -name psmouse.ko
root@debian:/# find /lib/modules/ -name psmouse.ko /lib/modules/3.2.0-4-amd64/kernel/drivers/input/mouse/psmouse.ko
La ubicación del módulo es /lib/modules/3.2.0-4-amd64/kernel/drivers/input/mouse/psmouse.ko.
El Touchpad funciona correctamente.
Teclado
Buscamos información acerca del dispositivo del teclado:
root@debian:/# dmesg | grep Keyboard [ 2.451555] generic-usb 0003:03F0:A407.0001: input,hidraw0: USB HID v1.11 Keyboard [HP HP Link-5 micro dongle] on usb-0000:00:14.0-2/input0
Encontramos el nombre del dispositivo «hidraw0«, buscamos el módulo que se encarga de hacer funcionar el dispositivo.
root@debian:/# basename `readlink /sys/class/hidraw/hidraw0/device/driver/module` usbhid
El módulo encargado es «usbhid« , es el mismo módulo que hace funcionar los dispositivos usb por lo que llegamos a la conclusión de que nuestro teclado funciona via usb.
El teclado funciona correctamente.
Teclado Virtual (HotKeys)
Buscamos con dmesg información del módulo que se encarga de las HotKeys.
root@debian:/# dmesg |grep -i hotkeys [ 8.870387] input: Acer WMI hotkeys as /devices/virtual/input/input6
Buscamos con lsmod y filtamos por acer_wmi:
root@debian:/# lsmod | grep acer_wmi sparse_keymap 12760 1 acer_wmi
Mostramos información del módulo correspondiente.
root@debian:/# modinfo acer_wmi filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/platform/x86/acer-wmi.ko license: GPL description: Acer Laptop WMI Extras Driver author: Carlos Corbacho depends: wmi,sparse-keymap,rfkill intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions parm: mailled:Set initial state of Mail LED (int) parm: brightness:Set initial LCD backlight brightness (int) parm: threeg:Set initial state of 3G hardware (int) parm: force_series:Force a different laptop series (int) parm: ec_raw_mode:Enable EC raw mode (bool)
Observamos que el módulo tiene dependencias y encontramos la ubicación en «/lib/modules/3.2.0-4-amd64/kernel/drivers/platform/x86/acer-wmi.ko»
Las HotKeys funcionan corrrectamente.
Entrada HDMI
Con la orden «dmesg |grep HDMI« buscamos información de la entrada HDMI:
[ 13.548401] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input14
Obtenemos información acerca de la entrada, es el número 14 por lo que buscamos el módulo que se encarga de hacerlo funcionar.
root@debian:/# basename `readlink /sys/class/input/input14/device/device/driver/module` snd_hda_intel
De nuevo nos muestra que el módulo encargado de hacer funcionar la entrada HDMI es «snd_hda_intel«
La entrada hdmi funciona correctamente.
Dispositivo CD
Buscamos información del dispositivo con «dmesg |grep cdrom«:
root@debian:/# dmesg | grep cdrom [ 2.862157] cdrom: Uniform CD-ROM driver Revision: 3.20
Encontramos el dispositivo con el nombre del módulo que lo hace funcionar, en este caso el módulo es «cdrom«.
root@debian:/# modinfo cdrom filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/cdrom/cdrom.ko license: GPL intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions parm: debug:bool parm: autoclose:bool parm: autoeject:bool parm: lockdoor:bool parm: check_media_type:bool parm: mrw_format_restart:bool
En la salida de modinfo encontramos la ubicación del módulo, «/lib/modules/3.2.0-4-amd64/kernel/drivers/cdrom/cdrom.ko«., observamos que no tiene dependencias.
Este dispositivo funciona correctamente
PC Speaker
Por curiosidad decidí buscar por los dispositivos de entrada y en encontré el módulo de pc speaker, el pc speaker es uno de los primeros dispositivos en activarse al encender el pc, incluso antes que el video. Por lo tanto permite comunicar al usuario errores que pueden ocurrir a través de diferentes tipos de pitidos.
root@debian:/# dmesg | grep input7 [ 8.632509] input: PC Speaker as /devices/platform/pcspkr/input/input7
Buscamos el módulo que hace funcionar el dispositivo pc speaker.
root@debian:/# basename `readlink /sys/class/input/input7/device/driver/module` pcspkr
El módulo que hace funcionar pc speaker es «pcspkr«, mostramos información acerca del módulo:
root@debian:/# modinfo pcspkr filename: /lib/modules/3.2.0-4-amd64/kernel/drivers/input/misc/pcspkr.ko alias: platform:pcspkr license: GPL description: PC Speaker beeper driver author: Vojtech Pavlik <vojtech@ucw.cz> depends: intree: Y vermagic: 3.2.0-4-amd64 SMP mod_unload modversions
La ubicación del módulo es /lib/modules/3.2.0-4-amd64/kernel/drivers/input/misc/pcspkr.ko