Mostrando entradas con la etiqueta módulos. Mostrar todas las entradas
Mostrando entradas con la etiqueta módulos. Mostrar todas las entradas

miércoles, diciembre 13, 2006

módulo ipw2200

El siguiente paso es hacer funcionar el USB, concretamente un pen driver (genérico), un mp3 (creative) y el ratón usb.

Como voy a estar compilado continuamente el kernel y no quiero estar instalando el módulo de la tarjeta wireless, muevo el directorio wireless de /lib/modules/2.6.18.3/kernel/driver/net a /lib/modules/2.6.18.3/net

jueves, diciembre 07, 2006

Administración de la energía III: ACPI

Ya hemos visto el módulo processor.

ac:
al cargar el módulo ac crea un fichero /proc/acpi/ac_adapter/ADP1/state indicando si está conectado a la red eléctrica (on-line) o no (off-line)

thermal:
Crea el directorio /proc/acpi/thermal_zone/THRM con información sobre la temperatura del Q25. El fichero más interesante es temperature que nos indica la temperatura del cpu.

fan:
Crea el fichero /proc/acpi/fan/FAN0/fan, el estado del ventilador.

dock:
Según la documentación del kernel añade soporte para ACPI controle las dock stations.

button:
crea en /proc/acpi/button los directorios lid/* power/* sleep/*. /proc/acpi/button/lid/LID0/state nos indica si está levantada la tapa o no del Q25.

battery:
Crea /proc/acpi/battery/BAT1 con información de la bateria y consumo. El fichero info nos da información de la bateria y state con el estado cargando/descargando, consumo en eso momento y energia almacenada.

Administración de la energía II: Frecuencia del procesador

Vemos a que velocidad corre nuestro procesador:
cat /proc/cpuinfo

cpu MHz : 1594.910

modprobe speedstep-centrino

Esto carga los módulos speedstep_centrino, freq_table, processor

dmesg:
Time: acpi_pm clocksource has been installed.
ACPI: CPU0 (power states: C1[C1] C2[C2])
ACPI: Processor [CPU0] (supports 2 throttling states)

Y crea el directorio /sys/devices/system/cpu/cpu0/cpufreq. En este directorio hay varios ficheros que nos sirve para dar órdenes y obtener información. El que nos interesa es scaling_governor, es aquí donde vamos a decirle cual va a ser la política de frecuencia del procesador. Por defecto hemos decidido que sea performance, que significa que el procesador irá a 1,6 Ghz. Tenemos 4 políticas:
a) performance. Mayor frecuencia de procesador siempre. 1,6 Ghz
b) powersave. Menor frecuencia de procesador siempre. 600 Mhz
c) userscape. La frecuencia que queramos dentro del rango: cat scaling_available_frequencies
d) ondemand. Según la demanda.
e) conservate. Según la demanda pero enfocado al ahorro.

Las politicas que podemos utilizar están en el fichero scaling_available_governors. Por defecto sólo está performance. Yo utilizo conservate, así pues, modprobe cpufreq_conservative y lo activo: echo -n conservative > scaling_governor

Volvemos hacer cat /proc/cpuinfo
cpu MHz : 600.000

A mayor frecuencia mayor consumo y mayor calor disipado

Lamentablemente no se puede poner por defecto la política conservative, así pues habrá que hacer un guión de arranque que lo haga.

martes, diciembre 05, 2006

Y ahora la wifi: Intel Corporation PRO/Wireless 2200BG

Vamos hacer que linux reconozca la tarjeta wifi del portátil. La tarjeta es 0000:02:04.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05). Este portátil se conoce como Intel Centrino.

Vamos a las fuentes kernel: make menuconfig
Device Drivers -> Network device support
[*] Wireless LAN drivers (non-hamradio) & Wireless Extensions
< > Intel PRO/Wireless 2200BG and 2915ABG Network Connection

OJO: Desactivado Intel PRO/Wireless 2200BG and 2915ABG Network Connection

Device Drivers -> Generic Driver Options:
[*] Select only drivers that don't need compile-time external firmwar
[*] Prevent firmware from being built
<m> Userspace firmware loading support

Networking:
[*] Networking support
< > Generic IEEE 802.11 Networking Stack

OJO: Desactivado Generic IEEE 802.11 Networking Stack

Cryptographic options:
[*] Cryptographic API
<m> AES cipher algorithms (i586)
<m> ARC4 cipher algorithm
<m> Michael MIC keyed digest algorithm

Library routines:
<m> CRC32 functions

Ahora nos descargamos los fuentes del driver y el firmware. Todo esto está en http://ipw2200.sourceforge.net/firmware.php y http://ipw2200.sourceforge.net/downloads.php.

Todas las fuentes y firmware los dejo en /usr/src.

Las instrucciones son para la versión 3.0 de firmware y 1.2.0 del driver.

Para compilar el driver necesitamos ieee80211 subsystem for Linux, los fuentes están http://ieee80211.sourceforge.net/downloads.php. La versión que voy a utilizar es 1.2.15
tar xf ieee80211-1.2.15.tgz
cd ieee80211-1.2.15
make
make install

Con esto instala en /lib/modules/2.6.18.3/net/ieee80211/ los módulos necesarios.
ieee80211_crypt_ccmp.ko ieee80211_crypt_tkip.ko ieee80211.ko
ieee80211_crypt.ko ieee80211_crypt_wep.ko

Ahora el driver:

tar xf ipw2200-1.2.0.tgz
cd ipw2200-1.2.0
make KSRC=/usr/src/linux
make KSRC=/usr/src/linux install

/usr/src/linux es dónde están los fuentes de linux

Ya tenemos instalado en /lib/modules/2.6.18.3/kernel/drivers/net/wireless/ el módulo ipw2200.ko

Por último instalamos el firmware:
tar xf ipw2200-fw-3.0.tgz
cd ipw2200-fw-3.0
cp -v *.fw /lib/firmware/

Veamos si está todo bien:
modprobe firmware_class
modprobe crc32

modprobe ieee80211
tail /var/log/kern.log
ieee80211_crypt: registered algorithm 'NULL'
ieee80211: 802.11 data/management/control stack, 1.2.15
ieee80211: Copyright (C) 2004-2005 Intel Corporation jketreno@linux.intel.com
modprobe ieee80211_crypt_wep
tail /var/log/kern.log
ieee80211_crypt: registered algorithm 'WEP'

modprobe ipw2200
tail /var/log/kern.log
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.0dmq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
PCI: Found IRQ 11 for device 0000:02:04.0
PCI: Sharing IRQ 11 with 0000:02:08.0
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: Detected geography ZZD (13 802.11bg channels, 0 802.11a channels)

No borro los directorios con las fuentes.

Para que la tarjeta wifi sea eth1:
borramos /etc/udev/rules.d/75-persistent-net-generator.rules
y creamos/editamos /etc/udev/rules.d/70-persistent-net.rules con la siguiente linea: SUBSYSTEM=="net", SYSFS{address}=="DIRECCION_MAC", NAME="eth1"

Para saber la DIRECCION_MAC: cat /sys/class/net/eth1/address o con ip addre campo link/ether

Ok, todo tiene buena pinta. Ahora tenemos que instalar Wireless Tools.

Para ello seguimos los pasos de BLFS.

lunes, diciembre 04, 2006

La tarjeta de Red: Intel Corporation 82801DB PRO/100

La tarjeta de red que lleva el Q25 es: 0000:02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (MOB) Ethernet Controller (rev 81)

Esta tarjeta está soportada por el kernel, al menos la versión que yo voy a utilizar v2.6.18.3.

Device Drivers -> Network device support ->
[*] Network device support

Device Drivers -> Network device support -> Ethernet (10 or 100Mbit) ->
[*] Ethernet (10 or 100Mbit)
Generic Media Independent Interface device suppor
[*] EISA, VLB, PCI and on board controllers
Intel(R) PRO/100+ support

Ya cargamos los módulos necesaríos: mii, e100
Module Size Used by
e100 28040 0
mii 4352 1 e100

y con dmesg vemos que la tarjeta está reconocida:
e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
e100: Copyright(c) 1999-2005 Intel Corporation
ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:02:08.0[A] -> Link [LNKE] -> GSI 11 (level, low) -> IRQ 11
e100: eth0: e100_probe: addr 0xe0201000, irq 11, MAC addr XX:XX:XX:XX:XX:XX
e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex

Configuramos la tarjeta. En /etc/sysconfig/network-devices creamos el directorio ifconfig.eth0, y en este nuevo directorio el fichero ipv4:
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.15
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=255.255.255.0

Paramos y arrancamos el script de inicio:
/etc/rc.d/init.d/network stop
/etc/rc.d/init.d/network start

Para comprobar que está correcto: ip addr
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 192.168.1.15/24 brd 255.255.255.0 scope global eth0

Para que siempre la tarjeta de red RJ45 sea eth0 hacemos lo siguiente:
borramos /etc/udev/rules.d/75-persistent-net-generator.rules
y creamos /etc/udev/rules.d/70-persistent-net.rules con la siguiente linea: SUBSYSTEM=="net", SYSFS{address}=="DIRECCION_MAC", NAME="eth0"

Para saber la DIRECCION_MAC: cat /sys/class/net/eth0/address o con ip addre campo link/ether