Wiele osób z mniejszą lub większą wiedzą inżynieryjną niejednokrotnie próbuje coś naprawić lub zmodyfikować. Przeciętny Kowalski, który zwykle taką wiedzą nie grzeszy, gdy pyta w internecie jak to naprawić, w odpowiedzi często dostanie wskazówkę aby zacząć od wstecznej inżynierii. Czy aby taka odpowiedź jest słuszna?
Mając przed sobą jakieś urządzenie, instalację, maszynę czy nawet program komputerowy, wszystko jest OK dopóki działa poprawnie i posiadamy instrukcję obsługi – najlepiej w głowie. Ale co kiedy coś się zepsuło albo chcemy coś zmienić, albo… wpadło nam w ręce jakieś dziwne urządzenie i nie mamy zielonego pojęcia do czego ono miało służyć?
W tym ostatnim wypadku, jedni od razu pytają w internecie, inni otwierają obudowę i analizują. W tym i w pozostałych przypadkach, większość zadaje pytania w internecie w stylu: zdjęcie urządzenia (nieraz tego jednak nawet nie ma) i lakoniczne pytanie: Jak to naprawić? Albo: Jak to zmodyfikować? (tak jak ja chcę) – często oczekując jasnych instrukcji podanych „na tacy”, najlepiej dostosowanych do ich kompetencji. Posłużę się tutaj zasłyszanym tekstem od pewnej lekarki: Większość przychodzi do lekarza oczekując, że on tylko popatrzy, magicznie będzie wiedział o co chodzi i da magiczną pigułkę, która wyleczy w maksymalnie 15 minut. I ciężko niektórym wytłumaczyć, że to nie jest takie proste.
Zatem gdzie jest ta magiczna pigułka dla urządzeń, maszyn, instalacji i programów komputerowych? Powiedziałbym gdzie, ale to chyba nie jest najlepsze miejsce na taką wypowiedź. Wróćmy do tematu.
Inżynieria wsteczna – tak na chłopski rozum
No dobra, zepsuł mi się np. telewizor i co mogę zrobić? Taki głupi telewizor składa się z tysięcy różnych części, każda z nich może się zepsuć na setki różnych sposobów i jak to bywa najczęściej, uszkodzeniu uległo więcej niż jeden element. Bardzo często dochodzi do uszkodzeń wtórnych – na marginesie, to sugeruje aby w razie awarii jak najszybciej odłączyć zasilanie i oddać do naprawy, gdyż część uszkodzeń się pogłębia z czasem, czego koronnym przykładem jest zalanie – częsty przypadek jak ktoś zanosi coś do serwisu z uśmiechem na ustach i słowami, że „samo się zepsuło”, a w środku czyjaś zupa sprzed dwóch miesięcy, która przez ten czas spowodowała nieodwracalną korozję.
OK, miało być o magicznej wstecznej inżynierii. Nie będę cytował Wikipedii, tylko wyjaśnię to podejście po swojemu, najprościej jak potrafię. Kiedy masz do czynienia z jakimś urządzeniem (sprawnym lub nie) i badasz je za pomocą zmysłów – wzroku, dotyku czy nawet węchu – to tę metodę już można nazwać wsteczną inżynierią, gdyż nie projektujesz czegoś, tylko działasz wstecznie, odwracasz proces, choćby nawet poprzez ocenę wyglądu obudowy.
Tak więc wsteczna inżynieria to nic innego jak odwrotność projektowania – mamy coś, lecz nie mamy do tego schematu, rysunków czy np. kodu źródłowego oprogramowania. Każda rzecz działa mniej lub bardziej inaczej, co zależy od projektanta, a nie od jakiś odgórnych komunistycznych zasad – więc zarówno Ty lub wezwany fachowiec, aby coś zmienić lub naprawić, musi wpierw przeanalizować z czym ma do czynienia i jak to konkretne coś działa – jak jest zasilane, jak jest zrealizowane sterowanie i jak powinno działać – po tym dopiero można wnioskować co można zrobić – cudów tu nie ma i nawet 10 lat studiów na najlepszej uczelni tego nie zmieni.
Przykład? Proszę sobie wyobrazić dwie lampki – jedna z wyłącznikiem, a druga bez – w obu przypadkach zwykle można bardzo łatwo odrysować schemat z istniejącego przedmiotu. Widać, że te lampki się różnią, więc wynikowy schemat też będzie się różnił.
Ale „na kiego mi jakiś schemat?” Jeśli nie schemat, to proponuję ww. magiczną pigułkę albo magiczną szklaną kulę. Przeciętny laik lubi sobie wmawiać, że wszystko jest pięknie, wszystko jest proste i łatwe. Tymczasem każde urządzenie się czymś różni. Większość była projektowana długimi godzinami czy nawet latami i przyjdzie na forum jakiś Mietek bo mu się telewizor zepsuł i jeszcze się obraża, bo nikt mu nie chce napisać który element wymienić…
Elektrycy, elektronicy, lekarze czy np. programiści, zazwyczaj nie posiadają ani magicznej szklanej kuli, magicznych tabletek, rentgena w oczach czy wiedzy nie z tej ziemi pozwalającej odpowiedzieć na każde pytanie. Lekarz potrzebuje wyników badań, programista kodu źródłowego lub dekompliatora (przy tym drugim to masa czasu), a elektryk czy elektronik potrzebuje takie zabawki jak miernik, wskaźnik, generator czy np. oscyloskop.
Mając z czymś do czynienia pierwszy raz i chcąc to zmodyfikować lub naprawić, potrzebujemy wiedzieć jak dokładnie to jedno konkretne urządzenie działa – np. skąd jest zasilane (bateria, sieć, mały panel słoneczny, etc.), jakie ma gniazda i w jaki sposób zostały one użyte przez projektanta tudzież inżyniera.
Przykładowo mając laptop z zepsutą matrycą, bo np. koleżanka poczęstowała ją młotkiem, możemy na ślepo kupić taką samą matrycę gdzieś w internecie. Ale jeśli okaże się, że zamówiliśmy matrycę ze złączem MPI, a nasz laptop został zaprojektowany ze złączem LVDS, to możemy sobie… wiadomo co. W tym przypadku wsteczna inżyniera polegałaby na otwarciu obudowy i sprawdzeniu jakie złącze mamy w środku – a to niestety nie jest zbytnio widoczne gdy ktoś wstawia zdjęcie zewnątrz laptopa na forum oczekując, że dostanie setki odpowiedzi i linków kierujących do właściwej matrycy – jeśli ktoś nie miał do czynienia z tym konkretnym modelem to skąd niby ma wiedzieć?
Inna sprawa, że złącze matrycy, to zaledwie jedna rzecz – niby podłączysz i wszystko fajnie działa, ale jak złożysz to do oryginalnej obudowy, kiedy rozmiar jest ciut inny lub otwory na śrubki montażowe są w zupełnie innych miejscach? Osobiście zdarzyło mi się dwa razy używać taśmy klejącej w klapie laptopa – raz to był klient, który wyraził na to zgodę (oryginału nie było), a raz to mój własny laptop, z którego teraz piszę 🙂
Pisząc ze swojego laptopa o swoim laptopie, ktoś może się przerazić, że przecież jego schemat (szczęśliwie znaleziony w internecie, bo często jednak takowego nie ma, zwłaszcza w nowych modelach), to przecież dobre kilkaset stron skomplikowanych schematów, tabel i innych rysunków. To ja wtedy spytam: czemu niby mam czytać i analizować cały schemat, gdy tylko interesuje mnie matryca i np. jej złącze, które widać bez schematu?
Gdybym nie miał tyle doświadczenia z laptopami tej marki to mógłbym dokonać wstecznej inżynierii kilku różnych modeli, wcześniej je kupując albo zrobić coś, co zajmie kilka-kilkanaście minut, mianowicie skorzystać z nielubianej przez niektórych wyszukiwarki internetowej, skorzystać z kilku szarych komórek, które jeszcze posiadam i z ich pomocą wymyślić jak znaleźć informacje, które na pewną są, tylko trzeba frazę do wyszukiwarki i ew. coś więcej.
Minuta myślenia (wiem, to boli) i można poszukać zamienników do różnych modeli laptopów – ale po co? Ano zdjęcia zamienników okazują swoje rozmiary, lokalizacje otworów montażowych czy gniazd, a do tego, co istotne, lista laptopów do których dana matryca pasuje. Patrzę więc za moim modelem i nagle się okazuje, że ten sam zamiennik pasuje do dwóch laptopów – do tego w którym chcę zmienić i do tego co mi siedzi w szafie i zbiera kurz którego tam nie ma. Skoro ten znaleziony zamiennik pasuje do dwóch modeli, to najpewniej oryginał też. Tym super magicznym sposobem ustaliłem magiczny fakt jak zaoszczędzić kilkaset złotych – sprzedawcy matryc go nienawidzą.
Żarty żartami, ale kilkuminutowe korzystanie z wyszukiwarki to też wsteczna inżynieria (!), która pozwala osiągnąć bardzo wiele, w przeciwieństwie do zadawania głupiego pytania na forum „jak to naprawić” – obowiązkowo bez zdjęcia lub zdjęcie obudowy (aby się wykazać, że nie chciało się zajrzeć do środka) i bez objawów – jakby w internecie ludzie mieli nieziemskie moce magiczne i dokonywały by oceny (wstecznej inżynierii i pomiarów) elektroniki będącej zakrytą przez obudowę. Niestety mój domowy aparat rtg nie działa z zdjęciami obudowy 😉
Wsteczna inżynieria: Studium przypadku oscyloskopu
Konkretny przykład z życia wzięty? Jak najbardziej – wsteczna inżynieria dokonana przez wiele osób na raz, która dotyczyła niedawno wypuszczonej na rynek serii oscyloskopów (to taki przyrząd pomiarowy, który powinien znać każdy elektronik, elektryk czy nawet informatyk).
No ale po co analizować urządzenie pomiarowe, zamiast go używać? Otóż takowe urządzenia przede wszystkim nie są tanie – chyba że ktoś chce mieć bezużytecznego chińczyka. Do tego każde jest inne i nie każde spełnia wszystkie wymagania, więc czasami potrzeba ich kilka lub kilkanaście. Do tego wiele z nich to kilka urządzeń w jednym, co pozwala zaoszczędzić czas, pieniądze i miejsce na biurku.
Można też kupić kilka różnych oscyloskopów średnio po 10 tys. PLN albo wysilić się i znaleźć coś tańszego, mniejszego, aby w budżecie 2-4 tys. polskich złotych mieć sprzęt potrafiący to samo co sprzęt za 20 tys. PLN. Jeśli ktoś uważa to za bajkę to wystarczy przyjrzeć się jak są produkowane urządzenia w różnych wersjach – w środku te same elementy niezależnie od ceny modelu. Otóż dla producenta produkcja lub montaż wielu różnych elementów często kosztuje więcej niż produkcja jednego i blokowanie w nim funkcjonalności dla niższych modeli.
A konkretnie: oscyloskopy firmy Rigol serii DHO4000, DHO1000, DHO900 oraz DHO800. Ich ceny obecnie mieszczą się w przedziale od 1800 do nawet 25000 PLN. Wiele osób dokonało już podstawowej wstecznej inżynierii w postaci zdjęć z wnętrza urządzenia. Stopnie wejściowe i przetwornik DAC składają się w ww. seriach z tych samych modeli. Z powyższych, najtańszy model DHO802 posiada pasmo zaledwie 70 MHz, zaś najdroższy DHO4804 ma aż 800 MHz.
Skoro mimo tych samych układów i bardzo podobnej budowy pasmo jest niższe i można je podnieść za pomocą kodu od producenta, który się wprowadza bez otwierania obudowy, to staje się niezwykle jasne, że pasmo jest zmniejszane za pośrednictwem oprogramowania, a płatny kod to odblokowuje. Kod, za który trzeba zapłacić ciężkie pieniądze.
Co ma zrobić hobbista, aby mieć taki sprzęt, jednocześnie nie mając takich środków? Powiedzmy, że startujemy od zera i nikt tego wcześniej nie próbował. Bardzo często zmniejszanie pasma jest zrealizowane w ten sposób, że oprogramowanie steruje fizycznymi wyjściami procesora lub innego układu do niego podłączonego i to wyjście załącza filtr ścinający nam pasmo (jak już wspomiałem: zapłacisz to dadzą kod, który to odblokuje). Ale kto by nie usunął jednego czy dwóch rezystorów, aby nie płacić tak dużej kasy?
W przypadku takich sprzętów i w dzisiejszych czasach istnieje przecież internet i można szybko wymieniać się informacjami z wieloma innymi użytkownikami produktów tej samej firmy. Pozwala to wymienić się zdjęciami z różnych modeli oraz oprogramowaniem wyciągniętym ze środka – oczywiście również z pomocą wstecznej inżynierii. W przypadku ww. DHO800 i DHO900 jest to bajecznie proste, bo dla oszczędności użyto tam kart uSD, takich samych jakie mamy też w aparatach czy smartfonach… Jak ktoś nie posiada czytnika kart, to nowy kupi za 20-50 zł.
Tym sposobem, dzięki wstecznej inżynierii, przy współpracy wielu osób, powstały informacje czy nawet nowe oprogramowanie, z którym w jakieś 15-30 minut i bez użycia śrubokręta można niemal na gotowo zamienić oscyloskop za 2 tysiące w taki za 4 tysiące. Jak ktoś woli zapłacić kilka koła, to kto zabroni? Konkretnie zamieniamy pasmo 70 MHz z modeli DHO802 i DHO804 na pasmo 250 MHz jak w modelu DHO924S – który fizycznie jest tym samym, poza brakiem złącza na analizator cyfrowy – złącza, które na upartego można wlutować i wykonać brakujący otwór w obudowie. A to już kolejna modyfikacja.
No dobra, ale seria oscyloskopów DHO4000 posiada pasmo 800 MHz mając te same układy co te dwie serie mogące 250 MHz. Tutaj właśnie zaczęło być śmiesznie, bo mimo wielu miesięcy wysiłku wielu osób, z pomocą przyszli Rosjanie znający angielski i powiedzieli, że przecież na samym środku PCB są wlutowane filtry LC – tuż pod przetwornikiem ADC. Na samym widoku i tyle osób to przeoczyło…
Według ich rady trzeba było zmienić cewki na takie mające mniejszą indukcyjność, osiągając pasmo około 400-500 MHz.
A gdyby tak całkiem usunąć te filtry? Tak się składa, że osobiście to sprawdziłem:
Tu jest dobry przykład tego co tytułowo może pójść nie tak. Na końcu dwóch filtrów jest rezystor dopasowujący impedancję linii transmisyjnej (tak jak przewód koncentryczny, ale na ścieżkach PCB), a sam filtr już ma impedancję, więc aby rozwiązać ten problem, dodano mały kondensator na wstępie, który powoduje iż całość bardziej zachowuje się jak rezystor w „oczach” linii transmisyjnej.
Pozostawiając go spowodowałem nie dość, że niedopasowanie linii, to jeszcze obciążenie pojemnościowe – niezbyt lubiane przez większość wzmacniaczy operacyjnych – powodując iż pasmo wręcz spadło (filtr RC), a poziom szumów był okrutny.
Bardzo głupi błąd, ale łatwy do poprawy – wystarczy usunąć ten kondensatorek. Przy okazji pozwoliło mi to lepiej dopasować termopady odprowadzające ciepło, gdyż musiałem ponownie zdemontować radiator. Termopady, nawet te droższe, są dość delikatne i na marginesie bardzo lubią łapać brud, który nie chce zejść.
Finalnie okazało się co było jedną z przyczyn decyzji tak niskiego pasma. Oczywiście chęć sprzedaży wyższych i droższych modeli to jedno, ale gorsze okoliczne elementy, gorszy projekt i gorsze wykonanie powodują wyższe szumy, które wycina filtr razem z pasmem. Poziom szumu przekraczający 0.35 mV RMS nie brzmi jakoś strasznie, ale to w najniższym zakresie – w wyższych jest tak samo widoczny, bo zarówno stopnie wejściowe, jak i DAC mają regulowane wzmocnienie.
To był kanał czwarty. Po tym, postanowiłem jeszcze zmodyfikować kanał trzeci, ale już w inny sposób. Mianowicie usunąłem w nim tylko pierwszy filtr, powodując zmianę pasma z 250 MHz na 800 MHz. Tym razem szum był duuużo mniejszy, rzędu 70 uV czyli raptem dwa razy więcej niż w oryginale. W każdym razie, dla powtarzalnych sygnałów, mogę włączyć uśrednianą akwizycję (avg) niemal całkowicie usuwając szum z wyświetlanego sygnału.
Czy można coś więcej z tym urządzeniem? Okazuje się, że można i to nawet bardzo. Ta zabawka pomiarowa, jak wiele innych, używa system operacyjny. W tym wypadku jest to Android, który jest de facto zmodyfikowanym Linuksem, zatem można go mniej lub bardziej modyfikować. Co prawda firma Rigol złamała licencję GPL Androida oraz Linuksa, ale to nie uniemożliwiło wielu rzeczy.
Bez zmiany oryginalnego systemu, można wykorzystać nie wyłączone przez producenta możliwości, jak myszka czy klawiatura USB. Do tego można przez sieć zainstalować inne oprogramowanie, powodując iż oscyloskop będzie trochę bardziej jak smartfon i np. obok najważniejszej aplikacji do pomiarów, zainstalować użyteczne oprogramowanie albo ulubioną grę:
Skoro jest na tym Android to pewnie da się zainstalować coś co ma znacznie większe możliwości, czyli jedną z dystrybucji Linuksa? Otóż nie tak prędko. Na zwykłym PC-cie, sprzęt jest wykrywany przez system, czy to Windows, czy Linux, czy jeszcze coś innego. Na sprzęcie embedded (smartfon, oscyloskop, mikrofalówka, etc.) w większości przypadków to tak nie działa – trzeba powiedzieć systemowi (ściślej jądro systemu) co i jak jest podłączone do procesora oraz pod jakimi adresami.
Tutaj są dwie opcje – jedna to żmudna wsteczna inżynieria, prawdopodobnie destrukcyjna. Druga opcja, to przecież skoro Android używa jądro Linuksa, to najpewniej jest to podane poprzez skompilowany plik, w którym jest to „wypunktowane”. Po jego dekompilacji i usunięciu niepotrzebnych rzeczy – z nieistniejącymi przyciskami głośności na czele, taki jest rezultat:
Tym samym, można wykorzystać oscyloskop do innych celów, które wcześniej były wykonywane przez inne urządzenia – oszczędzając miejsce na biurku, koszty oraz czas na przenoszenie tych zabawek z miejsca na miejsce.
A w wolnej chwili, można pograć w jakąś grę 3D: