Orion 40SA19FHD okostévé felbontás/DPI buherálás (adb)

Hátha másnak is hasznos lesz; egy kis leírás következik.

Adott: olcsó Orion 40SA19FHD típusú 40"-os okostévé Android 7-tel.

Cél: Napi ~10 órában lehetőleg teljes képernyőben futtatni rajta egy böngészőt, benne egy weboldalt (egyedi webapp, benne jókora Google Maps embed) ami folyamatosan változó POI-kat jelenít meg.

Probléma: bár a Google Chrome-ot sikerült felrakni a beépített nem-Google Play "app store"-ból, a nagyon magas DPI beállítás miatt a weboldalak furán jelennek meg benne desktop módban is (mintha nagyon kicsi lenne a felbontás). Az UI-n is látszik, hogy bazinagy, valószínűleg azért, hogy távolról is jól lehessen látni / el lehessen olvasni a dolgokat. Viszont ezt a kijelzőt nem távolról fogják nézni, sőt. A Chrome beállításaiban és a gyakorlatilag nonegzisztens eszközbeállításoknál (nincs ám rendes Android settings) nem lehet UI scalinget, betűméretet, felbontást vagy bármi hasonlót állítani.

Örömteli felismerés: egy gyors portscan után kiderült, hogy az :5555 nyitva van az eszközön, ugyanis az Orion volt kedves fent hagyni egy hálózaton keresztül is elérhető Android Debug Bridge (ADB) démont. Ami örömteli, mert root jogok amúgy nincsenek, így harmadik feles appal sem lehetne ilyet varázsolni tudomásom szerint.

Egy másik eszközről sikerült is hozzá kapcsolódni:

adb tcpip 5555
adb connect 192.168.1.234:5555

Ezután a shell parancssal lehet garázdálkodni. Célszerű egy ilyen lekérdezéssel indítani, hogy megnézzük az aktuális megjelenítési beállításokat:

adb shell dumpsys display

A fenti parancs kimeneteének lényeges sora felbontás/DPI témában:

mBaseDisplayInfo=DisplayInfo{"Built-in Screen", uniqueId "local:0", app 1280 x 720, real 1280 x 720, largest app 1280 x 720, smallest app 1280 x 720, mode 1, defaultMode 1, modes [{id=1, width=1280, height=720, fps=60.000004}], colorMode 0, supportedColorModes [0], hdrCapabilities android.view.Display$HdrCapabilities@a69d6308, rotation 0, density 240 (160.0 x 160.0) dpi, layerStack 0, appVsyncOff 1000000, presDeadline 16666666, type BUILT_IN, state ON, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}

A 240-ről lefeleztem a DPI-t az alábbi paranccsal (az eredmény pár másodperc múlva látszik, nem kell semmit újraindítani, szóval lehet könnyen játszogatni különböző értékekkel):

adb shell wm density 120

A felbontást pedig felpattintottam full HD-ra (ennyit tud az eszköz elvileg):

adb shell wm size 1920x1080

A beállítások újraindítás után is megmaradnak. Ja, azt is lehet akár adb-vel:

adb reboot

Hozzászólások

ezt úgy kell érteni, hogy a tévéhez ssh-n (telneten?) keresztül lehet kapcsolódni azonosítás nélkül az 5555 porton? 

Vagy az adb-hez van valami kliensprogram, vagy ez egy protolkoll?

Az Android eszközön fut egy adbd nevű daemon, amihez az adb nevű CLI kliensprogrammal (ami többek között a bárki által letölthető Android SDK-ban is benne van, de vannak csak adb-t tartalmazó Linux csomagok is) lehet többnyire másik eszközről és többnyire bármiféle azonosítás nélkül kapcsolódni. Hogy kb. miket tud az adb, arról van itt van egy remek PDF cheatsheet.

A PDF-et köszi. Az alap ADB dolgot ismerem, használom. Viszont eddigi eszközökön engedélyezni kellett, hogy legyen ilyen elérhetőség. Rejtett menü előhozása előbb, majd engedélyezni az elérést. Kapcsolódáskor pedig van egy "elfogadom-e erről az eszközről a kapcsolatot..." kérdés.

Ha jól értem akkor ahogy a dobozból kibontja anyukám, egy ilyen TV-t, csak a kérdés fog feljönni neki, ami valószínűleg elfogad, mert épp Esmeralda-t akarja nézni nem pedig a dialog-box-ot. 
Ez akkor lesz érdekes amikor házon belül fertőzött számítógép, okos-mosógép, hűtő, meg ki tudja még micsoda majd szépen megmogyorózza ADB-n keresztül a TV-t is.

android telon (lineageos) eloszor elo kell hozni a developer menut (7szer bokkodes az about menuben valamelyiket), es abban van benne hogy network adb engedelyezese. illetve kapcsolodaskor is van egy engedely keres.

nyilvan a tv-s androidbol "kihelletek" ezt az engedelyezesi dialogot

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Feliratkozás.

----
"Mert úgy szerette Isten e világot, hogy az ő egyszülött Fiát adta, hogy valaki hiszen ő benne, el ne vesszen, hanem örök élete legyen". (János 3:16)

Könyvjelző

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."