Slackware Linux on Benq JoyBook S53
Last update: 03/02/2007
Autore: Alessio Di Fazio
www.capponcino.it/alessio
contact: e-mail
Panoramica HARDWARE
Iniziamo l'opera con un quadro generale sull'hardware che questo gioiellino possiede. Il comando lspci ci dice:
00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 04)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 04)
00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 04)
00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 04)
00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 04)
00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d4)
00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 04)
00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 04)
00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 04)
00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 04)
06:01.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
06:01.2 FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller
06:01.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller
06:03.0 Network controller: Intel Corporation PRO/Wireless 2200BG (rev 05)
06:08.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
Tabella riassuntiva
Ora diamo subito una panoramica sull'opera, in particolare quello che funziona a dovere, e quello che proprio non va
Componente | Funzionante? |
ACPI (video LCD [stand_by - suspend - power_off]) | |
ACPI (Centrino CPU freq. scaling - power states) | |
ACPI (Power Button) | |
ACPI (Lid Switch) | |
ACPI (Thermal Zone - CPU temperature) | |
ACPI (Battery - AC adapter) | Works!!! :))) Special Thanks Kesiev! |
Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller | Richiede la patch "915resolution" per avere la risoluzione di 1280x768 e gli snapshot dei DRI per abilitare il direct rendering. |
Synaptics Touch Pad | |
USB Controller | |
Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller |
Audio WORK!!!!!! Read the bugtraker: https://bugtrack.alsa-project.org/alsa-bug/view.php?id=1134 |
Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller | Probabilmente non funzionante per via del driver audio non funzionante. |
Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller |
Supported! Need kernel >= 2.6.19 the module is tifm under misc kernel section! |
FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller | Not tested. |
Network controller: Intel Corporation PRO/Wireless 2200BG | More info at http://ipw2200.sourceforge.net/ |
Ethernet controller: Realtek Semiconductor Co. | kernel module: "8139too" |
IrDA controller | Not tested. |
HotKeys | Thanks Kesiev! |
Bluetooth |
Kernel
È consigliabile l'uso di un kernel superiore al 2.6.14. Il config si riferisce al kernel 2.6.16
Il config del kernel-2.6.16: config-2.6.16
Moduli da caricare al boot:
rc.modules: rc.modules
/sbin/modprobe i2c_acpi_ec
/sbin/modprobe acpi_sbs
/sbin/modprobe bluetooth
/sbin/modprobe video
/sbin/modprobe button
/sbin/modprobe cpufreq_ondemand
/sbin/modprobe cpufreq_powersave
/sbin/modprobe cpufreq_conservative
/sbin/modprobe cpufreq_performance
/sbin/modprobe ipw2200
/sbin/modprobe agpgart
/sbin/modprobe i915
/sbin/modprobe usbmouse
/sbin/modprobe usb-storage
/sbin/modprobe 8139too
/sbin/modprobe fat
/sbin/modprobe vfat
/sbin/modprobe psmouse
/sbin/modprobe evdev
DSDT Table
È possibile modificare e cambiate la tabella del bios riguardante l'acpi...Non cambia molto, perché ci sono solamente due errori non influenti. Comunque è possibile scaricare la tabella corretta presso http://acpi.sourceforge.net/dsdt/view.php. Bisogna inoltre applicare una patch al kernel per poter caricare la tabella esterna. Per informazioni: http://gaugusch.at/kernel.shtmlXorg config
Per la configurazione di Xorg (versione 6.9) vi rimando al mio xorg.conf.
Xorg config: xorg.conf
Funzionano tutte le periferiche di input (mouse [USB and PS-2], tastiera e touchpad).
NEW: Independent dual monitor!
E' stata inserita una nuova versione di xorg.conf, la quale e' stata pulita ed e' stato inserito un doppio serverLayout. Tramite uno switch di comemnti nel file, e' possibile avere uno schermo indipendente sull'uscita VGA, posto alla destra dello schermo del laptop!Esempio:
-
Single monitor (solo quello del joybook)
# Option "DefaultServerLayout" "Dual Layout"
Option "DefaultServerLayout" "LCD Layout" -
Dual independent monitors (joybook + VGA (4:3))
Option "DefaultServerLayout" "Dual Layout"
# Option "DefaultServerLayout" "LCD Layout"
NOTA: Se avete problemi di visualizzazione, usate i sasti funzione (Fn+F3) per aggiornare i monitors.
Inoltre e' stato inserito il render ed il composite, che rendono KDE in grado di genstire finestre transparenti e/o ombreggiature! Vedere il pannello di KDE
DRI (Direct Rendering):
Bisogna scaricare ed installare l'ultimo snapshot dell'i915 dal sito di http://dri.freedesktop.org/snapshots/
(versione sicuramente funzionante: 25-Mar-2006 08:31). L'istallazione è molto semplice, basta uscire da X (root@joybook[~]# init 3), sompattare il file e lanciare l'installer!
NOTA: L'operazione va effettuata ogni volta che si ricompila il kernel.
Synaptic touchpad
Ebbene... Stanco di portarmi sempre dietro il mouse, ho deciso ci far andare decentemente il nostro amato touchPad Synaptics! :)Ecco come l'ho impostato io:
- Touch-click disabilitato
- Scroll bar verticale attivato
- Scroll bar orizzontale disattivato
- Maggiore presicione e sensibilità
- Doppio mouse; funziona anche quello esterno USB!
-
Scaricare e compilate (make && make install) i driver Symaptics dal sito http://web.telia.com/~u89404340/touchpad/files/ oppure usate il pacchetto slackware compilato da me synaptics-0.14.6-i386-1.tgz ed installatelo con il solito upgradepkg --install-new synaptics-0.14.6-i386-1.tgz
Vi consiglio di leggere anche il file INSTALL presente nell'archivio dei sorgenti - Ora dobbiamo assicurarci che i moduli psmouse e evdev siano caricati o presenti come build-in nel kernel (se usate il mio config li trovate già come moduli). Quindi diamo da root modprobe evdev e modprobe psmouse.
-
Ora non resta che modificare il file /etc/X11/xorg.conf
Potete utilizzare il mio xorg.conf - comunque ecco cosa occorre fare...
Per prima cosa bisogna caricare il modulo synaptics nella sezione iniziale "Module"Section "Module"
.....
# This loads the Synaptics module
Load "synaptics"
EndSection
Successivamente creiamo i due "InputDevice", uno per il touchpad, ed uno per il mouse USB esterno# Synaptics touchpad Section "InputDevice" Identifier "MouseSynaptics" Driver "synaptics" Option "Device" "/dev/psaux" Option "Protocol" "auto-dev" Option "LeftEdge" "1900" Option "RightEdge" "5400" Option "TopEdge" "1900" Option "BottomEdge" "4000" Option "FingerLow" "25" Option "FingerHigh" "30" Option "MaxTapTime" "0" #the touch-click is off! Option "MaxTapMove" "100" Option "VertScrollDelta" "100" #vertical scroll (0 to disable) Option "HorizScrollDelta" "0" #horizontal scroll (0 to disable) Option "MinSpeed" "0.09" Option "MaxSpeed" "0.22" Option "AccelFactor" "0.0017" Option "SHMConfig" "on" EndSection # USB mouse Section "InputDevice" Identifier "MouseUsb" Driver "mouse" Option "Protocol" "Auto" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5" EndSection
Ora basta reimpostare i Layout nella sezione "ServerLayout" ed il gioco è fatto! :D State attenti a scrivere bene gli identificatori, e ricordate di impostare il touchpad a "AlwaysCore"!Section "ServerLayout" # The Identifier line must be present Identifier "Simple Layout" Screen "Screen 1" InputDevice "MouseSynaptics" "AlwaysCore" # IMPORTANT! InputDevice "MouseUsb" "CorePointer" # IMPORTANT! InputDevice "Keyboard1" "CoreKeyboard" EndSection
- Ora riavviate X e godete! :D Potete sempre variare i parametri di xorg.conf per settare al meglio la velocità e tutte quelle cose personali... Credo che così sia la miglior soluzione per il JoyBook...!
Video 1280x768
L'Intel i915GML funziona alla perfezione, e possiede un accellerazione grafica (Direct Rendering) molto potente.
Per far andare la risoluzione di 1280x768 occorre usare la patch del BIOS 915resoluzion.
Una volta scompattato il file, troverete un file eseguibile "915resoluzion". Bisogna attivarlo al BOOT ad esempio inserendo il seguente comando in rc.local, e copiando l'eseguibile in /usr/bin/915resolution:
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local setup commands in here:
### SET THE RESOLUTION PATCH - 1280x768
/usr/bin/915resolution 38 1280 768 24
echo "Starting 915resolution..."
IRQ Problem - Thanks KesieV
Il joybook fa un utilizzo degli IRQ molto incasinato. Per risolvere il problema, e quindi per aumentare le prestazioni, consiglio di applicare al kernel le "beyond patches", scaricabili da http://iphitus.loudas.com/beyond.phpInoltre queste patch offrono molte altre funzioni interessanti al kernel vanilla:
Features
-ck(s) Con Kolivas Patchset, (server version available as option) -ide libATA/ide updates, Alsa updates and fixes, Dothan Speedstep, Pentium M undervolt, IBM ACPI fan control, Suspend2, vesafb-tng, reiser4, unionfs, squashfs, realtime-lsm, fbsplash, configurable mouse polling support, custom dsdt, Layer7, various fixes and updatesBIOS Upgrade
Consiglio vivamente di aggiornare il bios! Infatti ci sono problemi sul caricamento della batteria, che non viene caricata al 100%. From the official site: "Fixed battery can't charge to full capacity." Benq.itACPI Smart Battery
NEWS: il kernel 2.6.18 possiede di default smart battery!
Ma non funzionano i DRI con il suddetto kernel >_>
Il totale merito del lavoro va al formidabile KesieV, che ha ripreso il progetto SBS (Smart Battery) ormai abbandonato e l'ha resuscitato ed adattato al kernel 2.6.16!Premetto che funziona tutto alla perfezione ora...non occorre nemmeno sostutuire la tabella DSDT! :D
Per prima cosa scaricate il file acpi_sbs-20060419-kesiev.tar.bz2 che ha fornito KesieV!
Scompattare il file, ed applicate la patch al kernel-2.6.16
# make && make install
# /sbin/modprobe acpi_sbs
i2c-acpi-ec.c: ACPI EC SMBus adapter at 0x18
eth1: link down
ACPI: Smart Battery System [SBS0]
ACPI: Smart Battery Charger [SBC]
ACPI: Smart Battery Selector [SBSEL]
ACPI: Smart Battery Slot [SB0] (battery present)
Per automatizzare il processo, mettete in rc.modules i moduli smart battery da caricate al boot! Poi da KDE potete visualizzare la vostra amata batteria! :D
Freq. policy
Questa sezione mostra come poter usufruire al meglio delle doti del Centrino! E' infatti possibile cambiare la gestione della frequenza del processore facendo solamente un "echo" in un file...Per prima cosa spostiamoci nella directory /sys/devices/system/cpu/cpu0/cpufreq/
Troviamo vari file tra cui:
- cpuinfo_cur_freq: indica la frequenza attuale del processore;
- cpuinfo_max_freq: indica la frequenza massima supportata dal processore;
- cpuinfo_min_freq: indica la frequenza minima supportata dal processore;
- scaling_available_frequencies: mostra le possibili frequenze che il processore può avere;
- scaling_available_governors: mostra le possibili politiche di gestione delle frequenze supportate dal processore;
- scaling_cur_freq: indica l'attuale frequenza del processore, per la politica usata;
- scaling_driver: indica il tipo di processore, nel nostro caso "centrino";
- scaling_governor: indica l'attuale politica utilizzata
- scaling_max_freq: indica la massima frequenza imposta dall'attuale politica di gestione delle frequenze;
- scaling_min_freq: indica la minima frequenza imposta dall'attuale politica di gestione delle frequenze.
- performance: imposta staticamete la frequenza della CPU alla massima consentita;
- conservative: "dovrebbe" gestire automaticamente le politiche a seconda se si sta usando la batteria o l'adattatore della corrente (batteria=powersave - ac_adapter=performance);
- powersave: imposta staticamente la frequenza della CPU alla minima consentita;
- ondemand: la frequenza viene gestita dinamicamente a seconda del carico della CPU (centrino speed-step)
- userspace: in questa politica �l'utente che decide la frequenza per la CPU.
bash: echo: write error: Invalid argument
Joybook HotKeys
Grazie agli hotkey �possibile visualizzare le impostazioni degli switch hardware del nostro amato joybook!Per far andare gli hotkeys basta seguire i seguenti passi:
- scaricare l'archivio benqs53w-hotkey-linux.tar.bz2
- estrarre l'archivio e copiare il file .Xmodmap in /usr/X11R6/lib/X11/xinit/ naturalmente da ROOT
-
aggiorare il file rc.local inserendo le seguenti righe
alessio@joybook[~]# cat /etc/rc.d/rc.local
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local setup commands in here:
echo "Setting up multimedia keys..."
# help
/usr/bin/setkeycodes e02b 171
# light up-down
/usr/bin/setkeycodes e06e 238
# electricity
/usr/bin/setkeycodes e031 177
# Touchpad switch -disabled
/usr/bin/setkeycodes e071 172
# Touchpad switch -enabled
/usr/bin/setkeycodes e072 173
# wifi killswitch
/usr/bin/setkeycodes e040 192 - importare il file benq.khotkeys presente nell'archivio dal centro di controllo di KDE:
Control Center --> Regional & Accessibility --> Input Actions --> General Settings --> Import new actions. Poi confermare.
Se avete problemi nell'importare il file, date un bel chmod 775 al suddetto file.
Fn+F6 vedrete in alto a sinistra un piccolo popup che vi indica lo stato del touchpad - ON/OFF
Fn+F7/F8/F9 per le variazioni dell'audio anche se per ovvie ragioni sarà sempre muto :(
Fn+F12 per variare lo switch della WiFi e del Bluetooth.
BlueTooth
Come se non bastasse il nostro gioiello possiede anche un bel dispositibo Bluetooth! :) Per farlo andare egregiamente basta eseguire questi pochi passi:- Scaricate il mega pack mega-pack.tar.bz2
- Aprite la Shell e estraete l'archivio con il comando tar xfvj mega-pack.tar.bz2
- Entrate nella directory appena scompattata e da ROOT date il seguente comando che installerà tutto l'occorrente: upgradepkg --install-new *.tgz
- Ora caricate i driver per il bluetooth (se avete usato il mio config, già è tutto pronto) con il comando da ROOT: modprobe bluetooth
PS: Aggiungete questo comando nel file /etc/rc.d/rc.modules per caricare all'avvio il driver - Creare il file /etc/bluetooth/mypin.sh ed inserire le seguenti righe
#!/bin/bashUna volta creato il file date un chmod a+x /etc/bluetooth/mypin.sh
echo "PIN:XXXXX" # XXXXX is the secret PIN Number. Change this for instance 12345 - Ora scaricate il file hcid.conf e sovrascrivete quello che avete:
cp -v hcid.conf /etc/bluetooth/hcid.conf - Abbiamo finito! Se tutto è endato bene, fate partire l'aplicazione kbluetoothd e tutto dovrebbe funzionare!
Audio - little solution!
:DDDDD Ragazzi, l'audio funziona! il bel regalo di Natale fatto da Raymond!Ma cosa bisogna fare? Esistono due modi, il primo è compilare ALSA in debug mode (attivabile anche nel kernel, forse), il secondo (quello che ho adottato io) consiste nell'applicare una piccola patch al kernel!
-
Compilare ALSA passando i seguenti parametri:
./configure --with-cards=intel8x0 --with-debug=fullApplicare la patch effettuanto un semplice echo:echo 5c 0001 > '/proc/asound/card0/codec97#0/ac97#0-0+regs'
-
THIS WORK FOR ME!!! :D
Applicare la seguente patch al kernel:
- file /usr/src/YOUR_KERNEL_VERSION/sound/pci/ac97/ac97_codec.c
{ 0x43525970, 0xfffffff8, "CS4202", NULL, NULL },
{ 0x43585421, 0xffffffff, "HSD11246", NULL, NULL }, // SmartMC II
{ 0x43585428, 0xfffffff8, "Cx20468", patch_conexant, NULL }, // SmartAMC fixme: the mask...
{ 0x43585431, 0xffffffff, "Cx20551", patch_cx20551, NULL }, // ADD THIS LINE!!!
{ 0x44543031, 0xfffffff0, "DT0398", NULL, NULL },
{ 0x454d4328, 0xffffffff, "EM28028", NULL, NULL }, // same as TR28028?
- file /usr/src/YOUR_KERNEL_VERSION/sound/pci/ac97/ac97_patch.c
/* ADD THIS FUNCTION!!! */
int patch_cx20551(struct snd_ac97 * ac97)
{
snd_ac97_write_cache(ac97, 0x5c, snd_ac97_read(ac97, 0x5c) | 0x01 );
return 0;
}
/*
* Analog Device AD18xx, AD19xx codecs
*/
- file /usr/src/YOUR_KERNEL_VERSION/sound/pci/ac97/ac97_patch.h
int patch_cirrus_spdif(struct snd_ac97 * ac97);
int patch_conexant(struct snd_ac97 * ac97);
int patch_cx20551(struct snd_ac97 * ac97); /* ADD THIS PROTOTYPE!!!*/
int patch_ad1819(struct snd_ac97 * ac97);
- file /usr/src/YOUR_KERNEL_VERSION/sound/pci/ac97/ac97_codec.c