Hibernacja przez /sys/power/state w KPowerSave

Wpis zamieszczony o 06:09:03, 01 lutego 2008 - 9 komentarzy


KPowerSave umożliwia pełne zarządzanie energią w środowisku graficznym KDE. Niestety, od czasu przejścia na dbus są z nim same problemy. Jeden z nich opisałem niedawno, dziś odkryłem kolejny. KPowerSave nie do końca potrafi jeszcze rozmawiać z pm-suspend odcinając w skuteczny sposób użytkownika od możliwości hibernacji (wstrzymania do RAM) swojego laptopa.

Na początek jednak odrobina teorii. W zamierzchłych czasach jądra 2.4.xx do usypiania komputera służył interfejs /proc/acpi/sleep. Jako że od pewnego czasu /proc jest zastępowany przez /sys, obsługę usypiania przejął interfejs /sys/power/state. Niestety, nie wszystkie aplikacje zdążyły przejść na nowy standard a na dodatek powstało zamieszanie wokół HALd oraz Dbus o to, które czym ma się zajmować. W konsekwencji końcowy użytkownik dostał kilka porządnie napisanych aplikacji, kilka wrapperów zapytań, kilka źle napisanych aplikacji i kilka żałosnych skryptów, które powinny działać a (czasem) nie działają. Do dobrych aplikacji można zaliczyć pm-utils, które w zamierzeniu mają zajmować się komunikacją z HAL i całkowicie obsłużyć zarządzanie energią w laptopach. Niestety - komunikacja z pm-utils w przypadku KPowerSave opiera się na okropnie napisanych skryptach ( /usr/lib/hal/scripts/linux/ ), które nie zawsze działają (w moim przypadku 2 na 3 komputery nie usypiały się). Jeśli mamy pecha i KPowerSave niezbyt chce usypiać nasz komputer musimy zadbać o to sami.

Włączamy konsolkę i wklepuje bezwiednie:

# cd /usr/sbin
# mv pm-suspend pm-suspend.old
# touch pm-suspend
# chmod +x pm-suspend
# nano -w pm-suspend

Do pliku dopisujemy:

#!/bin/bash
echo mem > /sys/power/state

I to tyle. Zdaję sobie sprawę że jest to bardzo brzydkie, jednak naprawdę to działa, w przeciwieństwie do obecnego stanu pm-utils... Rozwiązanie zostało sprawdzone na Debian Testing oraz Debian Unstable. Nie wiem jak ma się sprawa w innych dystrybucjach.

Na potwierdzenie problemu - garść linków: 1 2 3 4
Jak widać problem dotyczy nie tylko Debiana a także PLD, Mandrivy, Archa oraz Mepisa. Czasem się zastanawiam czy zmiany które obecnie widzimy w jądrze linuksa są aby na pewno dobre?

Czytaj dalej : 9 komentarzy

iPhone pod Debian GNU/Linux (część II)

Wpis zamieszczony o 13:27:55, 31 grudnia 2007 - 16 komentarzy


Po ostatnim wpisie zostałem dosłownie zasypany pytaniami od użytkowników iPhone'a oraz iPod Touch. Pytaliście o sposób konwersji filmów na te urządzenia korzystając z narzędzi linuksowych, pytaliście także o całkowite uwolnienie się od iTunes z zachowaniem możliwości zarządzania kontaktami (skrzynką adresową). Niektórzy pytali o sposób tworzenia własnych dzwonków w formacie m4r.

Wychodząc naprzeciw kolejnym pytaniom powstał ten wpis, w którym opiszę krok po kroku sposób całkowitej integracji iPhone//iPod Touch z Debianem. Zaczniemy od:

Konwersja filmów na format mov

Cel jest prosty. Z wykorzystaniem kopii filmu z dysku lokalnego zmienić jego rozmiar dostosowując go do ekranu iPhone oraz zastosować odpowiednie kodowanie, które pozwoli nam cieszyć się dobrą jakością obrazu i dźwięku. Zaznaczam na początku - nie będę skupiał się na optymalizacji samej kompresji ze względu na wielkość filmu. Nie ma sensu pisać skryptu do tej operacji - jest to jedna linijka w konsoli: ffmpeg -i "PLIK_WEJSCIOWY.AVI" -f mp4 -vcodec mpeg4 -maxrate 10000 -b 7000 -r 29.97 -qmin 2 -qmax 5 -bufsize 4096 -g 300 -acodec libfaac -ab 128k -s 480x320 -aspect 4:3 "PLIK_WYJSCIOWY.MOV" Musimy oczywiście podać odpowiedni plik wejściowy (film). Będziemy także potrzebować odpowiednich kodeków (jeśli jeszcze ich nie mieliśmy):

# apt-get install libfaac0 ffmpeg mpeglib  libmpeg2-4 faac

Po dość długim i mocno obciążającym komputer procesie otrzymamy plik wynikowy. Wgrywamy go na iPhone//iPod Touch wykorzystując np. gtkpod. Voila!

Synchronizacja książki adresowej

Tutaj nie jest już tak prosto i musimy skorzystać z aplikacji MNPlight dostępnej w Installerze w repozytorium: http://movenplay.gforge.inria.fr/iphone Obsługa aplikacji jest doskonale opisana na stronie głównej projektu, wierzę jednak że nie sprawi Wam ona żadnego problemu. MNPlight pozwala na import oraz eksport książki adresowej w formacie Mozilla Thunderbird (Google Mail) oraz na eksport//import kalendarza w formacie Google Calendar. Dodatkowo ma kilka innych funkcji, których osobiście nie użyłem ani razu. Odsyłam w tym celu na stronę projektu. Prościej się nie da ;-).

Własne dzwonki z mp3 na iPhone

UWAGA! Rozwiązanie to działa tylko w iPhone z oprogramowaniem 1.1.1!
iPhone wykorzystuje dźwięk zakodowany w formacie AAC. Większość z nas posiada pliki w formacie *.mp3, względnie *.ogg. Sam proces konwersji jest banalny. Dowolny plik dźwiękowy konwertujemy do *.wav z wykorzystaniem mplayer, po czym sam plik *.wav przepuszczamy przez odpowiedni enkoder (faac), który tworzy plik wynikowy m4a. Napisałem do tego celu prosty skrypt automatyzujący całość procesu:

#!/bin/bash
# Sebastian 'night' Łuczak
# http://night.jogger.pl
# Konwersja mp3 do dzwonka iPhone

echo "Podaj nazwe pliku mp3 (bez rozszerzenia!)"
echo -n ">"
read IN
OUT="`ls | grep $IN.mp3`"
echo "Zgrywam mp3 do wav:"
mplayer -vo null -vc null -ao pcm:fast:file=$IN.wav $OUT
faac -b 128 -c 44100 -w $IN.wav
rm $IN.wav

Zmieniamy rozszerzenie otrzymanego pliku wynikowego z *.m4a na *.m4r oraz dodajemy jedną spację przed rozszerzeniem pliku, np:

$ ls
dzwonek.m4a
$ mv dzwonek.m4a "dzwonek .m4r"
$ ls
dzwonek .m4r

Teraz musimy zająć się samym iPhone.

  1. Ściągnij poprawiony plik MeCCA
  2. Wgraj poprawiony plik do: /System/Library/Frameworks/MeCCA.framework/
  3. Wgraj plik m4r do katalogu /Library/Ringtones/
  4. Zrestartuj telefon

Dzwonek powinien być dostępny w menu.


Jak widać - z wykorzystaniem narzędzi OpenSource możemy bez problemu obsługiwać naszego iPhone całkowicie uniezależniając się od iTunes i produktów Apple.

Z tego co wiem, ten i poprzedni wpis to pierwsze kompletne HowTo w języku polskim traktujące o korzystaniu z iPhone pod Linuksem. Większość wiedzy wyniosłem z forum hackint0sh.org oraz własnych doświadczeń. Enjoy! Mam nadzieję że te artykuły komuś się przydały.

Czytaj dalej : 16 komentarzy

iPhone pod Debian GNU/Linux

Wpis zamieszczony o 00:47:39, 30 grudnia 2007 - 35 komentarzy


iphone i tuxWiedziałem że prędzej czy później i mnie dopadnie. Gadżeciarstwo? Wygoda? Cóż, nie będę odpowiadał na to pytanie. Recenzję sprzętu możecie przeczytać w moim MiniBlogu, tutaj chcę się skupić na chyba najciekawszym dla Was zagadnieniu - co tak naprawdę się stało gdy opadł kurz po bitwie "Tux vs iPhone" ;-). Lecimy!
...nie bójcie się o życie Tuxa - żyje. iPhone też.

iPhone + Linux = ?

Słyszeliście, że do obsługi iPhone potrzeba Windows/Mac + iTunes? Cóż, jak jeszcze raz to usłyszycie to możecie podać linka zwrotnego do tego wpisu ;-). Od samego początku użytkowania iPhone'a ani razu nie podpiąłem go do iTunes (nie liczę 1 razu, dzień po zakupie, kiedy musiałem wgrać jeszcze raz oprogramowanie bo "zabiłem" soft (z mojej winy)).
Co zatem potrzebujemy?

Instalacja potrzebnego oprogramowania:

# apt-get install sshfs gtkpod
# modprobe fuse
# mkdir -p /media/ipod
# chmod 777 /media/ipod
# adduser $USER fuse

Spod naszego użytkownika możemy teraz zamontować iPhone'a:

sshfs root@{IP}:Media /media/ipod

Gdzie za {IP} wpisujemy IP naszego iPhone'a podłączonego do sieci Wi-Fi. Niestety - do tej operacji będziemy potrzebować WiFi, do tej pory nie można wgrywać muzyki poprzez kabel USB.

Teraz chyba najtrudniejsza operacja:

$ gtkpod

Dodajemy iPhone jako urządzenie i... działa. Niestety - nie jest tak pięknie. Nie działają okładki (Cover Flow). Jest na to jednak rada. Musimy skorzystać z Ubuntowskiego repozytorium:

deb http://ppa.launchpad.net/ipod-touch/ubuntu gutsy main

W którym znajduje się paczka:

apt-get install ipod-convenience

Po instalacji i wstępnej konfiguracji procedura wgrywania muzyki i filmów na iPhone troszkę się zmienia:

$ iphone-mount
$ gtkpod

Tutaj normalnie działamy, dodajemy okładki itd. Pracę kończymy standardowo "Save Changes". Ostatnim krokiem (po dość długiej często procedurze dodawania mediów) jest wpisanie:

$ iphone-umount

Nie musimy restartować naszego telefonu (iPoda), wchodzimy do menu iPod i.... THIS IS COVERFLOWWWW!!!!!!!!!! ;-)

A zdjęcia?

Zdjęcia dostępne są po zamontowaniu iPhone'a w katalogu /media/ipod/DCIM/*. Można korzystać z demonów HAL pod KDE i Gnome (iPhone po podłączeniu kablem USB pokazuje się jako aparat fotograficzny), jednak oba w momencie kopiowania zdjęć zrywały połączenie z telefonem. Najwygodniej jest napisać własny skrypt do kopiowania zdjęć, np. podobny do tego:

#!/bin/bash
echo "Kopiuję zdjęcia z /media/ipod/DCIM/100APPLE/"
cp -r /media/ipod/DCIM/100APPLE/ /home/$USER/Desktop/Zdjecia_iphone

Cóż - prymitywne ale działa ;-). Niedługo napiszę lepszy skrypt do kopiowania zdjęć. Będzie on dostępny w repozytorium debianlinux.pl.
Jak widać - niewiele trzeba aby urządzenie napisane "only for MAC//WIN" odpalić i z powodzeniem używać na Linuksie. Apple : OpenSource Community - 0 : 1!

Mam nadzieję że powyższy opis komuś się przyda :-). ENJOY! Jeśli komuś przeszkadza korzystanie z paczek Ubuntu na Debianie wiedzcie, że niedługo w moim repozytorium debianlinux.pl pojawi się kilka paczek, w większości paczki umożliwiające używanie iPhone wraz z gtkpod oraz Amarokiem w sposób przezroczysty.

Czytaj dalej : 35 komentarzy

Instalacja pakietu Debiana bez zależności

Wpis zamieszczony o 08:21:45, 17 listopada 2007 - 22 komentarze


UWAGA! Poniższego rozwiązania używasz na własną odpowiedzialność. SOA#1

System zależności zaimplementowany w apt-get ma swoje wady i zalety. Niewątpliwą zaletą jest "zrób-i-zapomnij". Jedna komenda instaluje pakiet, jego zależności i wszystko co potrzebne do działania programu. Jednak największa zaleta czasem staje się największą wadą...

Dawno temu zauroczony systemem pakietów w Slackware napisałem sobie mały skrypt do instalacji pakietu Debiana bez jego zależności.

#!/bin/bash
sciezka=$(apt-cache show $1 | grep Filename | awk '{print $2}')
sciagnij=$(wget -c http://ftp.debian.org/$sciezka)
plik=$(apt-cache show $1 | grep Filename | awk '{print $2}' | sed "s/\//  /g" | awk '{print $5}')
dpkg -x $plik /

Tak proste że aż głupie :-). Jeden minus - trzeba znać nazwę paczki i podać ją jako parametr. Sam plik zapisujemy np. jako /sbin/apt-inst i cieszymy się jak dzieci że każdy program który zainstalujemy w ten sposób będzie zachowywał się mniej więcej "in_Slackware_style":

$ krusader
krusader: error while loading shared libraries: libkjsembed.so.1: cannot open shared object file: No such file or directory

No ale co za problem ;-).

# apt-inst libkjsembed1

I krusader działa :-).

Raz jeszcze piszę - używasz na własną odpowiedzialność. Sam skrypt przydaje się przy budowaniu minimalistycznego systemu, trzeba jednak posiadać dość sporą wiedzę na temat systemu Linux. Za pomocą tego "czegoś" udało mi się swego czasu zmieścić działającego Debiana + KDE (dość minimalistyczne) w około 350MiB. Wiem że możliwe jest postawienie bardzo minimalistycznego systemu (np. dla routera sprzętowego) na mniej niż 64MiB. Komuś się uda? :-)

ps. wbrew pozorom lubię slacka a wpis nie ma charakteru prowokacji :)

ps2. uprzedzam pytanie: "Jak odinstalować taki program?" - ręcznie. Sprawdzasz gdzie się zainstalował i ręcznie usuwasz pliki.

Czytaj dalej : 22 komentarze

Toshiba Portege R200 + Debian GNU/Linux

Wpis zamieszczony o 15:15:54, 06 listopada 2007 - 25 komentarzy


Niedawno zakupiłem nowego notebooka - Toshiba Portege R200 (nadal posiadam Toshibę Portege R111, którą nie tak dawno opisywałem). I ponownie - w sieci nie znalazłem żadnego w miarę aktualnego opisu konfiguracji systemu Linux pod tą maszynkę. Opiszę sposób uruchomienia wszystkich możliwości tego sprzętu pod Linuksem. Troszkę się z tym męczyłem, więc mam nadzieję że komuś się to przyda i zaoszczędzi sobie kilka godzin pracy.

Specyfikacja techniczna

Dokładniejszy spis daje nam lspci:

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 03)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03)
00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3)
00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03)
00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 03)
01:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 15)
02:05.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
02:0b.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
02:0b.4 Generic system peripheral [0805]: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller

Oraz lsusb:

Bus 001 Device 003: ID 08ff:2580 AuthenTec, Inc.

No to lecimy! Jeśli nie wymieniam poniżej któregoś z podzespołów znaczy to, że działa bez żadnych modyfikacji - OOTB.

CPU - do poprawnej obsługi skalowania częstotliwości procesora potrzebujemy modułów toshiba_acpi asus_acpi freq_table acpi_cpufreq backlight processor toshiba i wszystkich zależnych od nich. Dodatkowe pakiety:

# apt-get install powersaved acpid kpowersave

Karta graficzna - chipset Intela jest jednym z najlepiej wspieranych obecnie układów graficznych pod linuksem. Ustawiamy sterownik na i810 i po bólu, dostajemy pełną akcelerację. Czasem trzeba zainstalować dodatkowy pakiet (np. w przypadku instalacji netinstall):

# apt-get install libgl1-mesa-dri

Karta bezprzewodowa - tutaj zaczynają się schody. Musimy skorzystać z modułów madwifi.

# apt-get install module-assistant madwifi-source

Resztę wyklikujemy w module-assistant. Kompilacja przechodzi bezboleśnie. Dodatkowe informacje o module możemy zobaczyć w:

# modinfo ath_pci

Klawisze dodatkowe - pakiet fnfxd zapewnia pełną obsługę klawiszy dostępnych pod kombinacją Fn+X.

# apt-get install fnfxd

Czytnik linii papilarnych - działa, jednakże nie istnieją jeszcze wrappery do komunikacji z biolib. Możemy skanować swoje paluszki ale do systemu nie zalogujemy się. Zacząłem pracę nad implementacją uwierzytelniania aes2501. Aby pobawić się skanerem instalujemy:

# apt-get install aes2501-wy

I odpalamy przez:

# aes2501 -r

W katalogu bieżącym dostaniemy skan swoich linii papilarnych. Niestety, wszelkie próby zastosowania istniejących metod identyfikacji i porównania skanu (m.in. mechanizm thinkfinger czy też biolib) kończą się klęską. Jeśli komuś udało odpalić się ten czytnik proszę o kontakt.

Bluetooth - implementacja toshiba_acpi nie umożliwia w domyślnej wersji korzystania z interfejsu Bluetooth. Toshset nie jest wspierany, więc trzeba ręcznie nakładać łatki na toshiba_acpi. Udostępniam Wam kod źródłowy toshiba_acpi.c dla jądra 2.6.23.1 do zastąpienia ręcznie w źródłach oraz patch na toshiba_acpi.c do nałożenia na dowolne jądro.
toshiba_acpi.c dla 2.6.23.1
patch_toshiba_acpi
Jedna i druga metoda zakłada kompilację jądra. Zamieszczam dodatkowo swój plik .config.
Config dla 2.6.23.1
Po kompilacji mamy dostęp do dodatkowego urządzenia /proc/acpi/toshiba/bluetooth. Parametry które przyjmuje interfejs to:

# echo enable > /proc/acpi/toshiba/bluetooth
# echo disable > /proc/acpi/toshiba/bluetooth

Zalety i wady, czyli czy warto...

Z zalet tego notebooka należy wymienić ciężar, małe rozmiary, bardzo długi czas działania na baterii, niski pobór prądu oraz design. Laptop po prostu świetnie się prezentuje :-). Całości dopełnia matowa matryca z bardzo dobrym podświetleniem.
Wady? Ano są... R200 potrafi niesamowicie się grzać. Jeśli nie zapewnimy prawidłowej wentylacji (np. będziemy korzystać z laptopa leżąc w łózku) temperatura procesora wzrośnie do 74 stopni Celsjusza(!). Obudowa jednak pozostaje chłodna (co dziwne). Z wad należy wymienić za małą klawiaturę. Osoby z dużymi palcami będą miały kłopoty z płynnym pisaniem.

Pełna recenzja zawarta jest w linku z początku tego artykułu więc nie będę się już rozwodził. Polecam ten sprzęt, pod Linuksem sprawuje się świetnie! Jeśli zatem potrzebujesz laptopa ultraprzenośnego, działającego kilka do kilkunastu godzin na baterii, dobrze wspieranego przez Linuksa wybierz Toshibę Portege R200. Nie będziesz żałował :-).

Czytaj dalej : 25 komentarzy

LinkLift