Monitor z starego panelu LCD (z laptopa, tabletu, zepsutego monitora …)

Monitorek z HDMI z starego laptopowego panelu LCD. Przydaje się do raspberry pi i tym podobnych wynalazków.

Czego nam potrzeba?

  • driver V59 i firmware (to firmware dla urządzenia z BG, które jest wyposażone w tuner TV rafael micro 840). W firmware wyszukujemy podobnego do naszego panelu LCD, ta sama rozdzielczość, podobny symbol. Jak będziemy (opcjonalnie) podpinać klawiaturę 5 przyciskową wgrywamy firmware z katalogu z 5 w nazwie, jak 7 przycisków to 7 w nazwie. Można też V59 ciut taniej bez metalowego, źle wyciętego (nie trafili w pionie z dziurą usb) bezela. Istnieje również wersja V29 bez obsługi mediów z USB.
  • kabel LVDS, można cały zestaw kabli albo kupować pojedynczo. Ewentualnie zmajstrować samemu. Istotne by (niezależnie czy kupowany czy DIY) sprawdzić poprawność połączeń w kablu. Sprawdzamy instrukcję do posiadanej matrycy z instrukcją do płytki V59, druga instrukcja. W przypadku gotowca najszybciej porównywać masy GND i zasilania by wyłapać ten właściwy dla naszej matrycy.
  • opcjonalna klawiatura (tak naprawdę to kilka microswitchy, pcb i kabel; jest też miejsce na wlutowanie odbiornika podczerwieni; sam odbiornik przychodzi wraz z głównym interfejsem v59)
  • uniwersalny inwerter, dla 1 świetlówki lub dla 2 świetlówek, bądź dla 4 świetlówek. Uniwersalny dlatego, że uruchomienie inwertera wyjętego z np. laptopa może być problematyczne. Ile świetlówek ma nasz LCD znajdziemy w dokumentacji albo po prostu oglądając “fabryczny” inwerter i ilość złącz do świetlówek. Kabel płytka — inwerter robimy samemu z wykorzystaniem złącz HS (o których niżej).
  • zasilacz, praktycznie dowolny 12V, ja używam z lispola ale niestety 14 pinowych nie udało się nigdzie zdobyć. Skończyło się na spiłowaniu krawędzi wtyków 6 i 8 pinowych oraz sklejeniu ze sobą. Uwaga: styki są maluśkie i teoretycznie trzeba zaciskarkę pokroju PA-09.Można też od biedy szczypcami.

Po podłączeniu całości (uwaga na zworkę 3.3V vs 5V dot zasilania panelu) wgrywamy na pendrive firmware pasujące do naszego panelu LCD, włączamy zasilanie, firmware wgra się do urządzenia, urządzenie wystartuje i pendrive można wyjąć. Firmware zapisuje się w pamięci eeprom.

Odbiornik podczerwieni w “okienku” w którym wcześniej były zaczepy trzymające klapę po zamknięciu laptopa (lewy górny róg).

Klawiatury nie podłączałem – wszystko jest dostępne z pilota (na marginesie pilot z chińskimi krzaczkami oraz v.59 domyślnie przychodzi z włączonym językiem chińskim i chwilę trzeba w menu się naszukać gdzie to się przełącza na angielski).

Stópki z profilu aluminiowego z castoramy przykręcone do zawiasów.

TV niestety tylko analogowa. DVB-T nie obsługuje.

Bootujemy raspberry pi:

LCD z starego laptopa, wykorzystana pokrywa więc elektroniki do środka się nie upchnie:

X Window też działa, co prawda wygląda na to, że urządzenie wewnętrznie skaluje z 1920×1080 do rozdzielczości matrycy (tj by uzyskać obraz na cały ekran trzeba było ustawić X-om 1920×1080 mimo, że matryca to 1400×1050):

Odtwarzanie filmów z pendrive USB również działa (choć nie wszystkie formaty):

Można też audio i zdjęcia – nie testowałem:

Wejście analogowe również spisuje się poprawnie:

Zestaw oświetleniowy rowerzysty – o dziwo z Chin najlepiej – latarka na rower

Cel: dobre oświetlenie rowerowe umożliwiające jazdę nocą po ulicach, a co ważniejsze po leśnych trasach z niespacerowymi prędkościami przelotowymi. Krótko pisząc – latarka na rower.

Jakieś światełko, kliknij na obrazku po szczegóły

Convoye na pokładzie

convoy-s2+-m2

(post zawiera linki affiliated)

Jedno dobre światło rowerowe do przodu

Convoy S2.

  • Convoy S2 (wersja 2.8A)
  • Świeci umiarkowanie szeroko i dość daleko. Wersja 2.8A (tyle amper prądu jest pobierane z zasilającego ogniwa) daje nieco więcej światła ale grzeje się do temperatur uniemożliwiających utrzymanie jej w rękach (na rowerze nie jest to problemem ze względu na pęd powietrza dobrze chłodzący latarkę). Należy wspomnieć, że grzejąca się latarka z mocną diodą Cree to nie jest objaw uszkodzenia. Przy diodach Cree traconych jest kilka, a nawet kilkanaście watów energii w postaci ciepła, które należy odprowadzić. Szybko nagrzewająca się latarka to sygnał o konstrukcji dobrze transportującej ciepło (stąd też latarki są aluminiowe, a nie plastikowe).

  • Convoy S2 (wersja 2.1A)
  • Świeci umiarkowanie szeroko i dość daleko. Wersja 2.1A jest wystarczająca i polecana jeśli chcemy używać latarki również poza rowerem.

convoy-s2

Przykłady świecenia Convoy S2 w google.

Dwa dobre światła rowerowe do przodu

Convoy S2 świeci bardzo ładnie ale niezbyt szeroko. Jeśli chcemy jeździć po leśnych singletrackach z wyższymi prędkościami warto wyposażyć się w dwie latarki. Jedna jako “długie” (ustawiona by świecić daleko). Druga jako “krótkie” (ustawiona by świecić blisko pod koło i możliwie najbardziej szeroko).

Jako długie możemy użyć wcześniej wymienionego Convoy S2 lub czegoś świecącego jeszcze dalej i jeszcze węziej niż S2.

  • Convoy M1 (wersja 2.8A)
  • Większy, głębszy reflektor od S2 – tym samym świeci dalej ale węziej.

  • Convoy M1 (wersja 2.1A)
  • Podobnie jak w S2 do wyboru wersje 2.8A i 2.1A. Kryteria wyboru analogiczne jak w przypadku S2.

Istnieje również wersja M2, która niestety nie posiada moletowania (część uchwytu jest płaska) przez co łatwiej przesuwa się w uchwycie rowerowym, a to jest niepożądane. Stąd lepsza wersja M1.

convoy-m1

  • Convoy C8 (wersja 2.8A)
  • Ponownie większy reflektor, a co za tym idzie większy zasięg od M1. Wraz z zasięgiem rosną gabaryty latarki. Latarka C8 jest sensowniejsza jeśli kompaktowe rozmiary nie są dla nas istotne. W przeciwnym razie warto zastanowić się nad M1.

  • Convoy C8 (wersja 2.1A)
  • Większe gabaryty C8 oznaczają lepsze chłodzenie i tutaj różnica w temperaturze pomiędzy wersją 2.1A, a 2.8A nie jest, aż tak odczuwalna.

convoy-c8

Mamy wybrane światło na “długie”. Pora na krótkie.

  • Convoy S3 (wersja 2.8A)
  • Latarka z płytszym reflektorem niż S2 dzięki czemu świeci dość szeroko ale okupione jest to mniejszym zasięgiem. Czyni ją to idealną na światła “krótkie”. Szerokie świecenie pozwala na orientowanie się co mamy po bokach roweru z przodu w razie gwałtownych, ostrych skrętów. S3 spisuje się również znakomicie jako latarka na kask.

  • Convoy S3 (wersja 2.1A).
  • Zewnętrzne gabaryty S3 są zbliżone do S2 więc ponownie pojawia się omówiony wcześniej temat osiągania wysokich temperatur pracy.

    convoy-s3

  • Convoy S2+ (wersja 1.1A).
  • Alternatywę do S3 stanowi S2+. Niestety tutaj wersja tylko 1.1A (w chwili pisania nie było wersji 2.1/2.8A w tym sklepie). Mimo “S2” w nazwie S2+ jest bardziej zbliżona do S3 – ten sam reflektor, ta sama szerokość świecenia i zasięg. S2+ dodaję tutaj bo istnieje ciekawy film pokazujący jakość budowy latarek Convoy właśnie na przykładzie S2+.

    https://www.youtube.com/watch?v=yGko-djhCjQ

Wszystkie powyższe latarki (S2, M1, S3) można często wybrać z diodami w różnych wariantach jeśli chodzi o barwę światła (tint) oraz wydajność (bin). Rozsądnymi wyborami jest dla barwy ciepłej T6-4C, a dla zimnej U2-A1. Rodzaj diody preferowany to XML2 np. XML2 T6-4C (najczęściej wybierany typ diody; oznaczenia: XML2 – nowsza generacja diod Cree, bin T6 (wydajny), barwa 4C (ciepła)).

Akcesoria

Ogniwa

Wszystkie powyżej przedstawione latarki Convoy są zasilane ogniwami Li-Ion rozmiaru 18650. Warto zakupić dwukrotnie więcej ogniw niż mamy latarek. Dzięki temu jeśli w środku jazdy rozładujemy ogniwo to możemy je wymienić na zapasowe, w pełni naładowane. Czyli jeśli mamy latarki na “krótkie” oraz “długie” to kupujemy 4 ogniwa. 2 do pracy i 2 jako zapas.

  • Panasonic NCR 18650B 3400mAh
  • Nowe ogniwa 18650 o pojemności 3400mAh (obecnie jedne z największych pojemności ogniw 18650). Ładowane do 4.2V. Cena to ok 30PLN/szt. Link prowadzi do sprawdzonego źródła. Na rynku pełno jest podróbek lub ogniw o deklarowanych wysokich pojemnościach ale tylko na papierze. Często fałszywe ogniwa pojawiają się na allegro – często z deklarowanymi pojemnościami powyżej 4000mAh. Przy rozmiarze ogniw 18650 obecnie takie pojemności są niemożliwe do realizacji.

  • Używane ogniwa 18650Bardzo dobre źródło tanich, używanych ale wartościowych ogniw 18650. Sprzedawane w cenach zbliżonych do 8PLN/szt (+ 8PLN przesyłka). Sprzedający demontują pakiety (np. baterie z laptopów), weryfikują pojemności ogniw i sprzedają je za ułamek ceny nowego ogniwa.

ogniwa

Ładowarka

  • prosta ładowarka 18650
  • ladowarka-prosta

    Bardzo prosta i tania ładowarka ogniw 18650. Naładujemy nią 1 lub 2 ogniwa 18650 do napięcia 4.2V. W zupełności wystarczająca do celów rowerowych.

  • Nitecore I2
  • nitecore-i2

  • Nitecore I4
  • nitecore-i4

    Uniwersalna ładowarka w wersji na 2 ogniwa (I2) oraz 4 ogniwa (I4). Jej zaletą jest automatyczne rozpoznawanie typów ogniw (wspierane to Li-ion, Ni-MH i Ni-Cd) oraz możliwość ładowania ogniw o różnych rozmiarach (26650, 22650, 18650, 17670, 18490, 18350, 17500, 17335, 16340 (CR123A/RCR123), 14500, 10440, Ni-MH(Ni-Cd): AA, AAA, A, SC, C). Warto wybrać tego typu ładowarkę jeśli chcemy ładować akumulatorki AAA do tylnej lampki.

  • Powerfocus BC3100
  • bt-c3100

    Kombajn do ładowania ogniw, testowania, pomiaru pojemności, rezystancji wewnętrznej. Najlepszy wybór jeśli nas stać, a potrzebujemy “bajerów”. Pełny zakres rodzajów i rozmiarów obsługiwanych ogniw. Nawet dostępne adaptery do ogniw typu D i C.

Uchwyty

  • Uchwyt na kierownicę, obrotowy
  • uchwyt-360

    Prosty ale solidny uchwyt na kierownicę. Umożliwia obrót o 360 stopni. Pasuje do wszystkich wymienionych wcześniej Convoyów.

  • Uchwyt na kierownicę lub kask
  • uchwyt-kask

    Nieco gorszy jakościowo uchwyt ale z dwoma, wymiennymi elementami mocującymi. Jeden – do montażu na kierownicy. Drugi – do przypięcia np. do kasku za pomocą paska velcro. Średnica uchwytu łapiącego latarkę wymaga użycia fragmentu np gumy (10x20x1mm wystarcza – by zapewnić mocny chwyt latarki).

Inne

Światło z tyłu

  • 5xLED
  • rear-5led

    W zupełności wystarczające światło tylne składające się z 5 diod 0.05W. Kilka trybów pracy (świecenie ciągłe, miganie). Zasilana dwoma bateriami AAA. Jeśli dysponujemy ładowarką to najrozsądniej używać akumulatorków AAA.

  • 2xLED
  • rear-2led

    Dwie 0.5W diody LED (a więc bardzo mocne). Ta lampka zapewni nam rewelacyjne oświetlenie nocą. Również oferuje różne tryby pracy (świecenie ciągłe, miganie). Niestety ma też wadę – inni rowerzyści jadący za nami będą bardzo niezadowoleni. Światło jest zbyt jasne by komfortowo jechać za nim nocą rowerem. Warto temat przemyśleć jeśli jeździmy minimum parami. Niestety nie ma funkcji stopniowania jasności świecenia. Pewnym sposobem na ograniczenie oślepiania może być skierowanie lampki w dół o ile zamontujemy lampkę w poziomie (ja mam ją w pionie, wsuniętą w torbę podsiodłową, bez uchwytu na sztycę – w takiej pozycji nie ma możliwości regulacji góra/dół). W Polsce bardzo podobne tylne oświetlenie sprzedaje Mactronic pod nazwą WALLe BPM-2SL (cena oczywiście znacznie wyższa).

Jak kupować?

Większość powyżej prezentowanych linków prowadzi do sprawdzonego chińskiego sklepu wysyłkowego. Sprawdzonego przez wielu użytkowników forów dotyczących latarek (budgetlightforum, swiatelka). Dobre ceny, duży wybór produktów i stosunkowo szybkie (jak na Chiny) dostawy.

Do płacenia w banggood najlepiej używać serwisu paypal.com. Wiele chińskich sklepów daje możliwość płacenia paypalem. Paypal nam, jako kupującym daje 45 dniową ochronę zakupu. Oznacza to, że jeśli nie otrzymamy przesyłki (choćby z powodu zagubienia przez pocztę) lub przesyłka jest niezgodna z zamówieniem rozpoczynamy spór w paypalu (postępując wg informacji na stronach paypala). O zwrocie pieniędzy decyduje sam paypal na podstawie informacji otrzymanych od kupującego oraz sprzedającego. W efekcie – zagubiona przesyłka (nieważne czy rejestrowana (polecony) czy nie (list zwykły) – paypal zwraca nam całość pieniędzy. By płacić paypalem doładowujemy konto paypala przelewm lub podpinamy kartę (kredytową, “bankomatowoą”, prepaid – jaką nam wygodnie).

By kupować w banggood najlepiej się zarejestrować (formularz). Po rejestracji z tego linku przez 48h będzie dostępny kod rabatowy dający 10$ rabatu przy zamówieniu powyżej 100$ (My account->Invite tools->Credits). W lewym górnym rogu wybieramy kraj Polska oraz płatność w PLN. Dodajemy wyszukane produkty do koszyka. Warto także podać w miejscu “Have a coupon code?” podać wcześniej wymieniony kupon na rabat 10$ lub kupon BLF dający od w różnych momentach od 5% do 8% rabatu na sprzęt latarkowy. Kontynuujemy płatność (będziemy m.in. przekierowani do paypala). W efekcie z salda konta paypal zniknie odpowiednia kwota w PLN (lub zostanie obciążona podpięta karta właściwą kwotą – ponownie w PLN). Dzięki wyborze PLN (zamiast USD) odpadnie nam problem przewalutowywania.

W zależności od wybranych produktów przesyłka będzie darmowa nierejestrowana (list zwykły) – Standard shipping. Ewentualnie rejestrowana (przychodzi jako polecony) – Air Mail Register. Jeśli będziemy kupować ogniwa to wybór rodzaju przesyłki może być ograniczony (nie wszystkie chińskie poczty przyjmują baterie).

“Air Mail Register” jest najlepszą z najtańszych form wysyłki. Po wysyłce dostaniemy numer do śledzenia przesyłki – korzystamy z niego na np. 17track.net. Po wyjściu przesyłki z Chin przesyłkę będziemy mogli śledzić na sledzenie.poczta-polska.pl (czasami już od chwili opuszczenia przez przesyłkę Chin, a czasami dopiero od momentu wejścia przesyłki do Polski).

Przesyłka dotrze do nas w czasie od tygodnia do 1.5 miesiąca. Typowo to około 3 tygodnie. Pamiętajmy o 45 dniowym terminie w paypalu (na rozpoczęcie sporu) w razie gdyby przesyłka po tylu dniach nadal nie dotarła.

Dla amatorów “zrób to sam”

Latarki samemu nie ma sensu robić ale wielu ludzi “bawi” się w ulepszanie gotowych produktów. Zmiany diod cree, zmiany sterowników, zmianę oprogramowania sterowników latarek (programator i klips tutaj), poprawę termiki. Dla kogoś z zacięciem DIY – dużo zabawy. Warto poczytać forum swiatelka.pl.

Przy modyfikacji latarek służących za “krótkie” istnieje możliwość wymiany zwykłego reflektora z S3 na kolimator typu stripe. Kolimator taki powoduje bardzo szerokie, spłaszczone świecenie – w stylu leżącej na boku cyfry 8. Dzięki temu nie oślepiamy nadjeżdżających z naprzeciwka, a mamy szeroko oświetlony najbliższy obszar.

Sterowniki używane w Convoyach opierają się o układy AMC7135. Pojedynczy układ daje 350mA prądu dla diody. Stąd sterownik 2.8A będzie posiadał 8 układów AMC7135. Co gdy kupimy latarkę w wersji 2.8A i stwierdzimy, że za bardzo się grzeje – wolelibyśmy 2.1A (lub inną wartość) ? Nic prostszego (pod warunkiem zaznajomienia się z lutownicą, najwygodniej hot air). Rozkręcamy latarkę i wylutowujemy tyle układów AMC7135 o ile chcemy zmniejszyć prąd diody. Np wylutowanie 2 układów z sterownika 2.8A da nam 2.1A. Podobnie działa w drugą stronę. Dolutowanie układów AMC7135 spowoduje zwiększenie prądu (lutujemy na “kanapkę”, równolegle z istniejącymi AMC7135).

amc7135-kanapka

Problemy ?

Problemów z Convoyami nie ma wiele. Jedynym, który mi dokuczał był problem z przełączaniem się trybów w przypadku jazdy po “wertepach”, np w lesie po korzeniach. Przyczyną takiego zachowania były zbyt słabe sprężyny. Masa ogniwa 18650 była wystarczająca by, w przypadku uderzenia kołem np w korzeń/kamień, na ułamek sekundy przerwać połączenie ogniwa ze stykiem w latarce – tym samym powodując przełączenie trybu.

Rozwiązanie – mocniejsza sprężyna lub nałożenie drugiej dodatkowych na obecnie istniejącą i przylutowanie do istniejącej. Proste i skuteczne.

Dlaczego nie latarka np. firmy Mactronic ?

Mam również latarkę Mactronic Noise 500. Dlaczego jednak wolę Convoye?

W Noise 500 jest ogniwo 18650 ale zatopione w specjalnej plastikowej obudowie. Oznacza to, że nie mogę kupić tanio zapasowych ogniw 18650. Muszę kupować ogniwa przygotowane przez Mactronica. Niestety kilkunastokrotnie droższe niż dobre ogniwo z forum swiatelka.pl.

W Noise 500 jest stosowana dioda o zimnej, trupiej barwie. Znacznie lepszą i przyjemniejszą dla mojego oka jest dioda o ciepłej barwie (4C czy 7C). W Convoy można wybrać jaką diodę chce się posiadać.

Ilość lumenów – Noise 500 daje wg producenta na najmocniejszym trybie 500lm. Convoy S2 XML2 T6-7C 2.8A to ok 800lm.

Koszt – latarka Convoy jest kilkukrotnie tańsza od Noise 500. W ~110PLN da się zmieścić z całym kompletem (Convoy S2, ogniwo z swiatelka.pl, uchwyt i prosta ładowarka). Ponad dwukrotnie taniej od Noise 500.

Dodatkowo Convoy S2 możemy używać jako normalnej, ręcznej latarki (na wyjazdach, pod namiotem). Niestety obudowa Noise 500 nie jest zbyt wygodna do trzymania. Ponadto tylko przód Noise 500 jest aluminiowy (celem odprowadzania ciepła) – w efekcie odprowadzanie ciepła odbywa się na mniejszym obszarze niż w Convoy S2 (cała aluminiowa). Przód Noise nagrzewa się tak bardzo, że łatwo się oparzyć.

Przykładowy zestaw

Na podstawie oferty sklepu Banggood – zarejestruj się.

Razem 197.5PLN minus 8% rabatu (kod BLF): ~188PLN

DRI PRIME

Multiple graphic cards accessible from Linux:

$ glxinfo |grep -i renderer
OpenGL renderer string: Mesa DRI Mobile Intel® GM45 Express Chipset
$ DRI_PRIME=1 glxinfo |grep -i renderer
OpenGL renderer string: Gallium 0.4 on AMD RV620

$ xrandr –listproviders
Providers: number : 2
Provider 0: id: 0x83 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 3 associated providers: 0 name:Intel
Provider 1: id: 0x54 cap: 0xd, Source Output, Source Offload, Sink Offload crtcs: 2 outputs: 3 associated providers: 0 name:radeon
$ xrandr –setprovideroffloadsink 0x54 0x83
$ xrandr –listproviders
Providers: number : 2
Provider 0: id: 0x83 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 3 associated providers: 1 name:Intel
Provider 1: id: 0x54 cap: 0xd, Source Output, Source Offload, Sink Offload crtcs: 2 outputs: 3 associated providers: 1 name:radeon

Google for more.

Thinkpad T400 – low speakers volume

My Thinkpad T400 had very low speakers volume. Turns out there is a way to bump volume up using hardware modification.

T400 uses AN12946A audio amplifier (located right to touchpad, just under bios battery – remove keyboard bezel to get access). See T400 schematic for details.

AN12946A has selectable gain modes using SP GAIN 1 (pin 27) and SP GAIN 2 (pin 28). By default T400 uses +13dB mode (which is lowest possible).

We can easily switch to +19dB mode by lowering SP GAIN 1 (pin 27) logic level (see AN12946A datasheet) and leaving SP GAIN 2 (pin 28) high. SP GAIN 1 (pin 27) uses 10k resitor for pull up. We are lucky – pin 26 is GND, so the solution is – solder AN12946A pins 26 and 27 together.

Result – speakers volume is better (not great though). I had to use 100% volume before, now about 80-85%.

geo2.pl

I was using geo2.pl GPS/GPRS location tracking device for some time. Wasn’t best experience – frequent system failures (on device and on geo2 server side), lack of competent support, lack of information to users (once it died for a month without ANY information from geo2 company). So if you considered buying geo2 product – forget about it. With such quality it’s not worth your money. Especially that they rose monthly price over 300%. But if you have hardware already…

Hardware:

There are two serial ports available on this unit. One provides GPS coordinates in NMEA format and is available through USB connector outside the device. The other serial port is available internally at JP1 connector (see picture). Any USB-serial adapter will do (I used Profilic PL2303 based one in form of old Nokia CA42 cable).

Use internal JP1 serial port to access Telit GE683-GPS AT command interface. By default units starts internal geo2 software (written in python).

AT#LSCRIPT

#LSCRIPT: “config”,53
#LSCRIPT: “updater.log”,247
#LSCRIPT: “gsm.pyo”,5085
#LSCRIPT: “main.pyo”,10393
#LSCRIPT: “config.pyo”,1602
#LSCRIPT: “protocol.pyo”,11566
#LSCRIPT: “acc.pyo”,1565
#LSCRIPT: “kernel.pyo”,8684
#LSCRIPT: “device.pyo”,2207
#LSCRIPT: “gps.pyo”,4347
#LSCRIPT: “io.pyo”,1197
#LSCRIPT: “List.pyo”,6015
#LSCRIPT: “debug.pyo”,2394
#LSCRIPT: “boot.py”,27
#LSCRIPT: free bytes: 1944638

OK

“boot.py” is started after powering on geo2 device. You can change boot mode to “start after 10 seconds” and also change boot file to not existing file to prevent it from running any script. Finally reboot device. You have few seconds after powering on geo2 device to do that – otherwise boot.py will start.

AT#STARTMODESCR=1,10
AT#ESCRIPT=”blah.py”
AT#REBOOT

Now see what geo2 software prints for us. We will start “boot.py” without a reboot:

AT#ESCRIPT=”boot.py”
OK
AT#EXECSCR
OK
kernel start
import main # precompiled from main.pyo
import protocol # precompiled from protocol.pyo
import marshal # builtin
import gps # precompiled from gps.pyo
import gsm # precompiled from gsm.pyo
import config # precompiled from config.pyo
import device # precompiled from device.pyo
import List # precompiled from List.pyo
import acc # precompiled from acc.pyo
import IIC # builtin
import io # precompiled from io.pyo
main
main

(now it will periodically print “main” until some bad thing happens).

Can we see what geo2 software does? Yes, we can. There is “AT#RSCRIPT# command that prints content of the file. Unfortunately geo2 files were uploaded with a option disabling RSCRIPT for most of uploaded files.

Fortunately we can read the files from own python script. Someone wrote scripts for this already. telit-pyo.py script from telit-862-python-tools github repository when run on Telit device will print content of all “*.py” scripts to serial console output (in hex, with additional headers). Then decode-telit-pyo.py script will produce raw files from serial console log.

We need small modifications for our purposes – we have to patch telit-pyo.py script to also print content of “config” and “*.pyc” files (and also skip printing itself).

With this we end up having all files from geo2 device. There is another problem – most of these is “pyc” which is not raw source code. It’s python byte code, not really human readable.

decompyle – Python Decompiler comes to help. It’s not developed anymore (there is paid commercial service based on it though) and hard to compile. I’ve built it with python 1.6 and 2.7 after some patching.

With decompyle we can get more readable form of byte code files.

First look and – quality of geo2 code seems to be quite low.

GPRS part registers with “apn.o2.pl” APN (previously geo2 company was owned by o2.pl and, no, it wasn’t much better experience then) to a PlusGSM network.

Device talks with IP 193.17.41.249 on port 6288 (TCP connection). There seems to be no real authorization (yikes!) when talking to the server. Pseudo authorization is based on device IMEI and value stored in config file (as “CODE”).

GPS when no fix is found is… restarted after some time (300s), then restarted again, and again, and again (with longer periods each time).

Accelerometer is accessed over I2C and used to detect if device is moving (and then transmit new coordinates). It is initialized with such values:

_ADDRESS = 28
_INIT = ‘g’
_FILTER = ‘\x07’
_SENSITIVITY = ‘\x04’

# i2c device at _ADDRESS
_i2c.readwrite((‘ %s’ % (_INIT)), 0)
_i2c.readwrite((‘!%s’ % (_FILTER)), 0)
_i2c.readwrite((‘2%s’ % (_SENSITIVITY)), 0)

Configuration is stored in “config” file. This file can be read directly with “AT#RSCRIPT”.

[
3, # CONF_VER
‘8\xff)’, # CODE (used in authorization header)
”, # PIN
1, # ROAM_OFF
0, # ROAM_ZONE_ID
[], # ROAM_ZONE
0, # ROAM_STATE
-1, # JAMMER_DATE
0 # DELAY
]

The device has a code that allows to run (via eval()) ANY code that’s sent from remote geo2 server (idea was to allow remote debugging I think). Good that there is no microphone available on the geo2 device since Telit chip is capable of establishing audio channel and thus allowing remote audio spying.

It is also possible to upload few version of software files remotely. “updater.log” stores some information about the process:

starting update
version /fizyka/thingy/trunk/geo2b105:1091
L5;L8;L10 gsm.pyo;L14 main.pyon;L10 config.pyo;L14 protocol.pyon;L10 acc.pyo;L14 kernel.pyon;L14 device.pyon;L14 gps.pyon;L10 io.pyo;L10 List.pyo;L10 debug.pyo;L17;L21;L25;L27;L29;L30;

All that information and great Telit documentation will allow you to write own software. You could also change geo2 IP to your own and simulate geo2 server software on own machine.