Search:  
Gentoo Wiki

Acer_Aspire_3025_WLMi

This page is a candidate for deletion 
Reason given: Not English, please translate this page to English, move this page to the right language wiki or delete this page
If you disagree with its deletion, please explain why on its discussion page.
If you intend to fix it, please remove this notice, but do not remove this notice from articles that you have created yourself.
Make sure no other pages link here and check the page's history before deleting.
This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related
Wikipedia has an article on:
Acer Aspire

Contents

Ogólnie

Acer Aspire 3025WLMi
Acer Aspire 3025WLMi

Firma Acer znana jest z produkcji laptopów o bardzo dobrych parametrach, w przystępnej cenie. Wspomniany tutaj Acer Aspire 3025WLMi został wyposażony w procesor AMD Sempron 3300+ taktowany z częstotliwością 2.0 GHz. Zaimplementowano w nim technologię PowerNow! pozwalającą na płynne i - co ważne - niezauważalne skalowanie prędkości procesora, w zależności od wymaganej mocy obliczeniowej.

Procesor ten został zbudowany w oparciu o architekturę K8, jednak nie obsługuje 64bitowej przestrzeni adresowej. Podczas testów wydajności kompilowanych aplikacji w oparciu o optymalizacje ze specyficznymi flagami, najwydajniejsza i najbardziej przystępna okazała się kombinacja:

File: /etc/make.conf
CFLAGS="-s -O2 -finline-functions -march=k8 -mtune=k8 -pipe -fomit-frame-pointer 
        -ffast-math -m3dnow -funroll-loops -msse -mmmx -msse2"

Jest to konfiguracja w miarę stabilna (podczas emerge -eD world nie wystąpiły żadne błędy kompilatora).

Specyfikacja

W opisywanej maszynie zastosowano następujące peryferia:

Code: lspci
00:00.0 Host bridge: ATI Technologies Inc RS480 Host Bridge (rev 01)
00:02.0 PCI bridge: ATI Technologies Inc RS480 PCI-X Root Port
00:06.0 PCI bridge: ATI Technologies Inc RS480 PCI Bridge
00:07.0 PCI bridge: ATI Technologies Inc Unknown device 5a39
00:13.0 USB Controller: ATI Technologies Inc IXP SB400 USB Host Controller
00:13.1 USB Controller: ATI Technologies Inc IXP SB400 USB Host Controller
00:13.2 USB Controller: ATI Technologies Inc IXP SB400 USB2 Host Controller
00:14.0 SMBus: ATI Technologies Inc IXP SB400 SMBus Controller (rev 11)
00:14.1 IDE interface: ATI Technologies Inc Standard Dual Channel PCI IDE Controller ATI
00:14.3 ISA bridge: ATI Technologies Inc IXP SB400 PCI-ISA Bridge
00:14.4 PCI bridge: ATI Technologies Inc IXP SB400 PCI-PCI Bridge
00:14.5 Multimedia audio controller: ATI Technologies Inc IXP SB400 AC'97 Audio Controller (rev 02)
00:14.6 Modem: ATI Technologies Inc ATI SB400 - AC'97 Modem Controller (rev 02)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility X700 (PCIE)
06:05.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)
06:06.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
06:06.2 FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller
06:06.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller
06:06.4 Class 0805: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller
06:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)

Podczas kilkutygodniowej pracy, udało mi się uruchomić wszystkie dostępne w maszynie urządzenia, łącznie z niestandardowym czytnikiem kart firmy Texas Instruments.

Konfiguracja

Procesor AMD Sempron 3300+

Konfiguracja jądra

Konfiguracja jądra ogranicza się do poprawnego ustawienia architektury procesora. Proponuję skorzystanie z opcji:

Linux Kernel Configuration: Kernel 2.6.17
Processor type and features  --->
  Processor family (Opteron/Athlon64/Hammer/K8)

Wykorzystanie technologii PowerNow!

PowerNow! pozwala na dynamiczne skalowanie taktowaniem procesora w zależności od wymaganej w danym momencie mocy obliczeniowej. Pozwala to w maszynach przenośnych na skuteczną oszczędność energii, oraz zmniejszenie zużywania się komponentów elektronicznych - sam procesor wytwarza wtedy mniej ciepła, które dla tego typu podzespołów nie jest niczym dobrym.

AMD Sempron 3300+ pozwala na dynamiczny wybór spośród 4 prędkości taktowania: 800 MHz, 1.60 GHz, 1.80 GHz, 2.00 GHz. Wiele osób mogłoby pomyśleć, ze 800 MHz to niewiele. I tu błąd - jak potem się okaże, 800 MHz jest wystarczające do słuchania muzyki, przeglądania WWW, wysyłania poczty czy oglądania filmów z DVD czy DivX. Wystarczające nie znaczy, że wydajność tych operacji jest w jakiś sposób obniżona - to w jaki sposób działa PowerNow! jest niezauważalne dla użytkownika i raczej nie odczuje dyskomfortu z tego powodu, że ta opcja jest włączona.

Zajmijmy się konfiguracją jądra:

Linux Kernel Configuration: Kernel 2.6.17
ACPI (Advanced Configuration and Power Interface) Support  --->
  [*] ACPI Support
  [*]   Sleep States
  <*>   AC Adapter   # opcjonalnie
  <*>   Battery
  <M>   Button
  <M>   Video
  <M>   Fan
  <M>   Processor
  <M>     Thermal Zone
CPU Frequency scaling  --->
  [*] CPU Frequency scaling
  <*>   CPU frequency translation statistics
      Default CPUFreq governor (userspace)
  <*>   'performance' governor
  <*>   'powersave' governor
  <*>   'ondemand' cpufreq policy governor
  <*>   'conservative' cpufreq governor
  <M>   ACPI Processor P-States driver
  <*>   AMD Opteron/Athlon64 PowerNow!

Kompilujemy jądro, kopiujemy je do katalogu /boot, restartujemy system. Posiadamy już obsługę PowerNow! w jądrze. Aby całość jednak poprawnie działała, musimy skorzystać ze specjalnego demona - cpufreqd. Emergujemy więc wymagane pakiety poleceniem emerge cpufreqd. Po kompilacji, sprawdzamy, czy razem z demonem cpufreqd skompilowany został pakiet cpufrequtils. Wydajemy polecenie cpufreq-info. Powinniśmy otrzymać wynik podobny bądź identyczny do tego:

Code: cpufreq-info
cpufrequtils 001: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
  driver: powernow-k8
  CPUs which need to switch frequency at the same time: 0
  hardware limits: 800 MHz - 2.00 GHz
  available frequency steps: 800 MHz, 1.60 GHz, 1.80 GHz, 2.00 GHz
  available cpufreq governors: conservative, ondemand, powersave, userspace, performance
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz (asserted by call to hardware).

Wynik może nieznacznie się różnić (głownie linia "current CPU frequency is ..."). Nie posiadamy jak narazie działającego demona cpufreqd. Musimy go więc skonfigurować. Otwieramy plik /etc/cpufreqd.conf i modyfikujemy go tak, aby wyglądał jak poniżej:

File: /etc/cpufreqd.conf
General]
pidfile=/var/run/cpufreqd.pid
poll_interval=3
enable_plugins=acpi_ac, acpi_battery
enable_remote=1
remote_group=wheel
verbosity=5
[/General]

[Profile]
name=ondemand
minfreq=0%
maxfreq=100%
policy=ondemand
[/Profile]

[Profile]
name=powersave
minfreq=0%
maxfreq=50%
policy=powersave
[/Profile]

[Rule]
name=battery
ac=off
profile=powersave
[/Rule]

[Rule]
name=ac
ac=on
profile=ondemand
[/Rule]

Jest to podstawowa konfiguracja demona cpufreqd. Przy powyższych ustawieniach, na zasilaniu bateryjnym (ac=off), maszyna będzie pracowała jedynie z prędkością 800 MHz - tak, aby zaoszczędzić jak najwięcej energii. W przypadku pracy na zasilaczu (ac=on), demon cpufreqd zezwoli procesorowi na pracę w całym zakresie dostępnych częstotliwości - tak, aby elastycznie dopasować się do aktualnie wymaganej mocy obliczeniowej. Zapisujemy plik i uruchamiamy demona poleceniem /etc/init.d/cpufreqd start. Jeżeli nie ma żadnych błędów, sprawdzamy prędkość taktowania procesora. Jeżeli grep "MHz" /proc/cpuinfo pokazuje nam prędkośc równą 800 MHz w przypadku stanu spoczynku, wszystko jest OK. Zalecam sprawdzenie przyjętej przez procesor prędkości w przypadku różnych obciążeń.

Dodajemy demona do sekwencji startowej systemu poleceniem rc-update add cpufreqd default.

Kontroler USB

Znajdujący się z laptopie kontroler USB1.1 i USB2.0 jest bezproblemowo i w pełnym zakresie obsługiwany przez znajdujący się w jądrze moduł hci_usb. Aby go uruchomić, w konfiguracji jądra wybieramy kolejno:

Linux Kernel Configuration: Kernel 2.6.17
USB support  --->
  <*> Support for Host-side USB
  [*]   USB device filesystem
  <*>   EHCI HCD (USB 2.0) support
  <*>   OHCI HCD support
  <*>   UHCI HCD (most Intel and VIA) support

Karta graficzna

Grafika zainstalowana w laptopie to ATI X700. Jest to chip bardzo wydajny jeżeli brać pod uwagę główne zastosowanie maszyn przenośnych. Zamontowana w niej pamięć 128 MB jest to pamięć własna, nie przydzielana dynamicznie z pamięci RAM, co jest ogromnym atutem tej maszyny.

Skorzystamy ze standardowych sterowników ati-drivers dostarczonych przez firmę ATI. W przypadku xorg-x11 7.0 bądź wyższych, wystarczy modyfikacja pliku /etc/make.conf i zmodyfikowanie bądź dodanie zmiennej VIDEO_CARDS:

File: /etc/make.conf
VIDEO_CARDS="fglrx"

A następnie kompilacja pakietu xorg-server poleceniem emerge xorg-server. W przypadku starszych wersji serwera X'ów, kompilujemy sterowniki poleceniem emerge ati-drivers.

Konfiguracja serwera X.org jest w tym wypadku stosunkowo prosta. Edytujemy plik /etc/X11/xorg.conf i modyfikujemy w nim wymagane sekcje:

File: /etc/X11/xorg.conf
Section "Module"
        Load  "dbe"
        SubSection "extmod"
        Option "omit xfree86-dga"
        EndSubSection
        Load  "type1"
        Load  "freetype"
        Load  "glx"
        Load  "dri"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
EndSection

Section "Device"
        Identifier  "ATI Graphics Adapter"
        Driver      "fglrx"
        Option      "no_accel" "no"
        Option      "no_dri" "no"
        Option      "mtrr" "off" # disable DRI mtrr mapper, driver has its own code for mtrr
        Option      "DesktopSetup" "mirror"
        Option      "ScreenOverlap" "0"
        Option      "GammaCorrectionI" "0x00000000"
        Option      "GammaCorrectionII" "0x00000000"
        Option      "Capabilities" "0x00000000"
        Option      "CapabilitiesEx" "0x00000000"
        Option      "VideoOverlay" "on"
        Option      "OpenGLOverlay" "off"
        Option      "CenterMode" "off"
        Option      "PseudoColorVisuals" "off"
        Option      "Stereo" "off"
        Option      "StereoSyncEnable" "1"
        Option      "FSAAEnable" "no"
        Option      "FSAAScale" "1"
        Option      "FSAADisableGamma" "no"
        Option      "FSAACustomizeMSPos" "no"
        Option      "FSAAMSPosX0" "0.000000"
        Option      "FSAAMSPosY0" "0.000000"
        Option      "FSAAMSPosX1" "0.000000"
        Option      "FSAAMSPosY1" "0.000000"
        Option      "FSAAMSPosX2" "0.000000"
        Option      "FSAAMSPosY2" "0.000000"
        Option      "FSAAMSPosX3" "0.000000"
        Option      "FSAAMSPosY3" "0.000000"
        Option      "FSAAMSPosX4" "0.000000"
        Option      "FSAAMSPosY4" "0.000000"
        Option      "FSAAMSPosX5" "0.000000"
        Option      "FSAAMSPosY5" "0.000000"
        Option      "UseFastTLS" "0"
        Option      "BlockSignalsOnLock" "on"
        Option      "UseInternalAGPGART" "yes"
        Option      "ForceGenericCPU" "no"
        BusID       "PCI:1:0:0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "ATI Graphics Adapter"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1280x800"
        EndSubSection
EndSection

Section "DRI"
        Mode         0666
EndSection

Dodatkowo, włączenie akceleracji sprzętowej wymaga załadowania modułu fglrx do jądra. Edytujemy więc plik /etc/modules.autoload.d/kernel-2.6 i umieszczamy w nim w dowolnej linijce nazwę naszego modułu:

File: /etc/modules.autoload.d/kernel-2.6
fglrx

Zapisujemy plik, wydajemy polecenie reboot, bądź ładujemy moduł poleceniem modprobe fglrx. Po ponownym uruchomieniu systemu, uruchamiamy X'y. Całość powinna uruchomić się w najwyższej możliwej rozdzielczość obługiwanej przez ekran naszej maszyny - 1280x800 pikseli.

Karta Ethernet Gigabit

Zamontowany w mojej maszynie chip firmy Realtek jest w pełni wspierany przez jądro. Wystarczy kompilacja modułu r8169:

Linux Kernel Configuration: Kernel 2.6.17
Ethernet (1000 Mbit)  --->
  <M> Realtek 8169 gigabit ethernet support

Kompilujemy jądro / moduł, ładujemy go poleceniem modprobe r8169. Polecenie ifconfig -a powinno pokazać nam nasz interfejs sieciowy:

Code: ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0A:E4:EE:11:F7
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5560932 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5254167 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3470461766 (3309.6 Mb)  TX bytes:907028760 (865.0 Mb)
          Interrupt:11 Base address:0xa400
.

Karta 802.11g Wireless LAN

Na dobrą sprawę, nie znalazłem jakichś bezproblemowych sterowników natywnie napisanych pod linuxa. Z pomocą przychodzi pakiet ndiswrapper pozwalający na wykorzystanie sterowników Windowsowych do obsługi sprzętu WiFi. Całość działa świetnie ;) Ważnym elementem jest w tym przypadku kompilacja jądra z obsługą urządzeń radiowych. Zaznaczamy więc opcję:

Linux Kernel Configuration: Kernel 2.6.17
Wireless LAN (non-hamradio)  --->
  [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions

i kompilujemy jądro.

W tym momencie przygotować musimy oryginalne sterowniki naszego WiFi dostarczane przez Acera na płytkach, wraz z laptopem. Inną możliwością jest pobranie ich ze strony Acera ftp://ftp.support.acer-euro.com/notebook/aspire_3020_5020/driver/80211g.zip .

Emergujemy pakiet ndiswrapper poleceniem emerge ndiswrapper. Rozpakowujemy nasze sterowniki i szukamy pliku bcmwl5.inf. Wydajemy polecenie ndiswrapper -i /sciezka/do/bcmwl5.inf. Ladujemy modul ndiswrapper poleceniem modprobe ndiswrapper. W tej chwili polecenie ifconfig -a powinno pokazać nam nasz nowy interfejs sieciowy:

Code: ifconfig -a
wlan0     Link encap:Ethernet  HWaddr 00:14:A4:65:92:0F
          inet addr:192.168.2.2  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:10 Memory:c0204000-c0206000

Dodajemy modul ndiswrapper do pliku /etc/modules.autoload.d/kernel-2.6 poleceniem echo "ndiswrapper" >> /etc/modules.autoload.d/kernel-2.6.

Karta dźwiękowa i modem

Zarówno chipset ATI Technologies Inc IXP SB400 AC'97 jak i modem ATI Technologies Inc ATI SB400 - AC'97 jest bezproblemowo obsługiwany przez znajdujące się w jądrze sterowniki.

Przydatnym w tym przypadku pakietem będzie alsa-utils (chociażby do przywracania stanu mixera po wylaczeniu maszyny). Dlatego też emergujemy ten pakiet poleceniem emerge alsa-utils. Dodajemy alsasound do sekwencji startowej poleceniem rc-update add alsasound default.

Kolejnym krokiem bedzie konfiguracja jądra tak, aby obsługiwało nasz sprzęt. Mamy dwie opcje - możemy skompilować sterowniki jako moduły, bądź wkompilować je w jądro. W pierwszym przypadku alsa sama wykryje nasz sprzęt i załaduje odpowiednie moduły. W razie gdyby jednak było inaczej, musimy skorzystać z polecenia alsaconf.

Linux Kernel Configuration: Kernel 2.6.17
Sound  --->
  <*> Sound card support
  Advanced Linux Sound Architecture  --->
    <*> Advanced Linux Sound Architecture
    <*>   OSS Mixer API
    <*>   OSS PCM (digital audio) API
    [*]     OSS PCM (digital audio) API - Include plugin system
        PCI devices  --->
          <M> ATI IXP AC97 Controller
          <M> ATI IXP Modem

Po skompilowaniu tych modułów, powinniśmy posiadać już obsługę dźwięku i modemu. Ich konfiguracje pozostawiam już Wam.

Touchpad, urządzenia wskazujące

Oczywiscie, czym byłby laptop, bez obsługi touchpada ... z tym nie ma najmniejszych problemów. W przypadku X'ów w wersji 7.0 bądź wyższej, w pliku /etc/make.conf modyfikujemy bądź dodajemy zmienną INPUT_DEVICES:

File: /etc/make.conf
INPUT_DEVICES="keyboard mouse synaptics"

Zauważyłem jednak jedną ciekawą własność. Tak czy inaczej, nasz touchpad wykrywany jest jako zwykła mysz. Dlatego korzystanie z modułu synaptics wydało mi się niekonieczne. Dodatkowo u mojego kolegi moduł ten prowadził do błędu kernel panic. Dlatego też, po skompilowaniu xorg-server, modyfikujemy plik /etc/X11/xorg.conf. Po skonfigurowaniu grafiki i wszelkich innych urządzeń wskazujących, mój plik /etc/X11/xorg.conf wygląda następująco:

File: /etc/X11/xorg.conf
Section "ServerLayout"
        Identifier     "Server Layout"
        Screen         "Screen0" 0 0
        InputDevice    "Mouse1" "CorePointer"
        InputDevice    "Keyboard1" "CoreKeyboard"
EndSection

Section "Files"
        RgbPath      "/usr/X11R6/lib/X11/rgb"
        FontPath     "/usr/X11R6/lib/X11/fonts/local/"
        FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
        FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
        FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
        FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
        FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection

Section "Module"
        Load  "dbe"
        SubSection "extmod"
        Option "omit xfree86-dga"
        EndSubSection
        Load  "type1"
        Load  "freetype"
# This loads the GLX module
        Load  "glx"
        Load  "dri"
EndSection

Section "InputDevice"
        Identifier  "Keyboard1"
        Driver      "kbd"
        Option      "AutoRepeat" "500 30"
        Option      "XkbRules" "xorg"
        Option      "XkbModel" "pc105"
        Option      "XkbLayout" "pl"     # specyficzne dla polskiej klawiatury, powinno zostać zmodyfikowane
                                         # w zależności od potrzeb
EndSection
Section "InputDevice"
        Identifier  "Mouse1"
        Driver      "mouse"
        Option      "Protocol" "ImPS/2"
        Option      "ZAxisMapping" "4 5"
        Option      "Device" "/dev/input/mice"
        Option      "Emulate3Buttons"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
EndSection

Section "Device"
        Identifier  "Standard VGA"
        Driver      "vga"
        VendorName  "Unknown"
        BoardName   "Unknown"
EndSection

Section "Device"
        Identifier  "ATI Graphics Adapter"
        Driver      "fglrx"
        Option      "no_accel" "no"
        Option      "no_dri" "no"
        Option      "mtrr" "off" # disable DRI mtrr mapper, driver has its own code for mtrr
        Option      "DesktopSetup" "mirror"
        Option      "ScreenOverlap" "0"
        Option      "GammaCorrectionI" "0x00000000"
        Option      "GammaCorrectionII" "0x00000000"
        Option      "Capabilities" "0x00000000"
        Option      "CapabilitiesEx" "0x00000000"
        Option      "VideoOverlay" "on"
        Option      "OpenGLOverlay" "off"
        Option      "CenterMode" "off"
        Option      "PseudoColorVisuals" "off"
        Option      "Stereo" "off"
        Option      "StereoSyncEnable" "1"
        Option      "FSAAEnable" "no"
        Option      "FSAAScale" "1"
        Option      "FSAADisableGamma" "no"
        Option      "FSAACustomizeMSPos" "no"
        Option      "FSAAMSPosX0" "0.000000"
        Option      "FSAAMSPosY0" "0.000000" 
        Option      "FSAAMSPosX1" "0.000000"
        Option      "FSAAMSPosY1" "0.000000"
        Option      "FSAAMSPosX2" "0.000000"
        Option      "FSAAMSPosY2" "0.000000"
        Option      "FSAAMSPosX3" "0.000000"
        Option      "FSAAMSPosY3" "0.000000"
        Option      "FSAAMSPosX4" "0.000000"
        Option      "FSAAMSPosY4" "0.000000"
        Option      "FSAAMSPosX5" "0.000000"
        Option      "FSAAMSPosY5" "0.000000"
        Option      "UseFastTLS" "0"
        Option      "BlockSignalsOnLock" "on"
        Option      "UseInternalAGPGART" "yes"
        Option      "ForceGenericCPU" "no"
        BusID       "PCI:1:0:0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "ATI Graphics Adapter"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1280x800"
        EndSubSection
EndSection

Section "DRI"
        Mode         0666
EndSection

W przypadku, jeżeli będziesz chciał korzystać zarówno z touchpada jak i z myszy USB, NIE modyfikuj parametru

File: /etc/X11/xorg.conf
Option      "Device" "/dev/input/mice"

Osobiście także korzystam z takiego rozwiązania (touchpad jest dosyć niepraktyczny w przypadku gier), dlatego ta konfiguracja przewiduje podobną ewentualność.

Czytnik kart firmy Texas Instruments

Najwięcej problemów sprawiał mi czytnik kart firmy Texas Instruments. Nie dość, że jest to niestandardowy czytnik, to sama firma nawet w minimalnym stopniu nie próbuje ułatwić życia użytkownikom Linux'a poprzez wydawanie choćby "zamkniętych" sterowników.

Poniższe porady skierowane są dla posiadaczy jądra w wersji 2.6.17 bądź nowszej, w której znajduje się moduł sdhci. Wersje wcześniejsze nie posiadają tego modułu. Dodatkowo, całość nieco trąci amatorką, ale ... sprawia, że wbudowany czytnik działa (aktualnie jedynie z kartami MMC i SD).

Na samym początku konfigurujemy jądro. Będziemy potrzebowali kilku dodatkowych modułów, takich jak np. fakephp.

Linux Kernel Configuration: Kernel 2.6.17
PCI Hotplug Support  --->
  <M>   Fake PCI Hotplug driver
MMC/SD Card support  --->
  <M> MMC support
  <M>   MMC block device driver
  <M>   Secure Digital Host Controller Interface support

Narazie NIE KOMPILUJEMY jądra.

Modyfikujemy plik /usr/src/linux/drivers/pci/hotplug/fakephp.c ręcznie, bądź łatamy poleceniem patch:

File: /usr/src/linux/drivers/pci/hotplug/fakephp.c
--- fakephp.c.orig      2006-02-18 00:19:56.240839250 +1100
+++ fakephp.c   2006-02-17 02:55:28.598947500 +1100
@@ -212,6 +212,8 @@
                                }
                        }
                }
+               pci_bus_size_bridges(bus);
+               pci_bus_assign_resources(bus);
        }
 }

Podobnie jak kilku innych użytkowników tego patcha, nie potrafię określić czy tego typu modyfikacja jest bezpieczna i czy nie spowoduje wieszania się maszyny. Osobiście nie miałem żadnych problemów z działaniem, więc myślę, że na podobnych maszynach kod ten będzie działał równie stabilnie.

Po tej operacji możemy przystąpić do kompilacji jądra. Jeżeli wszystko poszło bez problemu, upewniamy się, czy jądro nie powinno zostać ponownie załadowane. Jeżeli nie, kontynuujemy bez ponownego uruchamiania laptopa.

Osobiście próbowałem napisać skrypt, który automatycznie konfigurowałby czytnik tak, aby był poprawnie widoczny przez system. W końcu napisałem coś w tym stylu:

Code: cardreader.sh
#!/bin/bash

# Card reader
# Upewnij sie, ze dane moduly napewno nie zostaly zaladowane
modprobe -r fakephp > /dev/null 2>&1   
modprobe -r sdhci > /dev/null 2>&1
modprobe -r mmc_block > /dev/null 2>&1
modprobe -r mmc_core > /dev/null 2>&1
#

# Zaladuj fakephp
modprobe fakephp > /dev/null 2>&1
#

# Ustaw parametry urzadzen
setpci -s 06:06.0 86.b=90:d0 > /dev/null 2>&1
echo 0 > /sys/bus/pci/slots/0000:06:06.3/power > /dev/null 2>&1
echo 0 > /sys/bus/pci/slots/0000:06:06.2/power > /dev/null 2>&1
echo 0 > /sys/bus/pci/slots/0000:06:06.0/power > /dev/null 2>&1
echo 1 > /sys/bus/pci/slots/0000:06:06.0/power > /dev/null 2>&1
setpci -s 06:06.3 4c.b=02 > /dev/null 2>&1
setpci -s 06:06.4 04.b=06 > /dev/null 2>&1
setpci -s 06:06.4 88.b=01 > /dev/null 2>&1
#

# Zaladuj wymagane moduly do obslugi czytnika
modprobe mmc_core > /dev/null 2>&1
modprobe sdhci > /dev/null 2>&1
modprobe mmc_block > /dev/null 2>&1
#
# >

Specjalnie uzylem "> /dev/null 2>&1", poniewaz w niektorych wypadkach wyrzucane sa bledy, ktore raczej nie wplywaja na funkcjonalnosc samego czytnika. W poczatkowych fazach, sugeruje to przekierowanie usunac, by miec pewnosc czy aby napewno bledy te sa nieznaczace.

Jezeli wszystko poszlo poprawnie, po umieszczeniu karty w naszym czytniku, polecenie fdisk -l wyświetli nam pojemność i nazwę naszego urządzenia, które możemy już spokojnie zamontować:

Code: fdisk -l
Disk /dev/hda: 100.0 GB, 100030242816 bytes
255 heads, 63 sectors/track, 12161 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        1245    10000431   83  Linux
/dev/hda2            1246       12161    87682770    5  Extended
/dev/hda5            1246        6225    40001818+  83  Linux
/dev/hda6            6226       10480    34178256   83  Linux
/dev/hda7           10481       11725    10000431   83  Linux
/dev/hda8           11726       12161     3502138+  82  Linux swap / Solaris

Disk /dev/mmcblk0: 128 MB, 128450560 bytes
8 heads, 32 sectors/track, 980 cylinders
Units = cylinders of 256 * 512 = 131072 bytes

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1               1         980      125391+   6  FAT16

WAZNE!: nie zalecam wykonywania kilkukrotnie skryptu odpowiadającego za zmianę ustawień PCI i konfigurowanie czytnika. Wystarczy, jeżeli zostanie uruchomiony przy starcie systemu. W przeciwnym wypadku zdarzały się dziwne "zacięcia" systemu.

Retrieved from "http://www.gentoo-wiki.info/Acer_Aspire_3025_WLMi"

Last modified: Sun, 10 Aug 2008 22:44:00 +0000 Hits: 15,315