Hacking Hardware Interfaces with Arduino (film, 15m)
On the Adam Śmiałek channel, viewers are invited to a new series on hacking interfaces, a little-known but extremely useful concept. Adam emphasizes that hacking isn't solely related to illegal access to systems, but can also involve improving equipment usability, which is the aim of this series. He begins by explaining what an interface is, noting that it encompasses not only physical connections but also control panels we deal with daily. In this episode, he focuses on hacking a monitor which, despite its utility, has a non-intuitive interface that causes user issues.
As Adam progresses, he introduces the chosen monitor for analysis and discusses the problems present with its keyboard. He highlights how small, membrane buttons can lead to user frustration. During the equipment’s examination, Adam aims to avoid damaging it, a crucial aspect of thoughtful hacking. He talks about the need to recognize the device's construction and the possibilities of modifying the interface in a way that doesn’t destroy its original functionality.
As Adam continues analyzing the electronic connections, he shares a practical approach using a multimeter for testing. His ultimate goal is to create a system that allows for more convenient control of the monitor via Arduino. Adam also explains the importance of isolation when connecting new systems to existing devices to avoid operational errors.
He reveals that the monitor’s keyboard is more complex than initially thought, adding another level to the hacking challenge. Instead of complicating connections with two lines, he chooses to use optocouplers, which requires further testing. By utilizing better components, he manages to find elements that work with low voltages, enabling him to proceed with the project. Adam also touches on relays as an alternative, stressing that attention to details, such as incorporating flyback diodes, is crucial for long-term success.
At the end of the video, Adam invites viewers to stay tuned for upcoming episodes, promising further developments of his ideas and solutions. The video has been viewed 20,567 times and has received 646 likes so far. This indicates a strong interest in the subject, encouraging further exploration in this field.
Toggle timeline summary
-
Introduction to the channel's partner, TME, a global distributor of electronic components.
-
Invitation to subscribe to the channel.
-
Return to practical content.
-
Introduction to a series about interface hacking.
-
Explanation of what hacking is.
-
Focus on hacking in terms of making devices more convenient.
-
Definition of an interface.
-
Discussion on the various types of device panels.
-
Mention of the limitations caused by interfaces.
-
Introduction to a typical monitor example.
-
Discussion on the monitor's unintuitive original panel.
-
Clarification that this is a general method video, not specific to one monitor.
-
Discussion on the reasons for wanting to hack devices.
-
Comparison of a guitar multi-effect device's usability issues.
-
Emphasis on preserving the original device's operation.
-
Initial steps involve equipment recognition.
-
Discovery about the internal connections of the monitor.
-
Details on the lack of a monitor power switch contact.
-
Introduction to the approach of using a straightforward connection with Arduino.
-
Challenges presented by the monitor's keyboard circuitry.
-
Testing and troubleshooting of transoptors.
-
Preparation for the next steps in interfacing.
Transcription
Partnerem kanału jest firma TME, globalny dystrybutor komponentów elektronicznych. Zapraszam do subskrypcji mojego kanału. Dzień dobry. Wracamy do praktyki. Zapraszam na początek serii o tak zwanym hakowaniu interfejsów, rzeczy mało popularnej, a bardzo przydatnej, zwłaszcza ostatnio. HAKOWANIE Czym jest hakowanie? Właściwie do końca nikt nie wie, bo tak określa się wszystko, co jest związane z włamywaniem się do programów czy systemów i zmienianie ich zachowania na swoją modłę. Tak więc pojęcie to jest szerokie, podobnie jak motywy. Od ciekawości, usprawnień przez omijanie ograniczeń, czasem postawionych świadomie, po działalność już stricte nielegalną. Ponieważ to seria o Arduino, poprzestanę na węższym nieco znaczeniu hakowania i celu. Będziemy włamywać się do sprzętu, by uczynić jego pracę wygodniejszą. W każdym razie na początek. Czym jest interfejs? To także szerokie zagadnienie, bo dotyczy ogólnie tego, co łączy maszynę ze światem. Ale czasem sięga nie tylko po złącza, gniazdka i kable, a także panel sterujący, którym maszynę obsługujemy. Jedno i drugie jest ze sobą ściśle związane i tym właśnie będę chciał się zająć. Usprawnieniem owych interfejsów najczęściej nie do końca takich, jakich oczekujemy. Oczywiście paneli jest tyle, ile urządzeń, choć ostatnio mniej, gdyż wiele z nich migruje do smartfona. Tam korzystamy z paneli wyświetlanych, ale problem wcale nie został rozwiązany. Gratuluję pomysłodawcy tego interfejsu, szybkie wyzerowanie tej pozycji jest bardzo trudne. Ktoś powielokroć nie pomyślał, dał nam krótki suwak, zbędny zakres aż 12 jednostek eV, z czego używa się może czterech i rozdzielczość 1 szóstej jednostki, gdy potrzeba połowy, najwyżej 1 trzeciej. W tym przypadku możemy liczyć na upgrade, choć to zwykle nadzieje płonne. Rzućmy okiem na inne urządzenie, które będzie bohaterem dzisiejszego odcinka. Monitory Oto taki typowy, tak zwany chiński monitorek, przydatny przede wszystkim filmowcom, a ostatnio także fanom retro komputerów. Posiada nie tylko najbardziej dziś popularne wejście HD, ale dwa analogowe zespolone i profesjonalne komponentowe. Monitor ten wybrałem do przedstawienia idei hakowania interfejsu z kilku powodów. Oryginalny panel jest mało intuicyjny, ze względu na marne przyciski fatalnie się go obsługuje, cechuje się lagami i czasem trafienie w wybraną pozycję wymaga kilku prób, a do tego włamanie się do klawiatury stworzyło szereg nowych problemów, a więc też wyzwań. Tak więc będzie to bardzo fajny przykład, jak sobie radzić z niemiłymi urządzeniami, który pokaże wszystkie potencjalne problemy i podpowie rozwiązania. I tu moja uwaga. To nie jest film o hakowaniu tego konkretnego monitora, tylko o metodach i na tym się skupimy. Wrócę jeszcze do bardziej ogólnej myśli. Po co w ogóle zaprzątać sobie głowę jakimś hakowaniem? Tutaj trzeba użyć wyobraźni. Przykład z monitorkiem może nie będzie miał mocno praktycznego wymiaru, ale istnieje mnóstwo ciekawych urządzeń, które są ograniczone ze względu na interfejs. To jest na przykład tani multi-efekt do gitary, który brzmi jako tako, ale właściwie nie da się go używać na scenie poza zmianą presetu. A to jest ten sam efekt wbudowany w podręczny piecyk, który dla odmiany jest bardzo łatwy i szybki w użyciu, bo każdy istotny parametr możemy natychmiast zmienić, używając gałek. Jedna gałka dla jednego parametru. Na scenie jest to bezcenne. Żadnego menu, przewijania, szukania i zastanawiania się, co dany skrót może znaczyć. Tak, to jest dokładnie to samo urządzenie, tylko niebywale wygodniej sterowane. Pomyślmy teraz o różnego rodzaju wieżach audio, odtwarzaczach wideo, telewizorach i tym podobnych urządzeniach, w których producent poskąpił gałek ofiarując jedynie kilka niewygodnych przycisków, czasem ukrytych gdzieś, a bywa, że dotykowych, co już w ogóle jest tragedią. Gdy mamy pilota, rzeczy nie wyglądają tak źle, ale czasem go nie mamy albo jest on równie nieintuicyjny, co panel lokalny. Bierzmy się zatem do roboty, etap po etapie. Pierwszym z nich będzie rozpoznanie sprzętowe. Klawiatura Po rozkręceniu monitorka okazało się, że marna klawiatura bierze się z budowy. Malutkie membrany są przyklejone taśmą klejącą do pól miedzianych, bynajmniej niezłoconych, więc czasem styk jest, a czasem nie i trzeba się z przyciskami siłować. Możemy to poprawić, ale nie to jest celem naszych działań. Trzeba przyjrzeć się temu, jak to tu działa i gdzie możemy się włamać, by narobić się jak najmniej. Z tej strony bieda. Nie wiadomo nic na temat tego, co tu z czym zwieramy. Oczywiście można zerwać te membrany i przylutować w ich miejsce przewody, ale wtedy stracimy panel, a tego nie chcemy. Chcemy mieć możliwość pracy po staremu i za pomocą nowego interfejsu jednocześnie. To jest jedna z zasad, o której powinniśmy pamiętać. Jeśli tylko to możliwe, nie niszczmy oryginalnego sposobu pracy urządzenia. Odwróćmy płytkę i obróćmy ją jeszcze o 90 stopni. Przyciski znajdują się mniej więcej po przeciwnej stronie tych przelotek. Zatem możemy założyć, że te ścieżki są zwierane z, zakładam, że z masą, ale to trzeba będzie jeszcze sprawdzić. W tym celu wykorzystamy w multimetrze funkcję wykrywania zwarć. Jedną z elektrod połączymy najlepiej z obudową gniazdka HDMI, bo tu na pewno jest masa. Drugą będziemy przykładać do ścieżek. Tylko że na nich znajduje się lakier izolujący. Można go zeskrobać lekko, ale zaraz, odwróćmy płytkę raz jeszcze. Mamy sporo szczęścia, po drugiej stronie ścieżki biegną do pustych pól lutowniczych, w które nic nie wstawiono. Wynika z tego, że płytka jest używana w serii monitorów, gdzie w niektórych wypadkach klawiatura sterująca stanowi osobną płytkę, którą łączy się przewodami z bazową. A ponieważ tutaj klawiatura została osadzona lokalnie, złącz nie wlutowana. Bierzemy więc wspomniany miernik zwarć i łączymy po kolei wszystkie styki, wciskając przyciski na panelu frontowym. Po chwili mamy już całą rozpiskę. Jak widać, nie ma tutaj styku wyłącznika monitora, ale z tego zrezygnuję, bo wydaje mi się, że nie ma sensu nim sterować. Służy tylko do włączania i wyłączania duszącenia. Pozostałych sześciu styków przyda nam się, więc podłączymy sześć przewodów, lutując je wprost albo używając goldpinów i gniazdek. Obok ładnie podpisano masę, więc siódmy przewód podłączymy tam. Użyłem takiej taśmy dwustronnej, która bardzo dobrze trzyma przewody na miejscu, więc nie wyrwiemy ich przypadkiem. Obudowę monitora lekko spiłowałem, wysuwając w tym miejscu taśmę. Całość możemy już skręcić, acz za chwilę jeszcze tam zaglądnę. Klawiatura. Gdy teraz będziemy zwierać ze sobą masę i kolejne przewody, otrzymamy symulację pracy klawiaturki. Wszystko działa jak należy, więc trzeba przejść do kolejnego etapu. I tu zaczną się schody. Najprościej byłoby podłączyć się do Arduino wprost. Niski stan oznacza zwarcie, czyli wciśnięcie przycisku, natomiast puszczenie oznacza... no właśnie, to wcale nie musi być stan wysoki, a powinien być stanem tak zwanej wysokiej impedancji, jako że oryginalnie w taki właśnie wpadają linie klawiatury niewciskanej. Ale może jednak dla monitora będzie to tożsame ze stanem wysokim, czyli napięciem równym 5 V. Podłączmy woltomierz i niewciskana klawiatura to napięcie 3,3 V. Istnieje ryzyko, że gdy podamy tam 5 V, zniszczymy nasz monitor. Rozwiązania są dwa. Pierwsze to przejść na Arduino 3 V. Można, ale wciąż będziemy połączeni z urządzeniem, a niesie to ze sobą szereg problemów. Interfejs klawiatury niekoniecznie był zaprojektowany w ten sposób, by można było tam podłączyć jakieś rozbudowane systemy i mogą pojawić się przekłamania i różnego rodzaju, bliżej nieokreślone kłopoty. A gdybyśmy tak hakowali jakieś urządzenie z wyższym napięciem, bardziej rozbudowane albo wręcz połączone w sieć? Tworzymy kolejne pętle mas, sprzężenia i tak dalej. Zasadą projektowania takich rozwiązań jest izolacja. A tę mogą zapewnić transoptory albo przekaźniki. Przekaźnik jest idealny w teorii, ale taki sobie w praktyce. Nie można nim pstrykać bez opamiętania, nie jest też szybki. Wymaga prądu, a więc i wzmacniaczy, kosztuje i generuje zakłócenia. Ale zwarcie to zwarcie, zero ohmów, a brak zwarcia to nieskończenie dużo ohmów. Transoptor nie ma żadnej z wymienionych wad przekaźnika, ale nie da zera ohmów przy oświetleniu siedzącej wewnątrz diody świecącej i spadek napięcia na fototranzystorze także nie będzie zerowy. Zwykle będzie się mieścił w przedziale napięć, interpretowanych jako stan niski, ale... no właśnie, zwykle. Okazało się, że Chińczycy wcale łatwo się nie poddają. Klawiatura Struktura tej klawiaturki jest bardziej chytra niż się nam wydaje. Tak naprawdę mamy tutaj dwie linie, a nie sześć i dzielniki rezystorowe tak dobrane, że zwieranie tych linii wymusza pojawienie się trzech przedziałów napięć. Więc wystarczyłoby nam się tutaj podłączyć dwoma liniami, ale analogowymi. Podawalibyśmy konkretne napięcia i układ interpretowałby to jak wciśnięcie konkretnego przycisku. To jest sposób, ale nieco skomplikowany. Należałoby szałkować przebiegi PWM i dobrać szybkość zmian tak, by nie były rejestrowane napięcia przejściowe. Zrezygnowałem z tego pomysłu na rzecz sześciu linii sterowanych transoptorami. Tak sobie to będzie teraz wyglądać. Po złożeniu całości po kolei podrzucałem napięcia na kolejne transoptory. W dwóch przypadkach nic się nie działo. Myślałem, że mam uszkodzone elementy, więc podmieniłem wyprowadzenia i nadal nic z tego. Po pomiarach okazało się, że napięcie spada do 100 mV, a klawiatura reaguje dopiero gdy spadnie do 50. Wymieniłem więc rezystory sterujące diodami w transoptorach z kilooma na 220 ohmów, dające zdecydowanie duży prąd 15 mA, ale dopuszczalny dla wszystkich ogniw układu. Napięcie spadło do 60 mV, interfejs już działa, ale nie zawsze. Sytuacja wydawała się beznadziejna. Wysypałem wszystkie transoptory z szufladki i rozpocząłem testy. W końcu znalazły się takie, które dają mniej niż 40 mV, a to wystarczyło do pewnej pracy klawiatury. Uff, można będzie działać dalej. A co w przypadku gdyby się nie udało? Cóż najprościej byłoby użyć przekaźników. Są takie, które zadowolą się prądem 30 mA, co może nieco niezgodnie ze sztuką, ale praktyka wskazuje, że tak można, dałoby się sterować wprost z pinów Arduino, które dopuszczają 40 mA, acz z agnotacją, iż nie zaleca się. Na szczęście nie muszę tego sprawdzać, ale jeśli ktoś byłby do tego zmuszony, jest rzeczą bardzo ważną, by nie zapomniał o diodach gaszących przepięcia na każdej z cewek przekaźnika. A najlepiej po prostu nie dziadować, tylko użyć ULN-a. Innym rozwiązaniem byłoby nawiązanie bardziej inteligentnej współpracy z układem za pomocą wspomnianej generacji napięć i do tego kiedyś przejdę. Skoro jednak wszystko działa, trzeba będzie przejść do kolejnego etapu, ale o tym już w następnym odcinku. Napisy stworzone przez społeczność Amara.org