Zasilaczowe perypetie cz. 1 – zasilacz do laptopa Dell

Na urlopie któregoś wieczora włączyłem laptopa (Dell Vostro 1440), a ten powitał mnie przy starcie komunikatem, że nie rozpoznał zasilacza. Dałem kontynuuj i myślałem, że na tym się skończy, ale szybko stwierdziłem, że to za mało. Laptop działał, ale bateria się nie ładowała. Dodatkowo, procesor działał z najniższym możliwym taktowaniem, czyli odpowiednik trybu powersave. Niezbyt komfortowe, delikatnie mówiąc. Sprzęt ma swoje lata (dokładnie pięć). Choć nie był zbyt intensywnie używany, to na urlopie po prostu wrzucałem zasilacz do plecaka. Stwierdziłem, więc że może gdzieś się kabel złamał.

Próbowałem poruszać kablem w co bardziej newralgicznych miejscach, ale bez rezultatu. Ponieważ wiedziałem, że zasilacz jest sprawny, postanowiłem poczytać o wewnętrznej żyle, służącej do sygnalizacji. Z innych zabaw z zasilaczami do laptopów wiedziałem, że jest tam obecne napięcie. Liczyłem, że to tylko prosty dodatek i jest zmostkowane z plusem. Postanowiłem zapytać znajomych, czy tak jest faktycznie. Gdyby tak było, to plan był prosty: wziąć wtyczkę i gniazdo i zrobić przedłużacz. Taki, który jednocześnie będzie mostkował plus z tą wewnętrzną żyłą.

Niestety, szybkie rozpytanie i rzut oka w wyszukiwarkę ujawniły, że jest to nieco bardziej skomplikowane. Jeśli chodzi o zasilacz Dell, to wewnętrzna żyła służy do komunikacji 1-wire zasilacza z laptopem. Natomiast sama usterka faktycznie jest popularna. Na tyle, że można kupić gotowe kable do przylutowania w zasilaczu. Tyle, że wspomniana przejściówka byłaby wielokrotnego użytku i prostsza w montażu…

Postanowiłem zmodyfikować podejście i zobaczyć, czy da się tani zrobić oszusta, czyli przedłużacz jak wyżej, ale udający zasilacz. Czyli trzeba by doczytać o komunikacji 1-wire na linii zasilacz-laptop i układach, które ją realizują. Już rozmyślałem, kto ze znajomych ma oscyloskop, ale sprawa okazała się o wiele prostsza. Ktoś już sprawdził komunikację, opisał format, a nawet zamieścił kod źródłowy i schematy. Tutaj znajdziecie cykl bardzo interesujących wpisów nt. komunikacji laptopów Dell z zasilaczami (oczywiście po angielsku) oraz repo GitHub. Jak widać autor również wpadł na pomysł przejściówki, tyle, że motywowany nieco inną potrzebą.

A jak się sprawa zakończyła u mnie? Nie zależy mi na debugu i zabawie, więc powyższe rozwiązanie nie bardzo ma sens ekonomiczny. Stosowne chipy do komunikacji 1-wire co prawda nie są drogie, bo – jeśli dobrze pamiętam – wychodziło ok. 2 zł za sztukę, ale w paczkach po 5-10 sztuk i przy sprowadzaniu z Chin. Dodatkowo trzeba jeszcze je zaprogramować, programator jest dość drogi, a nikt posiadający takie urządzenie nie przychodził mi do głowy.

Korzystanie z laptopa na najniższym taktowaniu było zauważalnie męczące. Nie bylem pewny, czy uda mi się otworzyć zasilacz w taki sposób, że złożę go z powrotem. Nie miałem te pewności, czy faktycznie chodzi o kabel, czy też może o uszkodzony układ do komunikacji. Ostatecznie szybko kupiłem zastępczy zasilacz oraz… dwa kable. Planuję spróbować zreanimować stary zasilacz przez wymianę kabla – przy odrobinie szczęścia na parę lat starczy, a przejściówka… może innym razem. Kable dwa, bo od sprzedawcy zasilacza, więc wysyłka gratis, a kosztowały niecałe 5 zł za sztukę.

Przy okazji: otworzyć zasilacz Dell do laptopa można wkładając nóż w szczelinę i delikatnie pukając w niego młotkiem. Sposób jest niestety inwazyjny, bo są one klejone. Po naprawie trzeba albo skleić klejem (wersja trwała/ładna), albo złożyć i brzydko skleić taśmą z wierzchu.

Narzekanie na laptopy Della

Mógłbym napisać, że narzekam po prostu na mojego laptopa, czy tam model, ale będzie ciut szerzej. Kiedyś napisałem recenzję Della Vostro 1440. Od tego czasu minęło półtora roku. Ostatnio bateria zaczęła gwałtownie tracić pojemność. Czas pracy na baterii spadł ze wspomnianych ~3h do 1h, a ostatnio do 30 minut. Niby akumulatory li-ion nie mają efektu pamięci, ale raz testowo rozładowałem do zera i… po naładowaniu było kilka minut więcej. Bateria niezbyt szanowana (co widać w komentarzach wcześniejszych wpisów), ale u młodej w laptopie o rok starszym FS Esprimo nadal jest 2h czy nawet więcej. Coś szybko zeszła.

Dziś zrobiłem kolejną próbę „reanimacji”, czyli pełnego rozładowania i skończyło się tak, że baterii w ogóle nie ładuje. Niby li-ion nie powinno się do zera rozładowywać, ale c’mon… W każdym razie dowiedziałem się ciekawych rzeczy o ogniwach w bateriach do laptopów, możliwości ich wymiany, koszcie tej operacji (markowe ogniwa do DIY w Polsce to ok. 70 zł z wysyłką) i ogólnie rynku nieoryginalnych baterii. Brr.

Przy okazji zerknąłem na stronę Della, czy nie ma nowszego BIOSu. Owszem, jest A03. U mnie jest A01. I ciekawostka: na stronie z BIOSem nie ma wersji do upgrade’u spod Linuksa. Dla sprzętu, który jest sprzedawany z samym Linuksem. Brawo. Live CD od producenta z Free DOS OSLT też nie ma.

Ponieważ zepsułem baterię, to ogólnie miałem wenę do psucia. Poszukałem możliwości upgrade’u bez Windows. Z poziomu BIOSu się nie da. Dobrzy ludzie podpowiedzieli Hirens Boot CD. Niestety, nie mam wolnego USB pod ręką. W końcu trafiłem na stronę opisującą flashowanie BIOS dla Delli spod Linuksa. Tamże dowiedziałem się, że Dell porzucił support dla Linuksa (przynajmniej, jeśli chodzi o BIOS).

Najpierw wypróbowałem metodę Updating the BIOS without without using biosdisk. Niestety, w momencie uruchamiania pliku wykonywanego w dosemu otrzymywałem komunikat o błędzie. Następnie spróbowałem Upgrading the BIOS using Dell’s „biosdisk” and „syslinux memdisk”. Wszystko dobrze, udało mi się włączyć DOSa. Po uruchomieniu V1440A03.EXE i pytaniu, czy flashować (sure!) zwis. Zero informacji na ekranie i zero zmian przez kilka minut. Ctrl-c nie działa. Niezbyt pewnie robię ctrl-alt-del… Wstał. Ze starym BIOSem.

Jak dorzucę do tego wszystkiego rzeźbę z touchpadem w innym modelu Della (Vostro 3360), to jestem praktycznie pewien, że następny laptop jaki kupię pod Linuksa, nie będzie miał znaczka Dell.

UPDATE: Tak gwoli ścisłości, z upower –dump:

vendor: Samsung SDI
model: DELL JXFRP21

Jak uruchomić touchpad na Dell Vostro 3360 pod Linuksem

Dell Vostro 3360 to zacny sprzęt, z którego korzystam w pracy, chyba od roku. Trochę żałuję, że nie kupiłem go do domu, ale kupowałem wcześniej, nie byłem jakoś przekonany do 13″, no i cena też trochę wyższa. Okazuje się, że jak najbardziej taki ekran daje radę. W pracy korzystam z wersji z dyskiem SSD i procesorem i5. Na początku było więcej, teraz jest 4,5-5h na baterii, więc wynik bardzo przyzwoity – długie wypady pociągiem, serie spotkań w firmie czy przedłużający sie wypad do kolokacji mu nie straszne i nie ma potrzeby korzystania z zasilacza.

Vostro 3360 daje się zmusić do działania z Linuksem (opis co jak działa może kiedyś popełnię, ale wcześniejsze opisy na potrzeby Linux on laptops nie cieszą się zainteresowaniem, więc motywacja jest nikła), ale nie jest to sprzęt, w którym wszystko działa OOTB. Nawet więcej: dawno nie widziałem sprzętu wymagającej takiej rzeźby w celu uruchomienia Linuksa. Grymasił na wersję kernela, co objawiało się… zwisami systemu (nic ciekawego w logach nie znalazłem). Co ciekawe tylko pod Debianem, kumple pod Ubuntu z IIRC taką samą wersją kernela problemu nie mieli. Na debianowym 3.6 (wówczas z experimental) działało stabilnie, więc tak zostało.

Inne problemy to: touchpad (naciśnięcie obu klawiszy naraz domyślnie nie emuluje naciśnięcia środkowego klawisza, co jest standardowym pod Linuksem – i ukochanym przeze mnie – skrótem do wklej), dźwięk czy karta sieciowa Atheros (o dziwo miedź). Dźwięk z alsą z Wheezy’ego działa IIRC od kopa, więc można uznać problem za załatwiony. Zresztą uruchomienie wszystkich komponentów Vostro 3360 na Linuksie (Debian Wheezy) ładnie opisał Łukasz. Co ciekawe, kernel 3.7 powodował jakieś problemy, ale nie pamiętam, czy chodziło o stabilność, czy może o coś innego.

W każdym razie czasy się trochę zmieniły, 3.6 jakiś taki starawy już. Doszły mnie słuchy, że karta sieciowa powinna działać bez magicznych zabiegów pod kernelem 3.11. Postanowiłem sprawdzić. Faktycznie, wydaje się działać. A system pozostaje stabilny. Pozostał jednak problem z touchpadem, więc postanowiłem zrobić instrukcję dla nowszej wersji kernela i nowszych plików ze strony, bo takie się pojawiły.

Na początek smutna sprawa: kernel 3.11, a dokładniej jego pliki nagłówkowe wymagają gcc w wersji 4.8, a to oznacza wymianę połowy systemu ze względu na zależności. Albo konieczność skompilowania kernela samodzielnie (czego na potrzeby desktopa wieki nie robiłem). Wybrałem bramkę numer dwa.

Wchodzimy na http://www.dahetral.com/public-download/alps-psmouse-dlkm-for-3-2-and-3-5/view i pobieramy plik psmouse-alps-1.3-alt.tbz.

Rozpakowujemy go (w /usr/src)

tar xvjf psmouse-alps-1.3-alt.tbz

Pobieramy debianowe źródło kernela

wajig install linux-source-3.11

I kopiujemy bieżący konfig (zakładam, że mamy uruchomiony kernel 3.11 z Debiana)

cp /boot/config-3.11-2-amd64 /usr/src/linux-source-3.11/.config

Kompilujemy i paczkujemy kernel oraz pliki nagłówkowe

cd /usr/src/linux-source-3.11
make-kpkg --append-to-version=-bpo-rozie --initrd kernel_image
make-kpkg --append-to-version=-bpo-rozie kernel_headers

Instalujemy utworzone pakiety

cd .. && wajig install linux-image-3.11.8-bpo-rozie_3.11.8-bpo-rozie-10.00.Custom_amd64.deb && 
wajig install linux-headers-3.11.8-bpo-rozie_3.11.8-bpo-rozie-10.00.Custom_amd64.deb

Kompilujemy i instalujemy odpowiedni moduł:

cd /usr/src/psmouse-alps-1.3 && ./alps.sh dkms_build_alps

Polecenie to automatycznie powoduje przeładowanie modułu psmouse, więc jeśli nie wystąpiły błędy, to od tej chwili wszystko powinno działać poprawnie, w szczególności naciśnięcie obu przycisków touchpada powinno wklejać zawartość schowka.

UPDATE: Prawdopodobnie da się prościej, o ile się nie jest ślepym. Wystarczy do sources.list dodać obsługę backportów dla Wheezy’ego:

deb http://http.debian.net/debian wheezy-backports main contrib non-free

i dostępne staną się kernele linux-image-3.11*… Cóż, kto nie ma w głowie, ma w… kompilatorze. Inna sprawa (i moje usprawiedliwienie!) to fakt, że nie tylko nikt nie zwrócił na to uwagi w komentarzach, ale nawet dwie osoby korzystają z mojego kernela.

UPDATE2: Wygląda na to, że od wersji 3.13 kernela nie potrzeba takich zabiegów. Przed chwilą zainstalowałem z debianowych backportów 3.13.5-1~bpo70+1 i… touchpad działa od kopa, bez kompilacji czegokolwiek.