viernes, julio 27, 2007

Creative Zen V Plus

Para que linux pueda leer/escribir en el Zen V, necesitamos instalar la librería libmtp. Para que la librería compile y funcione necesitas: primero que tengas montado el sistema de ficheros usbfs. Mira en /etc/fstab si tiene la siguiente línea:
none /proc/bus/usb usbdevfs noauto,devmode=0666 0 0

También necesitas la librerías libusb:
tar xf libusb-0.1.12.tar.gz
cd libusb-0.1.12
./configure --prefix=/usr/local/usb
make
#Como root
make install

Para que el configure de la libmtp encuentre bien la libusb:
export LDFLAGS=-L/usr/local/usb/lib
export CPPFLAGS=-I/usr/local/usb/include

Ahora compilamos la libmtp:
tar xf libmtp-0.1.5.tar.gz
cd libmtp-0.1.5
./configure --prefix=/usr/local/zen
make
#Como root
make install
cp libmtp.rules /etc/udev/rules.d/82-mtp.rules
udevcontrol reload_rules

Si ahora conectamos el Zen en /dev se crearán varios enlaces simbólicos mtp -> usbdev. Lo puedes ver poniendo ls -lrt /dev

Vamos a probar si le detecta nuestro Zen. /usr/local/zen/bin/mtp-detect. Tiene que salir info del Zen.

Para instalar un entorno gráfico busca en la página de libmtp sección Downstream el que más te guste.

miércoles, enero 17, 2007

wifi con WPA III

Me he comprado la Wii y la he configurado con WPA, para hacerlo compatible he puesto el router utilice wpa y wpa2, y encripción TKIP y AES...

Ademas he modificado el fichero de configuración /usr/local/wifi/etc/wpa:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0

ap_scan=1

network={
ssid="MISSSID"
scan_ssid=1
psk="XXXXXXXX"
}

Para que el propio wpa_supplicant decida que utlizar.

miércoles, enero 03, 2007

wifi con WPA II

Con mi router wireless Comtrend HG536+ tengo problemas para identificarme mediante WPA, he configurado el router a WPA2 y en /usr/local/wifi/etc/wpa modifica a proto=WPA2.

Y parece que funciona.

sábado, diciembre 23, 2006

wifi con WPA

Nos bajamos wpa_supplicant. Editamos el fichero defconfig y descomentamos la línea CONFIG_DRIVER_IPW=y. También he añadido la lineas:
CFLAGS += -I/usr/local/ssh/include
LIBS += -L/usr/local/ssh/lib

Porque en /usr/local/ssh es donde tengo el OpenSSL y por último sed -i "s:-lcrypto:/usr/local/ssh/lib/libcrypto.a -ldl:g" Makefile

y copiamos el fichero defconfig a .config

Ahora make, después copiaremos los ejecutables wpa_cli y wpa_supplicant a el directorio /usr/local/wifi/sbin

Ahora creamos el archivo de configuración /usr/local/wifi/etc/wpa:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0

#Si ocultamos el SSID en el router
ap_scan=2

network={
ssid="MISSSID"
scan_ssid=1
proto=WPA
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk="XXXXXXXX"
}

Y lo lanzamos: /usr/local/wifi/sbin/wpa_supplicant -c /usr/local/wifi/etc/wpa -i eth1 -D wext -dd

Para comprobar que estamos conectados: /usr/local/wifi/sbin/wpa_cli status
Selected interface 'eth1'
bssid=00:16:38:c4:b9:51
ssid=MISSSID
pairwise_cipher=TKIP
group_cipher=TKIP
key_mgmt=WPA-PSK
wpa_state=COMPLETED
ip_address=192.168.1.20

Ya podemos levantar el interfaz: ifup eth1 ipv4

Para parar wpa_supplicant, /usr/local/wifi/sbin/wpa_cli terminate

sábado, diciembre 16, 2006

Touchpad

SynPS/2 Synaptics TouchPad es que tengo instalado. Para que lo detecte bien las xorg, nos bajamos el paquete Synaptics.

Desempaquetamos, make y copiamos synaptics_drv.so a /usr/xorg/lib/X11/modules/input

Ahora lo configuramos /etc/X11/xorg.conf:

Section "ServerLayout"
...
InputDevice "Synaptics Mouse" "AlwaysCore"
...
EndSection

Section "Module"
...
Load "synaptics"
...
EndSection

Section "InputDevice"
Identifier "Synaptics Mouse"
Driver "synaptics"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.09"
Option "MaxSpeed" "0.18"
Option "AccelFactor" "0.0015"
Option "SHMConfig" "on"
EndSection

Además del driver se han creado dos ejecutables, synclient y syndaemon. Con syndaemon podemos deshabilitar el touchpad cuando estamos escribiendo: syndaemon -i 1 -d.

viernes, diciembre 15, 2006

USB

Nos vamos al kernel:

Device Drivers -> SCSI device support ->
<M> SCSI device support
[*] legacy /proc/scsi/ support
<M> SCSI disk support

Device Drivers -> USB support ->
<M> Support for Host-side USB
[ ] USB verbose debug messages
[*] USB device filesystem
<M> EHCI HCD (USB 2.0) support
<M> UHCI HCD (most Intel and VIA) support
<M> USB Mass Storage support
[ ] USB Mass Storage verbose debug
[*] Datafab Compact Flash Reader support (EXPERIMENTAL)
[*] Freecom USB/ATAPI Bridge support
[*] ISD-200 USB/ATA Bridge support
[*] Microtech/ZiO! CompactFlash/SmartMedia support
[*] USBAT/USBAT02-based storage support (EXPERIMENTAL)
[*] SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)
[*] SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)
[*] Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)
[*] Olympus MAUSB-10/Fuji DPC-R1 support (EXPERIMENTAL)
[ ] The shared table of common (or usual) storage devices
<M> USB Human Interface Device (full HID) support
[*] HID input layer support

Ahora vamos cargando los módulos principales: usbcore, uhci_hcd

Para pen drive necesitamos cargar, usb_storage, scsi_mod y sd_mod, la enganchar el pen drive se reará un dispositivo scsi, que puede ser sda, sdb. Para verlo dmesg.

Ya sólo falta montar el dispositivo: mount /dev/sda1 /mnt/pendriver

NOTA: Los pendriver normalmente están con un sistema de fichero FAT.

jueves, diciembre 14, 2006

AIGLX + beryl

Vamos a instalar beryl un gestor de ventana OpenGL. Para ello nos bajamos los fuentes beryl, nos bajamos todos los ficheros svn:
svn co svn://svn.beryl-project.org/beryl/trunk beryl/

* beryl-core-svn, tiene dependencias de startup-notification, libxcomposite, libxdamage, libgl, libpng, glib2, gconf. Libxcomposite y Libxdamage ya está instalados con el xorg. Es importante que esten los fuentes de beryl-mesa en el directorio ../beryl-mesa.
* beryl-plugins-svn, depende librsvg, aquí realmente no obliga a instalar GTK2
* beryl-manager-svn, depende GTK2.
* beryl-dbus-svn, depende dbus.
* beryl-settings-svn, depende GTK2.
* emerald-svn, depende libwnck.
* emerald-themes-svn.

Con esto ya tendríamos el systema montado, si queremos una integración con kde instalaramos aquamarine-svn, si es con gnome heliodor-svn

Para compilar tenemos que hacer hacerlo por orden (ver arriba) y... ./autogen.sh --prefix=/usr/local/beryl-svn

Como no tengo instalado las dependencias en /usr, sino directorios diferentes tengo que decirselo a la utilidad aclocal:
export ACLOCAL="aclocal -I /usr/local/pkgconfig/share/aclocal -I /usr/local/gtk2/share/aclocal -I /usr/local/gnome/share/aclocal"

Una vez terminado de compilar modificamos el .xinitrc:
export PATH=$PATH:/usr/local/beryl-svn/bin:/usr/local/gnome/bin:/usr/local/gtk2/bin

emerald &
beryl-manager &

beryl --indirect-rendering --strict-binding dbus settings &

xterm

Para integrarlo con xfce:
xrdb $HOME/.Xresources

# start beryl and beryl-manager
emerald &
beryl --indirect-rendering --strict-binding &
beryl-manager &
startxfce4

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

lunes, diciembre 11, 2006

X Window: DRI

Compilamos los módulos del kernel:

Device Drivers -> Character devices ->
<*> /dev/agpgart (AGP Support)
<M> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
<M> Intel 830M, 845G, 852GM, 855GM, 865G
<M> i915 driver

En /etc/X11/xorg.conf añadimos en la sección "Device": Option "DRI" "True", en "Module": Load "dri", y añadimos la sección

Section "DRI"
Group "video"
Mode 0660
EndSection

X Window

Ya tengo todo instalado para xorg 7.1, sólo me falta los drivers. Me bajo todos y iré compiladon uno a uno lo que necesite.

El touchpad es:
Synaptics Touchpad, model: 1, fw: 5.9, id: 0x256eb1, caps: 0x804713/0x0
input: SynPS/2 Synaptics TouchPad as /class/input/input1

Input: keyboard, mouse (para el touchpad).
Video: Para nuestra Intel Corporation 82852/855GM Integrated Graphics Device el driver es i810.

Section "Device"
Identifier "Card0"
Driver "i810"
VendorName "Intel Corporation"
BoardName "82852/855GM Integrated Graphics Device"
EndSection



Ok, startx y funciona. El touchpad funciona pero habrá que instalar un driver más especifico.

Pero tenemos un problema direct rendering está Disabled, intentaremos solucionarlo.

sábado, diciembre 09, 2006

Administración de la energía IV: Suspensión II

Ok, ya lo he conseguido...

echo 524288000 > /sys/power/image_size

/usr/local/vbetool/sbin/vbetool vbestate save > /delme
sync ; echo -n platform > /sys/power/disk; echo -n mem > /sys/power/state
/usr/local/vbetool/sbin/vbetool vbetool post
/usr/local/vbetool/sbin/vbetool vbestate restore < /delme

rm /delme

/etc/rc.d/init.d/console start


Puede que necesites pulsar alguna tecla porque habrá saltado el protector de pantalla.

viernes, diciembre 08, 2006

RAMDISK

Para hacer más rápidas la compilaciones vamos a realizar un ramdisk, que no es otra cosa que un disco virtual en memoria.

Activamos la opción del kernel Device Drivers -> Block devices -> <M> RAM disk support
Como voy a utilizar ext2 para el ramdisk, la reiserfs utiliza 33 Mb para empezar: File systems -> <M> Second extended fs support

Ahora cargarmos el módulo, como quiero más de 4 Mb pongo la opción rd_size=100000, es decir, unos 100 Mb: modprobe rd rd_size=100000, y el módulo ext2.

Ahora tengo que formatear la "disco" voy a formatearlo en ext2, , mke2fs /dev/ram0, luego lo monto mount /dev/ram0 sources -t ext2

Y ahora el sonido...

Volvamos a las fuentes del kernel...

Device Drivers->
Sound ->
<M> Sound card support
Advanced Linux Sound Architecture ->
<M> Advanced Linux Sound Architecture
<M> OSS Mixer API
<M> OSS PCM (digital audio) API
[*] OSS PCM (digital audio) API - Include plugin system
<M> RTC Timer support
[*] Support old ALSA API
[*] Verbose procfs contents
[*] Verbose printk
PCI devices --->
<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller

Compilamos, instalamos los módulos (hay que volver a reinstalar los driver de la wifi) y ahora a cargar el módulo snd_intel8x0 vemos la salida de dmesg
ACPI: PCI Interrupt 0000:00:1f.5[B] -> Link [LNKB] -> GSI 5 (level, low) -> IRQ 5
PCI: Setting latency timer of device 0000:00:1f.5 to 64
intel8x0_measure_ac97_clock: measured 59491 usecs
intel8x0: clocking to 48000

Para tener compatibilidad OSS cargamos los módulos snd-mixer-oss y snd-pcm-oss

Sólo nos queda instalar ALSA para probar el sonido...

Seguimos con el ahorro: El disco duro

Para activar el ahorro de energia en el disco necesitamos hdparm:
make
make binprefix=/usr/local/ manprefix=/usr/local/ install

Probemos hdparm -I /dev/hda

/dev/hda:

ATA device, with non-removable media
Model Number: FUJITSU MHV2040AT
Serial Number: NS9CT5925NAG
Firmware Revision: 00000096
Standards:
Used: ATA/ATAPI-6 T13 1410D revision 3a
Supported: 6 5 4
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 78140160
device size with M = 1024*1024: 38154 MBytes
device size with M = 1000*1000: 40007 MBytes (40 GB)

Capabilities:
LBA, IORDY(cannot be disabled)
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = ?
Advanced power management level: 128 (0x80)
Recommended acoustic management value: 254, current value: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=240ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* DOWNLOAD_MICROCODE
* Advanced Power Management feature set
Power-Up In Standby feature set
* SET_MAX security extension
* Automatic Acoustic Management feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* SMART error logging
* SMART self-test
* IDLE_IMMEDIATE with UNLOAD
* SMART Command Transport (SCT) feature set
* SCT LBA Segment Access (AC2)
* SCT Error Recovery Control (AC3)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
not supported: enhanced erase
40min for SECURITY ERASE UNIT.
HW reset results:
CBLID- above Vih
Device num = 0 determined by the jumper
Checksum: correct

Y ahora hdparm -Tt /dev/hda

/dev/hda:
Timing cached reads: 1412 MB in 2.00 seconds = 706.00 MB/sec
Timing buffered disk reads: 80 MB in 3.02 seconds = 26.53 MB/sec

Aplicamos hdparm -d1 -c3 -m16 -M128 /dev/hda

Volvemos hacer hdparm -Tt /dev/hda
Timing cached reads: 1484 MB in 2.00 seconds = 741.98 MB/sec
Timing buffered disk reads: 80 MB in 3.01 seconds = 26.56 MB/sec

Realmente no se nota el cambio. Pero el hdparm nos sistema para suspender el disco duro con la opción -Sn, donde n * 5 de segundos de inactividad para suspender el disco.

Administración de la energía IV: Suspensión

Para suspender:
sync ; echo platform > /sys/power/disk; echo mem > /sys/power/state

El Q25 suspender se suspender, pero al despertarlo no se enviende la pantalla. Buscado por he encontrado una utilizadad vbetool que permite encender y apagar la pantalla.

Para compilar vbetool necesitamos las PCI Utils:
sed -i 's/null ;/null 2>\&1 ;/' update-pciids.sh
make PREFIX=/usr/local/pciutils
make PREFIX=/usr/local/pciutils install

install -v -m 755 -d /usr/local/pciutils/include/pci
install -v -m 755 -d /usr/local/pciutils/lib
install -v -m 644 lib/libpci.a /usr/local/pciutils/lib
install -v -m 644 lib/*.h /usr/local/pciutils/include/pci

Para el update-pciids.sh, que actuliza la base de datos de lspci, necesitamos wget (ya lo tenemos) y which:

cat > /usr/local/bin/which << "EOF"
#!/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 /usr/local/bin/which
chown -v root:root /usr/local/bin/which

Actualizamos la base de datos: /usr/local/pciutils/sbin/update-pciids

Ahora instalamos vbetool:
./configure --prefix=/usr/local/vbetool

Editamos el Makefile: y en CPPFLAGS añadimos -I/usr/local/pciutils/include y buscamos todos lo sitios donde ponga $(libdir)/libpci.a lo reemplazamos por /usr/local/pciutils/lib/libpci.a

make
make install

Probamos...

sync ; echo platform > /sys/power/disk; echo mem > /sys/power/state
/usr/local/vbetool/sbin/vbetool dpms on

Pero no funciona :-(

Administración de la energía IV: Hibernación

Para hibernar el Q25 hay que hacer:
#Amplio la imagen a mis 1,25 Gbytes: (1024 + 256) * 1024 * 1024

echo 1342177280 > /sys/power/image_size
sync ; echo platform > /sys/power/disk; echo disk > /sys/power/state

Para que al arrancar vaya al swap para recuperar, editar /boot/grub/menu.lst y en la opciones kernel añadir resume=/dev/hda3 (mi partición swap). Así es como quedaría:
kernel (hd0,1)/boot/bzImage-2.6.18.3 root=/dev/hda2 ro resume=/dev/hda3

Al volver la consola no recupera el tipo de letra correcto, para recupelarla: /etc/rc.d/init.d/console start.

Para que todo se automático creo el script:
echo 1342177280 > /sys/power/image_size
sync ; echo platform > /sys/power/disk; echo disk > /sys/power/state
/etc/rc.d/init.d/console start

El comando sync vacía los buffers del disco.

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.

Administración de la energía I

Con las opciones de kernel de administración de la energía nos permite ver el consumo el Q25, cuanta batería queda, modificar la frecuencia de procesador, suspensión e hibernación, y demás opciones de ahorro de la energía.

Hibernación:
Power management options (ACPI, APM) ->
[*] Power Management support
[*] Software Suspend
(/dev/hda3) Default resume partition

/dev/hda3 es mi partición swap, esta debe ser el doble, al menos, de la memoria RAM que tenga el Q25. Yo tengo 1,25 G y una swap de 3 G

ACPI:
Power management options (ACPI, APM) ->
[*] Power Management support
ACPI (Advanced Configuration and Power Interface) Support ->
[*] ACPI Support
[*] Sleep States (NEW)
<M> AC Adapter
<M> Battery
<M> Button
<M> Generic Hotkey
<M> Fan
<M> Dock
<M> Processor
<M> Thermal Zone (NEW)

Frecuencia del procesador:
Power management options (ACPI, APM) ->
[*] Power Management support
CPU Frequency scaling --->
[*] CPU Frequency scaling
<M> CPU frequency translation statistics
[*] CPU frequency translation statistics details
Default CPUFreq governor (performance) --->
--- 'performance' governor
<M> 'powersave' governor
<M> 'userspace' governor for userspace frequency scaling
<M> 'ondemand' cpufreq policy governor
<M> 'conservative' cpufreq governor
<M> Intel Enhanced SpeedStep
[*] Use ACPI tables to decode valid frequency/voltage pairs (NEW)
[*] Built-in tables for Banias CPUs (NEW)

Ok, salimos guardamos y compilar...

Lo instalamos los módulos. Esto hace que perdamos el driver de la tarjeta wifi, lo cual entramos en las fuentes del driver y... make install

miércoles, diciembre 06, 2006

wifi con WEP

Configuramos nuestro router wifi con encriptación wep y le ponemos una clave.

Ponemos el essid y channel con en el caso anterior y añadir la opción key:
iwconfig eth1 essid TOLETUM channel 11 key restricted key s:CLAVE


Vemos si hemos conectado iwconfig eth1 tiene que tener puesto el "Access Point" la MAC del router.

Y levantamos el interfaz.